REFERENCE
Search, coverage & questions
Assistants pass the customer’s own words and a ZIP code. Wittle does the matching, so assistants never need to learn a taxonomy.
Matching a need to a trade
search_providers(need, zip, urgency?) scores the words in need against each trade’s and service’s keywords. The matching is deterministic (no AI model), so the same words always give the same answer. Examples: “AC not cooling” → heating & cooling; “no hot water” → plumbing; “breaker keeps tripping” → electrical.
Trades are data, not code: heating & cooling, plumbing, electrical and appliance repair today, with more added as rows. Participating businesses are limited during early access.
Service areas
Each business sets where it works: a list of ZIP codes, a radius from its base, or both. A business is returned only if the customer’s ZIP is in its area.
When nothing covers the request
| outcome | Meaning |
|---|---|
covered | One or more businesses serve this need in this ZIP. |
no_coverage | Wittle knows the trade, but no participating business serves this ZIP yet. |
no_match | The need doesn’t match a trade Wittle covers. |
Without coverage, the result tells the assistant to keep helping the customer with its own search as it normally would. The one rule: don’t describe outside businesses as verified by, part of, or bookable through Wittle. If a participating business works just outside the customer’s area, the result names it (near_miss).
Every uncovered request is counted by trade and ZIP (no personal details), so we know where to invite businesses next.
Business questions (intake)
Many businesses ask a few questions before a visit: “When is the best time to contact you?”, “Are you an existing customer?”. Each business configures its own. get_availability returns them under intake; the assistant sends answers to prepare_booking in answers, keyed by question key.
| Question type | Send |
|---|---|
text, long_text | A string in the customer’s words. |
select | One of the listed options (any capitalization). |
multi_select | An array of options; a single option as a string is accepted. |
yes_no | true/false, or “yes”/“no”. |
date | YYYY-MM-DD. |
number | A number (a numeric string is accepted). |
customer_must_answerquestions must come from the customer; the assistant must ask and never guess.agent_may_inferquestions may be filled from the conversation (e.g. heat vs cooling).- Some questions only apply to certain services or answers (
show_if). - If a required answer is missing or doesn’t fit,
prepare_bookingreplies with exactly what to ask (including the options) and prepares nothing. - Answers go to the business with the booking; they are never stored in usage statistics or logs.
