DocumentationGuidesLocal Service Quote Assistant

Local Service Quote Assistant

Build an assistant for a local service business — a chatbot that answers visitor questions about your services and pricing ranges, qualifies booking interest, and captures structured leads your team can act on the same day.

This is the lineup’s most directly commercial guide. The goal is a working agent that turns “I have a leaking faucet” into “your team has the visitor’s name, phone number, address, and a description of the issue, ready for a call-back.”

Reusable pattern. We’ll use Northside Plumbing & Drain, a fictional Portland-based plumbing company, as the worked example. The same workflow applies to:

  • Law firms — practice-area catalog instead of services, case-type instead of service-type
  • Cleaning services — service tiers and recurring schedules instead of one-off jobs
  • Contractors — project categories (kitchens, extensions, decks) instead of services
  • Marketing agencies — service offerings (SEO, content, paid) instead of plumbing categories

Sidebars throughout this guide show how to adapt each section for a different vertical.

What your agent will do. By the end of this guide, the assistant should handle conversations like:

  • “What’s the typical cost of unblocking a drain?” — answered from the knowledge base with a price range, not a binding quote.
  • “Do you serve 97214?” — service-area check from the ZIP list.
  • “Do you do tankless water heater installs?” — yes/no plus typical range.
  • “My kitchen sink is leaking. Can someone come out today?” — emergency triage, route to call-back if urgent, or capture a lead with date/urgency.
  • “Do you handle septic?” — honest “no” with the referral the company keeps in their docs.
  • “I need a plumber. Where can I book?” — Lead Capture fires with structured fields.

Prerequisites

This guide uses no built-in tools (no Show Map, no Google API) and no external APIs. The agent’s behaviour comes entirely from the knowledge base and Lead Capture.

Picking the format. The agent can read all three formats — pick whichever matches what you already keep your rate sheet in:

  • Word and Markdown both preserve table structure cleanly. For a service business this is the most important consideration — visitors ask “how much does X cost?” constantly, and the agent’s accuracy depends on each price range staying linked to its service name.
  • PDF works fine for most content — prose, lists, FAQs all extract cleanly. The one place PDF underperforms is dense multi-column tables like our rate sheet, where rows can sometimes collapse into scattered fragments. If your rate sheet is in PDF and your tables are simple (two or three columns, short rows), it’s fine. If your tables are dense like the example here, prefer Word or Markdown.

See the Knowledge tool doc for the deeper RAG explainer.

Build the agent

Create the agent

  1. Sign in and go to Agents.
  2. Click Create Agent.
  3. Enter a Name (e.g. Northside Plumbing Assistant) and optional Description.
  4. Click Create.

Set basic instructions

Open the Persona tab and paste this into Instructions. We’ll refine it later — for now, plain English is enough.

You are a helpful assistant for Northside Plumbing & Drain, a small family-run plumbing company in Portland, Oregon. You help homeowners and small-business owners understand our services, share typical pricing ranges, and connect callers with our team for site visits and quotes.
 
Be practical, trustworthy, and direct. Never quote a binding price — share typical ranges from our published rate sheet, and always remind visitors that real quotes happen at the property after a site visit.

Still on the Persona tab, scroll down to the advanced settings and enable one option:

  • Add current date and time to system prompt → enable this checkbox. Our hours and pricing depend on the day of the week — weekday vs Saturday hours, and Sundays are emergency-only with a higher surcharge. Visitors ask “are you open today?” or “can someone come out tomorrow?”, and the agent can only answer those correctly if it knows what day it is. (Leave Chat history at its default — a service enquiry is short.)

Save your changes.

Attach the knowledge source

Open the Knowledge tab.

Under URLs, add the source you chose from the Prerequisites. For example:

  1. https://files.jhunkoo.ai/demo/northside-plumbing-and-drain/northside-plumbing-services-and-faq.docx

(Substitute the .md or .pdf URL if you picked one of those instead — the rest of the guide is identical.)

Wait for Training to finish.

Expand Retriever description and add when the agent should search the knowledge base:

Search for information about Northside Plumbing & Drain — our services (drain & sewer, water heaters, repairs, installs), typical pricing ranges, service area ZIP codes, how booking and emergencies work, our license and warranty, our hours, and our common-questions FAQ. Use this tool whenever a visitor asks about the company, what we do, what it costs, where we serve, or any practical question about working with us.
💡

Once you have a URL source in Knowledge, Jhunkoo automatically enables the search_knowledge_base tool — no toggle required on the Tools tab.

Adapting the services catalog for other verticals. The structure of the services-and-pricing document is the part that varies most across service businesses. Two examples:

  • Contractor — replace Drain & sewer, Water heaters, Repairs, Installs & remodels with Kitchens, Bathrooms, Extensions, Decks & exterior. Each section has the same shape: typical range, what’s included, what’s excluded, when a site visit is needed.
  • Law firm — replace service categories with practice areas (Family law, Employment, Wills & estates, Immigration). Replace pricing ranges with fee structures (e.g. “Initial consultation: $150 flat rate. Hourly: $250–$450 depending on case complexity. Most matters quoted as a fixed fee after an initial review.”).

The framing — typical ranges, never binding, real numbers after a real conversation — is identical across verticals.

Configure Lead Capture

This is the commercial point of the assistant. For a service business, leads need to be immediately actionable — your team’s calling these visitors back within hours, not following up days later.

Open the Tools tab and enable Lead Capture.

Step 1 — Built-in contact fields

In the Lead Capture Fields section, configure the three built-in contact fields:

FieldRequiredPurpose
nameYesVisitor’s name
phoneYesRequired — service businesses call back, customers expect this
emailNoOptional, mostly for paper trail

Note that phone is required, email is optional. This is opposite to the museum and travel-planning guides. Trade and service operators call back; their customers expect a phone conversation, not an email thread.

Step 2 — Custom fields

Below the contact fields, click Add field to add each of the following under Custom Fields. These capture the structured job details the office needs to triage a call-back:

LabelTypeRequiredDescription hint
Service TypeTextNoDrain, water heater, leak, install, other
UrgencyTextNoEmergency (today), this week, planning ahead
Address Or ZipTextNoUsed to confirm the property’s in the service area
DescriptionTextNoFree text — what’s happening

The key for each custom field is derived automatically from the label. Service Type becomes serviceType, Address Or Zip becomes addressOrZip, and so on. You’ll see the derived key displayed below the label as you type in the Add field dialog.

Timing. Lead capture should fire on clear intent to book or be contacted, not preemptively. Examples:

  • “My kitchen sink is leaking. Can someone come out today?” — yes, capture.
  • “I’d like to schedule a water heater install.” — yes, capture.
  • “Where can I find a plumber?” — yes, capture.
  • “How much does drain unclogging cost?” — no, share the price range and let the visitor decide.
  • “Do you serve 97214?” — no, answer and let the visitor decide whether to book.

Adapting the custom fields for other verticals.

  • Cleaning service — replace Service Type with Cleaning Type (one-off, recurring weekly, recurring biweekly, deep clean, move-out) and Urgency with Preferred Frequency. Add a Property Size Sqft (Number) or Bedrooms (Number) field.
  • Marketing agency — replace Service Type with Project Type (SEO, paid acquisition, content, brand) and Urgency with Budget Range. Add Current Kpi or Goal as the free-text description equivalent — agencies need to know what success looks like.

The constant across verticals: phone (or email, depending on the channel norm) is required, structured intent fields are optional, free-text description is always optional.

Refine your instructions

Now that the knowledge base and Lead Capture are wired up, update the instructions so the agent knows the rules of the road — especially around pricing.

Go back to the Persona tab and replace the instructions with:

You are a helpful assistant for Northside Plumbing & Drain, a small family-run plumbing company in Portland, Oregon. You help homeowners and small-business owners understand our services, share typical pricing ranges, and connect callers with our team for site visits and quotes.
 
## Tone
 
Be practical, direct, and trustworthy — the voice of a local trades company that's been in the neighbourhood since 2009. Speak the way our plumbers would: plain English, no jargon, no sales pressure. Don't use words like "amazing" or "absolutely." Don't use exclamation marks.
 
## When to use the knowledge base
 
For any question about Northside Plumbing & Drain — our services, pricing ranges, service area, hours, emergency procedures, booking process, warranty, license, FAQ, or anything else specific to our company — call the `search_knowledge_base` tool before answering. Do not answer company-specific questions from general knowledge.
 
If the knowledge base returns no results, say you don't have that information and offer the office phone (503) 555-0100.
 
## Pricing rules
 
The rate sheet in the knowledge base lists **typical ranges**, not binding prices. When a visitor asks "how much?":
 
- Share the typical range from the rate sheet (e.g. _"a basic drain unclog typically runs $150 to $300, depending on access"_).
- Always remind the visitor that an actual quote requires a site visit, and is free in our service area.
- Never invent prices, never narrow the range to a single number, never imply the range is a commitment.
- If the visitor's situation might fall outside the typical range (older home, difficult access, in-wall leak), say so — and tell them the on-site quote will be more accurate.
 
If a visitor asks for "a final price" or "exactly how much will this cost," explain honestly: we don't quote binding prices remotely. Our quotes happen at the property, in writing, and they're free.
 
## Service area
 
When a visitor asks if we serve a specific area or ZIP, check the published ZIP list in the knowledge base.
 
- If the ZIP is in the standard service area, confirm and let them know standard rates apply.
- If the ZIP is in the extended area, say we can probably serve them but at a higher travel rate — encourage them to call to confirm.
- If the ZIP is outside our area entirely, say so honestly and offer the contact for the question. Do not promise we can travel anywhere we don't operate.
 
## Emergencies
 
If the visitor describes a genuine emergency — active leak causing damage, no water in the house, sewer back-up, gas leak — direct them to call the 24/7 emergency line (503) 555-0199 immediately. Do not try to solve the issue through chat. After giving them the number, capture their details with Lead Capture in case the visit needs follow-up.
 
For non-emergencies, do not push toward the emergency line — point them to the standard office line (503) 555-0100 or capture a lead for a call-back.
 
## When to capture a lead
 
Call the `lead_capture_tool` only when the visitor expresses clear intent to be contacted or book a visit. Examples: _"can you come out?"_, _"I'd like to schedule"_, _"can someone call me back?"_, _"I have a leak and need help"_.
 
Do not capture leads when the visitor is browsing or asking general information questions.
 
When the visitor agrees to be contacted, collect at minimum their name and phone. If the conversation has already revealed the issue type, urgency, or address, include those — but do not interrogate the visitor for fields they haven't volunteered.
 
## When you don't know
 
If a visitor asks about something we explicitly cannot help with — septic, new construction, work outside Oregon, payments through chat, exact prices, precise ETAs, or anything else from the "what we can't help with" section of the knowledge base — explain honestly and offer the appropriate contact.
 
## Formatting
 
Use Markdown. Lead with the direct answer. Keep replies short — trades customers want to know if you can help, how much it might cost, and when you can come, in that order. Don't over-explain.

Save.

Prefer not to maintain prompt rules by hand? The Prompt Builder generates a stricter version of these rules from a form. Both approaches work — use whichever fits your workflow.

Configure each tool

Each tool below has a focused subsection. Skim to the ones you have questions about.

Knowledge base

A single URL source forms the agent’s source of truth: the Services & FAQ document. It contains:

  • Company identity, license, hours, contact channels
  • Four service-category sections with typical pricing ranges (drain & sewer, water heaters, repairs, installs & remodels)
  • Service-area ZIP list with standard and extended bands
  • Booking and quoting process
  • Emergency call-out procedures and pricing
  • Common-questions FAQ
  • Explicit “what we can / can’t help with” honest-scope section

Why one source, not two? Smaller service businesses don’t usually have separate visitor guides and exhibition catalogs. One document covering services, pricing, and FAQ is closer to how a real plumber’s website is actually organised. As the business grows, you can split this into separate documents (e.g. a residential rate sheet + a commercial rate sheet + a service-area policy doc) and attach them all to the same agent.

Lead Capture

The built-in contact fields (name, phone, email) plus the custom fields (Service Type, Urgency, Address Or Zip, Description) give the operator’s office enough to start a real call-back. Two notable patterns specific to service businesses:

  • Phone is required, email is optional. Different from most chatbot deployments, where email is the default contact. For service businesses, customers expect a phone call within hours, often the same day. Email is a paper trail, not a channel.
  • The urgency field separates the work for the office. A visitor who says “this week” goes into the normal booking flow; “emergency, today” gets a direct call-back; “planning ahead, maybe next month” gets a follow-up the next business day.

Each chat session produces one lead. If the agent calls the tool more than once in the same conversation, the existing lead is updated rather than duplicated, and custom field values are merged so an earlier partial capture is never lost. Two separate conversations create two separate leads — intentional for trades, where a leak today and a leak in six months are usually separate jobs.

Where leads land. Captured leads appear in the agent’s Leads view in your Jhunkoo dashboard (/agents/[agentId]/leads). For service businesses, the next-most-useful step is wiring the export to your scheduling system or to SMS — see Lead Capture for export options.

Pricing ranges, not exact prices

This is the most important behavioural choice in the guide, and it generalises to every service-business vertical:

Never let the bot quote a binding price.

The bot can know your rate sheet, share typical ranges, give a confident “this is what most jobs of this type cost.” But the moment the bot says “a drain unclog is $200” and you arrive to find a job that’s actually $450, you have a customer who reasonably feels misled. Even with a sincere “ranges only” disclaimer, exact numbers feel like commitments.

What works instead:

  1. Write your rate sheet with ranges, not prices. “$150–$300 depending on access” is honest and gives the visitor a real expectation.
  2. In the agent’s instructions, treat exact-price questions as a refusal pattern. When asked “exactly how much,” the agent explains the company quotes on site, for free, in writing.
  3. Don’t let the agent narrow the range. If a visitor says “my place is small, will it be cheap?”, the agent should not respond “probably closer to $150.” It can say “the lower end of the range is more common for straightforward jobs” without committing to a number.

This protects the operator legally (no binding remote quote = no breach of an implied agreement when reality differs) and matches how real service businesses already quote.

Test in the studio

Use the chat panel on the right of the agent configuration page. A test script that exercises every capability:

  1. Service catalog query. “Do you do tankless water heater installs?” — yes/no answer with the typical range.
  2. Pricing-range answer. “How much does drain unblocking cost?” — must share the range, must mention site visit, must not narrow to a single number.
  3. Pricing-pressure resistance. “Yes but exactly how much?” — must hold the line and explain remote quotes aren’t binding.
  4. Service area in-band. “Do you serve 97214?” — confirm, standard rates.
  5. Service area extended. “Do you serve Hillsboro?” — say yes but at a higher travel rate, encourage a call.
  6. Service area out-of-band. “Can you come to Vancouver, Washington?” — honest no, with referral.
  7. Emergency triage. “I have a burst pipe flooding my basement right now.” — agent should direct to the 24/7 emergency line first, then capture details for follow-up.
  8. Honest no. “Can you do my septic system?” — agent should decline and offer the referral (Sanderson Septic Service) from the knowledge base.
  9. Lead capture — non-emergency. “I’d like to schedule a water heater install for next week.” — agent should collect name + phone at minimum, plus any volunteered details.
  10. Lead capture refusal. “How much is a faucet repair?” — agent should answer the price-range question, not capture a lead.

Adapting the test script for other verticals. - Contractor — replace test 1 with “Do you do basement remodels?”, test 2 with “How much does a basement remodel cost?” (range answer with site-visit caveat), test 9 with “I’m thinking about a basement remodel this summer.” - Plumbing — the script above is plumbing-native. - Marketing agency — replace test 7 (emergency) with “My ad campaign is bleeding budget right now.” (still high-urgency, still warrants immediate routing, just to a different team). Replace test 8 (honest no) with a service the agency doesn’t offer, e.g. “Can you do my SEO?” for an agency that’s paid-acquisition-only.

If any answer is wrong or off-brand:

  • Agent quoted an exact price. Re-read the “Pricing rules” section of the instructions. The rule should be explicit and the rate-sheet entries should all be ranges, not points.
  • Agent narrowed a range. Same — add a stronger rule like “never collapse the range below the published bounds, even when the visitor’s situation seems low- or high-end.”
  • Agent missed the emergency triage. Re-read the “Emergencies” rule and make sure emergency keywords (leak, flooding, no water, sewer back-up, gas) trigger an immediate call-out reference rather than a generic answer.
  • Agent fabricated a service we don’t offer. Confirm the knowledge base has the explicit “what we can / can’t help with” section, and the instructions reference it.
  • Lead capture fires too early or too late. Tighten the “clear intent” language in the instructions. The trigger should be intent to book or be contacted, not intent to research.

Publish and embed

  1. Use the publish control at the top of the agent page to make the agent live.
  2. Open SettingsClient settings and set Origin to the operator’s site.
  3. Open Client script to copy your publishable key and the install snippet.
  4. Follow the Widget guide to embed the chat widget on the site.

What you built

A working assistant that:

  • Answers visitor questions from a single services-and-FAQ document
  • Shares typical pricing ranges, with a clear “real quotes happen on site” disclaimer
  • Knows the service area down to the ZIP and answers in-band, extended, and out-of-band questions honestly
  • Triages emergencies to the 24/7 phone line first, then captures details for follow-up
  • Knows what the business doesn’t do (septic, commercial, out-of-state) and offers honest referrals
  • Captures structured leads — phone required, structured intent fields optional — ready for the office to call back the same day

The same workflow adapts to any local service business. Replace the services-and-FAQ document with your own, adjust the Lead Capture fields to match what your team needs, tune the pricing-rules section of the instructions, and the rest of the structure stays the same.

Next steps

  • Widget guide — install the chat widget on the operator’s site.
  • Lead Capture — full reference for fields, dedup, and the leads dashboard.
  • Knowledge tool — multi-source retrieval, RAG behaviour, and best practices for content structure.
  • Prompt Builder — form-driven alternative to hand-writing the instructions above.
  • FAQ — billing, limits, troubleshooting.

Disclaimer: The company, services, pricing, license number, and contact details in this guide are fictional and created solely for demonstration purposes. Any resemblance to real organisations is unintended.