Supplier quote checker that adds up every figure and spots quotes for the wrong order
My own system that reads supplier quotes, adds every figure up again, and refuses to recommend anything it cannot back up.
My own project. Working and tested, not a client job.
Five quotations, one request for 120 brackets
As quoted
- Calder Metalworks £5,946.00 Cheapest as quoted
- Halewood Precision £6,791.20 stated
- Nordfleet Industrial £6,993.60
- Brackenhill Engineering £7,158.00
- Ridgeway Fabrication £7,372.80
The checks
- Is it a quote for what was actually asked for?
- Work out every total again from quantity and price.
- Is the supplier on the approved list?
- Can the recommendation be backed up?
Every figure is checked again, whoever sent it.
Outcome
- ExcludedCalder quoted 100 units, not 120
- ExcludedRidgeway is not an approved supplier
- RecommendedHalewood, £6,991.20Its stated total was £200 short of its own lines
- Ranked 2, Nordfleet
- Ranked 3, Brackenhill
- £1,045
- Gap between the quote that looked cheapest and the one actually recommended
- On the sample run: £5,946 from the quote that was set aside, against £6,991 from the one recommended.
- 2 of 5
- Quotes set aside, each with the reason
- One priced 100 brackets instead of 120. The other came from a supplier not on the approved list.
- 0
- Figures taken on trust
- Every total is worked out again from quantity and price.
Comparing quotes is a question of trust
Five suppliers quote for the same order of 120 brackets. Going by the totals they sent, Calder Metalworks is cheapest at £5,946. A spreadsheet would pick Calder. So would most automation, just faster.
But Calder priced 100 brackets, not 120. Their maths is perfect; it is simply not a quote for what was asked. So it is set aside and a new quote is requested, rather than being scaled up to look comparable.
Separately, one supplier’s total was £200 less than its own lines added up to. The checker uses the corrected figure and flags the mistake for someone to confirm, rather than quietly fixing it.
It has to be able to say no
The useful part is that it can refuse. It will not recommend anything it cannot back up, and it shows you why. Two of the five quotes never reach the shortlist: one priced the wrong amount, and one came from a supplier that is not on the approved list.
The same rule runs through everything I automate. AI can draft, summarise and read documents. It never gets the final say on a number or a decision.
How I know it works
Every test rebuilds it from scratch and runs it on a set of sample quotes. Five runs have to pass and two are designed to fail. If a check ever gets disconnected by accident, the runs meant to fail start passing, and the whole test fails.
Technical notes
It is eight linked n8n workflows, rebuilt from source and imported into a clean n8n data directory on every run, with 20 automated tests plus the 2 built to fail. The step that reads a supplier PDF has a live connection to the AI service that has never been used for real: every run in the repository replays recorded responses, and its README says so.
What this involved
Technical notes: what it is built with
n8n, Node.js, Anthropic API.