How we produce the tender columns

Every figure in a SalesDots column is computed from published procurement notices and checked against them before the article goes out. This page explains how, including the parts that are automated and the two ways these numbers can mislead you if we report them carelessly.

Where the data comes from

We harvest published procurement notices from seven official sources: TED, which carries EU-wide notices across 85 countries; Poland's BZP portal for below-threshold tenders; Germany's Bekanntmachungsservice; Ukraine's Prozorro; World Bank procurement; Moldova's MTender; and Kosovo's KRPP. Only published public notices are used. No customer data, no screening data and no private information of any kind enters a column.

Notices published on more than one source are deduplicated on the eForms notice identifier, so a tender appearing in both TED and a national portal is counted once.

How a notice becomes part of a vertical

Each notice is classified on three axes: the IT domain it belongs to, the commercial shape of the work, and any vendors or technologies it names. Classification is scoped to technology CPV codes. Each label carries a confidence score and a verbatim quote from the notice, so a classification can always be traced back to the words that produced it.

A column covers one vertical for one window. The window starts where the previous column for that vertical ended, so consecutive editions tile the calendar rather than overlapping.

The two traps, and what we do about them

Raw counts measure our collection, not the market. Year-on-year notice counts rose in every country we cover, by between 33 and 187 percent. That is the amount of the market we harvest growing, not Europe buying more. So direction is always reported as a share of the classified corpus. A category only grows when it grows relative to everything else published in the same window.

Money totals cover only part of the market. Many notices publish no value, and those that do use different currencies. Any euro figure in a column covers only the subset of tenders that stated a value in euros, and the column says which subset it means.

What is automated

The harvesting, deduplication, classification and metric computation are automated. The prose is written by a language model from the computed figures, and a second automated pass researches the organisations and regulations the data names, so the column can explain why something is happening rather than only that it is.

The research pass is explicitly forbidden from supplying figures, and the writer is forbidden from taking one from it. Numbers come from the measured data or they do not appear.

The check that runs before publication

Every numeral in a finished column is extracted and matched against the measured data. Rounded, truncated and sign-stripped renderings all count as matches, because those are honest ways to write a real number. Arithmetic is not: a column may not add two figures together, because the result is a number nobody can check against the source.

A column containing a figure that cannot be traced back is held as a draft and not published. It is not published and corrected afterwards.

A column must also carry at least two charts and enough words to be worth reading, and a vertical with too few notices in its window is skipped rather than padded.

Charts

Charts are drawn from the same payload the prose is checked against. No chart is generated by a model. Where a figure appears in both a chart and a sentence, it is the same number from the same source.

Corrections

If a published column contains a factual error, we correct the article in place, note the correction visibly, and keep the original publication date. We do not silently edit a story or republish it at a new URL. Corrections can be reported to [email protected].

What a column will never contain

  • A figure that is not in the measured data.
  • Arithmetic performed on those figures to produce a new one.
  • Raw count growth described as market growth.
  • Any customer, screening or otherwise non-public data.
  • A tender already featured in an earlier edition of the same vertical.

See also our editorial standards.