Inspiration
Small chiropractic clinics in India run their front desk on WhatsApp, by hand. The doctor is mid-adjustment while messages pile up. Cancelled slots stay empty, patients quietly drop out of their care plan, and every missed visit is lost income. Now and then a message describes numbness after a fall, which needs an emergency room, not a booking.
What it does
AgentGrow Bookings answers the clinic's WhatsApp. NVIDIA Nemotron 3 Super on Nebius Token Factory does all of the reasoning and tool calls:
- Books, moves and cancels appointments in English, Hindi or Hinglish ("kal shaam 6 baje adjustment ho jayega?"). Availability is enforced by the database, never by the model.
- Keeps patients safe. Red-flag symptoms are never booked: the doctor is alerted and the patient is sent to emergency (112). New patients start with a consultation. No medical advice.
- Sets itself up from one photo of the fee board: a vision model on Token Factory reads it, Nemotron confirms the list in chat, and a Tavily search prefills address and hours.
- Keeps the doctor in charge inside WhatsApp. Anything outside the rules (a package discount, a red flag) goes to the owner's phone; the owner's reply reaches the waiting patient, in the patient's language.
- Wins back revenue and reports it in rupees: waitlist refill on cancellation, care-plan reminders for overdue patients, a ₹300 deposit after a no-show (Cashfree test mode), and a Monday report: "Recovered: ₹2,700".
How we built it
- FastAPI + SQLite; one tool-calling agent loop with two roles (patient receptionist, owner assistant) and different tool sets.
- The model proposes, the code decides: slots are computed in SQL, bookings run inside
BEGIN IMMEDIATEwith a unique index, so two patients can never get the same slot (an 8-thread race test checks this). - Messages the clinic starts (owner answers, waitlist offers, reminders) are also Nemotron turns from a system note, so they come out in each patient's language; patients cannot forge those notes.
- We chose the model with an eval, not a guess.
eval/run.pydrives the real agent through 11 clinic scenarios with a frozen clock and judges the database state. Nemotron 3 Super: 22/22 at 3.1 s per turn and ~$0.002 per conversation; Nano 21/22 at 16.2 s; Lightning 20/22 at 1.4 s. - Deployed as a container on k3s behind a Cloudflare tunnel; WhatsApp Cloud API webhook with HMAC verification. 79 offline tests.
Challenges we ran into
- The eval caught real bugs before users did: Lightning once said "cancelled" without cancelling, and a prompt change once made Super skip the doctor alert on a red flag (now fixed and re-verified).
- Relative Hinglish dates ("parso", "kal subah") needed a 7-day calendar in the prompt.
- Token Factory has no NVIDIA vision model yet, so fee-card reading uses Qwen3.8-27B (3/3 cards, including a tilted Hindi board); Nemotron does everything else.
Accomplishments that we're proud of
A complete product a clinic could use tomorrow: safe triage, revenue recovery measured in rupees, and zero-dashboard setup from one photo, at about ₹0.18 per conversation.
What we learned
Scripted evals that check database state, not wording, make model choice and prompt changes safe.
What's next
Voice notes (once a hosted NVIDIA speech model is on Token Factory), real clinic pilots, and a second business kind: lead conversion for AgentGrow.io.
Built With
- cashfree
- cloudflare
- fastapi
- kubernetes
- nebius-token-factory
- nvidia-nemotron
- openai
- python
- qwen
- sqlite
- tavily

Log in or sign up for Devpost to join the conversation.