CPV is the common classification system used to describe the subject of public procurement contracts. The main vocabulary is hierarchical: the first digits indicate division, group, class and category, while the following digits increase precision. For monitoring opportunities, it helps to combine specific and upper-level codes with the subject language, territory, amount and exclusions.
Read the code like a tree
The main code has eight descriptive digits and a ninth check digit. The first two identify division; three, group; four, class; five, category. A code with more zeros is more general. This hierarchy lets you move up when an alert is too narrow and move down when it creates noise.
| Layer | Function | Usage example |
|---|---|---|
| Core | The service the company delivers recurrently | Always alert |
| Adjacent | A contract where your capacity appears as a relevant part | Alert with words or amount |
| Monitoring | Broad category with potential but lots of noise | Summary, not an immediate alert |
| Exclusion | Incompatible subject even if it shares the same family | Hide unless manually reviewed |
Method in six steps
- Gather 10–20 projects you would indeed be able to deliver.
- In the official vocabulary, find the most precise code for each service.
- Move up one level and check which neighboring contracts would appear.
- Add real subject language: technologies, deliverables, sectors and synonyms.
- Define exclusion signals: main works, predominant hardware, incompatible shifts or missing authorisation.
- For four weeks, label each result as relevant, adjacent or noise, and adjust.
Example: software development
A software company might start in division 72 and choose categories linked to programming, consulting or maintenance. But a contract titled “transformation of citizen care” could use broader codes or include software alongside training, support and communications. That’s why CPV must coexist with subject words and with lot-based analysis.
Measure precision and loss
Track how many results each rule produces, how many reach review, and how many end up as bids. A rule with many results and zero useful decisions should be narrowed; an opportunity found manually but missing from alerts reveals a gap in the tree or the language.
A good alert isn’t the one that finds the most. It’s the one that lets you review everything relevant on time and explain why each result ended up there.