Skip to content
Copy

Put an instant quote on your website

Write your prices as a table, let AI read each enquiry and pick the matching rows, and show the visitor a price range from your table while they're still on the page. The AI never sets a price.

salesintermediate

Job cardDo it yourself

Time
an afternoon for the price table, then a build
Works in
Claude or ChatGPT or Jev
Steps
4
Level
intermediate
Or we set it up for you

How it runs, start to finish.

Drawn from the steps below

  1. 01Write the price table
  2. 02Test it on enquiries you've already answered
  3. 03Put it on the site
  4. 04Read every quote once a week

Illustrative · the tools you use may differ

A visitor asks what a job will cost and gets told someone will be in touch. The Startup Ideas Podcast names the pattern: every "get an instant quote" form on the internet promises an answer and then sends "we'll email you by end of day." Their point about the fix is short: the speed is the thing the client notices.

An instant quote fixes the speed without letting AI make up a price. You write the prices. The model only reads the enquiry and picks which of your prices applies. If it can't tell, a person answers.


  1. Write the price table

    the step that pays off

    Every row is a job you quote, with a low and a high price, what's included, and the condition that means you need to look first. Fill in the template below. Write jobs in the words customers use, because those are the words the enquiries will arrive in.

    The table is the whole safety system. The AI's job is to read an enquiry and pick rows. The price the visitor sees comes out of your table, never out of the model.

    Write your price table

    Fill this in once. One row per job you quote. The quote tool can only
    ever show a price from this table.
    PRICE TABLE
    | Row id | Job, in the words customers use | Unit (per job, per hour, per square metre) | Low price | High price | Included | Not included | Needs a visit or a call first if |
    |---|---|---|---|---|---|---|---|
    | | | | | | | | |
    NEVER QUOTED INSTANTLY
    - Jobs we always look at first:
    - Enquiries that go straight to a person:

    Checkpoint

    A price table with a row for every job you quote and the never-quoted list filled in.


  2. Test it on enquiries you've already answered

    Take twenty past enquiries you've already quoted. Run each one through the prompt below with your table, and compare the rows it picks with the price you gave.

    Every mismatch is one of three things: a row is missing, a row's wording doesn't match how customers describe the job, or the enquiry should have gone to a person. Fix the table, not the prompt, and run the twenty again.

    Match an enquiry to rows in the table

    Read the enquiry below and decide which rows of our price table it
    matches. You do not set prices. You only pick rows.
    Rules:
    - Pick only row ids that exist in the table. Never write a price that
    is not in the table, and never adjust one.
    - If the enquiry needs a quantity to price it (hours, area, number of
    items) and does not give one, do not guess. List the question to ask.
    - If the enquiry matches anything under NEVER QUOTED INSTANTLY, or a
    row's "needs a visit or a call first" condition, return
    HAND_TO_PERSON and one line saying why.
    - If nothing in the table fits, return NO_MATCH. Do not pick the
    closest row.
    Return exactly this, and nothing else:
    rows: [row ids, or empty]
    quantity: [number and unit, or "unknown"]
    questions: [what to ask the visitor, or "none"]
    decision: QUOTE | HAND_TO_PERSON | NO_MATCH
    reason: [one line, quoting the enquiry]
    Price table:
    """
    {{PRICE_TABLE}}
    """
    Enquiry:
    """
    {{ENQUIRY_TEXT}}
    """

    Pro tip

    Watch the NO_MATCH answers. A model told to pick the closest row can quote the wrong job with confidence.

    Checkpoint

    Twenty past enquiries where the picked rows match what you quoted.


  3. Put it on the site

    This part is a build. The form sends the enquiry and your table to the model, the model returns rows, and the page looks those rows up in the table and shows the range. The visitor sees a price range and what it includes, plus a way to confirm. HAND_TO_PERSON and NO_MATCH show a plain line saying a person will reply, and when.

    Chris (@everestchris6) outlines this build on jev, a new typesafe model that makes super fast decisions instead of writing: a quote tool that gives a business instant prices. Any model that returns the fixed format above can do the picking.

    Checkpoint

    A form that shows a range from your table, or says a person will reply.


  4. Read every quote once a week

    Look at the week's enquiries, the rows picked, and what happened next. Did the visitor book, go quiet, or dispute the range? A range people keep disputing is a row to rewrite. A job that keeps coming in as NO_MATCH is a row to add.

    Checkpoint

    A weekly look at quotes, with the table updated from it.

The takeaway

You end up with a quote form that answers in seconds with a range you wrote, a list of enquiries that always go to a person, and a weekly habit that keeps the table close to what you charge.

The limit: the range is only as good as your table, and a range isn't a contract. Jobs that need a look, or a customer whose description is wrong, still need a person before the price is final. Say so next to the range, and keep the confirm step.

Variations

Catalogue suppliers. Chris's guide builds the same tool for business-to-business suppliers and their catalogues. The table becomes your catalogue with quantity breaks, and the model picks items and quantities from a buyer's message.

Quote replies by email. Before building anything on the site, run the prompt on enquiries that arrive by email and reply with the range yourself. It tests the table with no build at all.

A range, not a number. Keep low and high prices in every row, even where you usually charge one figure. A range survives the details the enquiry left out.

Don't let the model set the price. Asking a model to "estimate a fair price" from a description is the version of this that goes wrong in public. The price always comes from your table.

← All use cases

Work order · from this page

Want this running in your business?

We set it up, you keep it. Talk to us.

  • Set up with you, in accounts you own
  • Your team trained on it as it goes live
  • Starts with a 30-minute call

30-minute callA written roadmapNo commitment

We reply within 2 business days.

We set it up