AI front-desk for the trades that turns an inbound call or text into a booked, dispatched job — triaging the problem, quoting a transparent price band from the business's own price book, and assigning the nearest qualified tech by an explainable scorer, with a non-skippable safety-escalation branch that never mistakes a gasket for a gas leak.
The trades run on the phone, and the phone is the leak: home-services SMBs miss a large share of inbound calls because the owner is under a sink or on a roof, most callers won't leave a voicemail, and the ones who do rarely get called back — they call the next result instead. A missed call is worth hundreds to thousands of dollars, and the after-hours emergency — two-to-three times normal value, low competition, whoever-answers-first-wins — is the richest and most-missed of all. Answering services take a message; they can't read the calendar, price the job, or dispatch a tech, so they don't actually recover the revenue. Frontline does: it triages the call, quotes a band straight from the business's price book with every line item shown, picks the nearest qualified tech with a scorer that shows its work, and books the slot — while screening every transcript for gas, electrical, carbon-monoxide, and flooding hazards first, because a missed safety flag is the one error this domain never tolerates. It ports Tend's marketplace-grade pricing and matching pillars down to a single owner-operated business.
A transparent classifier labels trade, symptom, and severity and screens for gas / electrical / CO / flooding on whole-word boundaries — so a paraphrased 'gas odor' escalates while a 'gasket', a customer 'shocked by the price', or a 'black countertop' never do. Each call also carries a continuous hazard score that the eval separates the safe population from the dangerous one on.
The price is the price-book base rate times capped urgency and after-hours multipliers, retrieved by a structured-trade filter fused with lexical and vector search. Surcharges are marginal-multiplicative and the multiplier cap is its own line item, so the labor lines sum exactly to the band — never a single invented number, and never a total that doesn't add up.
A hard-constraint filter (skill, active, travel radius, capacity) narrows the roster; a linear scorer ranks the survivors with every factor's contribution exposed — ETA over Haversine distance, primary-trade vs cross-trained skill, reliability, spare workload, prior-customer. The chosen tech comes with the score margin over the runner-up, the explainability surface a dispatcher will actually trust.
The agent offers the chosen tech's actual open slots, soonest first, and consumes the slot on booking. Everything it decides lands in one typed ServiceScope — trade, cited quote band, dispatch plan with contributions, hazard score, confidence — the single artifact the policy engine routes on, the console renders, and the eval scores.
A first-match-wins policy decides auto-book vs owner-ping: safety flags, no-tech-available, low confidence (threshold read from settings), and after-hours routine jobs all hold for a human. And approval is safety-aware — confirming an owner-ping books the held slot, but approving a safety escalation acknowledges it for emergency handling and is never silently converted into a normal booking.
A read-only MCP server exposes the triage classifier, a call's full ServiceScope, the price book, and the tech roster to any MCP host — so another agent can pre-screen a transcript for hazards before anything is booked. Run it with `frontline mcp`.
Recall of 1.0 means nothing measured over two easy cases. The corpus deliberately mixes paraphrased hazards (a 'gas odor', a CO alarm, a burst-pipe flood) with look-alike false-positive traps ('shocked by the price', a worn 'gasket'), and the eval gates false escalations at zero and reports the hazard separation margin. Whole-word matching is what lets recall and precision both hit their marks.
Curating an adversarial set and whole-word rules is more work than a substring check. It's the difference between a safety claim you can stand behind and one you can't.
The quote engine (capped multipliers, line items, bands) and the dispatch engine (hard-constraint filter plus linear explainable scorer) are Tend's marketplace pillars applied to a single owner-operated shop. The reuse is the pitch — 'built on a marketplace-grade matching engine' — not duplication.
Some marketplace machinery is heavier than a lone business strictly needs. It's what lets the same shop scale its roster without a rewrite.
Additive surcharge lines silently disagree with a stacked or capped multiplicative total. Making surcharges marginal-multiplicative with an explicit cap line means the labor line items sum exactly to the band a customer is quoted — the kind of correctness a contractor's dispatcher checks by hand.
Marginal-multiplicative math is fiddlier than base-times-factor. A quote that doesn't add up is worse than fiddly.
Telephony, FSM, SMS, and maps connectors and the LLM all default to deterministic mocks, so the whole thing runs end-to-end in under a minute with zero API keys and zero telephony cost. The real-time voice tier (Twilio Voice + STT) drops in behind the same interface when a key is set.
The text simulator trails a live voice agent until the upgrade is wired. It locks the platform shape and lets any evaluator reproduce it instantly.