AI Booking Automation for a Dental Practice

Self-serve booking + reminders + after-hours triage + recall workflows. Representative engagement.

Sector
Dental practice, Cambridgeshire (NHS + private mix)
Duration
4 weeks build + 2 weeks pilot before full rollout
Budget band
£5,500 fixed-price build + £200/month run + maintenance

1. The problem

A multi-chair Cambridgeshire dental practice — NHS + private mix — was drowning reception in routine bookings, reminders, and recalls. Reception spent 60-70% of their day on phone bookings. Patients increasingly expected to book online (they do everything else online), but the practice management system (Dentally) had a basic booking widget that didn't handle the practice's capacity rules. No-show rate was ~11%. Recall outreach was inconsistent — done when reception had time, often months late. After-hours email enquiries went unanswered until Monday.

2. Stack

Language: Python 3.12 (backend) + Next.js 15 (patient-facing UI)
LLM: OpenAI GPT-4o-mini for after-hours triage chatbot
Practice management: Dentally API (slot availability, appointment creation, patient records)
Compute: Vercel (frontend + serverless API)
Database: PostgreSQL on Neon (booking cache + audit + recall tracking)
SMS: Twilio (reminders + booking confirmations)
Payment: Stripe (deposit for private appointments)
Hosting region: UK only (clinical-data compliance)
Auth: Clerk (patients identify via NHS number + DOB, or self-register for private)

3. Architecture

System topology — what runs where, what talks to what:

        +-------------------+
        |  Patient on phone |
        |  or computer      |
        +---------+---------+
                  |
                  v
        +-------------------+         +----------------------+
        |  Next.js booking  |         |  Vercel serverless   |
        |  app              | ------> |  function            |
        |  Mobile-first     |         |  - Verify identity   |
        +-------------------+         +----------+-----------+
                                                 |
                                +----------------+----------------+
                                |                                 |
                                v                                 v
                +-------------------------+      +---------------------------+
                |  Dentally API           |      |  Local booking cache      |
                |  - Live slot avail.     | <--> |  (Postgres, 5-min TTL)    |
                |  - Book/reschedule      |      |  Avoids hammering Dentally|
                |  - Patient lookup       |      +---------------------------+
                +-------------------------+
                                |
                                v
                +-------------------------+      +---------------------------+
                |  SMS reminders          |      |  Recall workflow          |
                |  (Twilio)               |      |  6-month check-up due ->  |
                |  - 24h + 2h before      |      |  auto SMS w/ booking link |
                |  - Reschedule link      |      |  - tracked in Postgres    |
                +-------------------------+      +---------------------------+

        +------------------------------------------------------------------+
        |  After-hours triage chatbot (GPT-4o-mini, grounded in FAQ)       |
        |  - Books routine appointments online                              |
        |  - Triages emergencies (toothache, swelling) -> emergency contact |
        |  - Answers admin Qs (hours, prices, services, what to bring)      |
        |  - Auto-escalates uncertain cases to "we'll call you back" queue  |
        +------------------------------------------------------------------+

4. Automation flow

End-to-end runtime flow — what happens when a real input arrives:

  1. Routine booking. Patient visits practice website, picks service + practitioner + time. Real-time slot availability via Dentally API. Confirmed in 30 seconds. SMS + email confirmation sent.
  2. Reminders. Lambda runs hourly. For each appointment <24h away, send SMS reminder with reschedule link. Same again 2h before. Confirmation request: "Reply Y to confirm".
  3. No-show prevention. Patients who don't confirm 2h before get a follow-up call from reception (now only ~3% of bookings vs ~30% pre-automation). Confirmed-but-no-show rate drops from 11% to ~3%.
  4. Recall workflow. Daily Lambda checks Dentally for patients whose last check-up was 5.5 months ago. Auto-SMS sent with one-tap booking link. Tracked in Postgres for follow-up at 6, 7, 9 months if no engagement.
  5. After-hours triage. Chatbot embedded on website. Available 24/7. For routine queries → books or answers. For potential emergencies → routes to emergency dental line + creates ticket for morning reception review. Uncertain cases → "we'll call you back" queue.
  6. Audit trail. Every booking, reminder sent, recall outreach, chatbot interaction logged to Postgres. Compliance-grade retention.

5. What success looked like

6. Outcomes

Online bookings0% → 58% of total bookings within 4 months
Reception phone time on bookingsDown ~65% — reception now handles complex cases, upselling private, recall conversations
No-show rate11% → 3.2% over 3 months
Recall booking rate (6-month check-ups)Sporadic → ~80% of due recalls re-booked within 30 days
After-hours emergency triage~8/week handled by chatbot routing — including 2 genuine emergencies routed correctly
Patient satisfaction (Google reviews)Up materially over first quarter (multiple reviews mentioned "easy booking")

7. Speed improvements

SEO & visibility growth

9. ROI math

Payback & ongoing return: ~12 hours/week of reception time recovered at £14/hr loaded cost = £8,700/year. Plus ~£2,400/year in retained revenue from reduced no-shows (£40 avg slot value × 100 fewer no-shows/year). Plus material increase in private appointment bookings (online booking reduces friction; private revenue scales). Build £5,500 + run £2,400/year = payback ~4 months on the conservative line alone.

10. Maintenance model

Gold care plan (£699/month). Includes: monthly system health review (Dentally API changes occasionally, we catch and adapt), monthly chatbot quality review (audit edge cases, refine prompts), quarterly recall-workflow tuning (when seasonality shifts), SMS template review with the practice manager. Plus 6 hours/month for feature additions — new appointment types, new payment options, integration with patient-comms platforms like SystmOne or Bramble Hub if needed.

See care plan tiers for full structure.

11. Honest gotchas — what we'd do differently

Have a workflow that looks like this?

30 minutes, no pitch. We'll tell you honestly whether automation will pay back for your specific case.