How it works

From your pricing knowledge to a quoting tool any agent can use.

QuoteKernel separates conversation from business decisions. It reasons about the job, estimating the work and recommending what fits, inside the rules and policy your business sets. First, you teach it how your business quotes. Then your agent calls it whenever a customer needs an estimate.

01 / Overview4 parts

Hybrid AI reasoning for dependable quoting

Your agent calls QuoteKernel. Four parts work together, and every call ends in a structured, evaluated decision your agent can act on.

How a quote is decided Architecture
  1. Calling agent

    Chatbot, voice agent or workflow

  2. QuoteKernel

    Hybrid domain reasoning engine

    • Probabilistic AI Interprets the request, estimates the work from similar past jobs, recommends packages and judges confidence.
    • Deterministic logic Exact calculations, hard constraints, minimum margins, eligibility and approvals.
    • Domain intelligence Industry knowledge, business expertise, historical patterns and context.
    • Governance Validation, evaluation, confidence calibration, escalation and auditability.
  3. Structured, evaluated decision

    Quote, missing inputs, next question, estimate range, recommendation, or human review

Probabilistic reasoning inside deterministic boundaries.

AI reasoning estimates and recommends; your rules calculate the exact amounts and decide what can be returned. Where a request is ambiguous, QuoteKernel returns a range, a recommendation with its confidence, or a question, and hands off to a person when it isn't sure.

02 / Who does whatIllustrative

Who does what

Your agent passes along what the customer said; QuoteKernel works out what it means for your pricing. AI reasoning and your rules work together at every step. The reasoning handles judgment; the rules set the boundaries it works inside. Here is the wedding request used throughout this page: "We're getting married in Tampa. About six hours, and we love a cinematic editorial look." The guest count, 275, comes later.

StepAI reasoningYour rules and policy
Understand the request Interprets "cinematic editorial look" and "about six hours" into a likely style and coverage hours, and later reads "About 275." as the guest count Maps them to the services and required inputs the business defines
Decide what to ask next Picks the most useful next question Requires certain inputs before any firm quote
Estimate the work Estimates hours and editing complexity from similar past jobs, as a range with confidence Applies caps, minimums and what counts as billable
Price the job Turns its assessment into an estimate range Calculates rates, travel, package prices and minimum margin exactly
Recommend a package Weighs which package fits the request and past jobs Only packages the business offers and the client is eligible for
Decide what can be returned Judges how confident it is Firm quote only with confirmed inputs and policy approval; otherwise a range, a question or a person
Explain the result Writes a plain-language explanation Grounded in the actual decision, with no new numbers

Illustrative. The tasks and rules are an example, not a real business's policy.

03 / Teach4 steps

Teach QuoteKernel how your business quotes

A kernel is one business's pricing, ready for any connected agent to call.

  1. 01

    Start with your industry.

    Choose a quoting model such as photography, HVAC, plumbing or moving. Each model begins with relevant job types, questions and common constraints, so you are not starting from a blank page.

  2. 02

    Make it yours.

    Add your services, packages, rates, minimums, service areas, discounts, and the questions you ask before you quote. QuoteKernel checks all of it and reports every problem at once, each pointing at the line that caused it.

  3. 03

    Test the decisions.

    Run jobs you already know the price of and check that the kernel agrees. Change the rules until they match how you actually work.

  4. 04

    Connect your agent.

    Use MCP or API with the chatbot, voice agent or workflow you already operate. Connect it yourself, or have your agency or developer do it. QuoteKernel handles quoting state and validation; your agent handles the conversation.

More ways to teach it

  • Configure from past quotes and invoices, and review what was picked up before you use it.
  • Run a guided scenario review: mark quotes as right, too high, too low or not quoteable, and explain the exceptions.
  • Set approval rules that hold a quote for a person before it is committed.

More on teaching the kernel

04 / Operatestart_estimate → submit_answers → get_estimate

One simple loop. No pricing expertise required in the agent.

When a customer asks "how much?", the agent doesn't guess what matters. It starts an estimate with the customer's request in their own words, and gets back what QuoteKernel understood and the next question to ask, in the business's own words. It relays the questions and passes back the answers as the customer gave them. QuoteKernel interprets and checks each answer, estimates the work, decides what is still missing, and decides when it has enough to price the job. The agent doesn't.

The customer sees only the conversation with your agent. The exchange with QuoteKernel happens behind the scenes. Here, a guest count adds a requirement the agent never knew about. Amounts and rules are illustrative.

One quote, two conversations Illustrative
  1. Customer "We're getting married in Tampa. About six hours, and we love a cinematic editorial look."
  2. Your agent, behind the scenes Passes the customer's words on QuoteKernel Reads it as six hours of coverage in Tampa, editorial style. Missing: guest count. Returns the next question.
  3. Your agent, to the customer "About how many guests are you expecting?"
  4. Customer "About 275."
  5. Your agent, behind the scenes Passes the answer on QuoteKernel Rule: 250+ guests needs a second photographer. Estimates $3,600–$4,300, medium confidence. Confirm coverage before pricing.
  6. Your agent, to the customer "For 275 guests we include a second photographer. Is that okay?"
  7. Customer "Yes."
  8. Your agent, behind the scenes Passes the answer on QuoteKernel Inputs confirmed, rules satisfied. Returns a firm estimate and a sentence to relay word for word.
  9. Your agent, to the customer "Based on what you've told me, six hours of editorial wedding photography in Tampa with a second photographer comes to $3,960. This is an estimate, not a binding quote. Reference: Q‑4M8P."
Shaded: behind the scenes. The customer never sees this exchange.

The same exchange, as the agent's tool calls:

Illustrative, not a live endpointWedding photography
Tool call: start_estimate
{
  "tool": "start_estimate",
  "arguments": {
    "service": "wedding_photography",
    "request": "We're getting married in Tampa. About six hours, and we love a cinematic editorial look."
  }
}
Response: what it understoodstatus: questions
{
  "estimate_id": "est_example_002",
  "status": "questions",
  "understood": {
    "event_location": "Tampa, FL",
    "event_hours": 6,
    "style": "editorial"
  },
  "questions": [
    {
      "id": "guest_count",
      "ask": "About how many guests are you expecting?"
    }
  ]
}
Tool call: submit_answers
{
  "tool": "submit_answers",
  "arguments": {
    "estimate_id": "est_example_002",
    "answers": { "guest_count": "About 275." }
  }
}
Response: new requirement and a rangestatus: questions
{
  "status": "questions",
  "understood": { "guest_count": 275 },
  "estimate_range": { "low_cents": 360000, "high_cents": 430000 },
  "confidence": "medium",
  "questions": [
    {
      "id": "second_photographer",
      "ask": "For 275 guests we include a second photographer. Is that okay?"
    }
  ]
}
Tool call: submit_answers
{
  "tool": "submit_answers",
  "arguments": {
    "estimate_id": "est_example_002",
    "answers": { "second_photographer": "Yes." }
  }
}
Response: confirmedstatus: ready
{
  "status": "ready",
  "understood": { "second_photographer": true }
}

When the questions are done, QuoteKernel returns:

  • A sentence to say word for word. It states the amount, says it's an estimate and not a binding quote, and gives the reference number.
  • The breakdown. One line per charge, so "why is it that much?" has a real answer.
  • The answers it priced on, so everyone can see what the estimate assumed.
  • How long the price is good for.
  • A reference number the customer can quote back and the business can look up later.
Illustrative, not a live endpointReady
Tool call: get_estimate
{
  "tool": "get_estimate",
  "arguments": { "estimate_id": "est_example_002" }
}
Responsestatus: ready
{
  "status": "ready",
  "display_text": "Based on what you've told me, six hours of editorial wedding photography in Tampa with a second photographer comes to $3,960. This is an estimate, not a binding quote. Reference: Q-4M8P.",
  "amount_cents": 396000,
  "breakdown": [
    { "label": "Editorial wedding coverage, 6 hours", "amount_cents": 288000 },
    { "label": "Second photographer, 6 hours", "amount_cents": 108000 }
  ],
  "priced_on": {
    "event_hours": 6,
    "event_location": "Tampa, FL",
    "style": "editorial",
    "guest_count": 275,
    "second_photographer": true
  },
  "valid_for_days": 30,
  "quote_reference": "Q-4M8P"
}

A firm quote comes only from confirmed inputs your rules and policy allow: the same confirmed job and the same rules give the same firm quote. An ambiguous request gets a range, a recommendation with its confidence, or a question, never an invented price.

05 / States7 outcomes

Every call ends in a clear state

The agent never has to judge whether a quote is ready. QuoteKernel tells it, and says how confident it is when the job is still ambiguous.

StateWhat it meansIn the contract
Needs more information Here is what is missing and what to ask next. status: questions
Invalid input This answer cannot be accepted. Nothing is priced on it. asked again, or a refusal with a reason
Estimate range The job is still ambiguous. A low and a high figure, with the confidence behind them and what would firm them up. estimate_range, confidence
Recommendation A suggested package or approach, with its stated confidence. recommendation, confidence
Requires approval A person must review before the business commits. Low confidence lands here too. status: approval_required
Ready The estimate can be presented within its allowed scope. status: ready
Cannot quote Stop, and hand off to a person or arrange a site visit. status: refused

The range, recommendation and confidence field names are illustrative.

06 / RefusalsNo guessed number

When QuoteKernel says no

Some jobs shouldn't get an automatic price. Outside the service area. A service the business doesn't offer. A job too far outside what the business has priced before. In those cases QuoteKernel doesn't guess. It returns a clear refusal with a line the agent can say, like "I'll need to check that with the team."

A polite "let me check" is better than a wrong number.

Illustrative, not a live endpointRefusal
Response: a job outside the service areastatus: refused
{
  "status": "refused",
  "reason": "outside_service_area",
  "display_text": "I'll need to check that with the team."
}
07 / Authority

Who decides what's binding

An estimate is not a commitment. QuoteKernel keeps the two apart:

Tier 01Any connected agent

Estimate

Any connected agent can ask for one. Not binding.

Tier 02A person

Commitment

Only a person at the business can commit to a price. No agent can.

08 / Protection

What stays protected

  • The number can't be talked down.

    Discounts and overrides are set by the business, not by anything a customer types into chat.

  • The price list stays private.

    A competitor can't use a public chatbot to pull out a business's whole price list.

See how the connection works.

The docs walk through the tools and the states, for you or your developer.