DEV Community

VoiceFleet
VoiceFleet

Posted on • Originally published at voicefleet.ai

Automating Dental Appointment Confirmations: Architecture & Lessons

Here's a problem that seems simple but hides surprising complexity: 25–40% of dental appointments go unconfirmed 24 hours before the scheduled time, and 30–40% of those result in no-shows. That's €28,000–€93,000/year in lost revenue for a typical practice.

We built an automated confirmation system. Here's what we learned.

The Manual Process (What We're Replacing)

  1. Receptionist checks tomorrow's schedule at end of day
  2. Calls each unconfirmed patient individually
  3. Reaches voicemail for 60–70% of calls
  4. Leaves messages, hopes for callbacks
  5. Re-checks in the morning, tries again
  6. If patient cancels, manually searches waitlist
  7. Calls waitlist patients one by one

Time: 45–90 min/day. Success rate: 50–60%. Slots filled from cancellations: Rarely.

The Automated Architecture

┌─────────────────┐
│   PMS Connector  │ ← Monitors schedule for unconfirmed appts
└────────┬────────┘
         │
    ┌────▼────┐
    │ Cadence  │ ← Rules engine: when/how to reach each patient
    │ Engine   │
    └────┬────┘
         │
    ┌────▼─────────────────────┐
    │  Multi-Channel Outreach  │
    │  SMS → AI Voice → Email  │
    └────┬─────────────────────┘
         │
    ┌────▼────┐         ┌──────────┐
    │ Dialog  │ ←──────→│ Calendar │
    │ Manager │         │   API    │
    └────┬────┘         └──────────┘
         │
    ┌────▼────────┐
    │  Waitlist    │ ← Triggered on cancellation
    │  Activator   │
    └─────────────┘
Enter fullscreen mode Exit fullscreen mode

Key Design Decisions

1. Multi-channel, not multi-blast

We send SMS first (high open rate, low friction), escalate to AI voice call after 24h for non-responders, then email as supporting channel. This isn't about spamming — it's about matching the patient's preferred communication style.

2. Real-time rescheduling during voice calls

The hardest part technically. During an AI voice call, the patient can confirm, cancel, or say "Can I move it to Thursday?" The system needs to:

  • Check live calendar availability
  • Offer alternatives conversationally
  • Book the reschedule immediately
  • Update the PMS in real-time

This requires tight integration with the practice management system's CRUD API and sub-second response times for natural conversation flow.

3. Intelligent waitlist activation

When a cancellation is confirmed, the waitlist engine segments by:

  • Appointment type match (hygiene → hygiene waitlist)
  • Patient notice-period preference ("I can come with 2h notice" vs "need 24h")
  • Priority (overdue recalls, first-time patients)

It then calls the best-matched patient first, cascading to the next if they decline.

Results

  • Confirmation rate: 58% → 89%
  • No-show rate: 12% → under 4%
  • Cancellation slots filled: 74% same-day
  • Staff phone time reduced by 2+ hours/day

Lessons for Devs Building Healthcare Automation

PMS integration is the bottleneck. Every dental practice runs different software (Exact, SOE, Dentally, dozens of others). Building connectors is 40% of the work. If you're in this space, invest heavily in a clean adapter layer.

Conversational AI for scheduling is harder than chatbots. When a patient says "maybe afternoon-ish, not too late though" — your NLU needs to map that to available slots. Calendar-aware dialog management is a genuinely hard problem.

GDPR matters here. Appointment confirmations fall under "legitimate interest," but recall messages for lapsed patients need explicit consent. Build consent management into the data model from day one.

Hygiene appointments are the worst offenders. Patients treat cleanings as optional. A separate, more persistent recall cadence for hygiene significantly improves utilization.


What are you building in healthcare automation? Curious what PMS integration challenges others have hit.

Full article with ROI calculations →

Top comments (0)