Here's a problem I didn't expect to find fascinating: dental no-shows.
Turns out, Irish dental practices lose €30,000–€75,000/year to patients who just... don't turn up. The industry-wide no-show rate sits at 8–15%, with urban practices hitting 20%.
The Technical Challenge
The interesting part from an engineering perspective: 76% of the time, dental practices are unreachable by phone. They're open ~40 hours/week out of 168. That means the majority of cancellation attempts happen when nobody's there to pick up.
So the patient who knows on Friday evening they can't make Monday's appointment? They call, get voicemail, mean to call back, and forget. Empty chair.
The Multi-Channel Reminder Pipeline
We built a 3-touch reminder system:
T-7 days → SMS with one-tap confirm/reschedule link
T-48 hrs → WhatsApp message (higher open rate than SMS in Ireland)
T-2 hrs → Voice call for unconfirmed appointments
Each channel has different engagement rates:
- SMS: ~95% delivery, ~35% response
- WhatsApp: ~98% delivery, ~55% response
- Voice: ~70% answer rate, ~90% resolution
The AI handles rescheduling conversationally — patient says "can I come Thursday instead?" and it checks real-time availability in the practice management system.
The After-Hours Catch
The biggest win wasn't reminders — it was catching cancellations in real-time and backfilling slots.
When a patient cancels at 9 PM, the system immediately:
- Confirms the cancellation
- Checks the waiting list for that time slot
- Offers the slot to the next patient via SMS
- Books automatically if they confirm
This alone recovered ~15% of would-be empty slots.
Results
Early adopters in Ireland are seeing 30–40% no-show reduction. For a solo dentist, that's ~€20,000/year in recovered revenue.
The tech stack: voice AI (Vapi), scheduling integration via API, multi-channel messaging (Twilio/WhatsApp Business), and a priority queue algorithm for waitlist management.
Curious if anyone else has worked on similar healthcare scheduling problems. What approaches have you tried?
Top comments (0)