Skip to content
UPPER LAYER®

Case study · AI phone receptionist · Voice AI

FrontDesk AIAI phone receptionist Case Study

An AI phone receptionist for a demo cosmetic clinic, running on Vapi: it answers questions, qualifies the caller, books the appointment in Cal.com and logs the caller and the full transcript to HubSpot.

Type
Built to a written brief
Role
Call flow, prompt, backend, integrations, dashboard
Status
Deployed on Render, tested with Vapi browser calls; no phone number yet
Service
Voice AI
Last updated
FrontDesk AI browser call dashboard showing reception metrics, 7-day call volume, and integrations
FrontDesk AI mobile receptionist dashboard displaying call volume and booking conversion rates

The problem

A busy clinic misses calls while the front desk is with a patient or already on the phone, and most of those callers want something simple: a price range, the opening hours or a time to come in.

What I built

FrontDesk AI is a voice receptionist on Vapi for a made-up clinic, Demo Aesthetics Clinic. It answers from the clinic's FAQ, finds out what the caller wants, and books, moves or cancels the appointment in Cal.com. The caller becomes a HubSpot contact and the call is logged against them with its transcript, and every call shows up on a dashboard. Cal.com and HubSpot are connected to real accounts; text confirmations (Twilio) and vector search (Qdrant) are built but run as mocks until their keys are added. The clinic, its prices and its doctors are invented, and every call so far is one of my own tests.

Walkthrough

See it working

A test call, from the first question to a confirmed booking, in one minute.

What it does

The features that matter

What it actually does, one feature at a time.

01

Answers from the clinic's FAQ

Services, price ranges, hours, doctors and aftercare come from the clinic's knowledge base. It quotes ranges, not exact prices, and offers a callback when the answer isn't there.

02

Books while the caller is on the line

It checks real Cal.com availability up to three weeks ahead, offers times, reads the name and number back to confirm them, and books. Existing appointments can be moved or cancelled on the same call.

03

Every caller lands in the CRM

The caller is created or updated as a HubSpot contact, and the call is logged on their record with the full transcript, so the front desk can pick it up from there.

04

Knows when to hand over

Clinical questions, an upset caller or a request for a person go to the front desk by call transfer. It never gives medical advice.

05

Honest from the first line

The greeting says the call may be recorded, and if asked, it says plainly that the clinic is a demo of an AI receptionist.

06

A call dashboard behind a login

Calls, bookings, conversion, escalations, missed calls and Vapi's average reply time, a list of every call, and which integrations are live or mocked. Phone numbers are masked to the last four digits.

Under the hood

How it works

The part nobody sees, step by step.

01

Answer

Vapi picks up, Deepgram Nova-3 transcribes the caller and GPT-4.1 mini replies in Vapi's Savannah voice, following one shared receptionist prompt.

02

Call a tool

When it needs the FAQ, the calendar or a booking, Vapi calls one webhook on a Node backend. The request must carry a shared secret, and every argument is checked with zod before anything runs.

03

Act

Adapters reach Cal.com for bookings, HubSpot for contacts, Twilio for texts and Qdrant for the FAQ. Any adapter without a key falls back to in-memory slots, a console log or keyword search, so the whole call can be tested with no paid accounts.

04

Log

Vapi's end-of-call report, with the transcript, recording link and average reply time, is saved to SQLite for the dashboard and logged to HubSpot as a call.

Screens

Every screen, as shipped

Captured from the running app. It has no public deployment yet.

The call dashboard

The deployed dashboard on Render. The calls on it are my own browser test calls to the demo clinic, not patients.

FrontDesk AI overview displaying 100% answer rate, bookings count, and 1.58-second average latency
Overview after one test call that ended in a booking
FrontDesk AI Calls log table listing patient call IDs, durations, and successful completion statuses
Every call, with its status and outcome
FrontDesk AI Integrations dashboard showing active connections for Cal.com, HubSpot, and SMS
Which integrations are live and which are mocked

The call, on Vapi

One booking call from Vapi's side: the recording, the transcript and where the reply time goes.

Vapi call inspection console showing voice waveform recording and turn-by-turn dialogue transcript
The recording and transcript
Vapi voice latency breakdown across 16 turns tracking transcriber, LLM, and speech synthesis speed
Latency per stage: 1.58 s average over 16 turns

Booked and logged

Where the call ends up. The booking lands in Cal.com (the clinic runs on Los Angeles time, so a 9 PM slot shows as 9:30 AM in India), and the caller becomes a HubSpot contact with the call and its full transcript on their record. The summary and sentiment panels are HubSpot's own AI reading that logged call.

Cal.com confirmed 30-minute clinic consultation booking scheduled automatically by FrontDesk AI
The confirmed booking in Cal.com
HubSpot CRM record showing inbound call activity with synced full conversation transcript
The call logged with its transcript
HubSpot logged call dialogue where FrontDesk AI agent negotiates appointment times and secures booking
The transcript through to the booking
HubSpot AI contact insights panel summarizing patient treatment interest and booked appointment details
HubSpot's summary of the call
HubSpot timeline view documenting inbound AI phone call and receptionist interaction records
The inbound call on the contact's timeline
HubSpot sentiment analysis panel classifying clinic caller mood as receptive
HubSpot's sentiment read of the call

On mobile

The dashboard on a phone.

FrontDesk AI mobile dashboard displaying real-time call performance metrics and response latency
Overview
FrontDesk AI mobile integrations panel displaying live Cal.com scheduling and recent calls list
Integrations and recent calls

The stack

Voice
Vapi · Deepgram Nova-3 · GPT-4.1 mini · Retell and Bland (kept as backups)
Backend
Node.js · Express · zod · SQLite (node:sqlite)
Integrations
Cal.com · HubSpot · Twilio · Qdrant
Delivery
node:test and supertest · GitHub Actions · Render

The result

64

automated tests, all passing, covering endpoint auth, webhook signatures, rate limiting, argument checks and the book → reschedule → cancel round trip; GitHub Actions runs them on every push

Source: npm test on the repo's main branch and the Tests workflow in GitHub Actions, 5 Oct 2026

Start a project

Tell me what needs to change

Share your product and the work you need. I'll help you find the right scope and next step.