Evalgent
Back to Blog
Voice AI Testing

AI Receptionist for Plumbers: Is It Missing Emergencies?

Deepesh Jayal
15 min read
AI Receptionist for Plumbers: Is It Missing Emergencies?
On this page

Most plumbing emergencies do not sound like emergencies. The caller is polite and says "little," "just" and "when you get a chance." An AI receptionist for plumbers that sorts calls by how alarmed the caller sounds will book that call into tomorrow's 8–10 window. Meanwhile water keeps running.

This post is for the product team at a field service management (FSM) company that ships a voice agent to thousands of plumbing shops. It covers daytime first-call handling, when the office is open and the calendar has slots. The after-hours problem is different and has its own guide: can AI triage leaks after hours. Job-type and duration mistakes are covered in plumbing AI booking errors. Here we stay on one question: does your agent recognise an emergency the caller is downplaying?

9,300 gal
Water an average household's leaks can waste per year (EPA WaterSense)
22.6%
Share of 2023 US homeowners losses from water damage and freezing (III, citing ISO)
$15,400
Average water damage and freezing claim severity, 2019–2023 (III, citing ISO)
84.1%
ML recall of cardiac arrest calls vs 72.5% for human dispatchers (Blomberg et al., 2019)

Why plumbing emergencies hide in calm language

Callers do not know what counts as urgent. They describe what they see, not what it means. A slow puddle under a water heater can be condensation. It can also be a tank that has started to fail. "Toilet keeps running into the basement" sounds like a running toilet. It actually says water is coming through the floor.

Language models pick up intensity from words. "Flooding," "burst" and "everywhere" push a classifier toward emergency. "A little," "kind of" and "no rush" push it away. The caller's politeness becomes the model's evidence. That is the core failure.

Understated emergency: a call where the situation needs same-day or immediate dispatch, but the caller's words signal low urgency. The words are calm. The facts are not.

The flow makes it worse. Most booking agents fill slots in order: name, address, job type, then time. During business hours the calendar is open. "Our next available is tomorrow between 8 and 10" sounds like good service. The agent writes urgency "routine" to the FSM job. The dispatcher board sorts by urgency, so that job never rises. Nobody hears the call again unless the customer calls back.

Here is the cost in water, as an illustrative example. Assume a supply leak running at 1 gallon per minute. The call comes in at 2 p.m. and is booked for 9 a.m. tomorrow. That is 19 hours, or 1,140 gallons. For scale, EPA WaterSense says an average household's leaks can waste more than 9,300 gallons in a whole year. One misrouted call can lose about 12% of that in a night. The flow rate is an assumption; the arithmetic is the point.

The money side has real numbers. The Insurance Information Institute, citing ISO data, puts water damage and freezing at 22.6% of homeowners losses in 2023. Its average claim severity for 2019–2023 was $15,400.

Daytime plumbing emergency triage is a different job from after-hours answering

After hours, almost every call is filtered for "wake a plumber or wait." The agent expects emergencies. During the day, emergencies are mixed in with estimates, warranty questions and drain cleanings. The base rate is lower, so the agent's prior leans toward routine.

After-hours answeringDaytime first-call handling
Default mindset"Is this worth waking someone?""Let's get you on the calendar."
Main failurePaging on-call for a dripBooking a hidden leak for tomorrow
What the calendar offersNothing until morningOpen slots that look helpful
Who can take a transferOn-call tech, oftenDispatcher or office, usually
Fee to quoteAfter-hours or emergency rateStandard service-call fee, or same-day rate

Daytime has one big advantage: a human dispatcher is usually reachable. So the cheapest fix for doubt is a warm transfer, not a guess. For transfer mechanics see escalation accuracy for handoffs. For the HVAC version of the same daytime problem, see 7 mistakes HVAC receptionists make.

The understated-emergency phrase set

Build a list of calm phrases that hide urgent facts. Each one maps to a hidden signal, a question that exposes it, and a tier. We call it the Quiet Leak Set. Start with these rows and add your own from real call audio.

Caller saysPossible hidden signalQuestion that exposes itTier if confirmed
"Just a little water by the heater"Tank or fitting failing"Is the puddle growing? Is water dripping from the tank itself?"Same-day, or dispatch now if spreading
"Toilet keeps running into the basement"Leak through the floor"Is water coming through the ceiling below?"Dispatch now
"There's a sewer smell"Backup, or a dry trap"Is anything coming up from a drain or floor drain?"Dispatch now if backing up, else routine
"Ceiling has a little stain that's getting bigger"Active leak above"Is it wet to touch or dripping now?"Dispatch now if wet
"Water pressure dropped and I hear hissing"Hidden supply leak"Can you hear running water with every tap off?"Same-day
"Smells a bit like gas near the heater"Gas leakNone. Give safety steps and end the triageLife safety
"No hot water, and the floor's damp"Heater leak plus outage"Is the damp area spreading?"Same-day
"Drain's slow, and the tub fills when I flush"Main line blockage"Does water come up in the tub when you flush?"Same-day, dispatch if overflowing

Two rules make the set work. First, the question matters more than the phrase. The agent cannot classify "a little water" correctly. It can ask whether the water is moving. Second, add overstated decoys. "My kitchen is a disaster, the faucet won't stop dripping" is loud but routine. Decoys keep you honest on false alarms.

Ladder diagram of five understated plumbing caller phrases, each mapped to a hidden signal, the triage question that exposes it, and an urgency tier from routine to life safety

Gas needs its own line. The US Pipeline and Hazardous Materials Safety Administration tells people who smell gas to leave the area and call 911 from well away. It also lists using "a telephone or cell phone" among things to avoid, because phones can ignite gas. So the correct agent behaviour is short. Tell the caller to leave, then call 911 or the gas utility from outside. Do not keep them on the line in the house for triage questions.

Three triage questions that separate a drip from a flood

You do not need a 20-question script. Three questions settle most plumbing calls.

1. Is water moving right now? Dripping, spreading, spraying or coming through a ceiling all count. A dry stain does not.

2. Can you stop it, and did it stop? This is where the agent tells the caller where the main shut-off usually is. Commonly that is where the water line enters the home: a basement wall, crawlspace, garage or utility closet. In some homes it sits near the water heater or at an outdoor meter box. For a heater leak, the cold-water valve above the tank isolates it.

3. Is it near electricity, sewage or a gas smell? Any yes moves the call up.

The shut-off step deserves care. A good agent asks whether the caller already knows where the valve is. It gives the common locations if not. It waits while they look, then asks "did the water stop?" That answer changes the tier. A leak that stops at the shut-off can usually wait for a same-day slot. A leak that keeps going needs dispatch now. If your FSM stores notes from earlier visits, read the valve location from the customer record. "Your last visit note says the main is in the garage, left of the door" beats any generic script.

The LLM should extract these answers, not decide the tier. Put the tier in code where you can test it.

# Simplified urgency guardrail. The LLM fills Triage from the call;
# code decides the tier. None means the agent did not get an answer.
from dataclasses import dataclass
from typing import Optional

@dataclass
class Triage:
    gas_smell: Optional[bool]
    water_moving: Optional[bool]
    stopped_at_shutoff: Optional[bool]
    near_electrical: Optional[bool]
    sewage_backing_up: Optional[bool]

def urgency(t: Triage) -> str:
    if t.gas_smell:
        return "LIFE_SAFETY"   # safety steps, end call, no booking
    if t.sewage_backing_up or t.near_electrical:
        return "DISPATCH_NOW"  # warm transfer to dispatcher
    if t.water_moving is None:
        return "ASK_AGAIN"     # unknown is never routine
    if t.water_moving and t.stopped_at_shutoff is not True:
        return "DISPATCH_NOW"
    if t.water_moving:
        return "SAME_DAY"      # stopped at the shut-off
    return "ROUTINE"           # only path to next-available

The key line is `ASK_AGAIN`. Most agents treat a missing answer as "no." Then a caller who never said whether water is moving falls through to routine. Make "next available" reachable only from an explicit `ROUTINE`. If the agent asks twice and still has no answer, transfer.

Measuring emergency recall and precision

Accuracy hides this failure. If 10% of calls are emergencies, an agent that calls everything routine is 90% accurate. Measure the emergency class directly.

Emergency recall: of the calls that truly needed same-day or immediate action, the share the agent flagged that way. Formula: true positives ÷ (true positives + false negatives).

Emergency precision: of the calls the agent flagged as urgent, the share that truly were. Formula: true positives ÷ (true positives + false positives).

Here is a worked example on a simulated test set. These numbers are illustrative, not measured. You run 400 scenarios. Sixty are true emergencies by your labels. Before the fix, the agent flags 51 of them and also flags 30 routine calls. Recall is 51 ÷ 60 = 85.0%. Precision is 51 ÷ 81 = 63.0%. The 95% Wilson interval on that recall is 73.9% to 91.9%. After adding the three questions and the `ASK_AGAIN` rule, it catches 59 of 60 and flags 16 routine calls. Recall is 98.3%, with an interval of 91.1% to 99.7%. Precision is 59 ÷ 75 = 78.7%.

Two confusion matrices for a 400-call test set, before and after adding triage questions, showing emergency recall rising from 85 to 98 percent and precision from 63 to 79 percent

Do not treat the two errors as equal. A false alarm costs a dispatcher a minute and maybe a truck roll. A miss costs a ceiling. Set recall as the gate and precision as a floor. A reasonable starting policy is zero misses on life-safety scenarios, recall at or above 95% on dispatch-now scenarios, and precision above an agreed floor. These are choices for your team, not industry benchmarks.

Emergency dispatch research shows the same trade-off. In a Copenhagen study of 108,607 emergency calls, a machine learning model recognised out-of-hospital cardiac arrest with 84.1% sensitivity, against 72.5% for human dispatchers. Its positive predictive value was lower, at 20.9% versus 33.0% (Blomberg et al., Resuscitation, 2019). Higher recall came with more false alarms. Plumbing triage will behave the same way. Decide in advance how many false alarms per caught emergency your dispatchers will accept.

Sample size matters too. Use the rule of three. If the agent misses zero of n emergency scenarios, the 95% upper bound on its miss rate is roughly 3 ÷ n. Zero misses in 60 scenarios bounds the miss rate at about 5%. To claim under 2%, you need about 150 emergency scenarios with zero misses. Ten hand-made test calls prove very little.

Caller profiles that break emergency recall

Phrase sets test words. Caller profiles test how the words arrive. Four profiles matter most when you test an AI receptionist for plumbers.

The calm elderly caller. Speaks slowly, pauses mid-sentence and apologises. Long pauses can trip endpointing, so the agent answers before the caller reaches "and it's coming through the ceiling." Speech recognition is also weaker on older voices. One paper on elderly speech from the DementiaBank Pitt corpus reported a 35.9% baseline word error rate (Wang et al., arXiv 2022). That corpus is specialised, but the direction holds.

The kid calling. A child alone at home may call the number on the fridge magnet. They will not know where the shut-off is. Children's speech is hard for ASR. The Kid-Whisper paper reports Whisper-Small at 13.93% word error rate on a children's test set before its data fixes (Attia et al., arXiv). The agent should ask for an adult, still give the safety steps, and escalate.

The noisy background. Running water, a wet vac or a pump in the basement. The irony is that the noise is the evidence. It also raises transcription errors on the exact words you need. See how to test STT under background noise for SNR levels.

The Spanish-speaking caller. The Census Bureau reports that 22% of people age 5 and older spoke a language other than English at home, and about 61% of those spoke Spanish. Understatement does not translate cleanly. "Se está saliendo un poquito de agua del calentador" carries the same trap as the English version. Research on crisis messages found LLM urgency labels shifting across languages. One gas-leak scenario was rated Critical in English and Not Urgent in Amharic (Ticona and Anastasopoulos, ISCRAM 2026). Test urgency in each language you support. Do not assume English results carry over. Our guide to testing multilingual handling covers setup.

This is where testing from the audio matters. A transcript-only judge reads "a little water by the heater" as calm and agrees with the agent. Evalgent's caller profiles vary accent, speech pace, interruption level, response delay, behaviour, background noise and language. Its simulator places those calls over PSTN, SIP or WebRTC, in English, Spanish, French, German or Hindi/Hinglish. The judge scores from the audio, not only the transcript.

What a missed emergency breaks downstream

The voice call is the front door to an FSM workflow. Capture, then system action, then confirmation, then write-back. A missed emergency corrupts several records at once, and none of them throws an error.

  • Job urgency field. Stored as routine, so the dispatch board sorts it below drain cleanings.
  • Appointment slot. Tomorrow's window, confirmed by text. The customer now believes help is scheduled.
  • Service-call fee. The agent quotes the standard fee. If the shop later dispatches same day at a higher rate, the bill disagrees with the call. Whether the fee was mentioned, and whether it was the right one, are both scoreable behaviours.
  • Transfer log. No transfer happened, so the dispatcher never heard the caller.

FSM vendors are adding this front door fast. Workiz, for example, announced an AI answering service that books jobs around the clock (ACHR News, December 2024). As more FSM software answers the first call, the urgency field it writes becomes the dispatcher's main signal. Errors there spread quietly. For the full field-by-field view of a booking, see AI receptionist booking accuracy for home services.

How to test an AI receptionist for missed emergencies

Run this before any change to an AI receptionist for plumbers reaches live callers.

1. Mine your own closeouts. Pull a quarter of jobs where the tech's closeout shows active leaks, water damage, sewer backups or heater failures. Listen to the first call for each. Write down the caller's exact words. Those become new phrase-set rows.

2. Write scenarios across tiers. Cover life safety, dispatch now, same-day and routine. Include at least 60 true emergency scenarios so the rule of three means something. Add overstated decoys for precision.

3. Cross scenarios with caller profiles. Run each emergency scenario as a calm elderly caller, a child, a noisy basement and a Spanish speaker. This is the scenarios × conditions test matrix.

4. Run every cell several times. LLM agents are not deterministic. Three runs per cell shows whether a pass is stable or lucky.

5. Score the behaviour, not just the label. For each call check the tier, the triage questions asked, shut-off guidance given, transfer placed, slot offered, fee quoted, and the urgency written to the FSM.

6. Gate the release. Block it on any life-safety miss or recall below your threshold. Report precision next to recall.

7. Repeat per tenant configuration. Each plumbing shop has its own hours, fees and transfer numbers. A change that passes for one config can fail for another. See testing one agent across 500 customer setups.

Evalgent generates test scenarios from the agent's own prompt and flows, including branches, policies and hard constraints such as "never book next-available for active water." It also flags coverage gaps, such as a flow with no gas branch. That gives step 2 a starting list.

Monitoring ticket urgency against what the tech found

Tests catch what you thought to write. Production monitoring of an AI receptionist for plumbers catches the rest. The ground truth already exists in your FSM: the technician's closeout.

Join each AI-created job to its closeout. Map closeout codes into three classes: emergency, same-day and routine. Then build a matrix of urgency booked against urgency found.

-- Simplified: AI-booked urgency vs what the tech found, last 30 days
SELECT j.ai_urgency,
       c.found_class,          -- mapped from closeout codes
       COUNT(*) AS jobs
FROM jobs j
JOIN closeouts c ON c.job_id = j.id
WHERE j.created_by = 'voice_agent'
  AND j.created_at >= NOW() - INTERVAL '30 days'
GROUP BY 1, 2;

The cell that matters is booked routine, found emergency. Divide it by all jobs found to be emergencies. That is your under-triage rate, the production twin of a recall miss. Watch the opposite corner too. Booked emergency, found routine, is over-triage. It burns dispatcher time and same-day capacity.

Heatmap of AI-booked urgency against technician-found urgency for plumbing jobs, with the booked-routine, found-emergency cell marked in red as missed emergencies

Closeout codes are noisy, so add two cheap signals: a callback within a few hours of a routine booking, and a dispatcher upgrading the urgency. Each flags a call for review. Then go to the audio. Did the caller say something the agent heard but discounted? Or did ASR drop the key words?

Evalgent's production monitoring takes pushed call recordings, transcribes them, maps them to scenarios and judges them. It flags tool-call failures, latency spikes and policy failures with fix recommendations. A missed emergency is a policy failure in that model. For the general monitoring setup, read how to monitor voice agents in production. For the full home-services QA picture, start at the home services QA guide.

Frequently asked questions

Can an AI receptionist handle plumbing emergencies?

An AI receptionist can handle plumbing emergencies if it asks the right triage questions and transfers when unsure. The risk is understated calls, where calm words hide active water. Test emergency recall on simulated calls before launch. Keep a live transfer path to a dispatcher during business hours.

How does an AI receptionist know a plumbing call is an emergency?

An AI receptionist should not judge urgency from tone or keywords alone. It should ask whether water is moving, whether the shut-off stopped it, and whether electricity, sewage or gas is involved. Code, not the language model, should map those answers to a tier. An unanswered question should never default to routine.

What questions should an AI ask on a plumbing emergency call?

A plumbing AI should ask three things. Is water moving right now? Can you stop it at the shut-off, and did it stop? Is it near electricity, sewage or a gas smell? Then it should ask how long the problem has lasted, so the technician arrives prepared.

Should an AI receptionist tell callers where the water shut-off is?

An AI receptionist should help callers find the main shut-off, because stopping the water changes the urgency. It should name common locations, use any valve note from past visits, and wait for the caller to look. Then it should ask whether the water stopped before choosing a slot.

How do you test an AI receptionist for missed emergencies?

Testing for missed emergencies starts with understated phrases from real call audio. Write at least 60 emergency scenarios plus overstated decoys. Run each with elderly, child, noisy and Spanish-speaking caller profiles, several times each. Score the tier, the triage questions, shut-off guidance, transfer and the urgency written to the FSM job.

What is a good emergency recall rate for an AI receptionist?

No published industry benchmark exists for emergency recall in plumbing AI. A sensible internal policy is zero misses on life-safety scenarios and at least 95% recall on dispatch-now scenarios. Prove it with enough cases. Zero misses in 60 emergency scenarios bounds the miss rate near 5% at 95% confidence.

Can an AI receptionist quote a plumbing service call fee?

An AI receptionist can quote a service call fee if each shop's fee is stored in its configuration. The common error is quoting the standard fee for a call later dispatched at a same-day or emergency rate. Score fee mention and fee correctness on every test call, per tenant.

How is daytime emergency triage different from an after-hours answering service?

Daytime emergency triage happens while the calendar has open slots. Those slots tempt the agent to book "next available." After-hours answering expects emergencies and decides whether to wake a plumber. During the day, a dispatcher is usually reachable, so a warm transfer is the safest response to doubt.

The bottom line

An AI receptionist for plumbers fails most quietly when a calm caller describes an urgent leak. Measure emergency recall with understated phrases and real caller profiles, then check every routine booking against what the technician actually found.

Related Articles