DATAHOME

Care that starts with a missed call_

Any phone. No internet. Free for the patient. Bob calls back, listens in Hindi or Gujarati, and sends you to the clinic that is actually open. Not sure? A person decides.

1/3Clinicians are scarce
36.7
health workers for every 10,000 people in India, below the 44.5 WHO uses as a minimum.
1 health worker

That is one health worker for about 270 people. Their time is the scarcest thing in the clinic, and today it goes to whoever arrives first.

Source: WHO Global Health Observatory, India 2024 (doctors, nurses and midwives); WHO SDG threshold 44.5 (2016). 270 = 10,000 ÷ 36.7.

2/3One line for everyone

The urgent wait with the routine.

Without a way to sort people before they travel, the clinic sees whoever came first. Somewhere in the line, a child has had a fit. Nobody at the door knows.

DOOR
URGENT
09:00 the line forms12:30 still waiting16:00 the child is seen

Source: Illustrative. First-come queues, long travel and little time per case are described in the World Bank brief, Annex A (2026).

3/3And half the visit is paperwork
26–53%

of every consultation goes to writing in registers. A clinic can keep up to 48 of them, and the same details are written again and again.

ONE CONSULTATION
patient
writing

Source: Siyam et al. (2021), BMC Health Services Research 21(Suppl 1):691, five countries.

What if the clinic’s front desk lived inside a missed call?

Not an app. Not a smartphone. The call anyone can already make, answered by a small AI that listens, sorts and routes, so the scarce clinician’s time goes to the people who need it most.

1/8How Bob helps

She rings once and hangs up. It costs her nothing.

A missed call never connects, so the caller pays nothing. A laptop at the district hub sees it within seconds and queues a callback.
  • Works on any phone: no app, no data plan
  • The district pays for the callback
1 MISSED CALL02:14
Call ended before it connected.
callback queued at the district hub
₹0
2/8How Bob helps

Bob calls back, in her language.

The menu repeats until she presses a key, because nobody can be sure exactly when she picked up. Smartphone users are reminded to open the keypad.
  • Hindi or Gujarati; another language is data and audio files, not code
  • Every sentence is a fixed recording: the AI never speaks
BOB CALLING00:04
हिंदी के लिए 1 दबाएँ
ગુજરાતી માટે 2 દબાવો ✓
repeats until a key is pressed
3/8How Bob helps

She describes the problem once, in her own words.

Up to 25 seconds of speech. A small model on one laptop turns it into text, then into a fixed form of symptoms and danger signs.
  • Gemma 4 runs on the district laptop: no internet
  • A 25-second clip is understood in under 20 seconds

Source: Measured on the demo laptop (RTX 3050 Ti, 4 GB). Gemma 4 E2B, 8-bit, via llama.cpp.

LISTENING00:21
“મારી દીકરીને ખૂબ તાવ આવે છે અને હમણાં જ ખેંચ આવી છે.”
Gemma 4 · on this laptop · offline
4/8How Bob helps

Every answer must be backed by her words.

The model only fills the form. If it cannot point to the words she used, the answer stays unknown, and Bob asks a simple yes-or-no question on the keypad.
  • No quote, no answer: it is asked on the keypad instead
  • What she already said is not asked again
WHAT BOB UNDERSTOODcase 1203
✓Fever“ખૂબ તાવ”
✓Fits“ખેંચ આવી”
?Cough · not said, ask
?Drowsy · not said, ask
press 1 yes · 2 no · 3 don’t know
5/8How Bob helps

Written rules decide. Not sure? Ask a person.

The level comes from transparent rules drafted from WHO danger signs, never from the model’s opinion. When an answer is missing, the case becomes UNCERTAIN and a clinician decides.
  • Five levels of urgency, each with its reasons
  • Anything that could hide an emergency goes to a clinician
DECISIONrules v0.3
EMERGENCYcall 108 now
HIGHgo to a clinic now
UNCERTAINa clinician decides
MEDIUMbooked today or tomorrow
LOWnext free slot
because: fits or convulsions
6/8How Bob helps

The nearest clinic that is actually open.

Each village has its clinics in order of travel time. Bob picks the first that is open and has room, and tells her which one, by name.
  • Clinics report OPEN, CLOSED or FULL by SMS or a free missed call
  • Emergencies always go to 108
ROUTINGvillage: Rampur
Rampur PHC10 minclosed by SMS
Devgaon PHC25 minopen · sent here
Lakhpur CHC40 minopen
Rampur skipped: closed at 02:16
7/8How Bob helps

Urgent cases land on a clinician’s phone.

The routed clinic’s clinician gets what was heard and a number to call back, so they can prepare before the patient arrives. Unanswered alerts never disappear.
  • One reply acknowledges it
  • No answer in 3 minutes: it moves to the next clinic, then the district
NEW SMS02:15
VB 1203 EMERGENCY · Child under 5 · Fever · Fits · Call +91 ••••0022 · Reply ACK 1203
ACK 1203 ✓
LATERREPLY
8/8How Bob helps

The record writes itself.

The paperwork is done before she arrives: a complete record at the district, and a privacy-safe summary for the state, sent by SMS so it works with no internet anywhere.
  • Every case: urgency, reasons, rules and model version
  • Sent to the state over SMS, 200 bytes, no names or numbers
RECORD 1203→ CENTRAL
urgencyEMERGENCYpatientchild under 5heardfever, fitssent to108 + clinic alert
{"h":"HUB-D1","r":"E","a":"c","s":"F1","f":"CV","q":0,"l":"gu","o":"108","pk":"5bwd3d4tnail6"}
delivered ✓ · acknowledged by Central

Does it work? We measured it.

0

urgent cases missed, in every test set and both languages

½

the “not sure” rate when Gemma listens, compared with keyword matching

₹0

paid by the patient; about ₹0.30 per case for the district (estimate)

CASESNOT SURE · KEYWORDSNOT SURE · GEMMA
Hindi, 43 cases14%7%
Gujarati, 21 cases10%5%
10 real voices–0%

Source: Bob’s own evaluation: 54 synthetic cases written by the team and 10 recordings of team members’ voices; not real patients. Labels not yet reviewed by a clinician.

Watch a real call.

Give a missed call to the district line and follow it: received, called back, connected, in conversation, and the record Bob keeps at the end. Everything runs on one laptop.

LOOKING FOR THE LOCAL BOB SERVER…

The phone line, Gemma and every patient’s data stay on one laptop at the district hub, with no internet. This public copy of the site cannot reach it, by design. Run it yourself to watch calls live, or see the demo video.

How to run it →
  1. 1Missed call received
  2. 2Queued for callback
  3. 3Bob rings back
  4. 4In conversation
  5. 5Result recorded

Run it on one laptop.

Everything runs offline on a Windows laptop. A built-in simulator plays the patients, so you can watch full calls in Hindi and Gujarati without a phone.

1Get the code and models
git clone https://github.com/Meet2304/vitamin-bob
# + llama.cpp and Gemma 4 E2B (see README)
2Start the model and Bob
cd bob
tools\start_model.cmd
.venv\Scripts\python -m vitamin_bob.server
3Watch calls, no phone needed
.venv\Scripts\python -m fake_stuart run --pace 1.5
# open http://127.0.0.1:8100/dashboard
Open the repository →
CALL ENDED · 03:12 · ₹0

Localizing AI means meeting people on the phone they have, in the language they think in, and knowing when to step aside.

A small model on one laptop is enough to listen and sort. The decisions that matter stay with people.

Meet the four of us who built it →

Built for the World Bank × Hack-Nation Small AI for Development hackathon, health track, October 2026. Sources: World Bank concept note (2026), WHO Global Health Observatory, Siyam et al. (2021). Not a diagnostic tool; the protocol is drafted from WHO IMCI and not yet clinician-reviewed. Demo clinics and numbers are placeholders.