Inspiration
Every consultation starts the same way: the physician spends the first few minutes just reconstructing a story the patient already knows — how long, how bad, what changed. That's time spent gathering, not treating. We wanted to move that gathering before the appointment, so doctors walk in already knowing the story.
What it does
Prelude Health calls the patient after booking, has a short adaptive voice conversation about why they're coming in, and hands the physician a structured summary before the consultation starts. It asks up to 10 tailored questions generated live from the patient's own answers, checks medications and allergies, and — critically — never diagnoses, triages, or comments on treatment. If a patient describes something concerning, it tells them to seek emergency care immediately and escalates instead of continuing the intake.
How we built it
Two agents split by latency budget. A live agent (Amazon Nova 2 Sonic, speech-to-speech) handles the real-time call over a WebSocket, sub-second per turn. Once the call ends, a summarizer agent (Claude Sonnet on Bedrock) turns the transcript into a structured report — a separate, stateless, retryable process since Nova 2 Sonic doesn't do text generation. The two agents never talk to each other directly; MongoDB is the handoff. The backend is FastAPI on Strands Agents SDK; the frontend is a React/TypeScript patient + physician UI.
Challenges we ran into
Keeping the agent strictly a collector, never a diagnoser — enforced in three separate layers (the live prompt, the summarizer prompt, and the report schema itself, which has no field for an assessment) so no single failure point lets a diagnosis slip through. Getting Nova 2 Sonic's bidirectional audio stream stable, and telling apart an abandoned call from a completed one so physicians can trust that a missing report really means "call didn't finish."
Accomplishments that we're proud of
A working end-to-end voice-to-summary pipeline with a hard safety boundary that's structurally enforced, not just prompted — plus a live safety-escalation path that interrupts intake and alerts the physician immediately.
What we learned
Splitting a real-time, low-latency voice agent from a slower, retryable summarization step made the system far more reliable than trying to do both in one model — and safety constraints hold up much better when they're built into the data model, not just instructions.
What's next
Doctor self-registration via Google OAuth for calendar delivery, richer document/recording uploads tied to each session, and expanding the question bank per specialty.
Log in or sign up for Devpost to join the conversation.