How We Built It Frontend
Expo Router plus React Native UI components powered by React Query, Zustand stores, and shared Supabase Patient/CallLog types keep every card (Mood, Meds, Calls, Flags, Sleep, Today/Week views) in sync without manual state plumbing.
Backend
Node/Express services integrate VAPI webhooks, ElevenLabs previews, and Supabase tables for patients, call logs, meds, health flags, and voice baselines.
Challenges We Encountered
Ensuring all six VAPI tools (storeDailyCheckIn, updateFlags, markMedicationStatus, logCallAttempt, notifyCaregiver, checkVoiceAnomaly) fired reliably in order. Any missed tool broke compliance, so we instrumented the webhook pipeline heavily.
Building a timezone-safe scheduler with retries that respected each patient’s call_schedule array; missing DST offsets would have meant waking someone at 5 a.m.
Capturing high-quality audio for anomaly baselines and gracefully handling cases where VAPI had not finished uploading a recording yet.
Accomplishments We Are Proud Of
A full end-to-end AI calling loop—voice selection, scripted dialogue, medication logging, mood scoring, anomaly detection, and caregiver notification—built in a single weekend.
A production-ready caregiver dashboard that gives a mission-control view of every patient, including manual overrides like “Call Now” when the AI detects something concerning.
Clean separation between frontend, backend, and Python microservice work so the team could move in parallel without collisions.
What We Learned and Next Steps
Clarifying ownership of schema changes, API contracts, and audio handling prevented painful rework later.
Productionize caregiver alerts (SMS/phone trees) inside notifyCaregiver, upgrade the sentiment model beyond keyword heuristics, and finish the migration tooling so deployments stay repeatable.
Expand the dashboard with richer anomaly visualizations, multilingual scripts, and tighter caregiver response tooling so the AI remains a co-pilot rather than a black box.
Built With
- node.js
- react
- supabase
- typescript
Log in or sign up for Devpost to join the conversation.