Turn your specification into numbered lines, upload it with the contractor's quote, and ask the AI to match every specification line to a quote line, labelling each as included, partly included, different, provisional, excluded or not found. You then read every flagged line, check the arithmetic in a spreadsheet and send the queries yourself.
The AI never approves a quote. Its job is the tedious cross-reading that people skip when a quote lands on a busy day, and to show where it found each answer. Your job is to open the quote at that page and decide whether the answer holds.
That is a narrower task than the roundups of AI tools for interior designers, which compare features. There is one job here, checking a trade quote against what you specified, and a repeatable way to do it with whichever assistant you already use. "Specification" can mean your schedule of works, your finishes schedule or your FF&E (furniture, fixtures and equipment) schedule: whichever document defines what you want priced.
The worked example is a bathroom refurbishment: twelve specification lines, a nine-line quote from a fitting contractor, and more than a dozen things worth a query. The specification, the quote and every figure are invented.
Why one read of a quote still leaves gaps
Quotes go wrong in three quiet ways. An item is left out altogether, so it never appears as a line and nothing flags it. An item is assumed, covered by a vague phrase such as "bathroom works as discussed" that the contractor can read narrowly later. Or an item is turned into an allowance, a provisional or prime cost sum that looks like a price and is not one.
Reading a quote once from top to bottom finds problems with what is there. Matching your specification against the quote finds problems with what is missing, which is where most of the money hides. A line-by-line match is dull work and exactly the sort of dull work an AI does without tiring, provided you can check it afterwards.

The Complete Excel Course with AI Integration
From formulas and pivot tables to Power Query, DAX, VBA and AI with Copilot, ChatGPT and Claude — hands-on from the first lesson.
By Sagnik Bhattacharya and Virginia Thorn, Primetime Emmy Award winner
Buy nowWrite the specification as numbered lines a machine can match
Most specifications are paragraphs, drawings and notes spread across documents. For matching, turn them into one requirement per line with a reference number, a quantity, a product or standard, and who supplies and who fits. If you already keep an FF&E schedule, the FF&E schedule tutorial shows how to build and check one; its rows are close to what this workflow needs. Here is the twelve-line specification for the example bathroom.
| Ref | Specification line |
|---|---|
| S1 | Strip out existing suite, wall tiles and floor covering; remove all waste from site, skip included |
| S2 | Re-skim walls after strip-out; level floor ready for tiling |
| S3 | Waterproof (tank) shower area walls and floor before tiling |
| S4 | Wall tiles, fix only (client supplies): 24 m² including 10% waste |
| S5 | Floor tiles, fix only (client supplies): 6 m² |
| S6 | Wall-hung WC with concealed cistern: supply and fit support frame and boxing; fit client-supplied pan |
| S7 | Freestanding bath and basin (client supplies): plumb and fit |
| S8 | Walk-in shower enclosure, 8 mm glass screen: supply and fit (specification allowance $1,450) |
| S9 | Six recessed IP-rated downlights, one humidity-sensing extractor fan, one electric heated towel rail connected |
| S10 | Electrical certificate on completion |
| S11 | Decorate ceiling and non-tiled walls: mist emulsion, two coats |
| S12 | Protect hall, stairs and floors; clean daily; programme three weeks on site |
Writing lines this way exposes your own gaps before the contractor does. If you cannot state S3 or S9 as one clean line, the quote cannot be matched to it either. Keep the lines in a spreadsheet you reuse, with a column for the supplier and one for who fits, and copy the relevant rows into each new job.
Preparing the quote and specification files before you upload
A quote carries prices, the contractor's terms and usually the client's address. Remove the client's name, address and phone number, and the contractor's bank details, before you upload. Keep the contractor's description of the work, quantities, rates and exclusions intact, because those are what the AI is matching.
Check the data setting on whichever plan you use. Business plans, such as ChatGPT Business or Claude Team, are not used for training by default, while personal plans have a setting you should read and decide on. A ten-page quote is nowhere near any upload limit, so no splitting is needed.
Check the format as well. If the quote is a PDF with selectable text, upload it directly. If it is a photograph or scan of paper, the AI can still read it but misreads digits more often, so ask the contractor for an editable copy, or retype the figures into a table yourself. Add your own line numbers (Q1, Q2 and so on) beside each quote line; matching against numbered lines makes the AI's evidence far easier to check.
The matching prompt, with a bathroom as the worked example
This is the prompt I would paste, with the specification table and the quote attached. The rules do the heavy lifting: evidence must be quoted word for word, and "not found" is always an acceptable answer.
I am an interior designer checking a contractor's quote against my specification. Attached: (1) my specification, lines S1 to S12; (2) the quote, lines Q1 onwards.
For each specification line, find the matching quote line or lines and give:
- Status, using only: INCLUDED, PARTLY, QUANTITY DIFFERS, DIFFERENT PRODUCT, PROVISIONAL OR PC SUM, EXCLUDED, NOT FOUND
- The quote line reference and the exact words from the quote, in quotation marks, with the page number
- One sentence on what differs, if anything
Rules: Use only what is written in the two documents. Do not assume that a similar item is the same item. If a line could be read two ways, show both readings. Say NOT FOUND rather than guess. Do not judge whether anything is acceptable or fair.
Then list (a) every quote line that matches no specification line, marked EXTRA, (b) every exclusion, condition or allowance stated anywhere in the quote, with page numbers, copied word for word, and (c) the stated total and each line's amount as a table, without adding them up.
Here is the nine-line quote the contractor sent, as the AI saw it. Page 2 carries a short terms section that matters later.
| Ref | Quote line | Amount |
|---|---|---|
| Q1 | Strip out existing suite, tiles and flooring; remove from site | $1,150 |
| Q2 | Re-skim walls after strip-out (provisional sum) | $800 |
| Q3 | Wall tiling, labour only: 22 m² at $55 per m² | $1,210 |
| Q4 | Floor tiling, labour only: 6 m² at $60 per m² | $360 |
| Q5 | Fit sanitaryware: close-coupled WC, client-supplied bath and basin | $950 |
| Q6 | Shower enclosure, supply and fit (PC sum) | $900 |
| Q7 | Electrical: 4 downlights, extractor fan, towel rail connection | $1,380 |
| Q8 | Decorating: ceiling and walls, 1 coat | $620 |
| Q9 | Daywork rate for variations | $55 an hour |
| Quote total, as stated | $7,730 |
Page 2 adds: "Skip hire excluded, charged at cost." "Works carried out in a tidy manner." "Programme: four weeks from start." "Valid for 14 days. 50% deposit on acceptance."
Seven status codes and what each one triggers
Fixed status codes keep the output comparable from job to job, and each code maps to a standard query so you are not writing from scratch each time. The first seven are what the AI assigns to your specification lines; EXTRA covers quote lines that match nothing.
| Status | Meaning | Your usual query |
|---|---|---|
| INCLUDED | A quote line covers the scope, quantity and product | None, but spot-check |
| PARTLY | Part of the line is covered | "Please confirm whether [part] is included, and if not, price it." |
| QUANTITY DIFFERS | Same item, different number | "The specification has [n]; the quote has [m]. Please confirm and reprice." |
| DIFFERENT PRODUCT | Similar item, not the specified one | "Please price the specified [product]." |
| PROVISIONAL OR PC SUM | An allowance, not a price | Basis, scope, who carries the difference, date it will be fixed |
| EXCLUDED | The quote says it is not included | "Please price it, or confirm who does it and who pays." |
| NOT FOUND | Nothing in the quote matches | "Please confirm this is included, or price it separately." |
| EXTRA | A quote line with no specification line | "What does this cover, and is it needed?" |
The AI's first answer, and the four rows it got wrong
Here is a realistic first pass (illustrative), trimmed to the columns that matter. Read it as you would read a junior's work: plausible, mostly right, and containing mistakes you only find by opening the quote.
| Spec | Status given | Evidence quoted |
|---|---|---|
| S1 | INCLUDED | Q1 "Strip out existing suite, tiles and flooring; remove from site" |
| S2 | PROVISIONAL OR PC SUM | Q2 "(provisional sum)"; floor levelling not mentioned |
| S3 | NOT FOUND | No quote line mentions waterproofing or tanking |
| S4 | QUANTITY DIFFERS | Q3 "22 m²"; specification 24 m² |
| S5 | INCLUDED | Q4 "Floor tiling, labour only: 6 m²" |
| S6 | DIFFERENT PRODUCT | Q5 "close-coupled WC"; no frame or boxing mentioned |
| S7 | INCLUDED | Q5 "client-supplied bath and basin" |
| S8 | PROVISIONAL OR PC SUM | Q6 "(PC sum)" $900; specification allowance $1,450 |
| S9 | INCLUDED | Q7 "Electrical: 4 downlights, extractor fan, towel rail connection" |
| S10 | NOT FOUND | No mention of an electrical certificate |
| S11 | INCLUDED | Q8 "Decorating: ceiling and walls, 2 coats" |
| S12 | INCLUDED | Page 2 "Works carried out in a tidy manner" |
Four rows are wrong, and all four were marked INCLUDED. That is the pattern to expect: the AI errs on the generous side, because a line that looks similar feels like a match. A false "not found" costs you a phone call; a false "included" costs you money. This is what opening the quote at the cited page changes.
| Spec | AI said | What the quote shows | Corrected status |
|---|---|---|---|
| S1 | INCLUDED | Page 2 says "Skip hire excluded, charged at cost", which the first pass did not connect to Q1 | PARTLY (skip excluded) |
| S9 | INCLUDED | Q7 lists 4 downlights, not 6, and does not say the fan is humidity-sensing | QUANTITY DIFFERS |
| S11 | INCLUDED | Q8 says "1 coat"; the AI read a poor scan as "2 coats" | PARTLY (one coat) |
| S12 | INCLUDED | "Tidy manner" says nothing about protecting floors or daily cleaning; programme is four weeks, not three | NOT FOUND (protection, cleaning); programme differs |
Arithmetic belongs in a spreadsheet
Ask the AI to extract each line's quantity, rate and stated amount into a table, then do the sums yourself. Language models are fluent with numbers and unreliable with them, a point covered in why AI is bad at maths, and a quote total is the last place to take a chance. In a spreadsheet with quantity in column C, rate in D and the stated amount in E, put this in F for each priced line and flag anything that is not zero:
Line check (F2): =ROUND(C2*D2,2)-E2
Sum of lines: =SUM(E2:E9)
Difference: =SUM(E2:E9)-[stated total cell]
In the example, Q3 gives 22 times 55 equals 1,210 and Q4 gives 6 times 60 equals 360, so both lines are right. The eight priced lines add up to $7,370, but the quote states $7,730, so the stated total is $360 too high. It reads like two digits swapped. A $360 query is worth sending even if it turns out to be innocent, and it tells the contractor you check totals.
The same table gives you the share that is not firm. Q2 and Q6 together are $1,700, which is about 23% of the $7,370 the lines add up to. Nearly a quarter of this quote is allowance rather than price, and that is the number to bring to the client conversation.
Provisional and prime cost sums: what to ask before accepting one
A provisional sum is an allowance for work that cannot be priced yet, such as the re-skim in Q2, where the contractor will not know the state of the walls until the old tiles are off. A prime cost (PC) sum is an allowance for a product that has not been fixed, such as the shower enclosure in Q6, with fitting usually priced separately. Both are legitimate. They become a problem when nobody agrees who carries the difference.
Q6 is the clearest case: the specification allowance for the enclosure is $1,450 and the contractor's PC sum is $900, a $550 gap before anyone has bought glass. Before accepting any sum, ask four things: what exactly it covers, what it is based on, who bears an overspend or keeps an underspend, and the date by which it will be converted into a fixed price. The strongest answer is to price the specified item now and remove the sum.
It is a useful instruction to the AI too. Add a line to the prompt: "For every PROVISIONAL OR PC SUM, state the amount, what it covers, and compare it with any price or allowance in my specification." That is how the $550 gap appeared in the table above.
From flagged rows to queries you sign off one at a time
Keep a query register, one row per flagged line, and make the checking and decision columns yours alone. Nothing leaves the studio unless you have marked it. In the example, eleven rows end up as SEND, and two are held for the client conversation: the $55 daywork rate and the 50% deposit on acceptance. The first three rows look like this.
ID | Spec | Quote | Status | Evidence page | Query wording | Checked at source (Y/N) | My decision: SEND / HOLD / DROP | Sent on | Reply
Q-01 | S1 | Q1 | PARTLY | p.2 | Skip: who provides it, and at what cost? | Y | SEND | |
Q-02 | S3 | none | NOT FOUND | n/a | Tanking: included or priced separately? | Y | SEND | |
Q-03 | S8 | Q6 | PC SUM | p.1 | PC $900 vs specified enclosure at $1,450: please price the specified item | Y | SEND | |
"Checked at source" means you opened the quote at that page and saw the words. "HOLD" is for rows that depend on a client decision, and "DROP" is for flags that turn out to be a gap in your own specification. Only after the decision column is filled do you ask the AI to turn the SEND rows into an email.
Here is a before and after of that email. The first is what an AI produces if you give it the raw table; the second is what you send once you have edited and approved.
Before: "Dear contractor, the AI analysis of your quote has identified multiple omissions and discrepancies, including missing waterproofing and an incorrect total. Please revise."
After: "Hi [first name], thanks for the quote. Before we go further, could you confirm the following? The references are to the specification lines in the attached schedule. 1. S1: page 2 excludes skip hire, but the specification includes removing all waste with a skip. Please price the skip. 2. S2: is levelling the floor for tiling included, and what is the re-skim provisional sum based on? 3. S3: is tanking to the shower area included? If not, please price it. 4. S4: the specification has 24 m² of wall tiling; the quote has 22 m². Please confirm the area. 5. S6: the specification is a wall-hung WC with a concealed cistern frame and boxing; the quote lists a close-coupled WC. Please price the specified item. 6. S8: the PC sum of $900 for the enclosure is below our allowance of $1,450. Please price the specified enclosure. 7. S9: six downlights and a humidity-sensing fan are specified; the quote has four downlights and does not name the fan type. 8. S10: is the electrical certificate on completion included? 9. S11: two coats are specified; the quote says one. 10. S12: please confirm protection of the hall, stairs and floors and daily cleaning, and whether the work can be done in three weeks rather than four. 11. The line totals add up to $7,370; the quote total reads $7,730. Which is correct? Many thanks, [your name]"
The after version never mentions AI, never criticises, and gives the contractor numbered, answerable questions tied to specification references.
Two quotes against one specification
Run the same prompt, with the same specification, against each quote in a fresh chat, then put the statuses side by side: specification lines down the left, contractors across the top. Where one quote says INCLUDED and the other says NOT FOUND, the cheaper quote may simply be the one that left something out. Compare prices only after you have asked both contractors to price the same missing items, or the lower total will mean nothing.
This is the same idea as bid levelling in construction, and the tutorials on AI bid levelling and on comparing supplier quotes side by side go further into the mechanics. For a more general view of checking rather than writing estimates, ChatGPT for construction estimating makes a similar argument for quotes in building work.
Revised quotes: check what changed, not just the new total
Contractors usually answer queries with a revised quote, and the temptation is to look at the new total and the lines you asked about. The risk is the line you did not ask about. Upload the original and the revised quote together and ask for a difference list rather than a fresh match.
Compare the original quote (v1) with the revised quote (v2). List every line that was added, removed or changed, with the old and new wording, quantity, rate and amount copied exactly. Then mark each as ANNOUNCED if the contractor's cover message mentions it, or NOT ANNOUNCED if it does not. Do not add up any totals.
In the example, the revision (illustrative) adds tanking at $420, switches to the wall-hung WC with frame and boxing, raises the downlights to six, adds the second coat of paint and corrects the wall tile area to 24 m². The cover message mentioned all five. The difference list shows one more change that it did not mention.
| Line | Original | Revised | Mentioned in the reply? |
|---|---|---|---|
| Tanking (S3) | Not quoted | $420 | Yes |
| WC (S6) | Close-coupled, $950 for the fitting line | Wall-hung with frame and boxing, $1,260 | Yes |
| Downlights (S9) | 4 downlights, $1,380 line | 6 downlights, $1,560 line | Yes |
| Decorating (S11) | 1 coat, $620 | 2 coats, $760 | Yes |
| Wall tiling (S4) | 22 m² at $55, $1,210 | 24 m² at $58, $1,392 | Area only: the rate rise is not mentioned |
The area correction explains an extra $110 at the old rate, two more square metres at $55. The new rate of $58 adds a further $72 that nobody mentioned. It may be innocent, but it is a query. Rerun the spreadsheet checks on the new lines: 24 times 58 is 1,392, and the eight existing lines plus tanking add up to $8,602, which this time matches the stated total. The enclosure PC sum and the skip exclusion are unchanged, so those two queries stay open. The other points (the re-skim basis, floor levelling, the fan type, the certificate, protection and the programme) were answered only in the cover message, so copy those answers into the accepted quote or the contract. An answer that lives only in an email is easy to dispute later.
A ten-minute audit of the checker
Before you rely on a first pass, audit it with a fixed routine. Open the quote and check every row that is not INCLUDED against the page cited. Then check three INCLUDED rows chosen at random, plus every INCLUDED row that contains a number, a product name or the words "allowance" or "as discussed". Numbers and variants are where generous matches hide.
A second technique costs little: run the matching prompt twice, in separate chats or with two different assistants, and read the rows where the two disagree first. Disagreement is a cheap signal that a line is ambiguous, either in the quote or in your specification. If the same line is disputed on every job, rewrite it in the specification template so it stops being ambiguous.
Finally, keep the status of the whole exercise honest. The AI has produced a list of questions, not a verdict. The decision to accept, query or reject the quote, and the conversation with the client about any extra cost, stay with you, and so does every message that leaves your inbox. If you also need to keep dates honest alongside prices, the timeline tutorial uses the same habit for lead times.
Questions about checking quotes with AI
Which AI tool should I use to check quotes?
Any assistant that accepts file uploads and shows where it found each answer will do, such as ChatGPT, Claude or Gemini. The workflow matters more than the brand. Pick a plan whose data terms you are comfortable with, because a quote carries pricing and a client's address, and business plans are not used for training by default while personal plans have a setting to check.
Will the AI catch every omission?
No. It is good at saying a specification line has no match in the quote and fair at spotting different quantities. It is weaker at judging that a vague line is not enough, and it tends to be generous. So the audit effort goes on lines it marked as included, not only on the ones it flagged.
Can I send the AI's flagged list straight to the contractor?
No. Each flag is a draft query until you have opened the quote at the cited page and confirmed it. Some flags will reflect a gap in your own specification rather than the contractor's quote, and some are queries you decide to drop. Only rows you have marked as approved should be turned into an email, and you send it.
What if the quote is a lump sum with no breakdown?
There is nothing to match line by line, so the first query is a request for a breakdown by your specification lines. A contractor who will not itemise is also telling you something about how variations will be priced. Once you have the breakdown, run the same workflow.
Further reads
- Use of AI in Quantity Surveying: Comparing Subcontractor Quotes — How a quantity surveyor compares subcontractor quotes
- Construction Estimating With AI: Turn Supplier Quotes Into a Rate Sheet — Turn supplier quotes into a reusable rate sheet
- Bathroom Renovation Scope of Work: Draft Room-by-Room Lines With AI — Write the room-by-room scope your quote is checked against
- Can AI Draft an Interior Design Contract? Terms a Solicitor Checks — Contract terms that a solicitor should check
- AI Tools for Shop Drawings: Checking Fabrication Drawings Against the Spec — The same spec-matching idea applied to fabrication drawings
- Interior Design Proposal Template: Scope, Fees and Phases With ChatGPT — Set the scope and exclusions before quotes arrive
- Interior Designer Software Compared: Where AI Add-Ons Earn Their Fee — Six interior design tools priced per month, the AI credits worth buying, and a 14-day trial you can run on one finished project.
- ChatGPT for Interior Designers: Ten Prompts for Briefs and Schedules — Ten placeholder-based ChatGPT prompts for an interior designer's briefs, product schedules and client updates, plus the checks that keep prices right.
- How to Price Interior Design Services: Compare Fee Models With AI — One three-room project priced hourly, fixed-fee and cost-plus, with margin checks, stress tests and client wording for each model.
- AI for House Flipping: Rehab Budgets, Comps and Contractor Quotes — A scope-of-work template, line-item rehab budget, quote comparison table and contingency rule, with AI doing the sorting and you checking the costs.
- AI Tools and AI Development: The Complete 2026 Guide — the AI hub, including every tutorial in the AI-for-business series.
Sources: OpenAI's and Anthropic's help pages on file-upload limits and on how business-plan data is used, as recorded in October 2026. The specification, quote and all figures in the example are invented for illustration.