Residential & Commercial Cleaning 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
7 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, you've reached us after hours — I can take your details. What's your name?
Caller says: [SYNTHESIZE] I'm moving out in four days and needs a full clean before handing over keys.
Caller needs a move-out or post-closing clean tied to a hard lease-end or closing date within ~7 days.
What this pack answers before you buy
What does the agent actually ask callers?
It uses 12 configured fields for Residential & Commercial Cleaning. 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 8 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 6 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 + city/zip), and the other required details that make a residential & commercial cleaning 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 customer_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 + city/zip) address | string | Yes | The agent tries to collect this before wrap-up because the team usually needs it to act. |
Residential or commercial; one-time, recurring, deep-clean, or move-out clean_type | string | Yes | The agent tries to collect this before wrap-up because the team usually needs it to act. |
Recurring schedule: weekly, biweekly, monthly — or one-time frequency | string | Yes | The agent tries to collect this before wrap-up because the team usually needs it to act. |
Square footage or bedroom/bathroom count as scope proxy home_size | string | Yes | The agent tries to collect this before wrap-up because the team usually needs it to act. |
How does the crew get in? Key, lockbox code, owner present, building access access_method | string | Yes | The agent tries to collect this before wrap-up because the team usually needs it to act. |
Preferred day and time window preferred_time | string | No | The agent collects this when it helps the follow-up but does not force it into every call. |
Lease end or closing date for move-out cleans — the hard deadline move_out_date | date | No | The agent collects this when it helps the follow-up but does not force it into every call. |
Are there pets in the home? pets_in_home | boolean | No | The agent collects this when it helps the follow-up but does not force it into every call. |
Areas to focus on or avoid, allergies to cleaning products, fragrance sensitivity special_instructions | 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 50.
This setting changes how direct, warm, detailed, or fast the agent sounds during 50.
The agent is instructed to empathize when a caller is frustrated.
Prompt rules loaded from the pack
NEVER QUOTE A FLAT CLEANING PRICE ON THE CALL. Pricing depends on square footage, bedroom/bathroom count, clean type (regular vs. deep vs. move-out), and frequency. If the caller pushes for a number, say: 'The owner prices each job off the size and scope — let me grab your details so they can give you an accurate quote.' Pricing reads from business_profile at runtime, never from this prompt.
MOVE-OUT CLEANS ARE DEADLINE-SENSITIVE: always capture move_out_date when the caller says 'moving out,' 'end of lease,' or 'closing.' The hard date ties to lease forfeiture or closing conditions — treat it as urgent and flag it for the owner. A missed move-out window is a lost deposit or a failed closing.
CLEAN TYPE DRIVES SCOPE: distinguish regular maintenance (recurring weekly/biweekly/monthly), one-time, deep-clean, and move-out. Each has different crew time and labor. Capture clean_type before ending the call.
ACCESS CAPTURE IS REQUIRED: the crew can't show up if they can't get in. Always ask how the crew will access the property — key, lockbox, owner present, or building buzzer. Record access_method every time.
HOME SIZE = SCOPE PROXY: capture square footage or bedroom/bathroom count (home_size). Don't itemize every room on the call; the size band tells the owner the crew and time needed.
RECURRING VS. ONE-TIME: ask whether they want a recurring schedule or a single visit. Recurring is higher lifetime value and a key qualifier for the owner.
PETS: a simple yes/no on pets in the home (pets_in_home) lets the owner plan for pet hair, dander, and product safety. Always ask.
FUNCTIONAL IDENTITY ONLY: this is the cleaning company's phone line. Never call yourself a 'receptionist'. If asked, you're an assistant that helps schedule cleaning services for the business.
What your team and caller receive
Urgency tiers
Caller needs a move-out or post-closing clean tied to a hard lease-end or closing date within ~7 days.
Callback target: 30 minutes
Caller wants to start a recurring weekly, biweekly, or monthly cleaning plan.
Callback target: 120 minutes
Single visit, deep-clean, or pre-event clean with a flexible or future date.
Callback target: 480 minutes
Caller follow-up texts
Hi {{first_name}}, your cleaning with {{business_name}} is booked for {{appt_time}}. Reply here if anything changes.
Hi {{first_name}}, this is {{business_name}} — sorry we missed you. We can still help with your cleaning. What's the best time to call you back?
Hi {{first_name}}, {{business_name}} here — got your cleaning details and will call back by {{callback_eta}} with next steps.
Hi {{first_name}}, your recurring {{frequency}} cleaning with {{business_name}} starts {{appt_time}}. We'll confirm access details before your first visit.
Owner summary template
🧹 CLEANING LEAD [{{urgency}}] — {{first_name}} · {{clean_type}} · {{home_size}} · {{frequency}} · {{address}} · access: {{access_method}} · move-out date: {{move_out_date}} · 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 is moving out in four days and needs a full clean before handing over keys. cleaning.move_out_deadline_capture | [SYNTHESIZE] I'm moving out in four days and needs a full clean before handing over keys. | Pass if the assistant captures the hard move_out_date, classifies urgency as move-out-deadline, marks lead hot, promises a 30-minute callback, and does not quote a price. |
Caller demands a flat price for a two-bedroom clean. cleaning.price_deflection | [SYNTHESIZE] A flat price for a two-bedroom clean. | Pass if the assistant explains pricing depends on size, clean type, and scope, offers to have the owner call back with an accurate quote, and never states a dollar figure. |
Caller is scheduling a recurring clean but does not mention how the crew gets in. cleaning.access_required | [SYNTHESIZE] I'm scheduling a recurring clean but does not mention how the crew gets in. | Pass if the assistant explicitly asks for the access method (key, lockbox, owner present) before confirming the details. |
Caller says they need cleaning but does not specify frequency. cleaning.recurring_vs_one_time | [SYNTHESIZE] I need cleaning but does not specify frequency. | Pass if the assistant asks whether they want a recurring schedule or a single visit, and captures the frequency before ending the call. |
Caller asks about pricing without giving any size information. cleaning.home_size_capture | [SYNTHESIZE] About pricing without giving any size information. | Pass if the assistant asks for square footage or bedroom/bathroom count as a scope proxy before promising a quote. |
Caller says they need cleaning for a 2,000 sq ft office, weekly. cleaning.commercial_routing | [SYNTHESIZE] I need cleaning for a 2,000 sq ft office, weekly. | Pass if the assistant captures commercial as the clean type, records square footage, recurring frequency, address, and access method, and queues for owner quote-back. |
The mistakes this pack is designed to prevent
quoted a flat price
Agent states a dollar figure for the cleaning instead of deferring to an owner quote.
canDiscussPricing=false + price-deflection prompt_modifier; deflect to size/scope-based quote.
missed access method
Call ends without capturing how the crew gets in — lockbox, key, owner present, building access.
access_method required=true; agent must ask before wrapping.
missed move out date
Caller mentions moving out or lease ending and the agent never captures the hard date.
Explicit move-out date ask when move-out clean signals appear; flag as urgent.
missed clean type
Agent does not distinguish regular maintenance, deep-clean, or move-out — all quoted/scoped the same.
clean_type required=true; drives scope and crew estimate.
missed frequency
Call ends without confirming whether the job is recurring or one-time.
frequency required=true; recurring is a key qualifier for owner prioritization.
missed home size
No square footage or bedroom/bathroom count captured — owner cannot estimate crew time.
home_size required=true; ask before wrapping.
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 residential & commercial cleaning 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.