Their hygiene grew 14%. Their recall backlog was hiding underneath.
· Jack Jia · 9 min read
- xona
- dental
- recall
- cleardent
- production-data
A Lower Mainland family practice produces about $5.7M a year. Their hygiene is up 14% year over year. By every external indicator, the practice is healthy and growing.
Then we pulled the recall report from their ClearDent database. They have roughly 2,700 patients past their recall date. About 88% have a working phone number on file. Almost none of them have been called in the last year.
That’s the data we showed the owner. It’s also the wedge that got us asked to build the recall product in the first place.
Practice name omitted at the operator’s discretion. Metrics verified against the practice’s live ClearDent database on 2026-05-04. The practice gave permission to use their aggregated data; patient counts are rounded where exact counts could identify the practice.
Deployment context
| PMS | ClearDent (on-prem SQL Server via tunnel agent) |
| Live with Xona since | 2025 |
| Recall data verified | 2026-05-04 |
| Annual production | ~$5.7M |
| Active patient base (seen 12mo) | ~4,000 |
The Mina-departure story
The practice had four staff doing recall in 2023 and early 2024. We mapped every outbound touch in their PMS, by user, by month. The data comes directly from tbl_RecAtt joined against tbl_User. Staff names below are pseudonyms.
2024 Jan–Jul outbound touches across real channels:
Rosa 527
Priya 433
Mina (★) 223
Evan 155
Others 9
-----
Total ~1,345
Then August 2024 happened: 0–8 touches per month, every month, for 12 straight months. A 350-per-month operation went to 8.
What changed? Mina’s user account was deactivated in August 2024. Her login prefix in tbl_User is now *Mina with fld_blnDeleted=true. Rosa, Priya, and Evan kept doing some recall, but the bulk worker was gone and nobody backfilled the work. Recall didn’t die because the practice decided to stop. It died because one person left and the system around her turned out to be a single point of failure.
The owner didn’t know any of this. The growth numbers hid it. The practice was still busy, new patients were still coming in, and the lapsed pile was building quietly in the background.
What 18 months of no recall does to a practice
We re-queried the lapsed cohort against the practice’s live ClearDent database. Then we re-queried it again 24 hours later, just to check.
The first pass undercounted the cohort. After we tightened the filters and re-ran the query, the measured lapsed pile grew from about 2,200 to about 2,700. That is the point: the practice was making staffing decisions from a PMS view that did not expose the real recall backlog.
The structure:
| Bucket | Patients | Won’t return naturally |
|---|---|---|
| 13–18 months lapsed | ~590 | ~58% |
| 19–24 months lapsed | ~320 | ~71% |
| 25–36 months lapsed | ~550 | ~78% |
| 3+ years lapsed | ~1,270 | ~88% |
| Total recoverable | ~2,700 |
About 88% have a mobile phone on file. Insurance coverage is 88–94% across all buckets (CDCP is the largest single carrier in this practice’s mix).

The bucket totals in the screenshot come from a later corrected report run, which is why they differ slightly from the rounded table above. The green segment is patients we think we can bring back; the gray is patients the data says won’t return on their own. Per-bucket dollars use the practice’s own LTV. Screenshot from our internal recall report, run 2026-05-11.
What the practice’s own data says about lift
The practice’s data also lets us test whether recall actually works for them — using the months when they did have a working recall operation in 2024.
We took every patient who was in a lapsed bucket as of May 2024. We split them into:
- Treated: received at least one outbound recall touch (phone / SMS / letter, excluding system-automated entries like
tbl_RecAttmethod 7 and 9 which are admin-logging not outbound) in January–July 2024 - Control: same buckets, received nothing
Then we measured: who booked an appointment in the 12 months after.
| Bucket | Control booked | Treated booked | Lift |
|---|---|---|---|
| 13–18mo | 33.2% | 38.0% | +4.8pp |
| 19–24mo | 23.1% | 46.6% | +23.5pp |
| 25–36mo | 17.9% | 22.9% | +5.0pp (small treated sample) |
| 3yr+ | 8.8% | 27.3% | direction only |
The 19–24-month bucket is the cleanest signal. Treated patients booked at nearly double the rate of untreated peers when contacted by their own clinic’s staff. Sample sizes outside that bucket are small enough that we treat the other numbers as directional.
This is not us pitching from generic recall benchmarks. This is the practice’s own history saying recall worked when they did it.
What revenue per recovered patient looks like
Same methodology: every patient who lapsed and then returned in 2024 (after recall touch or naturally), measured against their actual production in the 12 months following the return — sourced from tbl_TransProc.fld_fltDrFee with status='C'.
| Bucket | Returners (n) | 12mo gross production |
|---|---|---|
| 13–18mo | ~110 | ~$1,340 |
| 19–24mo | ~60 | ~$1,330 |
| 25–36mo | ~55 | ~$1,080 |
| 3yr+ | ~40 | ~$1,250 |
The earlier number that floated around our team — about $1,940 — does not survive replication. The replicated average is about $1,330 per recovered patient in the first 12 months back.
Year-one opportunity, sized
Applying the practice’s own lift coefficients to the current lapsed cohort:
Conservative (skip the 3yr+ bucket due to small treated n):
~590 × ~5pp × ~$1.3k = ~$39k
~320 × ~24pp × ~$1.3k = ~$103k
~550 × ~5pp × ~$1.1k = ~$30k
─────────────────────────────────
Year-1 gross = ~$172,000
Year-1 collected (92%) = ~$158,000
If 3yr+ lift survives at scale (small-sample caveat):
+ ~1,270 × ~18pp × ~$1.25k = ~$285k more
Total upper bound = ~$430k
The conservative number is $172k of patient revenue sitting in this one practice’s PMS that nobody is calling. The capacity exists — their hygienist slack is about 1,100 visits per year; recovered visits at this rate add roughly 213, well within slack.
Why this analysis is even possible
We can do this analysis because we built schema-level understanding of ClearDent. We know that:
tbl_SchApp.fld_intRecAttIdis the column that links recall attempts to resulting appointments (and in this practice’s data, it has been used zero times, which is why they have no proof their historical recall worked)tbl_RecAtt.method1–6 are real outbound channels; method 7 and 9 are admin/treatment-plan logging that should not be counted as outbound touchesfld_bytStatus=1means active patient at this tenant — but at a different ClearDent practice it might mean something else (per-tenant calibration is real)- Patient AR vs. insurance AR split lives in
tbl_PatAR.fld_fltPBalandfld_fltIBal, and stale-balance aging needs separate logic from production-date AR
This schema work is in our internal cleardent-financial-schema.md and pms-tenant-calibration.md references. It’s the basis for everything we can or can’t safely write into a live practice’s database. We are happy to share these references with consultants or office managers evaluating Xona — knowing the schema is the prerequisite for trusting the writes.
Why AI for this, instead of just hiring another recall coordinator
You can absolutely solve this with a person. The practice could hire a part-time recall coordinator, and many do. The reason this one hadn’t, when we showed them the report, was the same reason most don’t: the work is repetitive (call list, voicemail, callback, dispose, repeat), the wins are invisible because the PMS never linked outbound touches to the appointments they produced, and the whole operation rests on one person who can leave.
AI changes the shape of those three problems, not the existence of them. It doesn’t get tired of dialing voicemail, which is most of what deep-lapsed recall actually is. It logs every touch and ties every resulting booking back to the touch, so the work becomes measurable. And it doesn’t quit in August.
The line we ended up using in the pitch was: “AI doesn’t get tired of dialing voicemail. And it doesn’t quit when one person leaves.” Both halves are doing work.
A few caveats before anyone runs with these numbers
The $172k figure is this practice. It’s not a benchmark — it’s just what their data says about their own lapse pile and their own LTV. Other practices will be bigger, smaller, or shaped differently.
The 23.5pp lift in the 19–24mo bucket is the cleanest signal in their own 2024 history. The other buckets had smaller treated samples; we treat them as directional, not as something to extrapolate from.
And the 25–36mo and 3yr+ patients are genuinely harder to bring back regardless of who is calling. We don’t want to oversell what the deep-lapsed buckets are likely to do.
How a clinic gets here
We call it a free recall preview. Read-only access to the practice’s PMS for about 30 minutes (same tunnel pattern we use for ClearDent + Tracker; for Oryx it’s an API token), and the same lapsed-cohort analysis applied to their own data. We do not need the practice to install anything beyond the read-only connection, change their phone system, or commit to anything before the report runs.
The preview tells them three things:
- How many lapsed patients they have, by bucket
- What their own historical lift on recall looks like, if there’s enough data to compute
- What year-one recovery looks like, sized in their own dollars
If the math is interesting, we talk about the pilot. If it isn’t, the practice keeps the preview and has a clean snapshot they didn’t have before.
Try the estimate first: Recall Revenue Calculator.
If the math is interesting, start the free recall preview or email [email protected].