What you will build
A Quote Desk: a repeatable way to turn a customer's WhatsApp or email request into a draft quote built only from your own price list. Each draft lists the line items, anything not on your list, every assumption the AI made, and the questions you must ask before the quote is final. You check the numbers and you send the quote yourself.
The goal is not a quote the AI decides. It is a first draft that makes it hard for you to miss a line, a missing detail or a wrong total.
Before you start
- Claude, ChatGPT or Gemini, any plan.
- Your price list in plain text, with units, inclusions and "needs owner price" rules. If it lives in your head or an old PDF, do Put your price list in a shape AI can read correctly first.
- Your usual quote format: the template, invoice app or spreadsheet you already send quotes from.
- Three past customer requests you have already quoted, so you can compare the AI draft with what you really sent.
- A spreadsheet (Google Sheets or Excel) for checking totals.
- About 30 minutes for setup.
How it works
Most quoting time goes into three things: reading a messy request, finding the right lines on the price list, and remembering what to ask. AI is good at a first pass on all three. It is not good at deciding prices, and it can make arithmetic slips. So the Desk splits the work. The AI reads and matches. Your spreadsheet does the maths. You decide and send.
Two ideas keep it safe. First, the AI may only use prices that appear in your list, and anything else becomes "Needs owner price". Second, every guess the AI makes is written down as an assumption, so you can confirm it or turn it into a question for the customer.
- Write the quote rules for your business.
- Clean the customer request.
- Run the draft-quote prompt.
- Let a spreadsheet check the totals.
- Send the customer your questions first if details are missing.
- Approve the final quote and send it from your normal tool.
- Save the known-good copy and test it on past jobs.
Step 1: Write the quote rules for your business
Quote rules sit on top of your price list. They cover everything a new staff member would get wrong on their first quote: minimums, transport, deposits, how long a quote is valid, and how you show SST if you charge it.
QUOTE RULES: [business name]
Currency: RM
SST: [how we show it, exactly as our accountant told us, or "not charged"]
Minimum order or charge: [rule]
Transport or delivery: [rule by area, or "owner decides"]
Deposit: [rule]
Quote valid for: [e.g. 14 days]
Discounts: only the owner offers discounts. Never add one.
Items not on the price list: list as "Needs owner price". Never estimate.
Rounding: do not round. Show amounts exactly as calculated.
Owner who approves every quote: [name]Write SST exactly the way you already do it. The AI should copy your practice, not guess tax rules. This is a formatting habit, not tax advice. Your accountant decides what applies to you.
Check
- Every rule is something you already do today, written down.
- Discounts and unknown items always go to the owner.
- SST handling is copied from your real quotes.
Step 2: Clean the customer request
Copy the whole request, including earlier messages if the customer added details across several messages. Remove the name, phone number and full address. Keep what affects price: area, quantity, size, date, special requests.
CUSTOMER REQUEST (cleaned)
Channel: WhatsApp / email / form
Date received:
Area: [area only]
Message(s):
"..."
"..."
Photos: [describe them in words if they matter, e.g. "photo shows two wall units, one old"]If the customer sent photos of the job site, describe what matters in words. Only upload a photo if it shows no faces, car plates, documents or addresses.
Check
- No name, number or full address remains.
- All messages about this job are included, in order.
- Anything important in a photo is written in words.
Step 3: Run the draft-quote prompt
Open a fresh chat and use this prompt. It forces the AI to separate what it knows from what it guessed.
You prepare draft quotes for my business. You never send them and you never decide prices.
Use ONLY items and prices in MY PRICE LIST and follow MY QUOTE RULES.
From the CUSTOMER REQUEST, return five sections:
1. LINE ITEMS as CSV with columns: item, unit, quantity, unit_price_RM, source_line
(source_line = the exact line from my price list you used)
2. NEEDS OWNER PRICE: anything requested that is not on my price list
3. ASSUMPTIONS: every guess you made about size, quantity, date or location, one per line
4. QUESTIONS: at most four questions I must ask before the quote is final, in the customer's language
5. COVER MESSAGE: a short message to send with the quote, in the customer's language, with no discount and no date promise
Do not calculate a grand total. I will total it in my spreadsheet.
If the request is too unclear to quote, say so and list what is missing.
MY QUOTE RULES:
[paste]
MY PRICE LIST:
[paste]
CUSTOMER REQUEST:
[paste cleaned request]The source_line column is your audit trail. Every price in the draft must point to a real line in your list.
Check
- Every line item shows the price-list line it came from.
- Unknown items appear under "Needs owner price", not with a made-up price.
- Assumptions are listed, not hidden inside the line items.
Step 4: Let a spreadsheet check the totals
AI chats can make arithmetic slips, especially with many lines. Anthropic's own guidance on reducing hallucinations ends with a reminder to always validate critical information. For quotes, the simplest validation is a spreadsheet.
Paste the CSV into Google Sheets or Excel. Add a column for line total with a formula (quantity times unit price), then a subtotal, then any charges from your rules such as transport or SST, using formulas, not typed numbers.
SPREADSHEET CHECK
Column E (line total) = C x D for each row
Subtotal = SUM of column E
Transport = [from quote rules]
SST = [only if your rules say so, using your accountant's method]
Total = Subtotal + Transport + SST
Compare: does every unit_price match the price list line in source_line?If you already use an invoicing or accounting app, this is where the numbers go into it. The AI draft never becomes the final quote directly.
Check
- Totals are calculated by formulas, not typed.
- Every unit price matches the price list exactly.
- "Needs owner price" items are either priced by you or removed with the customer's agreement.
Step 5: Send the customer your questions first if details are missing
A quote built on wrong assumptions creates arguments later. If the AI listed assumptions that change the price, turn them into questions and ask the customer before you quote. Edit the AI's questions so they sound like you, then send them yourself.
Hi, terima kasih! Before I send the quote, can I confirm two things:
1. [question that changes the price]
2. [question that changes the price]
Then I will send you the full quote.Only ask what changes the price or the job. Two good questions are better than four vague ones.
Check
- Each question maps to an assumption that changes the price.
- No question asks for private details you do not need.
- The message was read and sent by a person.
Step 6: Approve the final quote and send it from your normal tool
Once the customer answers, update the request and run the prompt again, or adjust the spreadsheet directly. Then do a final approval before anything leaves the business.
QUOTE APPROVAL
Customer: [label, not name, in your notes]
Every price matches the price list: yes / no
"Needs owner price" items decided: yes / no
Assumptions confirmed by customer: yes / no
Totals calculated by spreadsheet or invoice app: yes / no
SST, deposit and validity follow our rules: yes / no
Approved by: [name] Date:Put the approved numbers into your usual quote template or invoice app and send it from there. The customer should receive the same format they always get from you.
Check
- Every line of the approval card is "yes".
- The quote is sent from your normal tool by a person.
- The quote is logged in your follow-up list with the date sent.
Step 7: Save the known-good copy and test it on past jobs
Before you trust the Desk on new customers, run it on the three past requests you already quoted. Compare the AI draft with what you actually sent.
- Did it find every line you charged?
- Did it flag the items you priced by judgment as "Needs owner price"?
- Did its questions match what you really had to ask?
Where it differs, fix the price list or the quote rules, not the output. When all three past jobs come out right, save the rules, price list, prompt and test results together with the date. That is your known-good copy.
Check
- Three past jobs tested, with differences written down.
- Every difference led to a change in the price list or rules.
- The known-good copy is saved in a file with a date.
Worked example
This example is made up for teaching. The business, request and all prices are invented and are not market rates.
A small caterer in Penang does home events. Its price list has a nasi minyak set at RM 18 per pax (made up) with a minimum of 50 pax, delivery within Bayan Lepas and Bayan Baru at RM 50 (made up), and buffet setup included for 50 pax and above. Chairs and tables are not on the list. The quote rules say discounts are owner only, and the quote is valid for 14 days.
Cleaned request from WhatsApp:
"Salam, nak tempah untuk majlis kesyukuran hujung bulan ni, dalam 80 orang. Rumah di Bayan Lepas. Nak nasi minyak, ayam masak merah, dalca, air sirap. Boleh hantar dan setup? Ada sewa kerusi meja sekali?"What the Desk returned, in short:
LINE ITEMS (CSV)
Nasi minyak set (ayam masak merah, dalca, air sirap), per pax, 80, 18, "Nasi minyak set | per pax | RM18"
Delivery Bayan Lepas, per trip, 1, 50, "Delivery Bayan Lepas/Bayan Baru | per trip | RM50"
Buffet setup, per event, 1, 0, "Setup included for 50 pax and above"
NEEDS OWNER PRICE: chairs and tables rental
ASSUMPTIONS: 80 pax is final; event date is within the next 30 days; one delivery trip
QUESTIONS (BM): Tarikh dan masa majlis? Jumlah tetamu dah muktamad atau boleh berubah?
COVER MESSAGE: short BM message, no discount, says date is subject to confirmationThe owner pasted the CSV into Sheets. The formulas gave 80 x 18 = 1,440 plus 50 delivery, subtotal 1,490 (made-up numbers). The owner asked the two questions first. The customer replied with a date and said numbers might go up to 90. The owner decided not to offer chairs and tables, re-ran the Desk with 90 pax, checked the spreadsheet, filled the approval card and sent the quote from the usual invoice app.
One thing went wrong on the first test with a past job: the AI added "Free air sirap refill" because an old example message mentioned it. That was a one-off favour, not a price-list item. The owner removed the old message from the notes and re-ran. Fixed.
Common mistakes and fixes
- The AI invents a price for something not on your list → add "Items not on the price list: Needs owner price. Never estimate." and check the item really is missing from the list.
- The grand total is wrong → do not let the AI total the quote. Paste the CSV into a spreadsheet and use formulas.
- SST or service charge shows up when you do not charge it → write your exact SST practice in the quote rules.
- The draft quietly assumes a quantity → ask for an ASSUMPTIONS section and turn price-changing assumptions into questions.
- Two versions of the price list are floating around → keep one file with a "Last checked" date and paste only that.
- A discount appears in the cover message → add "never offer a discount" to the rules and the prompt.
- Customer details end up in the AI tool → clean the request in Step 2 every time, even for small jobs.
Take it further
- Make it a Skill: a quoting Skill lets Claude apply your price list and rules whenever you paste a request. See Write your first Claude Skill for quotes or enquiry replies, which uses quoting as its main example.
- Make it a Project: keep the price list and quote rules as project files so every quote chat starts with them. See Set up a Claude Project as your business brain.
- Weekly habit: once a week, compare the quotes you sent with the Desk drafts. Update the price list when you notice you priced something by feel twice.
- Related: Put your price list in a shape AI can read correctly, Follow-ups that stop when they should, Check the AI's answer before a customer sees it and The five things AI should never do without you.
Quick checklist
- Price list in plain text with units, inclusions and "needs owner price" rules.
- Quote rules written: SST, minimums, transport, deposit, validity, discounts.
- Request cleaned of names, numbers and addresses.
- Every line item points to a price-list line.
- Unknown items marked "Needs owner price".
- Totals calculated by spreadsheet formulas.
- Price-changing assumptions asked as questions first.
- Approval card filled before sending.
- Known-good copy tested on three past jobs and saved.