Germany records the number of bids on every tender. 84% of them say zero

Jonas Petraitis
Jonas Petraitis
Covers competition: who bids, who wins repeatedly, and where the contest is real. Based in Vilnius.
5 Min Read

There is a particular kind of data failure that is far more dangerous than a missing value, because a missing value announces itself. A field that is always populated looks complete, passes every automated check, and satisfies anyone counting coverage. The damage is done later, by whoever trusts it — and the more diligent the analysis, the worse the outcome, because a careful analyst will treat a well-populated field as the reliable one.

A hundred per cent that means nothing

Measured across a recent window, the German record carries a bidder count on 996 of 1,000 notices. On any coverage dashboard that is the best result in Europe by an enormous margin, and it would be reasonable to conclude that Germany is the one large market where competitive density can be studied properly. Then look at the distribution: 838 of those 996 values are zero, ten are twos, one is a three, two are fives. What the field records, in the overwhelming majority of cases, is not that nobody bid. It is that nobody said.

Plotted, the German distribution does not look like a market. It looks like a form with a default value, which is exactly what it is.

MarketField populatedDistributionUsable?
Germany~100%838 zeros of 996No — the zeros are placeholders
Lithuania22%6 zeros, 98 ones, 47 twos, 31 threesYes
Latvia0% recently17% historically, then nothingStopped
Spain, Poland, Estonia, France, UK0%Not collected
Coverage of the recorded bidder count, measured per market on recent windows.

Why a zero is worse than a null

A null is honest. It stops a query, forces a decision, and appears in every completeness report as a gap. A zero passes silently into arithmetic. Averaged, those 838 zeros drag a German mean bidder count towards nothing and produce a market that looks catastrophically uncompetitive. Filtered for single bidding, they are excluded — a zero is not a one — and the resulting single-bid rate looks reassuringly low, computed over the 158 records that happen to carry a real number. Both figures are defensible arithmetic on the stored data and both are false, in opposite directions, which is the signature of a placeholder rather than a measurement.

The rule this produces

Coverage is not a percentage of non-null values; it is a percentage of values that could plausibly be true. The check costs one query — look at the distribution before trusting the field — and it is the step most often skipped, because a fully populated column does not look like it needs checking. Lithuania, at 22% coverage, is the more useful market precisely because its distribution behaves like a real one: a handful of zeros, a large group of ones, a tapering tail. Twenty-two per cent of something real is worth more than a hundred per cent of a placeholder, and no dashboard built on non-null counts will ever say so.

A null is honest. A zero passes silently into arithmetic.

WHY IT MATTERS

Wherever a public record encodes ‘not stated’ as a number, every statistic built on that field inherits the lie, and the direction of the error depends on which way the query happens to filter. The defence is to read the distribution before the coverage figure: a column of 84% identical values is describing the recording practice, not the thing recorded. Applied to procurement specifically, this means German bid counts cannot support any claim about competition despite being the most complete such field in Europe — and that a market with far thinner coverage may be the only one where the question can honestly be asked.


Data: Otnox — live procurement intelligence across 56 markets. Basis: recorded bidder counts per market, measured on recent windows with distributions inspected, 2026-03-01..2026-07-26.

Share This Article
Covers competition: who bids, who wins repeatedly, and where the contest is real. Based in Vilnius.
Leave a Comment

Leave a Reply

Your email address will not be published. Required fields are marked *