Inspiration
Millions of families look after an older parent from another city. The person who knows how they are today is the person alone at home, and the family finds out late: a skipped tablet, a bad night, a sugar reading of 58. A voice assistant is the one interface an eighty-year-old will actually use, so CareCircle starts there.
What it does
- For the person in care: talks naturally in English, Hindi, Hinglish, Tamil, Telugu, Bengali or Kannada. Doses, mood, sleep, pain and readings (blood pressure, sugar, oxygen, weight, pulse, INR) are logged by voice, with short, warm replies.
- For the family: a live dashboard per person (adherence, mood and sleep trends, vitals, appointments, alerts), a weekly digest and an "ask about..." chat.
- Autonomous care watch: reads the whole record, decides whether the family needs to know, and raises the alert without being asked.
- For family admins: add or remove people, change medicines, care instructions, facilities and appointments. Photograph a prescription and review a draft before anything is added.
- For clinicians: read-only access to their assigned patients across families.
- Data: 6 synthetic families, 10 patients and 29 accounts with different conditions (diabetes, stroke with atrial fibrillation, kidney disease, COPD, thyroid, Alzheimer's, Parkinson's, heart failure).
How we built it
- MCP server (spec 2025-11-25, Streamable HTTP, FastMCP) with 13 tools, a resource and a prompt. This is the Alexa+ integration surface.
- Agent: the Strands Agents SDK on Amazon Bedrock (Claude Haiku 4.5) connects to the MCP server over HTTP, the way Alexa+ would. The tools are the only way it can touch the record.
- The model decides what to do; code decides what is true and what is allowed. Permissions, health thresholds, schedule parsing, allergy checks, alert routing and the emergency message are plain, tested code. The model is used in four places: the conversation, the care watch, the digest and the prescription reader.
- Safety: after an urgent alert the server speaks a fixed, translated 112 / 108 message and mutes the model. Emergency wording is upgraded to urgent by code, and any claim that help was called is flagged as unconfirmed.
- Access: four roles, per-request scope re-read from the database, tenant isolation, an append-only audit log, and chat history with retention.
- Web app: React 19, TypeScript, Tailwind, Framer Motion, Recharts, with streaming replies spoken sentence by sentence.
- Open source (MIT), with a README and a code walkthrough in docs/ARCHITECTURE.md.
Challenges
- Models are fluent, not safe. In live testing the model once gave the police number for an ambulance, wrote "help is on the way" after a fall, and put "she has called 112" into an alert the family reads. Each became a deterministic fix with a test.
- Reading prescriptions. The model labelled 1-0-1 as "other" and a once-a-week drug was scheduled daily. Schedule parsing, allergy matching and duplicate checks moved into code; the model only transcribes through one forced tool schema.
- Multi-family privacy. The patient is fixed by the connection and checked on the server, never passed by the model.
Accomplishments
371 backend tests, 139 component tests, 39 end-to-end tests, and live behaviour evals against the real model (22 conversational checks and 5 prescription checks), including a hostile prescription that tries to give the model instructions.
What we learned
Putting the model behind tools, and every rule that must be exactly right in code, made the assistant easier to trust and far easier to test.
What's next
Register as a real Alexa+ add-on (OAuth 2.1 account linking and a public HTTPS endpoint), consent flows for what family can read, encryption at rest, rate limiting, handwriting and Indic-script prescriptions.
Honest limits
- The Echo in the demo is a simulator talking to our own MCP server. We did not register a real Alexa+ add-on: the alexa-ai CLI is installed from a private registry that Amazon provisions, and we had no such access. Real Alexa+ also needs OAuth 2.1 account linking, which is not built.
- Demo sign-in shows passwords on the page; SQLite, no encryption at rest, no rate limiting.
- Alexa+ in India currently covers English, Hindi and Hinglish; the other four languages are simulated and labelled.
- All data is synthetic. Clinical thresholds are simple demo rules, not medical advice.
Built With
- amazon-bedrock
- fastapi
- model-context-protocol
- python
- react
- sqlite
- strands-agents
- typescript
Log in or sign up for Devpost to join the conversation.