Semantic search for tenders: what the term means and what we do instead
Semantic search finds text by meaning rather than exact words, by translating language into vectors and comparing similarity. For procurement notices it has a catch: similarity is not evidence. We therefore work with CPV codes, keywords, exclusions and hard rules — so every match remains individually explainable.
| Method | Finds phrasing variants | Match individually explainable |
|---|---|---|
| Plain keyword search | No | Yes |
| Semantic vector search | Yes | No — only a similarity score |
| CPV plus rules and exclusions | Partly, via codes and term lists | Yes — per criterion |
As of: 17 August 2026
The problem semantic search is meant to solve
Contracting authorities describe the same service differently — and in the EU, in 24 different languages. One authority tenders “plumbing installation”, the next “sanitary engineering works”, a third “installation de plomberie”. Anyone searching for just one of these terms misses the others.
Semantic methods translate text into number vectors in which similar content sits close together. The search then asks not “does this word occur” but “how similar is this text to my query”. For prose, that works well.
Why it hits its limits on procurement documents
The output of a semantic comparison is a similarity score. It does not say which criterion is met. A tender for window cleaning sits linguistically close to one for window installation — in substance they are worlds apart. If all you see is a similarity score, you can neither recognise nor correct that difference.
On top of that, procurement is decided by hard criteria: place of performance, contract value, deadline, suitability requirements, grounds for exclusion. These are not questions of meaning but yes/no checks. A procedure 400 kilometres away does not become a match because the text sounds similar.
And finally, traceability: when a match is missing, you need to know why. With rules, that can be sharpened — a term was missing, an exclusion was too broad, the radius too tight. With a similarity score, all that remains is guessing.
What we use instead
Our matching combines four layers, and each one contributes its own visible share of the result:
- CPV codes: the EU’s common procurement vocabulary. It exists precisely to name the same service identically across language and phrasing boundaries — the single most language-independent signal in EU procurement data.
- Service keywords from your profile, deliberately in the language of contracting authorities rather than your marketing language.
- Exclusion terms for everything you explicitly do not offer.
- Hard rules for place of performance, contract value and deadline.
How we will treat semantic methods going forward
Semantic models are not a dead end; they are simply secondary at this point. A sensible use is where similarity really is the question: suggesting additional profile terms, or finding comparable reference projects in your own archive. Our AI summaries are a related, clearly-labelled use of language models — they condense a notice, they do not decide a match.
What we will not do is put a similarity score where a justification belongs. If we add semantic methods, they will run as an additional signal next to the rules — and be recognisable as such.
So no false impression arises
We do not currently run semantic vector search in production. If you are looking for that feature, you will not find it here — and we do not write it into the product description just because people search for it.
Conversely this means: our method will not find a tender whose service is reachable neither through a matching CPV code nor through one of your stored terms. That gap is real. It can be closed by sharpening the profile — but only because it is visible where the miss came from.
Frequently asked questions
What are CPV codes?
The Common Procurement Vocabulary is an EU-wide catalogue that classifies procurement subjects. Every notice carries at least one code. It makes services comparable across countries and phrasing — and our API accepts both full 8-digit codes and division prefixes such as cpv=45 for all construction work.
Will I miss tenders without semantic search?
Possibly, if a service is described unusually and tagged with an untypical CPV code at the same time. That is exactly why every match shows its reasons: if something is missing, you can see whether the code, a term or a rule was the cause.
Is this even AI then?
The agent automates polling, classification and scoring across 17 sources and works rule-based and traceably; language models add labelled summaries. Whether to call that AI is a matter of definition. What matters to us is that every decision the system makes has a justification you can check.
Can I store my own terms?
Yes, and it is the most effective lever there is. Besides positive service keywords, exclusion terms are especially worthwhile: they remove whole groups of unsuitable matches and save more time than any additional search word.
Explainable matching on live data
Query the live index with CPV codes and country filters — free preview without a key, JSON API and hosted MCP endpoint for your agent.