Is Your Pool Service AI Getting Equipment Names Right?

On this page
The call goes well. A new customer is standing at her equipment pad, reading the label off the pump. "It's a Pentair IntelliFlo VSF, three horsepower. Cartridge filter. About fifteen thousand gallons, salt." The agent thanks her and promises a quote by morning. The lead record says "IntelliFlo VS · sand filter · 50,000 gal · chlorine." The owner prices weekly service for a pool three times larger. The tech's truck carries the wrong filter parts on the first visit. Nobody heard an error, because there wasn't one in the conversation.
This guide is for product teams at pool service software companies. Your team runs one voice agent that answers for hundreds of pool companies. That is now a shipped category. Skimmer announced its AI Phone in April 2026. It says the feature "captures new lead info automatically — name, contact, pool type, reason for calling — and creates a lead in Skimmer" (Skimmer product update). PoolDial says its receptionist collects "name, address, pool type, equipment, urgency" (PoolDial). Once a voice agent writes equipment into a CRM, a misheard suffix becomes a quoting error. For the wider home services playbook, start with our AI receptionist QA guide for home services.
What a pool service lead intake call actually writes
A lead intake call is the front door to a four-step workflow. Capture, act, confirm, write back. Each step can fail while the call sounds fine.
1. Capture. The agent collects pool type, surface, size, sanitation, equipment, access and service frequency.
2. Act. It may estimate a weekly price from gallons and service plan. It may check route capacity for the address.
3. Confirm. It reads back the key fields and books a first visit or quote callback.
4. Write back. It creates the lead in your pool service software, with an equipment list and notes.
Equipment capture accuracy: the share of new-customer records whose stored equipment matches what a technician verifies on the first visit. It is the metric that ties the voice layer to quotes, parts and chemical cost.
Here is what one lead record holds, and what each field feeds.
| Field | Example value | Feeds | Cost when wrong |
|---|---|---|---|
| Pool type | In-ground, plaster | Chemistry plan, brushing | Wrong products, surface damage |
| Volume | 15,000 gallons | Weekly price, chemical dose | Mispriced plan |
| Sanitation | Salt chlorine generator | Chemical stock, salt cell checks | Wrong chemicals on truck |
| Pump | Pentair IntelliFlo3 VSF 3.0 HP | Upgrade quotes, parts | Wrong part on first visit |
| Filter | Cartridge | Cleaning task, parts | Wrong task and parts |
| Heater, automation | Jandy heater, controller | Service scope | Missed upsell or scope |
| Access | Gate code, dog in yard | Route notes, tech safety | Skipped visit or bitten tech |
| Frequency | Weekly | Route slot, price | Wrong route load |
A transcript review sees the confirm step and little else. The tool call that created the lead holds the real answer. Our guide to tool argument accuracy from speech covers that layer in general. Pool equipment adds its own traps.

Why pool equipment names break on phone audio
Equipment names are short, branded and nearly identical across product lines. They are some of the hardest entities a pool service AI receptionist will hear.
The caller is standing next to a running pump
New customers often call from the equipment pad. They read the nameplate because they don't know the model by heart. That means the pump may be running a few feet away. Outdoor wind, a pool cleaner and splashing kids add more noise.
Then the audio is squeezed. Phone calls commonly reach the agent as G.711 audio sampled at 8,000 Hz (ITU-T G.711). Nothing above 4 kHz survives. Fricatives like "s" and "f" carry much of their energy above that line. So "VS" versus "VSF" and "fifteen" versus "fifty" both lose their best cues. Our breakdown of phone audio quality for voice agents explains how codecs and packet loss compound this. For noise itself, see how to test STT under background noise.
The model strings really are that close
These are real product names, not invented examples. Pentair sells the IntelliFlo3 VSF in "two horsepower options: 1.5 and 3.0 HP" (Pentair). Each size has a plain version and an "I/O board" version, with its own item number. Hayward's TriStar VS lists model W3SP3206VSPX1 at 2.7 rated HP (ENERGY STAR). One dropped letter or digit picks a different SKU. Phone repair has the same pattern, where "13" swallows "Pro Max" in device repair AI intake.
A failure taxonomy for pool equipment capture
| Confusion | Example | Mechanism | Record result |
|---|---|---|---|
| Suffix dropped | IntelliFlo VSF → VS | Weak final "f", early endpoint | Wrong pump model |
| Brand misheard | Jandy → "Sandy", "handy" | Rare word, no bias list | Brand blank or wrong |
| Generation lost | IntelliFlo3 → IntelliFlo | "three" read as HP | Wrong generation |
| Teen/ty | Fifteen → fifty thousand | Weak ending, narrowband | Volume 3.3x too high |
| Filter type | "D.E." → "the" | Two letters vanish | Filter field guessed |
| Sanitation | "salt" → "soft" | Short word in noise | Chlorine plan, no salt cell |
| Caller wrong | Says "Pentair," pad has Sta-Rite | Caller reads wrong label | Clean transcript, wrong record |
| Vague answer | "the big blue filter" | No type named | Model fills a default |
The last two rows matter most. They are not speech recognition errors at all. A perfect transcript still writes a wrong record. That is why transcript scoring alone undercounts this failure.
What the research says about entity and number errors
Five findings shape how you test this.
- Word accuracy hides identifier errors. The Sheffield SNuC study tested spoken number identifiers. A baseline system scored 98.4% word accuracy but only 81.7% sentence accuracy (Barker et al., LREC 2022). One wrong token ruins a whole model string. Score the field, never the word.
- Numbers need their own work. Google researchers showed end-to-end ASR struggles with numeric sequences. Extra synthetic numeric training data cut WER by 65% relative on small numbers (Peyser et al., arXiv 1907.01372). Gallons and horsepower are exactly this kind of token.
- Biasing lists help. Meta researchers reported a 17.8% relative WER improvement from biasing lists for named entities (Sun et al., arXiv 2309.00723).
- Revision with the right names helps more. An LLM revision step with phonetic and semantic context cut named-entity WER by up to 30% relative (Trinh et al., arXiv 2506.10779). Your tenant's equipment catalog is that context.
- Biasing can overshoot. A 2025 Samsung paper reached up to 50.34% relative named-entity WER improvement. It also notes that a heuristic scoring variant can over-bias and worsen overall WER (Selvakumar et al., arXiv 2512.17657). Test for false insertions, not only hits.
None of these papers used pool calls. Treat them as direction, then measure on your own audio. Our post on STT accuracy for names and entities goes deeper on the metric.
How one wrong word breaks the quote and the first visit
The damage depends on which field breaks. Gallons and filter type do the most harm on day one.
Gallons drive the weekly price
Chemical dose scales with water volume. Raising free chlorine by 1 ppm takes about 3.3 times as much product in 50,000 gallons as in 15,000. That is plain ratio math: 50,000 ÷ 15,000 = 3.33. If the price model uses gallons, the quote inflates too. The owner sends a high quote and the lead goes quiet. Or a correct-looking record hides a pool three times smaller than stored.
You can catch most volume errors with arithmetic. The standard rectangle formula is "L × W × D × 7.5 = Total gallons in pool" (Leslie's). Ask for rough length, width and average depth. Then check the spoken gallons against them.
Worked example, illustrative: a caller says 15 by 30 feet, about 5 feet average depth. That gives 15 × 30 × 5 × 7.5 = 16,875 gallons. "Fifteen thousand" sits within 15% of that. "Fifty thousand" sits at three times the estimate. Flag anything outside a band, say 0.6x to 1.6x, and re-ask. Choose your band from your own data.

This check is cheap. It needs no new speech model. It works on dimensions, which callers estimate fairly well. Our post on AI quote accuracy for lawn and cleaning services uses the same idea for square footage.
Filter type sets the first task and the parts
Sand, cartridge and DE filters get serviced differently. Hayward says sand filters capture "20-40 micron" particles and cartridges "10-20 microns." DE goes "all the way down to 3-5 microns" (Hayward). More useful here, Hayward explains that "a cartridge filter does not require backwashing." Sand and DE filters do.
So a wrong filter field sends the wrong plan. The tech expects to backwash and finds cartridges to pull and hose off. Or the truck carries cartridges for a DE filter that needs grids checked. The sibling post on pool service AI ticket errors covers repair tickets. Here the damage is a bad first impression with a brand-new customer.
Pump model shapes upgrade quotes
Pump type also matters for quoting. Since July 19, 2021, federal efficiency standards cover dedicated-purpose pool pumps (10 CFR 431.465). Jandy's DOE guide says the rules make it "difficult for most non-variable-speed pumps ≥ 1.0 THP to meet the requirements" (Jandy). Whether a new customer has a single-speed or variable-speed pump changes the upgrade conversation. A record that says "variable-speed" for an old single-speed pump hides that sale.
Designing read-backs that catch equipment errors
A read-back is your last cheap check before the write. Most agents read back everything in one breath, and callers say "yep." Read back by risk instead.
- Brand and model: read in chunks, with the suffix stressed. "IntelliFlo, then V, S, F. Is that right?"
- Volume: read as digits and words. "One-five, fifteen thousand gallons."
- Filter type: don't just repeat a label. Ask a question the caller can answer from experience.
- Gate code: confirm once, then keep it out of summaries.
Discriminator questions work better than repeats. Callers who misname a filter still know how they clean it.
| Field | Discriminator question | What resolves it |
|---|---|---|
| Filter type | "Do you backwash it, or pull out a cartridge and hose it off?" | Hose off means cartridge |
| Sand vs DE | "After backwashing, do you add a white powder?" | Powder means DE |
| Sanitation | "Do you add bags of salt, or chlorine tabs and liquid?" | Salt bags mean a salt system |
| Pump speed | "Can you set different speeds on the pump's keypad?" | Keypad suggests variable-speed |
| Volume | "Roughly how long and wide, and how deep on average?" | Dimensions feed the formula |
When the caller can't answer, store "unknown," not a guess. An honest blank prompts the tech to check. A confident wrong value doesn't. Gate codes need care too. They are access credentials, so treat them like PII in logs and summaries. Our guide to PII leakage detection covers what to scan for.
Custom vocabulary and keyword boosting tests
Keyword boosting is the first fix most teams reach for. It works, but it needs its own tests.
Deepgram's keyterm prompting works with Nova-3 and Flux. It caps keyterms at "500 tokens per request" (Deepgram docs). The docs advise focusing on the most important 20–50 terms. They also flag a quiet gotcha. A malformed value like `term:0.15` "silently boosts nothing instead of failing." Your agent ships, and the boost list does nothing.
A pool service AI receptionist in a multi-tenant product hears a different mix per company. A Florida company may see mostly salt systems. A Texas company may install one brand line. Build the list per tenant from equipment already in their CRM. Keep a shared core of the major brands.
Here is a simplified sketch. It builds per-tenant keyterms and scores fields after a test call.
# Simplified sketch: per-tenant keyterms + field-level scoring.
from urllib.parse import urlencode
CORE = ["Pentair", "Hayward", "Jandy", "IntelliFlo", "TriStar",
"cartridge filter", "DE filter", "salt cell"]
def keyterm_params(tenant_terms, limit=50):
terms = list(dict.fromkeys(CORE + tenant_terms))[:limit]
# One keyterm parameter per term; no commas, no weights.
return urlencode([("model", "nova-3")] + [("keyterm", t) for t in terms])
FIELDS = ["pump_brand", "pump_model", "filter_type",
"sanitation", "gallons", "gate_code", "dog_on_site"]
def score(expected, stored, gallons_tol=0.0):
out = {}
for f in FIELDS:
e, s = expected.get(f), stored.get(f)
if f == "gallons" and e and s:
out[f] = abs(s - e) <= e * gallons_tol
else:
out[f] = (str(e).lower() == str(s).lower())
return outRun each test twice, once with the list and once without. You want two numbers per term. First, the hit rate when the caller says it. Second, the false insertion rate when they don't. Script calls where people say "handy," "sandy" or "pent-up." If "Jandy" appears in those records, your list is too aggressive.
How to test a pool service AI receptionist for equipment capture
Score the lead record your agent wrote, not the transcript. These steps build a suite you can rerun on every prompt or model change.
1. Build confusion sets per field. Group values that sound alike or look alike in records. Include IntelliFlo VS/VSF/IntelliFlo3, sand/cartridge/DE, salt/chlorine and 15,000/50,000 gallons.
2. Write expected records, not expected words. Each scenario has a ground-truth record. Include brand, model, filter, sanitation, gallons, gate code, dog flag and frequency.
3. Add caller profiles that match real calls. Use a running pump, outdoor wind, a fast talker, a strong accent and Spanish speakers. In Evalgent, caller profiles set accent, pace, interruptions, response delay and background noise for each scenario.
4. Script the caller-error cases. Include a caller who reads the wrong label and one who says "the big blue filter." The agent should ask a discriminator question or store "unknown."
5. Call over the real phone path. Browser audio skips the 8 kHz squeeze. Evalgent's simulator reaches agents over PSTN, SIP or WebRTC, so the codec stays in the loop.
6. Assert on the CRM write. Compare each stored field with the ground truth. Run the gallons plausibility check as a separate assertion.
7. Check read-back behavior. Did the agent stress suffixes, read digits, and ask discriminators? Did it keep the gate code out of the summary?
8. Gate releases per tenant. A prompt change can fix one tenant's vocabulary and break another's. Run the suite across a sample of tenants before rollout. Our guide to multi-tenant voice agent testing covers the sampling.

Run each matrix cell several times. Speech systems vary from run to run. A field that passes 9 of 10 runs fails once in ten live calls. Report pass rates per field, not one blended score. Then gate prompt changes on them, as in shipping voice agent prompt changes safely.
Monitoring: CRM equipment vs tech-verified equipment
Pre-launch tests of a pool service AI receptionist use scripted callers. Production has the ground truth you actually need. On the first visit, the tech sees the real pad.
Add a short first-visit check to the tech's mobile workflow. Confirm or correct pump, filter, sanitation, heater and approximate size. Then compare those fields with what the agent wrote.
Per-field equipment capture accuracy = first visits where the stored field matches the tech's field ÷ first visits with that field checked.
Slice it by tenant, field and call condition. A drop on one tenant often means a new brand line. A drop on "filter type" after a prompt change points at the read-back.
How many first visits do you need? For a 95% confidence interval of ±2 points around a 5% error rate, use n = 1.96² × p(1 − p) ÷ E². That is 3.8416 × 0.05 × 0.95 ÷ 0.0004 ≈ 456 first visits. That is a worked example, not a benchmark. Smaller tenants need pooling across a quarter or across similar tenants.
Pair this with call-level review. Evalgent's production monitoring takes pushed call recordings and judges them against your scenarios. It flags PII leakage, such as a gate code spoken in a summary, plus tool-call and policy failures. It also evaluates from the audio, so you can hear whether "VSF" was said or the agent dropped it. That tells you whether to fix the speech layer, the read-back or the caller-error path.
Frequently asked questions
Can an AI receptionist take new pool service customers?
An AI receptionist can take new pool service customers when it captures a complete lead record. That means pool type, size, sanitation, equipment, access notes and service frequency. Skimmer and PoolDial both describe receptionist features that create leads in their software. Accuracy is the open question, so test the stored fields, not the conversation.
Why does the AI mishear pool equipment names?
Pool equipment names are rare brand words with short suffixes. Phone audio at 8,000 Hz drops the high frequencies that separate "VS" from "VSF." Callers often stand beside a running pump while reading the label. Callers also misname equipment. A perfect transcript can still store the wrong pump or filter.
How do you test an AI receptionist for a pool company?
Testing an AI receptionist for a pool company starts with confusion sets per field. Write expected lead records, add caller profiles with pump noise and accents, and call over the phone network. Assert on the CRM write, run a gallons plausibility check, and score read-backs. Rerun the suite on every prompt change.
Should an AI receptionist collect gate codes?
An AI receptionist can collect gate codes because techs need access on the first visit. Treat the code as a credential. Confirm it once, store it in a restricted field, and keep it out of call summaries and notifications. Test that summaries and logs never repeat the code in full.
What should a pool lead intake call write to the CRM?
A pool lead intake call should write contact details, address, pool type and surface, and approximate gallons. It should also write sanitation type, pump, filter, heater, automation, gate code, dog flag and frequency. Unknown values should be stored as "unknown," never guessed. Honest blanks prompt the tech to check on the first visit.
How do you boost pool brand names in speech recognition?
Boosting pool brand names uses keyword or keyterm lists in your STT provider. Deepgram's keyterm prompting caps lists at 500 tokens per request and silently ignores malformed values. Build a shared core list plus per-tenant terms from existing CRM equipment. Test both hit rate and false insertions, since over-boosting can insert brands nobody said.
How accurate does pool equipment capture need to be?
Pool equipment capture accuracy targets depend on what each field drives. Gallons and filter type affect quotes and first-visit tasks, so they need the strictest bar. Measure per field against tech-verified equipment on first visits. Set thresholds from your own baseline, then block releases that lower any field's rate.
Can an AI receptionist quote weekly pool service?
An AI receptionist can quote weekly pool service only if size and sanitation are captured correctly. Chemical dose scales with gallons, so a 15,000 versus 50,000 mix-up inflates the quote about 3.3 times. Use a dimensions-based gallons check before quoting. Otherwise, have the agent promise a follow-up quote instead.
The bottom line
A pool service AI receptionist is only correct when the stored equipment matches the pad a technician sees. Test suffixes, gallons and filter types against caller profiles with real noise, check every lead record against the plausibility math, and reconcile CRM fields with first-visit verification.
Related Articles

How to automate voice agent testing: synthetic callers vs manual QA
Learn how ai test automation replaces manual QA for voice agents. Compare synthetic callers vs human testers, with a 5-step framework to scale without hiring.
Read more
AI Agent Testing vs Voice Agent Testing: What General Tools Miss for Voice
AI agent testing measures text outputs. Voice agent testing measures behaviour through an acoustic pipeline. Five failure categories general tools miss.
Read more