Viable booking rate: how much of the gap is definition?

All customer calls, Jul 8 – Aug 7 2026. What we count as a “viable” call, where those calls end up, and how much of the headline rate we give away through strict classification and measurement gaps.

1Where inbound calls go

Only about a third of inbound production calls are classified viable, and less than a quarter of those convert to a CRM booking. Everything in this report is about the middle segment — viable calls that never became a booking.

2What “viable” currently includes

Viable is a per-call LLM judgment (“the call was related to booking an appointment”), made independently of the call-end category. Several categories that are marked viable convert at effectively zero — they are viable in intent but unbookable in practice, and they only exist in the denominator.

3The generosity ladder

Each step removes one defensible sub-category from the viable denominator, cumulatively. Booked jobs (the numerator) are unchanged — this is purely about which calls we hold ourselves accountable for.

4The bigger problem: bookings we can’t see

The numerator only counts crmJobBooked / crmJobRescheduled. Accounts without a working CRM integration can never contribute a booking — but their viable calls still count against the aggregate.

5Daily volume over the window

6What’s left after being generous

After every exclusion above, these viable-but-unbooked calls remain. This residue is the honest conversion gap — the part a better definition can’t fix, and the real lever for revenue.

7Per-customer impact

Customers with ≥50 viable calls in the window, showing today’s rate vs the rate under the generous definition (all ladder exclusions applied). Rows marked “no CRM sync” recorded zero CRM bookings all month — their true rate is unknown.

8Recommendations

  1. Fix the numerator first (no definition change, +9.3pp). 44 accounts with ≥20 viable calls recorded zero CRM bookings in 30 days — almost certainly missing or broken CRM integrations, not zero-booking businesses. They contribute 4,305 viable calls (28% of the denominator) and structurally cannot contribute a booking. Repair the integrations, or fall back to the postcall LLM’s CallResult = "Booked" for non-integrated accounts. There are also 713 viable calls where the LLM says the appointment was booked but no CRM job was recorded — recoverable numerator.
  2. Stop counting successful transfers against the AI (+2.7pp). computeMetrics already excludes transfers from the raw booking-rate denominator but not from viable. A call handed to a human is a success whose outcome we simply don’t observe; competitors are unlikely to count these as AI failures.
  3. Make Viable consistent with CallResult (+1.5pp). The same postcall classifier marks 1,579 calls both Viable = true and CallResult = "Excused" (follow-ups on existing jobs, callbacks, reschedules). That is internally contradictory — one prompt-level fix: when CALL_RESULT is Excused or NotLead, force VIABLE false.
  4. Exclude structurally unbookable categories (+1.4pp). NOT QUALIFIED (out of service area / service not offered, 0.3% conversion), and INTRO/EMPTY hang-ups marked viable (0 bookings in 339 calls). These are classifier noise in the denominator.
  5. Judgment calls (+1.4pp). Sub-30-second calls and CX refusals (“caller wouldn’t talk to an AI”) convert at ≤2%. Excluding them is defensible for competitive benchmarking but weakens the metric as an internal improvement signal — consider reporting both views.
  6. Don’t stop at the metric. 8,334 genuinely viable, bookable calls still didn’t book. Timing issues (1,757), price/estimate objections (890), and human-agent requests (446) are addressable product work that moves revenue, not just the percentage.