How to Compare Supplier Quotes Side by Side With AI

Coding Liquids tutorial cover featuring Sagnik Bhattacharya for How to Compare Supplier Quotes Side by Side With AI.
Coding Liquids tutorial cover featuring Sagnik Bhattacharya for How to Compare Supplier Quotes Side by Side With AI.

Upload all the quotes to one AI chat and ask it to extract every line into a fixed table: item, unit, quantity, unit price, extras, and terms. Convert everything to one unit and one year's volume, ask the AI to list what each quote leaves out, then redo the totals in a spreadsheet yourself. The AI extracts and flags; the spreadsheet does the maths.

The reason this needs a method is that quotes are almost never like-for-like. One prices per item, another per kilogram; one includes delivery, another charges per trip; one fixes the price for a year, another reviews it every April. Compare the totals printed on the front pages and you are comparing three different jobs.

Follow me on Instagram@sagnikteaches

Write down what you're buying before reading any quote

The comparison is only as good as the specification you hold every quote against. Before opening a single PDF, write a short list of what you need: the items, the volume over a year, the service level, and the terms you can and can't accept. Five minutes on this saves an hour of arguing with a table later.

Connect on LinkedInSagnik Bhattacharya

Here is that list for the main example in this tutorial, an illustrative 18-room boutique hotel choosing a laundry supplier:

Subscribe on YouTube@codingliquids
  • Volume: about 3,000 bed changes a year (from the housekeeping log), each using 5 linen items and 4 towels, plus about 3,000 extra towel swaps. That is 15,000 linen items and 15,000 towels.
  • Weight: the housekeeper weighed a typical load. Linen items average 0.5 kg and towels 0.45 kg, so the year is about 14,250 kg.
  • Service: collections at least twice a week, three in summer; clean linen back within 48 hours.
  • Must-haves: the hotel's own heavier linen can be kept, or a hire alternative of similar quality; no contract longer than two years.
  • Current spend to beat: last year's laundry bill plus $3,800 spent replacing worn or lost linen.

With those numbers written down, every quote can be converted to the same annual figure, however the supplier chose to price it.

Extract every quote into the same columns

Put all the quotes into one chat on a business plan (or a personal plan with the model-training setting switched off). PDFs and clear photos both work; what breaks when ChatGPT reads PDFs and photos is worth a look if your quotes are scans. Then fix the output format so the AI can't improvise one:

I've attached [3] supplier quotes for [what you're buying].
For EACH quote, extract every priced line into this table:
Supplier | Item or service | Pricing unit (per item, per kg, per trip, per month...) |
Unit price | Quantity assumed by the supplier (if stated) | Included? (Y/N/unclear) |
Page and line where you found it

Then list, per quote, every term that affects cost or commitment:
minimum charges, delivery or call-out fees, surcharges, price-review clauses,
contract length, renewal and notice terms, payment terms, deposit,
lost or damaged item charges, quote validity date.

Rules: copy prices exactly as written. Do not calculate totals.
If something is ambiguous, write UNCLEAR and quote the exact wording.

Asking for the page and line matters more than it looks. It turns every figure into something you can check in seconds, and it makes invented figures easy to spot because they have no page to point to.

An illustrative extract for the three laundry quotes, shortened:

SupplierLineUnitPriceSource
A (wash own linen)Bed linenper item$0.62p1, line 3
ATowelsper item$0.48p1, line 4
ACollection and deliveryincluded$0p1, line 6
B (wash own linen)All itemsper kg$1.15p1, line 2
BDeliveryper week$25p2, line 1
C (linen hire)Bed-change pack (5 linen, 4 towels)per pack$4.20p1, line 5
CExtra towelper item$0.55p1, line 6
CSet-up and stockone-off$600p2, line 3

Two things were wrong when the page references were checked. Quote B's delivery charge is $25 per trip, not per week; the AI misread "per delivery (weekly schedule attached)". And the terms list for Quote A missed a $150 minimum charge per collection, printed in the terms on page 3 in small grey type. The fix for the second is a follow-up prompt, which you should always run: "Read each quote's terms and conditions page again, line by line, and list every charge or minimum not already in the table."

Convert every quote to one unit and one year

Now use your specification to turn each pricing model into an annual figure. Do this in a spreadsheet, with the AI's extract as input and your own formulas doing the work:

  • Quote A: 15,000 linen items at $0.62 plus 15,000 towels at $0.48 comes to $16,500 a year.
  • Quote B: 14,250 kg at $1.15 is $16,387.50, plus 156 collections at $25 each ($3,900), so $20,287.50.
  • Quote C: 3,000 packs at $4.20 is $12,600, plus 3,000 extra towels at $0.55 ($1,650), so $14,250, plus $600 set-up in the first year.

Then apply the minimum charge you found in the small print. At three collections a week (156 a year), Quote A's average collection is worth $16,500 ÷ 156 = $105.77, well under its $150 minimum. If every collection were topped up, the year would cost up to $23,400. Cutting to two collections a week (104 a year) lifts the average to $158.65, clear of the minimum, but the hotel would need about a third more linen in circulation to cover the longer gap, which the housekeeper priced at roughly $1,200.

That one clause turns the cheapest-looking quote on the page into a middling one. It's also the kind of detail an AI summary skims past, because "$150 minimum" sounds small next to a $16,500 total.

The small print that changes the real price

Once the base prices are comparable, go through the terms each quote attached. These are the ones that most often move the answer:

TermWhat to look forHow to price it in
Minimum chargePer order, per visit or per monthCompare against your average order in your quietest month
Price review"Reviewed annually", "linked to an index", fuel surchargesAdd a year-two estimate at, say, 5% higher and see if the ranking changes
Contract length and renewalAuto-renewal and notice periodsNote the last date you can give notice; treat long lock-ins as a cost
Payment terms14 vs 30 days, deposits, stage paymentsMatters most when cash is tight; a 50% deposit is a real cost
Lost or damaged itemsReplacement charges, write-off allowancesEstimate from last year's losses
Exclusions"By others", "not included", "subject to survey"Get a separate price for each excluded item
Validity"Valid for 30 days"Decide before it lapses, or ask for an extension in writing

For the hotel, Quote B's price was "reviewed each April with reference to an index", which the AI flagged as UNCLEAR because the quote didn't say which index. Quote C ran for 24 months and renewed automatically for another 12 unless the hotel gave 90 days' notice, and charged $9 for every hire item not returned. At last year's loss rate of about 120 items, that is another $1,080 a year.

Recalculate the totals in the spreadsheet, not the chat

Ask an AI to add up a comparison and it will usually hand back a confident total. Sometimes that total is wrong: it drops a line, rounds halfway through, or multiplies by the wrong quantity. Language models predict text rather than calculate, so treat any total they produce as a rough check, not a figure to decide on.

A simple layout keeps the maths visible. One row per cost line, one column per supplier:

Row                      A (2 per week)   B          C (hire)
Washing / hire           16,500           16,387.50  14,250
Delivery                 0                3,900      0
Minimum-charge top-up    0                0          0
Extra linen stock        1,200            0          0
Linen replacement        3,800            3,800      0
Lost-item charges        0                0          1,080
Set-up                   0                0          600
YEAR 1 TOTAL             =SUM(...)        =SUM(...)  =SUM(...)

For the hotel, that gives year-one totals of $21,500 for A, $24,087.50 for B and $15,930 for C. Then ask the AI one useful question about your own sheet: "Here is my comparison table. Which cells rely on an assumption rather than a figure printed in a quote?" In this case it pointed to the linen weights, the loss rate and the extra-stock estimate, which are exactly the three numbers worth double-checking with the housekeeper.

If you'd rather do this in Excel itself, the guide to using ChatGPT with Excel shows how to have AI write the formulas while you keep the calculation in the workbook.

Score what the cheapest quote doesn't give you

Price rarely decides it alone. Hire linen from Quote C is the supplier's standard white stock, lighter than the hotel's own. For a boutique hotel, the feel of the bed is part of what guests pay for, so that trade-off needs a number too. A weighted scoring table makes the judgement explicit:

Criterion (weight)ABC
Year-one cost (40%)325
Linen quality guests notice (25%)552
Flexibility of terms (15%)432
Collection reliability, from references (20%)434
Weighted score out of 53.853.103.60

Quote A wins narrowly despite costing $5,570 more than C in the first year, because the owner decided linen quality was worth a quarter of the decision. Someone running a budget guest house might weight quality at 10% and cost at 60%, and C would win comfortably. The table doesn't make the decision; it shows you and anyone you answer to why you made it.

AI is handy for one part of this: turning supplier references and past emails into scores. Paste in your notes on each supplier and ask, "Based only on these notes, how reliable does each supplier seem on collection times? Quote the evidence for each score." If it can't quote evidence, don't use the score.

Building work: three roof quotes for a church

Trade quotes add a problem the laundry example doesn't have: scope that differs from quote to quote. Consider a church office, with made-up but realistic figures, that received three prices for repairing the vestry roof:

  • Roofer 1: $18,400, scaffolding included, 10-year workmanship guarantee, payment in three stages.
  • Roofer 2: $14,900, scaffolding "by others", and lead flashing as a $1,500 provisional sum (an allowance for work that can't be priced until the roof is opened).
  • Roofer 3: $16,750, scaffolding included, 12-month guarantee, 50% deposit on acceptance.

The extraction prompt above caught the "by others" exclusion and the provisional sum. A gap-finding prompt then did the useful part:

Compare the scope of work in these three quotes line by line.
List every task one quote includes that another excludes or leaves vague.
For each gap, suggest the question I should ask that roofer.

The output (illustrative) listed scaffolding for Roofer 2, disposal of old materials for Roofer 3, and the fact that only Roofer 1 mentioned replacing rotten timber if found. The buildings volunteer got a separate scaffolding price of $3,800, which takes Roofer 2 to $18,700 before the provisional sum is even tested. If the timber under the lead is rotten, that sum could easily double. Roofer 1, the most expensive on paper, became the safest choice, and the 10-year guarantee settled it for the finance committee.

Tie-ins and rebates: a members' club drinks contract

Some quotes hide their cost in commitments rather than prices. Suppose a members' club buying about 1,100 cases of drinks a year compares two suppliers (figures illustrative):

  • Supplier X: about $4 a case cheaper across the range, so roughly $4,400 a year less, but only with a three-year exclusive tie on all draught lines. The cellar cooling equipment is on loan and is removed if the tie ends early.
  • Supplier Y: list prices with no tie, plus a retrospective 3% rebate once annual spend passes $40,000.

In figures: last year the club spent $46,500, so Y's rebate would be $1,395. X is ahead by about $3,000 a year. But if a quieter year of functions drops spend to $38,000, Y's rebate disappears, while X's lower prices still apply. On the other hand, a three-year tie stops the club switching if members ask for a different beer. Asking the AI "What happens to each option if our spend falls 20% or rises 20%?" produced a clear two-scenario table in seconds; the committee then checked its arithmetic in the sheet.

When the fixed price isn't cheaper: campsite waste collection

Fixed monthly prices feel safe, which is why they need the same unit conversion. A hypothetical campsite with four large bins shows why. It compared two waste quotes:

  • Pay per lift: $18 a lift. In peak season (20 weeks) each bin is emptied three times a week; for the other 32 weeks, once. That is 4 × (60 + 32) = 368 lifts, or $6,624 a year.
  • Fixed: $390 a month ($4,680 a year) for up to 8 lifts a week across all bins, with extra lifts at $22.

The fixed quote looks $1,944 cheaper. But peak weeks need 12 lifts, so 4 extra lifts for 20 weeks is 80 extras at $22, or $1,760. The real gap is $184 a year, and the fixed contract came with a 12-month term. The AI's first summary said the fixed option "saves nearly $2,000". Only the seasonal volume from the site's own records exposed the difference.

Send one clarification email before you decide

Every UNCLEAR and every gap is a question for a supplier. Asking them all at once, in writing, gets you firm answers you can hold the supplier to. AI drafts these well if you give it the list:

Draft a short, polite email to [supplier] asking them to confirm the points below
in writing before we decide. Number each question. Don't mention other suppliers
or their prices. Ask them to reply by [date].
Points: [paste the UNCLEAR items and gaps for this supplier]

An illustrative result for the hotel's Quote B:

Thank you for your quote of 12 September. Before we decide, could you confirm the following in writing by 3 October?

1. Is the $25 delivery charge per collection, per delivery, or both? 2. Which index is used for the April price review, and is there a cap? 3. Is there a minimum charge per collection or per month? 4. Can the quote be held until 31 October?

Read the draft before sending. The first version the AI produced for the church office mentioned "a competitor's lower price for scaffolding", which is exactly the kind of line you don't want in writing.

What to keep out of the AI chat

  • The decision itself. The AI doesn't know the supplier who let you down last winter. Use it to extract and flag, not to choose.
  • Quotes marked confidential, unless your AI plan's terms fit the supplier's conditions. Business plans that don't train on your content usually do; check if in doubt.
  • Bank details and signatures on the quote. Crop them out; they add nothing to the comparison.
  • Rival suppliers' prices in outgoing emails. Negotiate on your own numbers ("our budget is $X"), not someone else's.

Once a supplier is chosen, record the quote's terms where you'll see them again: renewal dates, price-review month and notice period. From there, tracking supplier prices and lead times with AI covers checking that invoices match the quote, and spending rules and approvals decides who can sign off the next one. If orders to that supplier are routine, automating purchase orders and supplier emails is the natural follow-on.

How long a three-quote comparison takes

For the hotel, the whole exercise took about two and a half hours: 20 minutes writing the specification, 15 minutes extracting and re-checking the terms pages, 45 minutes building the spreadsheet and correcting the two AI errors, 30 minutes on scoring, and the rest on the clarification emails. Doing it without AI would mostly have added the extraction time, which grows with every quote and every page of terms.

The saving compounds when you reuse the specification, prompts and sheet layout. The second comparison, for the hotel's breakfast produce supplier, took under an hour, because only the items and volumes changed.

Frequently asked questions

Can I upload supplier quotes to ChatGPT or Claude?

Usually yes, on a business plan where your content isn't used for training by default, or on a personal plan with the training setting switched off. Check each quote for a confidentiality clause first. Never paste one supplier's prices into a message to a rival supplier; that breaks trust even where it's allowed.

What if a quote is a photo of a handwritten sheet?

Chat assistants can read photos, but handwriting and faint carbon copies cause misread figures. Photograph it flat in good light, ask the AI to transcribe it line by line first, and compare its transcription against the paper before you use any number from it in the comparison.

How many quotes should I get before comparing?

Three is the usual working number: enough to see which prices are outliers without drowning in paperwork. For routine small purchases two can be enough. For large or long contracts, get three and send all of them the same written specification, so the quotes are built on the same assumptions.

Should the AI pick the winning supplier?

No. Let it extract, convert and flag, then make the choice yourself using the scored table. The AI doesn't know which supplier turned up late last winter or which contract term your board will refuse, and those facts often decide it.

Further reads

Want a quote comparison you can reuse every time?

On a 1:1 call we'll build your comparison sheet and extraction prompt around the things you actually buy, and decide which checks stay manual.

Book a 1:1 call with me