VoiceLead AI · Case studyDemo build · fictional business, simulated data

A receptionist that never misses a call.

Real-time voice AI that answers, qualifies, and books appointments — while the front desk watches it happen live.

Real-time voice (WebRTC)Streaming transcriptionLive qualificationCalendar bookingCRM pipelineReact + TypeScript

Live demos are password-gated — request access via the contact page and the password comes back in minutes.

Clinic staff reviewing patient information
Demo business: Demo Dental Clinic (fictional)
The problem

Small clinics and home-services firms lose bookings every time a call rings out — and every missed call is revenue walking to the next listing.

What was built

A two-sided voice assistant: a click-to-talk widget on the business site for callers, and a live console where staff watch qualification fields fill, the calendar update, and the lead land in the pipeline.

The demo shows
  • A complete call, hello to booked slot, with two-way audio
  • Qualification fields auto-filling while the caller speaks
  • The calendar and CRM updating the moment the slot is confirmed

The challenge

For a dental clinic or an HVAC company, the phone is the sales channel — and it goes unanswered at lunch, after hours, and whenever the desk is busy. Voicemail converts almost nobody.

The hard part isn’t answering: it’s answering usefully. The assistant has to hold a real conversation, capture structured lead data from unstructured speech, and close the loop with an actual booking — not a callback promise.

The solution — three decisions

01

Two surfaces, one call

The caller gets a friendly widget on the clinic’s own website; staff get a console. Both watch the same conversation — that cross-surface handoff is the product.

02

Liveness as the design language

Everything happening right now — audio meter, state lamp, streaming transcript — carries one signal color — and nothing else moves. On video, the call feels unmistakably alive.

03

Booking is the finish line

The assistant offers real open slots mid-conversation and confirms by voice; the slot flips to booked on the staff calendar in the same second.

How it works

In
Caller audioWebRTC in the browser
Site widgetclick-to-talk embed
VoiceLead engine
Speech loopASR → dialog → TTS
Qualification extractorfields from free speech
Slot negotiatoroffers real openings
Out
Front-desk calendarslot flips to booked
CRM pipelinelead + transcript attached
Call analyticsreconciling 14-day view

The demo implements this shape end to end with a simulated service layer — the “extend for production” section lists what swaps in for live deployment.

Product tour

VoiceLead staff console during a live callVoiceLead staff console during a live callQualification fills itself as the caller talksAssistant state — listening, thinking, speakingWord-by-word live transcript
The staff console mid-call: transcript streaming, assistant state visible, lead data filling itself.
Caller widget offering appointment slotsCaller widget offering appointment slots
The caller’s side: slots offered in-conversation — tap one or just say it.
Calendar with just-booked slot highlightedCalendar with just-booked slot highlighted
Seconds after the caller confirms: the slot is ringed “just booked” on the front-desk calendar.
CRM pipeline with the new leadCRM pipeline with the new lead
The finished call lands as a lead card — transcript attached, stage set, appointment chip on.

What the demo shows

  • Two-way audio: the assistant genuinely speaks its answers aloud
  • A scripted caller journey that is fully repeatable on camera
  • The “live line” following staff to any screen during an active call
  • A 14-day dashboard where every number reconciles with the call log

Under the hood

  • Call engine drives a scripted state machine: listening → thinking → speaking, with word-level transcript streaming and speech synthesis
  • Shared in-memory store with subscriptions — a booking mutates calendar, pipeline, and history in real time across routes
  • Deterministic seeded mock data, generated relative to “today”: believable names, lumpy call volume, no future timestamps
  • Per-app design system enforced from a single DESIGN-SYSTEM.md; light console with an ink-dark sidebar
Built as a demonstration — on purpose

Demo Dental Clinic is fictional and labeled as a demo on every screen. Nothing here is presented as client work: no client names, no outcome metrics, no testimonials. The proof is the running product — open the live demo above and check every claim.

What we’d extend for production

  • Swap the scripted engine for a live ASR/LLM/TTS loop over WebRTC
  • Real calendar backends (Google/Outlook) with conflict handling
  • Barge-in handling and interruption-aware turn taking
Next step

Build something like this.

Fixed scope in writing before any money moves, demos during the build, and full code ownership at handover.

1%