Inspiration
Anyone who's worked adjacent to home-care staffing knows the pattern: a shift is scheduled, and then someone has to confirm it actually happens usually a human on the phone, sometimes days in advance, sometimes the morning of. When a caregiver can't make it, that same person has to scramble through a call tree of coworkers hoping someone's free. It's high-stakes (a missed shift means an elderly or disabled client goes uncovered) and painfully manual.
What it does
Sheda AI calls caregivers ahead of their shifts to confirm. If someone can't make it and names a friend or coworker who could cover, Sheda AI immediately calls that person too — a live, automated hand-off chain, no human dispatcher required until the chain runs out. Everything (status, referrals, transcripts) lands in Postgres in real time, visible on a calendar dashboard where a scheduling manager can also ask an AI copilot about any shift, or manually request coverage from a ranked list of available caregivers.
How we built it
The backend is FastAPI + Postgres (raw SQL, no ORM — we wanted the schema to be legible at a glance) with Redis as a fast cache layer so the dashboard can poll shift status without hammering the database. Vapi sits in the middle as the voice orchestration layer — it owns speech-to-text, the LLM turn-taking, and text-to-speech, talking to a Twilio number we imported directly into Vapi's dashboard rather than wiring up SIP trunking ourselves.
We deliberately built two separate voice assistants instead of one: a primary assistant that calls the originally-scheduled caregiver, and a referral assistant with a different opening line and tone for the (colder) call to a referred friend. Both report back to a single webhook endpoint, dispatched internally by tool name, which keeps the integration surface small.
The dashboard went through two lives. We started with a plain-JS status table wired straight to the API fast to build, fully functional. Partway through, a teammate's branch brought in a much more polished week-calendar UI with an AI copilot side panel. The catch: it was a pre-built bundle with no source committed anywhere, running entirely on mock data. We extracted its design tokens from the compiled CSS and rebuilt the whole thing in vanilla JS against the real backend calendar grid math, a candidate-matching panel backed by real call-history reliability scores, and a live chat panel backed by Claude with actual shift context injected into the system prompt.
Built With
- fastapi
- twilio
- vapi
Log in or sign up for Devpost to join the conversation.