For HVAC, plumbing & electrical · Custom Python, WAT framework

AI Intake & Dispatch
Triage for Home Services

Quote requests, emergency calls, scheduling, billing, and warranty claims come in across email, SMS, and chat — and a gas smell or a burst pipe can't wait behind a general inbox. This is a governed AI layer that reads and drafts, while every safety-critical call, price quote, and refund decision still goes through a human.

Verified — mock-data pipeline
CASE STUDY
THE PROBLEM

One shared inbox for quotes, complaints, and actual emergencies.

A home services company fielding new-customer quotes, scheduling, billing, warranty claims, and true emergencies (gas smell, active flooding, sparking wiring) across email, SMS, and chat faces a triage problem before it's a response problem: a routine reschedule request and a gas leak can land in the same queue within minutes of each other, and whoever's watching the inbox has to catch the difference every time, with no room for a bad day.
CASE STUDY
WHAT CHANGED

The model reads and drafts. It never diagnoses, quotes, or promises a refund.

Emergencies sit in the same queue as routine requestsGas smell, active flooding, sparking wiring, and no-heat-in-freezing calls are flagged high-risk and routed to a human immediately — every time.
Risk of the model diagnosing or reassuringThe model never tells a customer it's safe to wait — only the safety steps in your own KB, and only ever a hand-off, not a diagnosis.
Inconsistent quotes given over textInstall and replacement jobs never get a firm price without an on-site visit — that rule is enforced in the drafting prompt, not left to judgment.
Warranty and refund promises made too fastWarranty claims always route to a human before any repair, replacement, or refund is promised.
No visibility into what's pendingA dashboard shows what auto-resolved and what's waiting on a human, by category and urgency.
No record of what was saidA full audit log, one line per pipeline step, for every case.
CASE STUDY
HOW IT'S BUILT

Built-in guardrails, not a prompt asking the model to behave.

Two model calls, both schema-enforced with retry: one classifies the incoming message, one drafts a reply. Everything else — which categories always require human sign-off, record matching, workflow state, retries — is deterministic code with no model in the loop. For a home services company specifically, that means emergency service requests and warranty claims are hard-coded to always require human approval, regardless of how confident the model is, and the drafting prompt is explicitly instructed to give only the safety steps in the KB for a gas smell or active flooding, never quote a firm install price, and never promise a refund or credit amount — those stay a human's call every time.

This is a working demo built on a synthetic home-services scenario (fictional customers, no real data), verified end-to-end in a zero-cost simulation mode. Real-model verification against live Claude API calls is in progress. No company has deployed this yet — this is proof-of-work we'd adapt to your actual intake channels, KB, and dispatch/scheduling system, not a finished product.
GET STARTED

See it walked through for your company.

Leave your info and we'll reach out to set up a short call — we'll run the pipeline live against a scenario close to your actual call mix and talk through what it'd take to connect it to your real channels and dispatch system.

No spam, no list-sharing. This goes straight to Eric.

Want the walkthrough?

Happy to run this end-to-end live and talk through what'd change for your actual workflow.