How to Set Up an Approval Step for AI-Written Quotes

Coding Liquids tutorial cover featuring Sagnik Bhattacharya for How to Set Up an Approval Step for AI-Written Quotes.
Coding Liquids tutorial cover featuring Sagnik Bhattacharya for How to Set Up an Approval Step for AI-Written Quotes.

Treat every AI-written quote as a draft that only a named person can release. Write down which quotes need sign-off (all of them at first), block sending until approval in your quoting tool or automation, and give the approver a two-minute checklist covering prices, quantities, maths, discounts and promises. Then log every approval and correction.

The AI is rarely wrong about wording. It goes wrong on numbers and commitments: a price from last year's list, a band one step too low, a discount nobody offered, a turnaround you can't meet. An approval step works when it targets those specific failures and takes minutes. It fails when it asks a busy owner to "have a look" at a PDF.

Follow me on Instagram@sagnikteaches

Where AI-written quotes go wrong

Before designing the check, know what it has to catch. These are the failure types that turn up again and again when a chat assistant or an AI feature drafts quotes from call notes, with an illustrative example of each:

Connect on LinkedInSagnik Bhattacharya
FailureHow it shows upWhy the AI does it
Arithmetic12 months at $650 totalled as $6,800 instead of $7,800Language models predict text; they don't calculate unless a tool does it for them
Stale pricePayroll at last year's $5 per employee per run instead of $6An old price list or old quote was sitting in the chat or project files
Wrong bandClient with about 350 transactions a month put in the up-to-300 bandCall notes said "300 to 400" and the AI picked the cheaper end
Invented discount"10% off for the first year" appears in the cover letterThe notes mentioned the client asked about discounts
Promise you can't keep"Monthly reports delivered within three working days"It sounds reassuring, and nothing told the AI your real turnaround
Another client's termsPayment terms of 60 days copied from an earlier proposalThe earlier proposal was in the same conversation
Missing exclusionsNo mention that catch-up work is billed separatelyThe template section was dropped to shorten the letter

Notice that only the first is a maths problem. The rest are problems of source: the AI used the wrong source, or no source at all. That shapes the whole design below. If maths keeps tripping your drafts, the tutorial on why AI is bad at maths explains the mechanism.

Subscribe on YouTube@codingliquids

Stage 1: Write the approval rules before switching anything on

Decide on paper who approves what, before you touch any settings. A rule that exists only in the owner's head can't be enforced by software or covered by a colleague during a holiday. Keep it to one table.

A filled-in approval matrix for an illustrative five-person bookkeeping firm that quotes monthly bookkeeping, payroll, management accounts and catch-up work:

ConditionApproverTarget turnaround
Every AI-drafted quote, first 60 daysOwnerSame working day
Standard packages from the current price list, under $1,000 a monthSenior bookkeeper4 working hours
Any discount, of any sizeOwnerSame working day
Monthly fee over $1,000, or first-year value over $12,000OwnerSame working day
Catch-up or clean-up work (non-standard scope)Owner and senior bookkeeper1 working day
Any change to payment terms or notice periodOwnerSame working day
Owner awaySenior bookkeeper, up to $1,000 a month, no discounts4 working hours

Three choices in that table matter more than the thresholds. Everything needs approval at first, because you don't yet know where your AI drafts go wrong. Discounts always go to the owner, whatever the size, because an invented discount is the error that costs the most over a client's lifetime. And there is a named backup with a lower limit, so the rule survives the owner's holiday.

Stage 2: Make sending impossible until someone approves

An approval rule people can skip will be skipped on a busy Friday. The control has to sit where the quote leaves the building. Pick the option that matches where your quotes are produced.

Quotes built in accounting software

Most accounting tools keep a quote as a draft until someone sends it, so the control is user permissions. Xero, for example, has a sales and purchases user role that can create draft quotes, invoices and bills but not approve them. Give the people who work with AI drafts that kind of role, and keep approve-and-send rights for the approvers in your matrix.

Quotes built in a CRM

HubSpot has built-in quote approvals, which now sit in its Revenue Hub (renamed from Commerce Hub in June 2026) on Professional and Enterprise. Standard approvals can require sign-off when a discount passes a set amount or a line item's discount does. Advanced approvals, on Enterprise only, can trigger on quote amount, payment terms and other properties, with up to five sequences of up to ten approvers. A quote waiting for sign-off shows as "Pending approval", and approvers can approve with a note or choose "Request changes" with feedback. One quirk is worth knowing: if the creator is the only approver, no approval is required, so name someone else.

Quotes produced by an automation

If a workflow drafts quotes from form submissions or call notes, put a pause in it before anything is emailed. The mechanics for each platform are covered in how to add human approval steps to AI automations; the quote-specific settings are these:

  • Zapier Human in the Loop (Professional plan and above) pauses the Zap and lets a reviewer approve, decline or change the data. On Professional, requests can only go to yourself; on Team and Enterprise they can go to colleagues. Set the timeout to "End run", not "Skip and continue", so an unanswered quote is never sent by default.
  • Power Automate has a "Start and wait for an approval" action. The approvals connector is a standard connector, so Office 365 licences that include Power Automate can use it, and approvers respond from Outlook or Teams. Two traps: a flow switches off after 14 days of continuous failure, and without a Premium licence it also switches off after 90 days with no triggers, which a seasonal quoting flow can hit.
  • Make offers a Human in the Loop app only on Enterprise (in closed beta). On other plans, a common workaround is a status column in a sheet that the approver changes to "Approved", with the sending scenario filtering on that value.

Quotes typed from a chat assistant

The simplest case is also the leakiest: someone asks ChatGPT or Claude for a quote letter and pastes it into an email. Here the control is procedural. AI-drafted quotes are saved to one shared folder named for the purpose, and only approvers send from the quotes mailbox. It isn't software enforcement, so the log in Stage 5 is what shows whether it's being followed.

Stage 3: Keep the numbers out of the AI's hands

The single most effective design choice is to stop asking the AI for prices at all. Let a price calculator (a spreadsheet, your accounting tool or your CRM's product library) produce every number, and let the AI write the words around them: the cover letter, the scope description, the next steps. Then the approver checks prices once, in a place that is always current, instead of re-checking arithmetic in prose.

Where the AI must draft the whole quote, make it show its working so the approver can check sources rather than redo the job. A prompt that does this:

Draft a quote for the client in the discovery notes below.
Rules:
- Use ONLY the attached price list (version dated [date]).
  If a service isn't on it, don't quote it.
- For each line show: service, price-list code, unit price,
  quantity, where the quantity came from (quote the exact
  line from the notes), line total.
- Do not add discounts, deadlines, guarantees or payment
  terms that are not in the attached quote template.
- Under QUESTIONS FOR APPROVER, list anything you had to
  assume.

DISCOVERY NOTES:
[paste notes]

Part of what came back (illustrative):

BK-02  Monthly bookkeeping, 101-300 transactions
       $400/month x 12 = $4,800
       Quantity source: "roughly 300-400 transactions a month"
PR-01  Payroll, 8 employees, monthly run
       $6 x 8 x 12 = $576
       Quantity source: "eight staff, paid monthly"
QUESTIONS FOR APPROVER
- None.

The catch: the notes say 300 to 400 transactions, and the AI chose the band that ends at 300, the cheaper one. Worse, it listed no question about it, even though it was exactly the kind of assumption the rules asked it to flag. Because the quantity source is quoted next to the line, the approver sees the mismatch in seconds and moves the client to the next band ($650 a month in this firm's list). Without the source line, $400 a month would have looked perfectly plausible.

Stage 4: The approver's two-minute check

Approvers need a short, fixed list, in the same order every time, so a check takes two minutes instead of a vague twenty. This one covers the failure table above:

  1. Client: the right name, entity and contact everywhere, with no other client's name in the text.
  2. Price list: every line exists on the current price list, with the version date matching.
  3. Quantities: each quantity matches the notes; where the notes give a range, the band covers the top of it.
  4. Maths: totals recalculated in the spreadsheet or quoting tool, never trusted from the prose.
  5. Discounts: none, unless listed in the matrix and approved by the right person.
  6. Scope: inclusions match the package, and exclusions (catch-up work, extra calls, one-off projects) are stated.
  7. Promises: no deadlines, response times or guarantees beyond your standard terms.
  8. Terms: payment terms, quote validity and notice period match the template.

Here it is filled in for the illustrative bookkeeping quote above, as the approver recorded it:

CheckResultNote
ClientPass
Price listPassSeptember list
QuantitiesFail350 transactions a month needs BK-03 at $650, not BK-02
MathsPass after fixNew first-year total $8,376
DiscountsPassNone
ScopeFailCatch-up exclusion missing; client is three months behind
PromisesPass
TermsPass30-day validity

The corrected first-year total: $650 × 12 = $7,800 for bookkeeping plus $576 for payroll, $8,376 in all. The uncorrected draft said $5,376. Sent as drafted, that quote would have underpriced a year's work by $3,000 and left the three months of catch-up work unbilled or, worse, implied it was included.

Stage 5: Log every approval and every correction

The log is what turns an approval step from a habit into something you can manage. It needs only a few columns, and a shared spreadsheet is enough. Illustrative rows from the bookkeeping firm's first fortnight:

QuoteValue a monthApproverMinutes to approveOutcomeError type
Q-0412$650Owner4Changes requestedWrong band, missing exclusion
Q-0413$250Owner2Approved
Q-0414$1,150Owner6Changes requestedInvented discount
Q-0415$400Owner3Changes requestedPromise ("reports in 3 days")

The error-type column is the valuable one. After a month it tells you which instruction to add to the drafting prompt, which item to move to the top of the checklist and, later, which package types are safe to hand to a less senior approver.

A five-person bookkeeping firm's first month, in numbers

Pulling the illustration together. The firm sends about 22 quotes a month. Before AI, the owner drafted each one in about 45 minutes: 16.5 hours a month. With a bookkeeper drafting in a shared project that holds the price list and templates, a draft takes about 15 minutes (5.5 hours) and the owner's check about 4 minutes (roughly 1.5 hours). Seven hours a month instead of 16.5, with the owner's own time down from 16.5 hours to 1.5.

In the first month the log recorded seven corrections across the 22 quotes: three wrong bands, one arithmetic slip, two invented promises and one quote that carried another client's payment terms. Without the approval step, every one of them would have reached a client. The largest single catch was the $3,000 underquote above. None of the seven involved a wording problem, which confirmed where the checklist should focus.

In month two, corrections were down to two, both non-standard scope. The firm moved standard packages under $1,000 a month to the senior bookkeeper as approver and kept everything else with the owner. If you want the drafting side of this set up well before the approval step, the tutorial on creating quotes and estimates with AI covers the templates and price-list files.

Fee terms instead of line items: a recruitment agency version

Not every quote is a list of line items. A recruitment agency's quote is usually a set of fee terms: a percentage of first-year salary, a replacement or rebate period if the hire leaves early, payment terms and sometimes exclusivity. The failures change accordingly. The AI copies a percentage agreed with one client into another client's terms, stretches a rebate period because the client asked for "reassurance", or adds an exclusivity clause the consultant never discussed.

The approval rules for an illustrative agency look different from the bookkeeper's:

  • Any fee percentage below the agency's standard floor goes to a director.
  • Any rebate or replacement period longer than standard goes to a director.
  • Exclusivity, retained or multi-role terms always go to a director.
  • Standard terms, standard percentage, single role: a senior consultant approves.

The approver's check shrinks to four questions: is the percentage the one agreed on the call, is the rebate period standard, are the payment terms the template's, and is every clause one the consultant actually discussed? The last question catches the most, because an AI asked to make terms "client-friendly" adds concessions that sound generous and cost real money when a placement fails. Where the terms sit inside a longer proposal, the number audit for AI-drafted proposals covers the rest of the document.

Stopping the approver becoming the bottleneck

An approval step that delays quotes by two days loses work, and staff will find ways around it. Four settings keep it fast:

  • A turnaround target per rule, written in the matrix (4 working hours, same day), so everyone knows when to chase.
  • Reminders built into the tool. Zapier's Human in the Loop can send reminder notifications before the timeout, and HubSpot notifies approvers by email with a link to the quote.
  • A named backup with a lower limit, so a holiday doesn't stop quoting.
  • Graduation by evidence. When the log shows a package type with no corrections for two months, move it to a less senior approver or to sampling (one quote in five checked in full). Keep discounts and non-standard scope with the owner permanently.

Telling a real check from a rubber stamp

After a few quiet months, approval steps decay into a click. The log shows it before a client does. Three warning signs:

  1. Approval times collapse. If the average drops below a minute for quotes with eight lines, nobody is recalculating totals.
  2. "Changes requested" drops to zero while amendments after sending don't. Track quotes corrected after they went out. If those continue while approvals show no changes, the check has stopped working.
  3. The same error type returns. A repeat means the fix went into someone's memory rather than into the drafting prompt or the checklist.

Once a month, have a second person re-check three approved quotes in full against the checklist. It takes ten minutes, keeps approvers honest without accusing anyone, and gives you evidence for loosening or tightening the rules. The broader principles, including how much review different kinds of AI work need, are in setting up human review for AI work without slowing down.

Approving AI-drafted quotes: follow-up questions

Should the same person draft and approve a quote?

Not if you can avoid it. Someone who prepared the quote reads what they meant, not what the page says. HubSpot's own quote approvals skip the approval step when the creator is the only approver, which shows why a second person matters. In a one-person business, approve the next morning with the checklist rather than straight after drafting.

Can I let AI send low-value quotes automatically?

Only after the approval log shows it has earned it. A sensible bar is two months with no corrections on that package type, then automatic sending for standard packages under a set value, with a person sampling one in five afterwards. Anything with a discount, non-standard scope or changed terms should always stop for a human.

What if a wrong AI quote has already been accepted?

Contact the client quickly, explain the error plainly, and offer the corrected figure. Whether you must honour the original price depends on your terms and the law that applies to you, so check your engagement terms and take advice if the sum is large. Then log the error and add the missing check to the approver's list.

Further reads

Sources: HubSpot Knowledge Base (set up and manage quote approvals); Zapier Help (Human in the Loop request approval); Microsoft Learn (Power Automate approvals); Xero Central (sales and purchases user roles). Checked September 2026.

Want an approval step your team will actually use?

On a 1:1 call we'll map how your quotes are drafted today, set approval rules that fit your prices and team, and decide whether your CRM, accounting tool or an automation should hold the quote until it's signed off.

Book a 1:1 call with me