Skip to content
Aadil Salman Butt
← All work
Case study 02

My own productPre-launch

DentalAI Receptionist

An AI receptionist that answers a dental clinic's phone, books the appointment and knows when to hand over to a person. Clinic staff watch every call from a multi-tenant dashboard.

DentalAI Receptionist product site homepage
Role
Product, design, backend and voice flow
Timeline
Aug 2026 to now
Stack
Vapi, Convex, Next.js, Google Calendar, n8n, Claude API
Scale
Multi-tenant from day one

The problem

A small dental clinic misses calls while the front desk is busy, and every missed call can be a missed booking. The receptionist has to pick up every time, book correctly and never pretend to be a clinician.

The hard requirements: book against the clinic's real calendar during the call, and hand anything clinical, urgent or about money to a person.

What I built

01

Booking by phone

Vapi runs the call and invokes tools that are Convex HTTP actions. They check Google Calendar, then book, reschedule or cancel while the patient is still on the line.

02

Knowing when to hand over

Emergencies, billing disputes and clinical questions go to staff. The AI's only moves on a clinical question are to answer from the clinic's FAQ or escalate.

DentalAI product site showing booking slots and a call summary marked Booked

03

A dashboard for the clinic

Owners and staff see calls, appointments, the knowledge base and AI settings. After each call the Claude API writes a summary, and n8n sends the patient an SMS confirmation.

How it fits together

The caller talks to Vapi, Vapi calls Convex, and Convex is the whole backend.

  1. Callerpatient on the phone
  2. Vapinumber, speech, turn-taking
  3. Convex HTTP actionstools, webhooks, tenant data
  4. Google Calendarreal availability
  5. Claude APIcall summaries
  6. n8nSMS confirmations

Decisions and trade-offs

Vapi instead of a home-made voice stack

Telephony, speech-to-text, barge-in and text-to-speech latency are hard real-time problems. Vapi owns them, and my code owns the dental rules.

Trade-off: per-minute cost and less control over the speech pipeline.

Convex as the entire backend

Queries, mutations, actions and HTTP actions are the backend, so there is no second service to deploy, and the dashboard gets live call lists for free.

Trade-off: no row-level security, so every function enforces the clinic boundary in code.

A hard line on what the AI won't do

No diagnosis, insurance claims or payments. Anything that needs clinical judgement is escalated to a person.

Trade-off: more calls reach staff than a looser assistant would send.

Results

6
services behind one phone number
1
backend deployment: Convex
3
kinds of call always handed to a person
Next case studyApexFlow