Field note
What does Coffer add over a coding agent that compares your quotes itself?
On one typed, three-vendor water bid, not a better number. Claude Code's better run carried 122 of 123 unit prices right and Coffer carried 120, and both named the same low vendor. What Coffer adds is around the numbers: the same method on every run, the quote line behind every price, a flag on the row for every quantity or unit difference, no one at a terminal to run it, and confirmed vendor matches that carry to the next bid.
Tested Oct 15, 2026 on files we made for the test. The vendors, prices and project are invented. Test on your own quotes.
What did we test?
One material list and three supplier quotes for a water main bid, built to be as untidy as real waterworks quotes are.
- The list. 41 rows with resource codes, quantities, units and plug prices.
- Three quotes, three layouts. A 9-page bid proposal grouped by the bid form's items, a 3-page quote with numbered rows and no part numbers, and a 2-page catalog quote. Each lists the lines in its own order.
- Units that do not match the list. Pipe in 18-ft and 20-ft joints, tracer wire and warning tape in rolls, copper and HDPE in coils, and one price per hundred feet.
- One row priced by three lines. A 4-in tapping valve assembly quoted as the valve, the MJ accessory set and the restraint gland.
- The traps in a real bid. One product repeated under two bid items, a deduct alternate, a reference-only price left out of the total, pipe by others, a no-quote line, a vendor who quoted 7 gate valves against 8, freight, and sales tax on one quote only.
Before either tool ran, we wrote an answer key: for each of the 41 rows and each vendor, the unit price an estimator carries. That is 123 prices. Estimating systems extend the carried unit price by your own quantity, so the key carries the vendor's unit price converted to your unit. It adds the parts of an assembly, gives a repeated product one price, and lets a reference-only, by-others or no-quote line price nothing.
How did we run the coding agent?
We ran Claude Code, a coding agent that works in a terminal, reads files and writes and runs its own code. It had a clean folder with only the four files, no Coffer tools, and one plain request:
Map these vendor quotes to my material list and tell me which vendor is lower on each line and overall.
It read the PDFs with a PDF-to-text tool, wrote Python to match and level the lines, and saved a comparison workbook. Each run took about two minutes. We ran it twice and ran Coffer's quote-mapping pipeline twice on the same files.
How did they score?
Close. Claude Code's first run was the best of the four, and all of them named the same low vendor.
| Run | Unit prices right (of 123) | Low vendor right (of 41 rows) | Low vendor overall |
|---|---|---|---|
| Claude Code, first run | 122 | 41 | Right |
| Claude Code, second run | 115 | 40 | Right |
| Coffer, both runs | 120 | 41 | Right |
Coffer's two runs gave the same 123 prices and the same flags. Claude Code's two runs priced package items two different ways.
Where did each one get it right?
Both handled the conversions, the repeats, the shortfall and the scope gaps that make a cover-page total misleading.
| Row and quote | Answer key | Claude Code, first run | Claude Code, second run | Coffer |
|---|---|---|---|---|
| 12-in DI pipe, 70 joints of 18 ft (catalog quote) | $60.99/LF | $60.99 | $60.99 | $60.99 |
| 2-in HDPE, priced per hundred feet (bid proposal) | $1.59/LF | $1.59 | $1.59 | $1.59 |
| 8-in C900 under two bid items, 3,560 ft for 3,400 LF (bid proposal) | $15.27/LF | $15.27 | $15.27 | $15.27, overage flagged |
| 8-in gate valve, 7 quoted against 8 (numbered-row quote) | $1,368.13/EA | $1,368.13 | $1,368.13 | $1,368.13, shortfall flagged |
| 12-in DI pipe, by others (numbered-row quote) | Not quoted | Not quoted | Not quoted | Not quoted |
| 2-in air release valve, no quote (catalog quote) | Not quoted | Not quoted | Not quoted | Not quoted |
Both also saw through the printed totals. Ranked by the totals on the quotes, the order is backwards.
| Vendor | Total as printed | Why the printed total misleads | Leveled total |
|---|---|---|---|
| Bluestem | $287,812.24 | Includes $21,717.68 sales tax | $262,757.44 |
| Caprock | $261,805.61 | Leaves out the air release valves and test stations | $265,716.05 |
| Ironwood | $193,548.75 | Leaves out the 12-in DI pipe, priced by others | $271,443.63 |
The leveled total prices every row at your quantity, fills a row a vendor did not quote with the lowest other vendor's price, adds freight and leaves sales tax out. All four runs named Bluestem low overall.
Where did each one go wrong?
Each made a different kind of mistake, and one mistake was shared.
| Row and quote | Answer key | Claude Code, first run | Claude Code, second run | Coffer |
|---|---|---|---|---|
| 4-in tapping valve assembly, three lines (bid proposal) | $1,459.06/EA | $1,459.06 | $1,459.06 | $486.35, averaged |
| Warning tape, 5 rolls of 1,000 ft (bid proposal) | $0.046/LF | $0.046 | $0.048, whole rolls | $0.046 |
| 2-in HDPE, 2 coils of 500 ft for 600 LF (numbered-row quote) | $1.67/LF | $1.67 | $2.78, whole coils | $1.67 |
| Hydrant extension, reference-only price (numbered-row quote) | Not quoted | $564.77 | $564.77 | $564.77 |
- Coffer averaged an assembly. On two quotes the tapping valve, its accessory set and its gland are separate lines. Coffer matched all three to the right row but averaged them instead of adding them. It flagged the row for more units than the list asks for, so an estimator would see it, but the price on the row was wrong.
- The second Claude Code run priced what you must buy. It divided the cost of whole rolls, coils and joints by your quantity. That is a fair buying view, but it is not the unit price you carry, and it changed seven prices and moved one low vendor.
- All of them carried a reference-only price. The vendor printed the hydrant extension as reference pricing, left out of its total. Our key treats it as not quoted. You may decide to carry it, but it should be your decision, not a silent default.
What does Coffer add over a coding agent?
On this bid, not accuracy. A coding agent with a careful person behind it can level a typed bid well. Coffer adds what sits around the numbers.
- One method, every run. Coffer gave the same prices and flags on both runs. Claude Code changed its method between runs, so its numbers changed too.
- A receipt for each price. Each price Coffer proposes links to the quote, page and line it came from. Neither Claude Code workbook kept the page or the line.
- Flags on the row. Coffer marked every shortfall, overage and unit conversion the key expects, 22 of 22, on the row it affects. Claude Code described them in its own words, different each time.
- No one has to run it. A coding agent needs someone at a terminal who knows which method to ask for and checks the result on every bid. Coffer is a service: you send the list and the quotes, and the comparison sheet comes back in your workbook. Coffer proposes the match and the carry for each row. Your estimator confirms.
- It keeps your vendors. Confirmed matches stay on file for each vendor and inform the next quote from that vendor. A coding agent starts from zero each time.

What does this test not show?
It shows one bid, not your bids.
- Three vendors and typed PDFs. No scanned or faxed quotes, no 40-page quotes, no revised quotes.
- Two runs of each tool. On other quotes the order could change.
- No second bid from the same vendors, which is where vendor memory matters.
For the method behind the leveling, see How do you level pipe and fittings supplier quotes? For prompts and checks when you use a chat assistant yourself, see Can ChatGPT or Claude compare your vendor quotes?
What is the next step?
Try it on one of your own bids at map.coffer.build: add your material list and a supplier quote, and the first mapped quote is free with nothing asked.
To have Coffer do this on every bid, send one past bid's material list and the supplier quotes that came back to declan@coffer.build, or use the contact form below. You get the mapped, leveled comparison back to check against what your team carried.
Sources
- Coffer field note, Can ChatGPT or Claude compare your vendor quotes? (Oct 14, 2026)
- Coffer field note, How do you level pipe and fittings supplier quotes for a sewer or water main bid? (Oct 14, 2026)
- Coffer field note, How should you compare material vendor quotes? (Aug 30, 2026)


