/work/dawa.md
DAWA
Vernacular medication voice agent
- status
- shipped
- language
- Python
- year
- 2026
- role
- Team of 4 — owned the voice layer
- stack
- Python · FastAPI · Sarvam AI
A Hindi-language voice agent that calls patients at dose time. Built with a team of four; I owned the voice layer.
what it does
A dose-time call runs Sarvam Saaras STT into a policy-bound five-state dialogue and back out through Bulbul TTS. Verified live, end to end.
designing it so it cannot give medical advice
The interesting constraint here wasn't making the agent fluent — it was making it structurally incapable of saying the wrong thing. Every spoken line is a fixed template with the drug name injected from the medication graph. The model never writes words the patient hears.
That is a stronger guarantee than instructing a model not to give advice, because it doesn't depend on the model complying.
keeping the safety path deterministic
Adherence is decided by a Latin/Devanagari regex, not by inference. The LLM refines only unknowns, and it can raise a refusal flag but never clear one.
The property this buys: a dead LLM still completes the call. Degrading to the deterministic path is the normal operating mode, not an error case — which is the behaviour you want when the thing on the other end of the line is a patient waiting to be told whether to take a dose.