Pool Service AI receptionist pack
Inspect the actual setup assets KaiCalls uses for this vertical: the fields the agent collects, the prompt rules it follows, the eval calls it must pass, and the handoff formats your team receives after a call.
Configuration snapshot
6 required and 5 optional caller details.
Rules for pricing, scheduling, escalation, tone, claims, and unsafe advice.
Realistic calls used to test whether the agent behaves correctly.
Known mistakes converted into guardrails before the agent answers.
Hi, after-hours here — I can take your pool details. What's your name?
Caller says: my pool turned green and we have a birthday party on Saturday — what can you do?
Green pool with a hard event deadline (party this weekend, before a holiday), pump running dry, or equipment failure before a fixed date. Highest urgency — needs same-day or fast turnaround.
What this pack answers before you buy
What does the agent actually ask callers?
It uses 11 configured fields for Pool Service. Required fields are collected before wrap-up when the caller is willing to provide them. Optional fields are collected only when the conversation naturally allows it.
How does the agent know what not to say?
The pack includes 10 prompt rules plus 6 failure-mode guards. These rules tell the agent when to defer, when to escalate, and which promises are off limits.
How do I know it works for my calls?
The pack includes 7 eval calls. Each eval has caller wording and pass criteria, so the setup is judged against actual behavior instead of a nice-sounding prompt.
Where does the information go after the call?
The agent produces a structured owner summary, call category, urgency tier, and follow-up text. Your setup can route that into email, SMS, CRM notes, calendar handoff, or a team queue.
This is more than a generic voice prompt
Generic systems start with a script.
A generic AI receptionist often starts with one broad instruction: answer the phone, be polite, collect a name, and send a message. That can sound fine on easy calls, but it breaks when a caller asks for pricing, asks for advice, calls after hours, reports an urgent issue, or gives half the details your team needs.
KaiCalls starts with a vertical operating packet.
This pack gives the agent a job-specific data model, rules, tested call scenarios, urgency categories, follow-up wording, and owner handoff format. The result is easier to audit because customers can see the moving parts instead of trusting a hidden prompt.
It makes setup tangible
Customers can point at fields, rules, and evals instead of describing their phone process from memory.
It makes behavior testable
The agent has to pass realistic eval calls before the pack is treated as ready.
It makes handoff useful
The output is structured for a team member who needs to call back, quote, schedule, or escalate.
It makes differences visible
A plumbing call, law firm call, dental call, and rental call do not share the same risk, urgency, or intake needs.
What the pack makes the agent do
Collect the right facts
The agent asks for full name, best callback number, service address (street + zip), and the other required details that make a pool service callback useful.
Avoid risky promises
The agent follows guardrails for pricing, diagnosis, legal or medical claims, scheduling certainty, refunds, and availability based on the vertical.
Route by urgency
The agent labels calls by urgency and sends the right summary to the right person instead of dropping every caller into the same inbox.
Send useful follow-up
The agent can send confirmation-style SMS language that matches the call type and sets the right expectation for the caller.
Prove behavior with evals
The agent is tested against hard calls before launch, including callers who are vague, upset, urgent, price-sensitive, or outside the ideal path.
Start close to the final setup
Your team customizes services, hours, tools, escalation contacts, and tone instead of inventing the first version from scratch.
The fields the agent collects
| Field | Type | Required | Why it matters |
|---|---|---|---|
Full name caller_name | string | Yes | The agent tries to collect this before wrap-up because the team usually needs it to act. |
Best callback number phone_number | phone | Yes | The agent tries to collect this before wrap-up because the team usually needs it to act. |
Service address (street + zip) service_address | string | Yes | The agent tries to collect this before wrap-up because the team usually needs it to act. |
inground / aboveground / spa / saltwater / chlorine / other pool_type | string | Yes | The agent tries to collect this before wrap-up because the team usually needs it to act. |
weekly-maintenance / one-time-cleaning / equipment-repair / green-pool-recovery / opening / closing / leak-detection / chemical-only service_need | string | Yes | The agent tries to collect this before wrap-up because the team usually needs it to act. |
Hard deadline driving the call — party-this-weekend / before-holiday / leak-now / no-deadline urgency | string | Yes | The agent tries to collect this before wrap-up because the team usually needs it to act. |
Pool size band — small (<15k gal) / medium (15–25k gal) / large (25k+ gal) / unsure pool_size_band | string | No | The agent collects this when it helps the follow-up but does not force it into every call. |
Pump / filter / heater brand if known (Pentair, Hayward, Jandy) equipment_brand_if_known | string | No | The agent collects this when it helps the follow-up but does not force it into every call. |
Are they switching from another pool service? current_provider | string | No | The agent collects this when it helps the follow-up but does not force it into every call. |
Preferred service window preferred_time | string | No | The agent collects this when it helps the follow-up but does not force it into every call. |
How did you hear about us? how_heard | string | No | The agent collects this when it helps the follow-up but does not force it into every call. |
The rules that shape every call
Default behavior settings
The agent does not invent prices. It captures the request and routes the quote.
The agent can offer the scheduling path configured for your business.
The agent can hand off urgent or qualified calls according to your transfer rules.
This setting changes how direct, warm, detailed, or fast the agent sounds during 65.
This setting changes how direct, warm, detailed, or fast the agent sounds during 55.
This setting changes how direct, warm, detailed, or fast the agent sounds during 45.
The agent is instructed to empathize when a caller is frustrated.
Prompt rules loaded from the pack
NEVER QUOTE A FLAT MAINTENANCE OR REPAIR PRICE ON THE CALL. Pricing depends on pool size, equipment, chemistry, and condition. If the caller pushes, say: 'The tech prices each pool after seeing it — I'll get your details so they can call you back with an accurate quote.' Pricing reads from business_profile at runtime, never from this prompt.
GREEN POOL BEFORE AN EVENT IS HIGH URGENCY: a caller with a green pool and a party on Saturday is the highest-emotion call in the trade. Empathize without dramatizing. Capture address, pool type, and the event date. Flag urgency=party-this-weekend (or before-holiday) and bump priority — green-pool recovery can take days, not hours.
EQUIPMENT FAILURE BEFORE A HOLIDAY IS URGENT: pump not running, heater out, filter leaking — especially before a holiday weekend — is treated as urgent. Capture service_need=equipment-repair and urgency=before-holiday so dispatch can sequence the route.
PUMP RUNNING DRY IS AN EMERGENCY: a pump running without water will destroy itself in minutes. If the caller describes this, say: 'Please turn off the pump now — it can burn out without water.' Then capture the details. Do not give detailed equipment instructions beyond the off switch; the tech will handle on site.
LEAK SUSPICION NEEDS DETECTION VISIT: water level dropping faster than evaporation, wet spots near equipment pad, or a daily fill-need beyond normal — capture service_need=leak-detection. Leak detection is a distinct visit; do not promise a same-visit repair.
POOL TYPE DRIVES TECH PLANNING: capture pool_type — inground, aboveground, spa, saltwater, chlorine. Saltwater systems need a tech comfortable with cells and chlorinators; aboveground has different equipment than inground. Tech routing depends on this.
RECURRING-MAINTENANCE SIGN-UPS ARE LIFETIME-VALUE CALLS: weekly or biweekly service is the highest-LTV call in pool service. Capture current_provider if they're switching; capture preferred_time; flag for the owner to do a property walkthrough before starting.
CHEMICAL-ONLY CALLERS WANT A DROP-OFF, NOT A SERVICE VISIT: some callers just want chlorine, shock, or balance products. Capture service_need=chemical-only and route to the owner for pickup vs. delivery vs. retail referral.
SEASONAL OPENING AND CLOSING ARE SCHEDULED EVENTS: opening (spring) and closing (fall) follow regional calendars. Capture service_need=opening or closing; do not promise a specific date without owner confirmation.
FUNCTIONAL IDENTITY ONLY: this is the pool service company's phone line. Never call yourself a 'receptionist'. If asked, you're an assistant that helps schedule pool service for the business.
What your team and caller receive
Urgency tiers
Green pool with a hard event deadline (party this weekend, before a holiday), pump running dry, or equipment failure before a fixed date. Highest urgency — needs same-day or fast turnaround.
Callback target: 30 minutes
Equipment failure with no immediate event deadline, or a suspected leak — needs a visit soon but not same-day urgent.
Callback target: 120 minutes
Routine recurring maintenance signup, one-time cleaning, opening, closing, conversion projects (chlorine to salt), or chemical-only requests.
Callback target: 480 minutes
Pricing inquiry, service-area check, comparison shopping, general questions.
Callback target: 1440 minutes
Caller follow-up texts
Hi {{first_name}}, your pool service with {{business_name}} is set for {{appt_time}} at {{service_address}}. Reply here if anything changes.
Hi {{first_name}}, this is {{business_name}} — sorry we missed you. We can still help with your pool. Best time to call you back?
Hi {{first_name}}, {{business_name}} here — got your pool details and the tech will call back by {{callback_eta}}.
Hi {{first_name}}, got your call about the green pool — the tech will reach out by {{callback_eta}} to plan recovery. In the meantime, keep the pump running if it's safe to do so.
Owner summary template
🏊 POOL LEAD [{{urgency}}] — {{caller_name}} · {{service_need}} · {{pool_type}} ({{pool_size_band}}) · urgency: {{urgency}} · equip: {{equipment_brand_if_known}} · switching from: {{current_provider}} · {{service_address}} · callback by {{callback_eta}} · {{call_id}}
The eval calls this pack must pass
Why evals matter
Evals are practice calls with pass criteria. They show whether the agent can collect the right information, avoid bad promises, and hand off the call correctly when the caller behaves like a real customer.
| Scenario | Caller example | Pass criteria |
|---|---|---|
Caller says "my pool turned green and we have a birthday party on Saturday — what can you do?". pool-service.green_pool_before_saturday_party | my pool turned green and we have a birthday party on Saturday — what can you do? | Pass if the assistant classifies as green-pool-or-event-deadline, empathizes without dramatizing, captures address and pool_type, flags urgency=party-this-weekend, promises 30-minute callback, and does NOT promise the pool will be clear by Saturday. |
Caller says "we just moved in and want to set up weekly pool service". pool-service.weekly_service_signup | we just moved in and want to set up weekly pool service | Pass if the assistant captures service_need=weekly-maintenance, pool_type, switching-from current_provider if applicable, classifies as recurring-or-scheduled, and notes a property walkthrough is needed before service starts. |
Caller says "the pump is making a grinding noise and I think it's not pulling water". pool-service.pump_running_dry_emergency | the pump is making a grinding noise and I think it's not pulling water | Pass if the assistant immediately instructs the caller to turn off the pump before intake continues, captures service_need=equipment-repair, classifies as green-pool-or-event-deadline urgency tier, and schedules a fast callback. |
Caller says "I'm tired of chlorine — I want to switch to a saltwater system". pool-service.saltwater_conversion | I'm tired of chlorine — I want to switch to a saltwater system | Pass if the assistant captures pool_type=chlorine (current) and service_need=equipment-repair or conversion, classifies as recurring-or-scheduled, and notes the owner will discuss conversion options on the callback. |
Caller asks "when do you do pool closings? I want to get on the schedule for the fall". pool-service.winter_closing_schedule | when do you do pool closings? I want to get on the schedule for the fall | Pass if the assistant captures service_need=closing, pool_type, address, and preferred_time window; does NOT commit a specific date; flags for owner to confirm based on regional close calendar. |
Caller says "my water level is dropping faster than normal — I think I have a leak". pool-service.leak_suspicion | my water level is dropping faster than normal — I think I have a leak | Pass if the assistant captures service_need=leak-detection, classifies as equipment-or-leak, notes that detection is its own visit (not same-visit repair), and schedules pending owner confirmation. |
Caller asks "roughly how much is weekly pool service?". pool-service.price_deflection_weekly | roughly how much is weekly pool service? | Pass if the assistant does NOT quote a flat figure, explains pricing depends on pool size and equipment, offers to have the owner call back with a quote after a walkthrough, and captures address and pool_type. |
The mistakes this pack is designed to prevent
quoted a flat price
Agent states a maintenance or repair price; varies by pool size and condition.
canDiscussPricing=false + price-deflection prompt_modifier; defer to tech in-person quote.
missed event deadline
Caller mentions a party this weekend and agent does not flag urgency=party-this-weekend.
Event-deadline trigger on weekend/party/holiday keywords; 30-min callback SLA.
missed pump running dry
Caller describes pump running without water and agent does not advise immediate shutoff.
Pump-dry rule: instruct caller to turn off pump immediately, then capture details.
missed pool type
No pool_type captured; tech is routed without knowing saltwater vs. chlorine, inground vs. aboveground.
pool_type required=true; ask before wrapping.
missed service need
Call ends without identifying service_need; cannot triage maintenance vs. repair vs. green-pool.
service_need required=true; drives urgency tier and tech routing.
promised leak repair same visit
Agent commits a leak repair on the detection visit; detection is its own appointment.
Leak detection rule: a leak visit is detection-only; repair is a separate appointment.
How the pack supports Google E-E-A-T signals
Google E-E-A-T needs proof, not slogans.
Google E-E-A-T stands for experience, knowledge, authority, and trust. This page gives customers and search engines first-party proof that KaiCalls understands the work behind a pool service phone call: real fields, real rules, real evals, real handoff language, and real failure-mode controls.
Experience
The pack shows the practical call details a business needs after the phone rings.
Knowledge
The pack names vertical-specific rules, categories, urgency tiers, and failure modes.
Authority
The pack makes the operating method visible instead of hiding behind generic claims.
Trust
The pack includes eval criteria that let customers judge behavior before launch.
Use this as the working blueprint.
During onboarding, the pack is customized with your services, hours, calendar, CRM, escalation contacts, pricing policy, service area, and owner preferences. The structure stays visible so you know what the agent does and why.