← Back to the library

TEMPLATEQuotes & pricing

Put your price list in a shape AI can read correctly

Turn prices scattered across your head, PDFs and chats into one plain-text list with clear units, inclusions and needs-owner-price rules, then quiz the AI on it.

WHAT YOU’LL GET

One dated price list file that every quote, reply and quick reply uses, tested with a ten-question quiz so the AI reads it correctly.

WHO IT’S FOR

Owners whose prices live in their head, old PDFs or scattered WhatsApp messages.

DIFFICULTY

Beginner

TIME

45 minutes

WORKS WITH

Any AI chat

Get the full file

The whole resource as one Markdown file for your notes or your AI workspace.

FREE

What you will build

One plain-text price list that any AI tool can read without guessing: one block per service, a clear unit, what is included, what is not, and a written rule for when a price needs you. You will also test it with a short quiz so you know the AI reads it correctly before a customer ever sees a quote.

This file becomes the single source for every quote, reply draft and quick reply in your business.

Before you start

  • Every place your prices live today: your head, an old PDF, a price poster, WhatsApp messages, past quotes, your invoice app.
  • Five to ten past quotes or invoices, so you can see what you actually charge.
  • Claude, ChatGPT or Gemini for the extraction and the quiz. The finished file works in any tool.
  • A document or notes page to hold the final list.
  • About 45 minutes the first time. Updates later take minutes.

How it works

AI tools invent prices when your price list is vague. "Cleaning from RM X" or "about RM Y per sq ft, depending" invites the AI to pick a number. A price with a clear unit, a clear inclusion and a clear "ask the owner" rule leaves nothing to fill in.

The trick is to write the list for a reader who is literal and new: one service per block, one price per line, and a named rule for every situation where you normally use judgment. Then you test the list the way you would test a new staff member, with questions that have right and wrong answers.

  1. Gather every price from wherever it lives.
  2. Choose one unit per service.
  3. Write one block per service.
  4. Replace ranges with "needs owner price" rules.
  5. Add the general rules.
  6. Quiz the AI on your list.
  7. Set one source of truth and a "last checked" habit.

Step 1: Gather every price from wherever it lives

Start by collecting what you really charge, not what you think you charge. Past quotes are the best evidence. If you have many, let the AI do the first sort.

TEXT
Below are anonymised past quotes and price messages from my business.
Extract every item I charged for into a list with:
item | unit | price RM | what was included | source (which quote or message)

Rules:
- Copy prices exactly. Do not average, round or fill gaps.
- If the same item appears with different prices, list every version and mark "CONFLICT".
- If you cannot tell the unit, write "UNIT UNCLEAR".

QUOTES AND MESSAGES:
[paste anonymised text]

The CONFLICT lines are the most useful part. They show where you have been pricing by feel. You will decide those in the next steps.

Check

  • Every item has a source you can trace.
  • Conflicts are listed, not averaged away.
  • You added the prices that only live in your head.

Step 2: Choose one unit per service

Most AI pricing mistakes come from unclear units. "RM X for aircon" could mean per unit, per visit or per hour. Choose one unit for each service and stick to it.

Common units in Malaysian service businesses:

  • per unit (aircon unit, chair, banner)
  • per hour, with a minimum number of hours
  • per square foot or per square metre
  • per pax (catering, events, classes)
  • per trip or per visit
  • per month (subscriptions, tuition)

If you genuinely charge a service two ways, make it two services with two names, such as "Deep clean (per hour)" and "Deep clean (fixed package)".

Check

  • Every service has exactly one unit.
  • Minimums are written next to the unit.
  • Two ways of charging means two separate services.

Step 3: Write one block per service

Use the same block for every service. Repetition helps the AI find the right field every time.

TEXT
PRICE LIST: [business name]
Last checked: [date]   Currency: RM   SST: [included / not included / not charged]

SERVICE: [name]
Unit: [per unit / per hour / per sq ft / per pax / per trip]
Price: RM [amount]
Includes: [what is included]
Does not include: [what costs extra]
Minimum: [minimum charge or quantity, if any]
Area: [where this price applies]
Needs owner price when: [e.g. more than 10 units, outside area, urgent same-day]

SERVICE: [next service]
...

Keep one price per block. If a service has sizes (1.0hp and 2.0hp, small and large), write one block per size. Do not put two prices in one sentence.

Check

  • Each block has all eight fields, even if one says "none".
  • No sentence contains two prices.
  • Inclusions and exclusions are specific, such as "includes chemical, excludes gas top-up".

Step 4: Replace ranges with "needs owner price" rules

A range like "RM X to RM Y" is a guess waiting to happen. The AI will pick a number in the range, and the customer will hold you to it. If a price truly depends on seeing the job, say so.

TEXT
Needs owner price when:
- the job needs a site visit to measure
- more than [number] units or [number] pax
- outside [area]
- same-day or after [time]
- the customer asks for a discount
- anything not listed in this file

This is the most important line in every block. It tells the AI where its knowledge ends and yours begins. When a request hits one of these rules, the draft should say "the owner will confirm the price" rather than inventing one.

Check

  • No block contains a price range.
  • Every judgment call you make is written as a rule.
  • "Anything not listed in this file" is a rule.

Step 5: Add the general rules

Some rules apply to every service: transport, deposits, discounts, validity, payment. Put them in one section at the end of the list.

TEXT
GENERAL RULES
- Transport outside [area]: [rule or "owner decides"]
- Deposit: [rule]
- Quote valid for: [days]
- Payment methods: [bank transfer / DuitNow QR / cash / card]
- Discounts: only the owner offers discounts. Never add one.
- Promotions: only those listed here, with an end date: [none / list]
- SST: [exactly how you show it on quotes]

For SST, write down what you already do on your real quotes and invoices. Whether and how SST applies to you is a question for your accountant. The price list just records the answer.

Check

  • Discounts are owner-only in writing.
  • Every promotion has an end date, or there are none.
  • SST wording matches your real invoices.

Step 6: Quiz the AI on your list

Before you use the list in real quotes, test it. Write ten questions a customer might ask, with the answer you expect. Include traps: an item that is not on the list, a job outside your area, a quantity above your limit, a discount request.

TEXT
Here is my price list. Answer each question using ONLY the list.
For every answer, quote the exact line you used.
If the list does not answer the question, say "NOT IN LIST" or "NEEDS OWNER PRICE" and quote the rule.

PRICE LIST:
[paste]

QUESTIONS:
1. [normal question]
2. [question with a size or quantity]
3. [item not on the list]
4. [area outside your service area]
5. [quantity above your limit]
6. [discount request]
7. [question in BM]
8. [question that needs the minimum charge]
9. [question about what is included]
10. [question about transport]

Mark each answer right or wrong against your expected answers. For every wrong answer, fix the list, not the answer, then run the quiz again in a fresh chat.

Check

  • All ten answers quote a line from the list.
  • Every trap question returns "not in list" or "needs owner price".
  • The quiz passes in a fresh chat, not only in the chat where you fixed things.

Step 7: Set one source of truth and a "last checked" habit

A price list only helps if there is one version. Save the final list as a single file, named clearly, with the "Last checked" date at the top. Then replace the old versions everywhere they appear:

  • prompts you paste into AI tools
  • Project files in Claude or ChatGPT, or the knowledge files in a Gemini Gem
  • WhatsApp Business quick replies that mention prices
  • your price poster, website and Google Business Profile, if they show prices

Put a reminder in your calendar to check the list every month, and update the date even if nothing changed. When you change a price, update every place on the same day and run the quiz again.

Check

  • Only one current version exists, with a date.
  • Every AI prompt, Project and quick reply uses that version.
  • A monthly check is in your calendar.

Worked example

This example is made up for teaching. The business and all prices are invented and are not market rates.

A home cleaning service in Cyberjaya had prices spread across a poster, WhatsApp messages and the owner's memory. The extraction prompt on eight anonymised past quotes returned a list with two CONFLICT lines: general cleaning appeared as both "per hour" and "per visit", and sofa shampoo appeared at two different prices.

The owner decided: general cleaning is per hour with a 3-hour minimum, two cleaners; sofa shampoo is per seat; move-out deep cleaning always needs a site visit. Two of the blocks:

TEXT
SERVICE: General cleaning, 2 cleaners
Unit: per hour
Price: RM 70 (made up)
Includes: 2 cleaners, basic supplies, kitchen, bathrooms, floors
Does not include: windows outside, sofa shampoo, move-out deep clean
Minimum: 3 hours
Area: Cyberjaya, Putrajaya Presint 1 to 18
Needs owner price when: more than 2,000 sq ft, same-day booking, outside area

SERVICE: Move-in / move-out deep clean
Unit: per job
Price: NEEDS OWNER PRICE (site visit or photos first)
Includes: to be quoted
Does not include: repairs, painting
Minimum: none
Area: Cyberjaya, Putrajaya
Needs owner price when: always

Quiz question 3 was "Condo 1,200 sq ft, move-out cleaning, Presint 11 this Saturday, how much?" The AI answered "NEEDS OWNER PRICE", quoted the move-out block, and noted that Presint 11 is inside the area. Right.

Quiz question 6, "Boleh bagi diskaun kalau ambil 5 jam?", came back on the first run as "Yes, 10% for 5 hours". That discount was an old promotion still sitting in a WhatsApp message the owner had pasted in with the list. The owner removed the old message, added "Promotions: none" to the general rules, and re-ran the quiz in a fresh chat. All ten answers passed. The list was saved with the date and copied into the owner's Claude Project, replacing the old notes.

Common mistakes and fixes

  • The AI quotes a price from an old message → paste only the current price list, never old chats, and keep a single dated file.
  • Prices are written as ranges → replace every range with a fixed price or a "needs owner price" rule.
  • Units are missing → give every service exactly one unit and write the minimum beside it.
  • Two sizes share one price line → split them into separate blocks.
  • Old promotions keep appearing → list current promotions with end dates, or write "Promotions: none".
  • The quiz passes once and fails later → run it in a fresh chat after every change, not only in the chat where you edited.
  • Staff quote from memory → put the dated list where staff can see it and point every quick reply at it.

Take it further

  • Use it everywhere: this file is the input for Turn a customer message into a draft quote, Draft WhatsApp replies in BM or English that you check and send and The Lead Triage Desk: sort every new enquiry and draft replies you approve.
  • Project file: add it to your business Project as the main pricing source. See Set up a Claude Project as your business brain.
  • Skill reference: a quoting Skill can keep the list in a separate reference file that Claude reads when it needs prices. See Write your first Claude Skill for quotes or enquiry replies.
  • Monthly habit: check the list on the first working day of every month and re-run the quiz.

Quick checklist

  • Prices gathered from past quotes, not memory alone.
  • Conflicts found and decided.
  • One unit per service, with minimums.
  • One block per service, one price per block.
  • No ranges: "needs owner price" rules instead.
  • General rules for transport, deposit, discounts, validity and SST.
  • Ten-question quiz passes in a fresh chat.
  • One dated file used by every prompt, Project and quick reply.