Skip to main content

AI Voice Agents + Automation + Integrations

Dental AI Reception & Automation System

A complete AI workflow connecting voice conversations, automation systems, data handling, and team notifications.

ElevenLabsMake.comGoogle SheetsCal.comSlack
Dental AI Reception & Automation System

The Challenge

Calls came in during appointments, after hours, and during busy front-desk moments. Some were missed entirely, and every missed call was a booking opportunity or a patient who needed help.

Appointment booking, rescheduling, and cancellations were handled manually over the phone, one call at a time, with no automated way to check availability or confirm a slot.

There was no structured follow-up for leads who called but didn’t book. Reactivating them meant remembering to call back, which didn’t happen consistently.

Call outcomes, booking details, and patient information lived in different places (a phone, a calendar, a notepad), with nothing connecting them into one system the front desk could rely on.

AI Voice Agent

An ElevenLabs voice agent answers the call, understands what the patient needs, and, for a booking, checks live availability and confirms a slot before the call ends.

Caller
AI Voice Agent
Conversation Understanding
Automation Trigger

Demo: Real Recorded Call

A real recorded call with the voice agent is embedded above, in the AI Voice Agent section. Press play to hear the actual conversation flow.

PRESS PLAY
SPACE
01

Voice in

Retell AI captures the call and streams audio through a custom LLM prompt chain.

02

Slot fetch

The booking branch hits cal.com REST API mid-conversation for live availability.

03

Booking

Agent confirms available slot and creates the calendar appointment in real time.

04

Confirm

Full conversation state is logged to Supabase; agent reads back confirmed booking.

05

Handoff

Complex queries escalate to a live agent, and the call transfers seamlessly via Retell AI.

01

Greeting

Determines intent: book, reschedule, or cancel

02

Collect Info

Captures name, contact, and service details

03

New Booking

Offers available time slots and confirms selection

APIcal.com

04

Reschedule / Cancel

Looks up existing appointment by name and phone

05

Confirm Details

Reads back booking info and closes the interaction

06

Human Handoff

Call transferred to live agent via Retell AI

Tools the agent calls: Cal.com via API key

calcom_get_available_slotscalcom_create_bookingcalcom_get_all_bookingscalcom_cancel_booking

Automation Backend

When the call ends, ElevenLabs fires a webhook into Make.com, which routes the outcome through five scenarios (booking, analysis, reactivation, and content), each writing to a shared Google Sheet and, where it matters, alerting the team in Slack.

Make.com Workflows

Five scenarios, each triggered by a different call outcome.

make.com
Post-Call Webhook Router

Post-Call Webhook Router

Receives the ElevenLabs webhook the moment a call ends, parses the outcome field, and fans out to all downstream scenarios.

Error handling

Malformed or empty payload

Returns HTTP 200 immediately so ElevenLabs does not retry-loop, then logs the raw body to a Failed Calls row for inspection.

Unrecognised outcome value

Falls back to an "unresolved" branch: the row is written with status=unknown so nothing is silently dropped.

make.com
Booking Logger

Booking Logger

Fires on the "booked" branch, writing appointment details to the Appointment Table and sending a Cal.com confirmation.

Error handling

Patient calls twice, both trigger the booked branch

Search-before-insert matches on phone number, so the second call updates the existing row instead of creating a duplicate booking.

Cal.com API returns a 4xx error

Make.com retries 3× with 30s gaps; if all fail, status=booking_failed is written and an email alert is sent.

make.com
Call Analyzer

Call Analyzer

Sends the full transcript to OpenRouter, extracts sentiment, outcome label, and a confidence score, and writes results to the Call Record.

Error handling

OpenRouter timeout or 5xx error

Retries 3× with exponential backoff. On the third failure it writes sentiment=pending and sends an email alert.

Confidence score below 0.7

The row is flagged review_needed=true, and a filter view in the sheet surfaces low-confidence records for human review.

make.com
Lead Reactivation

Lead Reactivation

Polls the Patient Table for unconverted leads and sends a Twilio SMS on a 3-attempt cadence spaced 24 hours apart.

Error handling

Twilio delivery failure

attempt_count is incremented and retry_at is set to +24h. The lead stays in the active queue until the attempt limit is reached.

attempt_count reaches 3

Status is marked exhausted and the row is removed from the retry filter, so the lead is never contacted again automatically.

make.com
Content Generator

Content Generator

Converts positive call outcomes into AI-drafted social posts via OpenRouter, exporting 3 image sizes per post to the Social Media Draft sheet.

Error handling

OpenRouter returns blank copy

The row is written with status=draft_failed, and a dedicated filter view surfaces it so a human can trigger a manual retry.

All 3 image exports fail

status=images_pending is written; the copy is still usable so the post isn’t blocked while images regenerate.

Google Sheets: Live Data

One spreadsheet, four tabs. Every workflow reads and writes here.

Patient Table

patient_namephonelast_call_datestatuscall_idnotes
Patient Table Google Sheet

Call Record

call_idoutcomesentimentconfidencetranscript_excerpttimestamp
Call Record Google Sheet

Appointment Table

patient_namephonedatetime_slotstatussent_reviewcall_id
Appointment Table Google Sheet

Social Media Draft

post_copyimg_1080x1080img_1200x627img_storiesstatusweek_of
Social Media Draft Google Sheet

Real Outputs

What the system actually produces when it runs, captured directly from the live deployment.

Escalated call, Slack alert

Escalated call, Slack alert

Social post draft, Slack alert

Social post draft, Slack alert

Generated Instagram post

Generated Instagram post

System Architecture

One connected path from an incoming phone call to a completed, logged, and, where needed, escalated business action.

Customer
Voice AI
Automation Layer
Database
Notifications
Business Team

Tools & Integrations

Every tool below is live in this system today. Nothing here is a planned or future integration.

Voice AI

ElevenLabs

Automation

Make.com

Database

Google SheetsGoogle Sheets

Scheduling

Cal.comCal.com

Communication

SlackSlackGmail

AI Processing

OpenRouter

What This System Handles

Capability-based, not performance-based: this is what the system does, not a claimed result.

AI call handling

Answers incoming calls, understands intent, and carries the conversation through to a resolution.

Appointment information collection

Captures patient name, contact details, and the reason for the call before booking.

Automated workflow execution

Triggers the correct Make.com scenario (booking, reactivation, analysis, or content) based on the call outcome.

Data organization

Writes structured records to Google Sheets across four connected tabs: patients, calls, appointments, and content drafts.

Team notifications

Sends Slack alerts for escalations and new bookings so the front desk stays in the loop in real time.

Follow-up workflows

Re-engages unconverted leads on a scheduled SMS cadence without manual tracking.

Technical Details

Most agencies show the happy path. This is what happens when a step fails: the part of the system that actually gets tested in production.

Every Make.com scenario has an explicit failure branch. A bad payload, a timed-out API call, or a duplicate webhook delivery never silently drops data; it’s logged, flagged, or retried on a defined schedule.

Duplicate protection runs on phone number and call_id across every write path, so a patient calling twice or a webhook firing twice can’t create duplicate bookings or duplicate records.

Low-confidence AI outputs (sentiment analysis below a 0.7 threshold, failed content generation) are flagged for human review rather than written as if they were certain.

Retry logic is scoped per integration: Cal.com gets 3 retries with 30-second gaps, OpenRouter gets exponential backoff, because different APIs fail differently.

Frequently Asked Questions

Straight answers to the questions we hear most before a consultation.

What was built in this AI automation project?+

An AI voice agent (ElevenLabs) that answers, understands, and books calls for a dental practice, connected to a Make.com automation backend that logs every call outcome, manages appointments through Cal.com, tracks records in Google Sheets, and alerts the team in Slack.

Which tools were used?+

ElevenLabs for the voice agent, Make.com for automation, Cal.com for scheduling, Google Sheets for data storage, OpenRouter for call analysis and content generation, and Slack/Twilio for notifications.

How does the workflow handle failures?+

Every scenario has a defined failure branch. Malformed payloads are logged instead of dropped, failed API calls retry on a set schedule, and anything that can’t be resolved automatically is flagged for manual review rather than silently failing.

Is this a real client implementation?+

Yes, this is a live system built for a real dental clinic client, not a demo or a concept. The screenshots, recorded call, and workflow details throughout this page are from the actual deployment.

Need a similar AI system built?

If your business handles calls, bookings, or repetitive follow-up work manually, this is the kind of system that removes it.

Book a Consultation