Heyfield Research · Published 2026-05-21
AI Answering Service Stress Test 2026
Heyfield put its AI answering system through a 1,000-call stress test across 11 home-service trades — every call was handled without a failure, no call records were dropped, and the scheduler never double-booked.
Headline findings
Calls fired back-to-back
1,000
All 1,000 simulated calls across 11 trades and 8 call types were accepted and fully processed — zero failures, zero dropped calls.
Incomplete records
0 of 1,000
Every call produced a complete, correctly-structured record under load — nothing was dropped, truncated, or mis-filed.
Double-bookings
0
Across 689 booking attempts aimed at deliberately overlapping time slots, the scheduler booked only open slots and refused every conflict.
Trades covered
11
Plumbing, HVAC, electrical, locksmith, roofing, restoration, general contracting, garage door, pest control, lawn care, painting.
Call types covered
8
Emergency dispatch, routine booking, quote request, follow-up, scheduling change, spam, voicemail hangup, wrong number.
Abstract
Home-service trade owners lose an estimated 27% of inbound calls to voicemail and missed pickups (HouseCall Pro benchmark). An AI phone receptionist only helps if it stays standing when the phones light up — so we stress-tested ours. We fired 1,000 realistic call events through Heyfield's live intake system, back-to-back, across 11 home-service trades and 8 call types, to see whether it would drop calls, lose details, or double-book the calendar under heavy volume. It didn't: all 1,000 calls were processed with zero failures, every call filed a complete record with nothing dropped, and the scheduler refused every double-booking. This is a load-and-handling test, not a voice-accuracy test — the methodology and full raw data are below and published openly.
How we ran the test
We generated 1,000 realistic home-service phone-call scenarios with a large language model, spread across a controlled mix of 11 trades (plumbing, HVAC, electrical, locksmith, roofing, restoration, general contracting, garage door, pest control, lawn care, painting) and 8 call types (emergency dispatch, routine booking, quote request, follow-up, scheduling change, spam, voicemail hangup, wrong number). Each scenario carries a caller identity, a service intent, and an expected outcome. All caller names, addresses, and phone numbers are synthetic — invented by the model, not real people.
Each scenario was then fired through Heyfield's live intake webhooks — the same lifecycle events the phone layer emits when a real customer calls — with valid signatures, back-to-back, in two batches of 500. This drives the real production pipeline end to end: the same workers, the same database, the same scheduling logic a live call would hit.
Importantly, the voice layer and the post-call AI analysis were stubbed with pre-generated data rather than exercised live. That is a deliberate scope choice: this test measures whether the system handles heavy call volume without dropping, delaying, or corrupting anything — not how accurately the voice AI transcribes or interprets a live call. We state that plainly because it changes what the numbers mean (see Limitations).
After the async workers finished, we queried the production database to confirm that every call produced a complete record and that the scheduler created appointments only for open time slots. The full scenario set, per-call results, and analysis are published openly (see Sources).
- 1,000 scenarios generated across 11 trades and 8 call types with a controlled distribution
- Replayed through the live intake webhooks in two back-to-back batches of 500
- Real production workers, database, and scheduler exercised end to end
- Voice + post-call AI-analysis layers stubbed by design — this is a load/handling test, not a voice-accuracy test
- Every scenario, run result, and analysis file published openly on GitHub
The system took all 1,000 calls
Every one of the 1,000 call events was accepted and fully processed by the live pipeline — 1,000 out of 1,000, with zero failures and zero dropped calls. The two batches of 500 ran back-to-back without a single error, timeout, or rejected event.
For a trade business, the practical translation is simple: when the phones all ring at once — a storm-driven roofing rush, a cold-snap HVAC spike — the intake system does not fall over or start silently dropping calls.
Nothing got dropped or garbled
Under that back-to-back load, every single call produced a complete, correctly-structured record — caller, service, urgency, and voicemail status all landed in the right fields, on all 1,000 calls. Not one call came through with a missing or malformed record.
This is the failure mode that quietly hurts operators: a call that half-lands, a record with the service field blank, a lead with no name. Across 1,000 calls under load, that count was zero.
- 1,000 / 1,000 calls filed a complete record
- 0 dropped calls
- 0 malformed or partial records
- Consistent across all 11 trades and all 8 call types
No double-bookings under load
The 1,000 scenarios included 689 booking attempts, and — by design — many of them aimed at the same handful of time slots to pressure-test the calendar. The scheduler's atomic booking lock held: it created appointments only for genuinely open slots and refused every attempt that would have collided with an existing appointment.
That refusal is the point. A receptionist that cheerfully books two jobs into the same 2 p.m. slot is worse than one that misses a call. Under 689 colliding attempts, Heyfield produced zero double-bookings.
Why this matters for home-service trades
Home-service trade owners typically lose 20-30% of incoming calls to voicemail (HouseCall Pro 2024 benchmark). At an average industry job ticket between $165 (lawn care) and $4,800 (restoration), that missed-call rate is thousands of dollars per technician per month in unrecovered revenue — and the case for an AI receptionist is recovering those calls.
But recovery only counts if the system is still standing when volume spikes. A tool that works in a quiet demo and then drops calls, blanks out records, or double-books during a rush is a liability, not an asset. This stress test was built to probe exactly that failure surface — and across 1,000 back-to-back calls, it held.
Per-trade results
Call counts reflect the deliberate scenario weighting, not real-world call volume. Every trade processed cleanly with no dropped or incomplete records.
| Trade | Calls | Processed | Complete records |
|---|---|---|---|
| Plumbing | 236 | 100% | 100% |
| HVAC | 223 | 100% | 100% |
| Electrical | 126 | 100% | 100% |
| Restoration | 81 | 100% | 100% |
| Roofing | 67 | 100% | 100% |
| General contractor | 61 | 100% | 100% |
| Locksmith | 57 | 100% | 100% |
| Garage door | 48 | 100% | 100% |
| Pest control | 43 | 100% | 100% |
| Lawn care | 35 | 100% | 100% |
| Painting | 23 | 100% | 100% |
Processed = call event accepted and fully handled by the live pipeline. Complete records = call filed with all structured fields present and well-formed.
Call-type mix
The 1,000 scenarios were deliberately weighted toward high-stakes call types (emergencies, bookings) and lighter on spam, to pressure-test the paths that matter most.
| Call type | Calls | Share of run |
|---|---|---|
| Routine booking | 347 | 34.7% |
| Quote request | 204 | 20.4% |
| Emergency dispatch | 185 | 18.5% |
| Follow-up | 71 | 7.1% |
| Scheduling change | 67 | 6.7% |
| Spam / solicitation | 62 | 6.2% |
| Voicemail hangup | 41 | 4.1% |
| Wrong number | 23 | 2.3% |
Limitations
We disclose constraints up front so the findings can be evaluated fairly.
- This is a load-and-handling stress test, not a voice-accuracy test. The voice transcription and post-call AI-analysis layers were stubbed with pre-generated data, so these results do NOT measure how accurately the voice AI transcribes or interprets a live phone call — only that the system handles heavy call volume without dropping, delaying, or corrupting records, and without double-booking. Live voice/interpretation accuracy is a separate measurement and is not claimed here.
- Scenarios were generated by a large language model, not pulled from real customer calls. Caller names, addresses, and phone numbers are synthetic. Dialogue patterns are realistic but may underrepresent regional speech, sustained interruptions, or callers speaking under duress.
- Booking conversion is intentionally not reported as a success metric. The two batches ran back-to-back against a shared test calendar and reused overlapping time slots, so most second-batch booking attempts collided with existing appointments and were correctly refused. Those refusals are the desired behavior, not failures — which is exactly what the double-booking result measures.
Sources & raw data
Raw scenarios, run logs, and analysis JSON are open-source. Anyone can reproduce these numbers from the public repository.
Try the receptionist behind the numbers
7-day free trial. No credit card. 90-second setup. Cancel anytime.