AI systemVoice AIOpen source

AI voice receptionist

“A missed call is a missed patient. Answer every one, and book the visit before they hang up.”

The product

Riley, an AI receptionist: dental calls answered, booked and scored. The front desk dashboard shows the live call, the patient intake and the new booking on the schedule.

github.com/moezkayy/bright-smile-voice-receptionist ↗

In numbers

12 / 13simulated caller scenarios passed on the first run
1.4 smedian reply time on a recorded call
$0.05of LLM cost for a 2-minute call

The idea

Dental clinics lose patients every time the phone rings out. Callers mostly want the same few things: do you take my insurance, and when can I come in.

Riley answers those calls by voice for a made-up clinic, Bright Smile Dental. It checks insurance, finds a real opening across the hygiene and doctor chairs, and books it while the caller is still on the line. The front desk watches it happen live: the transcript, a patient card that fills itself in, and the booking landing on the schedule.

The rule: the AI never decides what's true. The clinic's own code does.

What it does

  • Checks insurance. “Do you take Delta Dental?” gets a real answer from a network table, including the warning that the HMO plan isn't covered.
  • Books real times. It only offers slots the clinic's API returned, respecting opening hours, lunch, visit lengths and both chairs, then reads the details back and books.
  • Handles emergencies safely. Swelling and a fever means “call 911 now”, not a booking. A cracked tooth gets the earliest emergency slot, with no diagnosis.
  • Speaks Spanish when the caller does, and takes a callback request for anything it can't do.
  • Scores every call. After each call, it's checked against four clinic rules and the review appears on the dashboard.

How it's built

An ElevenLabs voice agent handles listening, speaking and turn-taking. It calls four tools on a Python FastAPI clinic API, which enforces every scheduling rule and blocks double-booking.

The agent is defined in code: prompt, voice, tools, guardrails and evaluation criteria all live in the repo and sync with one script.

It's tested like software: 13 scripted callers (insurance traps, emergencies, prompt injection, Spanish) run against the real tools, plus 52 unit tests. It collects only what a front desk needs, never a date of birth or member ID.

Stack

ElevenLabs AgentsPythonFastAPIJavaScriptWebhooksCloudflare Tunnel

Note

Built for my portfolio, with a fictional clinic and fictional patients. It is not client work. The agent, the tools and the test numbers are real, from runs on 8 October 2026.