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.
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.
-
Calling agent
Chatbot, voice agent or workflow
-
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.
-
Structured, evaluated decision
Quote, missing inputs, next question, estimate range, recommendation, or human review
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.
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.
| Step | AI reasoning | Your 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.
Teach QuoteKernel how your business quotes
A kernel is one business's pricing, ready for any connected agent to call.
- 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.
- 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.
- 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.
- 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.
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.
- Customer "We're getting married in Tampa. About six hours, and we love a cinematic editorial look."
- 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.
- Your agent, to the customer "About how many guests are you expecting?"
- Customer "About 275."
- 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.
- Your agent, to the customer "For 275 guests we include a second photographer. Is that okay?"
- Customer "Yes."
- 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.
- 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."
The same exchange, as the agent's tool calls:
{
"tool": "start_estimate",
"arguments": {
"service": "wedding_photography",
"request": "We're getting married in Tampa. About six hours, and we love a cinematic editorial look."
}
} {
"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": "submit_answers",
"arguments": {
"estimate_id": "est_example_002",
"answers": { "guest_count": "About 275." }
}
} {
"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": "submit_answers",
"arguments": {
"estimate_id": "est_example_002",
"answers": { "second_photographer": "Yes." }
}
} {
"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.
{
"tool": "get_estimate",
"arguments": { "estimate_id": "est_example_002" }
} {
"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.
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.
| State | What it means | In 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.
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.
{
"status": "refused",
"reason": "outside_service_area",
"display_text": "I'll need to check that with the team."
} Who decides what's binding
An estimate is not a commitment. QuoteKernel keeps the two apart:
Estimate
Any connected agent can ask for one. Not binding.
Commitment
Only a person at the business can commit to a price. No agent can.
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.