1. Quote request → grounded estimate, price approved before it goes out
Estimate requests land by email, WhatsApp and web form with half the spec missing. The estimator re-reads the rate card, chases the customer for the missing details, prices it by hand, and quotes drift out days later.
Trigger: Email / WhatsApp / Webhook (quote request)
How the workflow runs
- Trigger
Quote request arrives. An Email, WhatsApp or Webhook (web form) trigger catches the request.
- Agent
Parse the job spec. An Agent node extracts the printable spec — product, stock/GSM, size, quantity, colours, finish, turnaround — into structured fields.
- Condition
Spec complete?. A Condition node checks the mandatory fields; an incomplete spec branches to a single, specific clarification message instead of a wrong price.
- Knowledge
Price from the rate card. A Knowledge node grounds the estimate in your current rate card / material pricing — the agent computes the estimate only from documented rates, never a made-up number.
- Approval
Estimator signs off the price. An Approval node holds the estimate — a price to a customer is a binding commitment, so a human confirms (or edits) before it is ever sent.
- Output
Send the quote. An Output node sends the approved estimate on the customer's channel, itemised, with validity and next step.
Channels & connectors
- Webhook
- Knowledge base
- Approval / HITL
- Tool (MCP → print MIS)
Outcome
Requests become itemised, rate-card-grounded estimates within the hour, and no price reaches a customer without an estimator's sign-off.
Why it helps
Removes the re-keying and back-and-forth while keeping the commitment human — the agent assembles a complete, grounded estimate; the estimator just approves or adjusts.
Build spec
1 agent — 1 estimating agent; the completeness gate, the price approval and the MIS lookup are workflow nodes.
System prompt (paste-ready)
You are a print estimator's assistant for {{press}}. From a quote request, extract the spec {product, stock, gsm, size, quantity, colours (e.g. 4/0, 4/4), finish[], turnaround}. If any mandatory field is missing, do NOT price — return {complete: false, missing[]} so the workflow asks one clear clarification. When the spec is complete, compute an itemised estimate USING ONLY the rate card in Knowledge {line_items[{desc, unit, rate, amount}], subtotal, tax, total, validity}. Never invent a rate, discount, or lead time not in the rate card. This is a draft for an estimator to approve — never present it as a confirmed price.MCP connectors
- Print MIS / print-ERP (job + customer history) — via a Tool (MCP) node (no first-party connector)
- Email / WhatsApp — request + quote channel
- Web form — inbound via Webhook
Built-in tools
- knowledge_search (current rate card / material pricing)
- http_request (pull customer / prior-job pricing from the MIS)
Guardrails
- Every price is a draft until the estimator approves at the Approval node — no quote leaves without a human sign-off
- Estimates are computed only from the rate card in Knowledge — no invented rates, discounts or lead times
- An incomplete spec forces a single clarification (completeness gate) instead of a guessed price
Cost strategy
One standard-tier agent per request handles parsing and rate-card pricing in a single pass; there is no batch multiplier. If request volume grows, drop the completeness-check pass to an economy-tier model and reserve the standard tier for the priced estimate — the clarification path never needs the bigger model.
Output & delivery
The agent parses the spec → the Condition node gates completeness (clarifying if needed) → it prices from the rate card in Knowledge → the estimator approves or edits at the Approval node → an Output node sends the itemised quote with validity on the customer's channel, and the draft is linked to the MIS job.