Florence
The problem Finding covered care is miserable: cryptic provider directories, surprise copays, and ten tabs of insurance jargon.
Core trick
Maps a spoken symptom to a plan-scoped provider search, computes copays from network tier, and books only after explicit confirmation.
Description
The problem
Finding covered care is miserable: cryptic provider directories, surprise copays, and ten tabs of insurance jargon. People in pain shouldn't have to become benefits experts to see a doctor.
What it does
A member at the Embarcadero in San Francisco says "I've got back pain and need to see a doctor," and Florence:
recognizes physical therapy as the right starting point,
finds in-network PTs nearby, sorted by rating, scoped to the member's plan,
shows per-provider copays computed from the plan and network tier (e.g. $40 preferred vs $100 out-of-network),
pulls open appointment times, and
books the appointment — but only after the member explicitly confirms.
Every step renders as a dynamic card inline in the chat (provider list, copay comparison, availability, a confirm card, a booking receipt), so you both hear Florence and see the structured results. She speaks in a real ElevenLabs voice, listens with live speech-to-text that waits for you to stop talking, and the mic is an animated audio orb that reacts to listening / speaking.
How we built it
Driver-agnostic architecture. Voice (ElevenLabs Conversational AI) and a Claude text agent both translate into one WorkflowEvent stream, call the same client tools, and render through one component registry. The UI never knows which "brain" is talking — so voice and text are interchangeable.
Real API integration. Provider search hits the live AskFlorence Tools API (/providers/suggest); the voice session token is minted via /florence/agent-session; copays are computed from the plan; provider accepting-status comes from /providers/covered.
Human-in-the-loop booking. The booking mutation lives behind the confirmation tap, so an appointment can never be auto-booked.
Stack: Expo SDK 56 / React Native 0.85 / React 19, TypeScript (strict), Expo Router, Zustand, Reanimated, ElevenLabs (voice + TTS), Web Speech API (STT), Anthropic Claude (dynamic text agent). Tested with Jest / React Native Testing Library; runs on web today and as a native iOS/Android dev build.
The linked repo returns 404, so it was deleted or made private.