Many older people take several medicines a day, at different times, with different instructions. Most reminder apps expect them to tap small buttons on a screen, and families usually learn about a missed dose only after the fact, when someone happens to call. We wanted something an elder can simply talk to, and something a family can trust without having to keep checking in.
"CareLoop" is a voice-first medicine companion.
The elder talks to it.They press one big button and say "What do I need to take?", "I took it", "What's on today?" or "I need help". CareLoop answers out loud. The caregiver sees everything live. A dashboard shows every dose as pending, taken or missed, updating instantly. Missed doses, skipped doses and help requests raise alerts. A prescription photo builds the schedule. The caregiver uploads a photo,NVIDIA Nemotron 3.5 Super VL reads it, and the caregiver reviews and approves every line before it is saved. A calm daily summaryfor the family is written by the same model.
Model: nvidia/Nemotron-3.5-Super-VL served on Nebius Token Factory, called through its OpenAI-compatible API. One vision-language model reads the prescription photo and writes the caregiver summary, so we needed only one model and one key.
Backend: Python with FastAPI and SQLite. Every business rule lives in one service class, and the website, the REST API and the MCP tools all call it.
Voice tools over MCP: the actions (schedule, confirm a dose, skip, agenda, ask for help) are exposed through an MCP server at /mcp, so the same tools work for any MCP client.
Voice in the browser: the Web Speech API handles listening and speaking. A small intent matcher turns what the elder says into one of those actions.
Live dashboard: server-sent events push every change to the caregiver's screen.
Offline mode: a mock reader returns a sample prescription, so the app runs without an API key and the tests need no network.
CareLoop logs and reminds. It does not give medical advice.
- The AI never writes to the care plan on its own. The caregiver edits and confirms every row.
- Uncertain rows (low confidence, no name, no clock time) are highlighted. The model is told to leave unreadable fields empty rather than guess a medicine name.
- Dose times are validated before saving.
- If a dose is late, CareLoop does not tell the elder to take it. It says the dose was missed and asks them to check with their caregiver first.
Real prescriptions don't look like sample data. Indian prescriptions write timing as 1-1-1 or 0-0-1 (morning, afternoon, night). Our first test returned the model's own field names, wrapped in a code fence. We taught the parser to strip the fence, accept those variants, and convert the patterns into clock times.
Next dose was wrong at midday. At 12:50 the app told us to take a dose scheduled for 08:00, because it simply picked the first pending dose. The reply is now time-aware: it reports the missed dose, refers it to the caregiver, and names the next upcoming dose.
Duplicate doses.Saving the same prescription twice repeated every dose. Saving now skips a medicine and time that already exist.
Silent validation errors. The page showed [object Object] when the server rejected a save. It now shows the server's actual message and checks times before sending.
Getting set up. Our card failed Stripe authentication, the billing page returned an internal error, and the regional endpoint differed from the base URL we first used. We confirmed the model in the Playground first, then took the correct regional URL from the model's endpoint information.
A vision-language model can read a prescription well enough to save a caregiver time, but only if a human stays in the loop. The review step is the feature, not a limitation. Small details, like dosing notation and what counts as the "next" dose, matter as much as the model call itself. -Keeping all rules in one service made it easy to switch the model provider to Nebius and Nemotron without touching the rest of the app.
- Push notifications so alerts reach the caregiver's phone.
- PDF prescription support.
- A smaller Nemotron model for fast spoken replies.
- Login and multiple households before any real-world use.
Built With
- css3
- fastapi
- html5
- javascript
- mcp
- model-context-protocol
- nebius
- nebius-token-factory
- nemotron-3.5-super-vl
- nvidia-nemotron
- openai-api
- pydantic
- pytest
- python
- server-sent-events
- speech-recognition
- speech-synthesis
- sqlite
- uvicorn
- web-speech-api
Log in or sign up for Devpost to join the conversation.