Ten findings, each in plain English. Some confirm what we built. Some change it. One we have to retire.
Slide 2 = the headline reframe. Slides 3-5 = the data + fixed-effects validation. Slide 6 = sizing. Slide 7 = component split. Slide 8 = mechanism. Slides 9-10 = decision + what's next.
Yesterday we said "if you cut a high-churn practice's churn down to median, you'll see +3.4pp more annual growth." That number came from a simple bivariate fit.
Today's tighter analysis controls for practice size — and most of yesterday's signal disappears. The honest number is closer to +1 pp. Still positive. Still real. Just much smaller.
Bottom line: the composite SAPS churn metric is fine as a "is this practice in chaos?" flag — but stop selling it as the network's biggest growth lever. It's not.
We checked 5 different ways to measure churn. Only one — confirmation rate (% of booked appointments the patient confirmed before the day) — actually moves with growth.
Practice with 75% confirmation grows ~2.5 pp/year faster than one with 65%. Front desk can directly change this — it's the 3-day / 1-day / 2-hour reminder chain.
Codex caveat: this is "the strongest observed association," not yet "proven causation." A practice with great managers probably confirms more AND grows more — could be a manager-quality story. Out-of-sample test before promoting tile to "active."
| What we measured | Pearson r |
|---|---|
| SAPS churn ↔ risk non-completion | +0.109 |
| Shared variance (R²) | 1.2% |
| Risk non-completion → growth | −0.443 |
| SAPS churn → growth (after controls) | −0.012 |
| Component | Annualized | Type |
|---|---|---|
| A. Front-office rework labor | $7.1M | rate-card |
| B. Chair idle (lost slot) | $14.9M | rate-card |
| C. Risk non-completion ($) | $51.7M | unverified window |
| Total | $73.7M | mixed |
| Metric → YoY growth | β no-FE | p no-FE | β +FE | p +FE |
|---|---|---|---|---|
| risk_notcomp_rate | −0.461 | <0.001 | −0.383 | <0.001 |
| confirmed_pct | +0.265 | 0.006 | +0.186 | 0.083 |
| churn_90d (composite) | −0.110 | 0.444 | +0.031 | 0.848 |
| ROD | β range | p |
|---|---|---|
| Libby Knopp | +0.15 to +0.21 | 0.01–0.04 |
| Kim Miller | +0.14 to +0.16 | 0.04–0.05 |
| Leah Grevious | +0.16 to +0.31 | <0.001–0.06 |
| Component | 90-day | Annualized |
|---|---|---|
| Rework labor saved | $185k | $750k |
| Chair recovered | $428k | $1.74M |
| Risk-NC reduction | $878k | $3.56M |
| Total | $1.49M | $6.0M |
| Per practice / year | $31.7k | ~$128k |
If you ask an OM "what's killing your schedule," you'll probably hear "no-shows" or "flaky patients." The data says no.
Three out of every four churned appointments are moves — same patient, different day. That's a workflow problem (recall, confirmation, reschedule cadence) the practice fully owns. Patient-fault cancels are literally 0.3% of the SAPS denominator — basically nothing.
Caveat: only 83 of 188 practices have complete component decomposition. The other 105 have PMS-coding gaps that make no-show / cancel counts unreliable.
| Staffing tier (FO FTE / 1k active pts) | Mean churn 90d |
|---|---|
| T1 — low (0.10 FTE/1k) | 18.1% |
| T2 — mid (0.18 FTE/1k) | 23.7% |
| T3 — high (0.29 FTE/1k) | 22.1% |
| Churn quartile | FO h / visit |
|---|---|
| Q1 — lowest churn (11.7%) | 0.29 |
| Q2 (18.2%) | 0.41 |
| Q3 (24.3%) | 0.40 |
| Q4 — highest churn (30.4%) | 0.47 |
Do NOT cut FO headcount before the churn protocol is fixed.
The current FO load is REAL work — it's the rework tax being absorbed by people. Pulling headcount first lands the same load on fewer staff → burnout, turnover, culture damage. Sequence: fix protocol (T13 + T14 + T15) → FO load naturally declines → THEN revisit staffing model practice-by-practice.
| Confirmation trend | NP slope ($/mo) | n |
|---|---|---|
| T1 worsening | −$15 | 59 |
| T2 stable | +$265 | 61 |
| T3 improving | +$811 | 59 |
| Churn trend | NP slope ($/mo) | n |
|---|---|---|
| T1 churn going down | +$274 | 63 |
| T2 stable | +$70 | 63 |
| T3 churn going up | −$123 | 63 |
T14 confirmation: Cross-section + FE killed it (p=0.083). Within-practice rescued it (+$826/mo gap). Back to High operational confidence.
T15 risk-NC: Already survived FE. Holds at High.
T13 composite churn: Cross-section weak, FE null, BUT within-practice r=−0.18 with $397/mo gap. Elevates from Low to Medium. Composite is fine as a within-practice trend tile, not as a cross-practice ranking tile.
| Move | Why | Confidence |
|---|---|---|
| Ship T13 Patient Appointment Churn as-is — but reframe | Operational rework-flag, not the growth lever. Update validation_status copy in catalog.yaml. | High |
| Add T14 Confirmation Discipline tile | The actual front-desk lever per Quant A. Bands: ≥90% great · 80-90% good · 70-80% warn · <70% critical. | Medium |
| Add T15 Risk-Patient Non-Completion — active OM tile | Operational protocol when risk-NC patient is on today's schedule: park-list standby, wave double-book, hyper-confirm chain, pre-collect for cash. Don't quote dollar-recovery, just protect the chair. | High |
| Drop the $280/visit rate-card in the threshold formula | Replace with Codex's defensible floor: excess × saps × $24/hr × 0.25hr × 2. Full model in drill rail as upper bound. | High |
| Front-office FTE NOT in any threshold | Direction-of-causation unresolved; labor coverage only 56 practices. | High |
| No FO headcount cuts until churn protocol stabilizes | Current FO load is real (rework absorbed by people). Cut first = burnout + turnover + culture damage. Sequence: protocol fix → load declines → revisit staffing model. | High |
We built a tile yesterday based on a real signal. The deep dive shows the signal is real but smaller, in a different place than we thought, and entangled with two other independent failure modes.
The fix is to ship three tiles, not one — and to publish a defensible $5.9M floor instead of a $73.7M ceiling we can't yet defend. Everything else queues into the validation list above.