We Checked 15,000 CPV Codes. Here’s What We Found.

About 1 in 10 council tenders on Find a Tender have a CPV code that doesn’t match what’s being procured. We know because we checked over 15,000 of them.
If you sell services to councils, you’ve probably got CPV code alerts set up. A few codes that match what you do, maybe from Find a Tender or an alert service. New tender gets published with your code, you get an email.
The problem is that the codes are often wrong. We measured how well each code matched what the tender actually described (there’s a full methodology section at the end if you want the detail), and the results weren’t great.
What CPV codes are (and why they matter)
If you already know, skip ahead.
CPV stands for Common Procurement Vocabulary. It’s a classification system – 9,454 codes in a hierarchy, used to tag public sector tenders by what’s being bought. When a council publishes a tender on Find a Tender, someone picks a CPV code from a dropdown menu.
Suppliers then search by code. An IT company looks for codes starting with 72 (IT services). A cleaning company looks for 90 (cleaning and environmental services). That sort of thing.
The system only works if the codes are right.
What we found
We took 15,185 council tenders that had both a description and a CPV code, and measured how well the code matched what the tender was actually about.
About 1 in 10 were obviously wrong. The code had almost nothing to do with the tender description, and a much better code was sitting right there in the system. These aren’t judgement calls. These are clear mismatches.
A few examples. We’ve left out council names because this isn’t about blaming anyone – it’s a systemic problem.
- Supply of Litter BinsFiled under “Transport Equipment”There's a CPV code for waste containers and bins. It just wasn't used.
- Pest Control ConsumablesFiled under “Community and Personal Services”The system has a specific code for pest-control services.
- Window and Door ReplacementFiled under “Lifting Equipment for Health Care”Building completion work would have been the obvious choice.
- Roof Repair and Render WorksFiled under “Petroleum Products, Fuel and Energy”We're still not sure how that one happened.
We found these in a random sample. There are fifteen thousand more in the database.
But the obvious mistakes are only part of it.
Most codes aren’t a great fit either
Only about 1 in 5 tenders (22%) were assigned the best available code. For over half, a better code existed.
The median similarity between a tender and its assigned CPV code was just under 60%. Only 15% scored above 70%.
So even setting aside the ones that are plainly wrong, the general standard isn’t high.
A third of all codes are assigned at the broadest possible level. A code like 85000000 covers everything from physiotherapy to funeral services to youth work. We found one council that used that single code for 96 different tenders across more than 20 completely different services. At that point the code tells you almost nothing.
The IT problem
IT-related tenders are scattered across 219 different CPV codes in our data. (We found these by searching tender titles for IT-related keywords, so this is a rough count, but the spread is real.)
If you’re an IT supplier searching under division 72 (IT services), you’re seeing a fraction of the relevant tenders. The rest are filed under software packages, construction, business services, education, financial services, and in at least one case, petroleum products.
Why are CPV codes so often wrong?
It’s not carelessness. At least, not usually.
CPV is a 9,454-code taxonomy designed by committee in Brussels, last properly updated in 2008. A procurement officer publishing a tender has a dropdown menu and a deadline. The closest-looking code gets picked, or last year’s notice gets copied.
The code gets picked once, by one person, and never checked again. No feedback loop. No quality metric. No automated validation.
The Procurement Act 2023 has actually made the volume problem bigger. More notices now go through Find a Tender, including below-threshold contracts starting at £12,000. The number of council tenders with CPV codes on FTS roughly doubled between 2024 and 2025. More codes being assigned, by more people, with no improvement in guidance or tooling.
If you sell to councils
That’s what happens when CPV alerts are your only way of finding opportunities. The tenders are on Find a Tender. They just have the wrong label.
You could try tracking more codes. But with IT tenders scattered across 219 codes, that’s not really practical. And it creates the opposite problem – too many irrelevant results, and you stop opening the emails.
What we built instead
This is one of the reasons we built CouncilLedger the way we did. It takes a description of your business and compares it directly against what each tender actually describes. Not the CPV code. The actual description.
So if you’re a pest control company, you see pest control tenders, even when someone filed them under community and personal services. If you do window replacements, you see window replacement tenders, even when they’re tagged as lifting equipment for health care.
Each result gets a match strength score. “Strong match” means above 90% similarity to your business description, “Good match” means above 75%. So you’re not scrolling through hundreds of irrelevant results hoping something useful turns up.
It’s not a perfect system. No text matching is. But it catches the tenders that CPV-based alerts miss. And if 1 in 10 codes are wrong, that’s a lot of tenders to not see.
Common questions
What are CPV codes?
CPV (Common Procurement Vocabulary) codes are an 8-digit classification system used to label public sector tenders by what’s being bought. There are 9,454 of them, covering everything from construction to catering to IT. They’ve been the standard way of categorising tenders since the EU introduced them, and they’re still used in the UK after Brexit.
How accurate are CPV codes on Find a Tender?
Based on our analysis of 15,185 council tenders, about 1 in 10 have a clearly wrong CPV code, and only 22% use the best available code. The median similarity between a tender description and its assigned CPV code is just under 60%.
Why hasn’t this been fixed?
CPV codes are baked into UK and EU procurement law and there’s no replacement planned. The last major update was in 2008. A few academic projects have tried automated classification using machine learning, but none have been adopted at scale. The system carries on because it’s the legal standard, even though everyone knows the data quality isn’t great.
Methodology
We used text similarity to measure how well each tender description matched its assigned CPV code description. For each tender, we computed a similarity score between 0 (completely unrelated) and 1 (identical meaning), then compared it against the best available match from 595 commonly-used CPV codes.
A tender was classified as “obviously wrong” if its assigned code scored below 0.50 and a much better code (scoring at least 0.15 higher) was available. This is deliberately conservative – we’re only counting clear mismatches, not borderline cases.
We ran the analysis across multiple random samples (500 to 1,500 tenders). Results were consistent within 3-4 percentage points across all runs.
| Metric | Value |
|---|---|
| Tenders analysed | 15,185 |
| Median similarity (tender to assigned CPV) | 0.595 |
| Tenders assigned the best-matching CPV code | ~22% |
| Obviously wrong (conservative threshold) | ~10% |
| CPV codes assigned at broadest division level | 33% |
Data sources: Council tenders from Find a Tender Service, collected and processed by CouncilLedger. CPV code reference data from the EU TED CPV 2008 vocabulary. Analysis conducted March 2026.