All posts
Case study·Perak·Custom Software·9 min read

Case study: how an Ipoh dental clinic group cut no-shows from 22% to 6% with a custom patient-communication system

A 14-year Ipoh dental clinic group was losing 22% of booked slots to no-shows. We built a custom WhatsApp-first patient-communication system. By week 8, no-shows were 6%. The full build, the cost, the real numbers.

·By The pitchdeck.my team
Perak Custom Software case study — A 14-year Ipoh dental clinic group was losing 22% of booked slots to no-shows

A 14-year-old family-run dental clinic group in Ipoh, Perak was running eleven chairs across three branches and losing 22% of every booked slot to no-shows. By week eight of the build, the no-show rate was at 6%. The receptionist's phone stopped ringing at 7pm. The chairs filled without anyone chasing them. This is what we built, what it cost, and what your dental group would pay.

The business

A 14-year-old family-run dental clinic group operating across three branches in Ipoh, Perak — Greentown (the flagship, where the founder still does complex cases), Canning Garden (a younger-family branch opened in 2019), and Bercham (the 2023 expansion). Eleven dental chairs total: 5 in Greentown, 3 in Canning, 3 in Bercham. Twenty-two staff: 4 dentists, 3 surgery assistants, 6 receptionists, 2 hygienists, 2 sterilisation, an in-house lab tech, 2 admin, and 2 cleaners.

The mix is roughly 65% general dentistry, 20% orthodontics, 10% implants, and 5% paediatric. They serve 60 to 90 patients a day across the three branches, with a 6-month recall list of roughly 8,400 active patients. The group does a small but growing medical-tourism slice — Indonesian, Singaporean, and Hong Kong patients coming in for implants and full-mouth rehab, often paired with an Ipoh white-coffee-and-old-town weekend.

This is a case study for the custom software arm of what we do — a tightly scoped patient-communication build around how an Ipoh dental group actually runs, not a generic clinic SaaS template.

The problem they were actually trying to solve

Three leaks, all the same shape — the clinic had full books, but the books were full of ghosts:

  • No-show rate was 22% across all three branches. Some days it ran 28%. Greentown (older patients) sat at 26%. Bercham (younger families) was at 17%. Combined chair-time loss was RM 5,200 to RM 6,800 a month per branch — unrecoverable once the slot has passed.
  • The receptionist's day was 70% chasing. Three of the six receptionists spent the bulk of their shift on phone calls and WhatsApp messages confirming the next day's appointments. The founder's son (who runs ops) was the one who noticed: "My senior receptionist knows more about the next 48 hours of my schedule than my practice manager does, because the receptionist is the one phoning every patient to ask if they're still coming."
  • The 6-month recall system was a spreadsheet someone forgot to open. Roughly 8,400 active patients were on the recall list. About 31% were overdue. The list lived in a shared Excel on the practice manager's laptop, re-checked manually once a quarter. The clinic was losing a third of its highest-LTV patients — the ones who already trust the chair — to a calendar nobody was watching.

The founder said on the first call, after we'd walked all three branches: "I don't need another appointment app. I need the patient to remember, to confirm, to be able to reschedule without my staff playing telephone tag, and I need the 8,400 people on my recall list to come back without my receptionist spending her day begging." That sentence is the brief.

What we built — and why this approach

A small custom patient-communication system in four parts, anchored to WhatsApp because that's what Malaysian patients of every age actually open:

  1. A WhatsApp Business API line per branch, with one shared inbox behind it. Three existing branch numbers moved onto the official API and unified into a single inbox any receptionist can answer from any branch. Every conversation is logged against the patient record.
  2. A reminder and confirmation flow that does the chasing, not the staff. Every appointment triggers a T-7 confirmation, a T-1 reminder, and a T-3-hour same-day reminder, all on WhatsApp by default, with SMS fallback for the over-70s (about 4% of the list). Each carries a one-tap confirm, reschedule, and cancel. A "yes" goes into the chair-time. A "cancel" pushes the slot back into the unfilled-slot pool so the recall system can fill it.
  3. A recall engine that re-activates the 8,400-patient list automatically. The list is now a live queue, scored by overdue-ness, last-treatment-value, and recall-acceptance history. Each week the system pulls the top ~120 patients most due and most likely to come back, and sends a personalised recall on WhatsApp. The receptionist doesn't phone until the message has been unanswered for 48 hours.
  4. A branch-level dashboard for the practice manager and the three branch leads. Real-time view of tomorrow's chair-fill rate by branch, by dentist, by procedure type. A "today's leakage" panel showing no-shows and chair-time recovered by recalls.

Why custom and not a clinic SaaS? Three reasons. Every clinic SaaS we evaluated assumed one clinic, not three branches with shared patients. None handled the Malaysian mix of WhatsApp-first, Bahasa Malaysia scripts, English patient names, and Chinese-name conventions the way the clinic actually communicates. And the recall system plus the unfilled-slot-recovery loop — the single biggest ROI lever — is not a feature in any off-the-shelf product. For the wider regional pattern, see our Perak services hub and the custom-software overview. The same architecture — small, branch-aware, WhatsApp-first, no new vendor lock-in — is what we used in the Taiping auto-parts order-automation case study and the Alor Setar auto-parts stock build.

How the operation changed

Receptionists stopped chasing and started handling walk-ins. Within six weeks of the T-1 and T-3-hour reminders going live, the call volume for appointment confirmation dropped by roughly 78%. The receptionists' time shifted to walk-in triage, payment queries, and rescheduled patients who needed a human follow-up. One of them told the practice manager, in week 7, that she had her lunch break back for the first time in three years.

The founder's son stopped being the human glue. He used to check the recall spreadsheet every quarter and personally approve messages to "high-value" patients. The recall engine does both now. He reviews the dashboard on Sunday nights; the only decision left is whether to override the scoring. The answer is almost always no.

Same-day cancellations became a feature, not a leak. A patient who used to no-show now cancels on WhatsApp at 9am. The slot drops into the unfilled-slot pool. The recall engine pings the next 3 to 5 most-likely-to-come-back patients. The system usually fills the slot within 90 minutes.

The numbers, 12 weeks in

After the third branch went live (week 12), the clinic ran on the new system for 8 weeks before we took these numbers:

  • No-show rate fell from 22% to 6.1% across all three branches, measured as a 4-week rolling average. Bercham (younger demographics) hit 4.8% by week 16. Greentown (older patients) settled at 7.4%.
  • Chair-time recovered: roughly RM 38,400 over 8 weeks — the gap between the 22% baseline and the 6.1% actual, multiplied by average revenue per slot. About RM 4,800 per week, or RM 20,000 per month across the group.
  • Receptionist call volume dropped 78% for appointment confirmation, freeing roughly 11 to 13 hours per receptionist per week across three senior staff — about 1.4 FTE of reclaimed time.
  • Recall re-activation rate: 34% of patients messaged by the recall engine booked within 14 days. The pre-build rate (manual phone calls) was about 12%. About 290 patients rebooked over the 8-week window.
  • Patient satisfaction: WhatsApp CSAT — 91% positive of 2,140 responses. Negative responses clustered around reschedule-flow edge cases, patched in week 14.

Total program cost: RM 28,000 for the 12-week build, including the WhatsApp Business API setup, the unified inbox, the reminder/recall engine, the branch dashboard, and a 90-day post-launch support window. Payback period: roughly 6 weeks on chair-time recovery alone, ignoring the recall uplift and the receptionist time.

What it would cost for your business

Pricing bands, sized to the kind of Malaysian dental practice that would actually buy this:

  • Solo or 1-chair practice, single branch, single dentist. RM 9,800 to RM 14,000. One WhatsApp line, the reminder + confirm + reschedule flow, the recall engine for up to 1,500 active patients, a single-user dashboard. Payback inside 3 months for a practice losing 2 to 3 slots a day.
  • Multi-chair, single branch, 2 to 4 dentists. RM 18,000 to RM 32,000. Multi-user inbox, full recall engine, branch-level dashboard, optional integration with your existing clinic management software (most have an API, badly; we wrap it).
  • Multi-branch group, 3+ branches, shared patient list. RM 28,000 to RM 65,000. The full build we did here — unified inbox, branch dashboards, recall engine across a shared patient pool, the unfilled-slot recovery loop, multi-branch reporting. Multi-branch groups are where this pays for itself fastest.

For Perak-specific cost benchmarks, see our Perak services page. For the build-arm's overall scope, the custom-software overview is the cleanest summary of what we ship and what we don't.

What this looks like for your business

If you run a Malaysian dental clinic — solo, multi-chair, or multi-branch — and your no-show rate is in the high teens or twenties, the build pattern is the same: WhatsApp-first, a unified inbox, a reminder cadence that does the chasing instead of your receptionist, and a recall engine that re-activates the patients already in your system. The cost is a small fraction of a year's receptionist salary, the build is 8 to 12 weeks.

If you're comparing this against an off-the-shelf clinic SaaS, the honest summary is: most clinic SaaS handles the calendar and the SMS. Almost none handle the WhatsApp-first Malaysian patient mix, the multi-branch shared patient list, the unfilled-slot recovery loop, or the recall engine scored by last-treatment-value. If you can find a SaaS that does all four at a price that beats a small custom build, take it.

If you want to talk through what this would look like for your practice, book a 30-minute scoping call — we don't pitch you either way. Two more case studies in the same build pattern: the Ipoh AI agent for Facebook lead response and the Taiping auto-parts order-automation build.

About the author

The pitchdeck.my team

I run pitchdeck.my — fifteen years building custom software, automation, and AI tooling for Malaysian SMEs, from Alor Setar family businesses to KL fintech desks. Most weeks I’m scoping a new build, writing the spec, and shipping the first version with the founder.

  • AI for SMEs
  • Custom software
  • Malaysian markets
  • Business automation
More posts by The pitchdeck.my team

Related builds

Get custom software in Perak

Ready when you are

Tell us what you run.
We’ll spec the fix in a week.

Priced like a hire, not a project — around the cost of one admin a month. Most builds pay back in 30 days or less.

Get a build spec

More for Perak