# One indicator catalogue for every country

Every check in every dataset maps to one **universal kind**. The table, the *Indicator* filter, copied summaries and exports show the universal label; the row detail also shows the jurisdiction's own check and its reason. This lets a reader apply the same *Indicator* filter in every dataset (owner's decision, 27 September 2026; the combined *All countries* view built on it was removed after v3.7, see below).

What stays local, and why: **eligibility and thresholds follow each jurisdiction's law and data.** A single offer means the same thing everywhere, but “without competition” is a different legal route in each country, and a long duration is 10 years in France and 3 years in the Colombian cohort because ordinary durations differ. Where a dataset cannot support a kind (no offer counts, no amendments), the check is out of scope with a reason, never zero. Weights are set per jurisdiction: the same kind keeps the same editorial weight until a country's own labelled cases calibrate it (first Ukraine in v3.5, where a single offer scores 1 instead of 12, see [score-ukraine.md](score-ukraine.md); since then also some checks in Colombia, Romania and South Korea; the record panel marks each check's points as measured or editorial). A labelled country's own evidence always decides its points, because procedures, data and enforcement differ. Since score 4.0 a country without labels borrows, for each kind, the lowest value any labelled country measured, and a kind measured nowhere carries no weight ([score-v3.md](score-v3.md#40-29-october-2026-the-index-as-a-multiplier-only-measured-points-count)). The index is `min(100, max(competition) + max(execution/duration) + max(transparency))` in every country (v3.1) except South Korea, which sums the maxima of three other families (competition, price, concentration) as a stopgap until a joint model sets how much each check adds when others fire; it has two such indices (bid rigging, corruption), its price check can carry negative points, each index is floored at 0, and the bid-rigging index is at most 29.7, so no Korean record reaches the high (40+) or very high (70+) bands ([score-v3.md](score-v3.md), [korea-collusion-results.md](../research/calibration/korea-collusion-results.md)). Korea has no execution or transparency points: its amendment checks (3+ changes, price increase) are computed but earned no points on either the cartel decisions or the court convictions once controlled, and late publication is not computed yet. **Scope limit:** Korea's points come from Fair Trade Commission bid-rigging decisions, which by definition concern tenders with bidding. They cannot show whether private contracts (수의계약, 86 % of the published Korean rows), repeated direct awards or price increases after award signal favouritism or fraud; “rarer among cartel cases” below means only that these checks do not mark cartels, not that they are harmless. The corruption index (court convictions tied to a contract, 51 tenders in 16 cases) scores only supplier dependence and an exact hit on the award floor so far, so these score nothing, so the Korean index mostly ranks the competitive tenders: on about three quarters of rows no bid-level check can be computed. The transparency check is the same code everywhere: `late-publication`, described in [score-v3.md](score-v3.md#transparency-family-v31-27-september-2026).

| Universal kind | Family | France (DECP, BOAMP) | Colombia (SECOP II) | Paraguay (DNCP) | Ukraine (Prozorro) | TED: Portugal, Romania, Czechia | United Kingdom (Find a Tender) | Chile (Mercado Público) | South Korea (KONEPS) |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Single offer in a competitive procedure | competition | `single-bid` | out of scope (no offers table) | `dncp-single-tenderer` | `ua-single-offer` | `ted-single-offer` | `uk-single-offer` | `cl-single-offer` (per tender) | not scored (`B1` single bid: rarer among cartel cases) |
| Award without competition | competition | `direct-award` (only from the legal no-publicity threshold; see score-v3.md) | `secop2-plurality-award` (declared no plurality / urgency only; the bare direct modality is not a signal) | `dncp-exception-award` | `ua-direct-award` (10 points since v3.7); `ua-direct-contract` (direct-contract report ≥ UAH 200,000; 11 points, v3.7) | `ted-direct-award` | `uk-direct-award` | out of scope (direct deals are purchase orders, not in this source) | not scored (`G2` private contract: rarer among cartel cases than other contracts; cartel labels cannot measure direct-award favouritism, see the scope limit above) |
| Repeated single-offer wins by the same supplier | competition | — | — | `dncp-repeated-single-tenderer` | `ua-repeated-single-offer` | `ted-repeated-single-offer` | `uk-repeated-single-offer` | `cl-repeated-single-offer` | — |
| Repeated awards without competition to the same supplier | competition | `repeated-direct-award` | `secop2-repeated-plurality` | `dncp-repeated-exception` | `ua-repeated-direct` (no negotiated procedure in this cohort) | `ted-repeated-direct` | `uk-repeated-direct` | out of scope | not scored (`U2`: rarer among cartel cases; outside what cartel labels can measure) |
| Buyer with repeated low competition | competition | `repeated-single-bid` (share of single offers in a buyer/CPV group) | out of scope (no offers table) | — | — | — | — | — | — |
| Concentrated awards | competition | `supplier-concentration` | `secop2-concentration` | `dncp-concentration` | `ua-concentration` | `ted-concentration` | `uk-concentration` | `cl-concentration` | `kr-concentration` (G4; concentration family) |
| Better-ranked bidder disqualified | competition | — | — | — | `ua-better-bid-disqualified` | — (TED publishes no award sequence) | — | — | not scored (`B6`: rarer among cartel cases) |
| Short bidding period | competition | `short-bidding-period` (reliable chronology only) | out of scope | out of scope | — | out of scope | out of scope | out of scope | not computed for the site (research check N6) |
| Long declared duration | execution | `long-contract` (≥ 120 months) | `secop2-long-duration` (≥ 36 months) | out of scope | out of scope | out of scope | out of scope | out of scope | not computed |
| Amount increase after award | execution | `amount-increase` (> 20 %, firm price) | out of scope | `dncp-amount-increase` (from 19 % to the provisional 20 % reference ceiling: 8; beyond it: 16 → 30) | out of scope | out of scope | out of scope | out of scope | not scored (`G6` > 20 %: no reliable effect on cartel cases; 3.5 % of published rows rose more than 20 %, unmeasured for corruption) |
| Three or more contract amendments | execution | — | — | — | `ua-contract-amendments` (≥3 active changes; 6 points, 10 at 5+, +6 with a term extension) | — | — | — | not scored (`G5`: no reliable effect on cartel cases) |
| Term extended after award | execution | — | `secop2-term-extension` (> +100 % of the declared term) | — | `ua-term-extension` (an active amendment of type durationExtension or fiscalYearExtension; 4 points, or +6 on 3+ amendments) | — | — | — | — |
| Large share of the buyer's yearly procurement | competition | — | `secop2-buyer-share` (≥ 5 % of the buyer's COP contract total for a completely covered signing year; 4.7 points since v3.8, 14 in v3.7) | — | `ua-buyer-share` (≥ 5 % of the buyer's UAH contract total for a completely covered year; 2.2 points since v3.8, 30 before) | — | — | — | `kr-buyer-share` (G3 ≥ 5 %, controlled for contract size; concentration family) |
| Published long after the contract | transparency | `late-publication` (delay > 120 days; DECP excess > 240 days with an established buyer baseline, otherwise whole delay > 120 days; BOAMP excess > 120 days) | out of scope | out of scope | out of scope | `late-publication` (delay > 120 days and excess > 120 days; whole delay > 120 days without a buyer baseline) | out of scope (contract dates not comparable) | out of scope | not computed yet |
| Few bids (exactly two) | competition | — | — | — | — | — | — | — | `kr-two-bids` (BC2, exactly two bids opened; replaced B2 two or three on 2 November 2026) |
| Only one valid bid among several | competition | — | — | — | — | — | — | — | `kr-one-valid-bid` (BV1, two or more bids opened, only one valid; same family as two bids, so only the heavier counts) |
| Winning bid exactly at the lower award limit | price | — | — | — | — | — | — | — | `kr-exact-floor` (B8, within 0.01 points; corruption index only, 1.3 points after controls) |
| Unusual pattern of bid amounts | competition | — | — | — | — | — | — | — | `kr-bid-gap` (B5, large gap between the two lowest bids), `kr-bid-dispersion` (B4, bids unusually close together), `kr-same-minute` (B7, two bids submitted in the same minute) |
| Restricted or nominated competition | competition | — | — | — | — | — | — | — | `kr-restricted-competition` (K5, 제한경쟁 or 지명경쟁) |
| Award close to the reserve price | price | — | — | — | — | — | — | — | `kr-award-near-reserve` (K7, award at 92.2 % or more and below 100 % of the reserve price), only where the bid opening states no lower award limit |
| Winning bid well above the lower award limit | price | — | — | — | — | — | — | — | `kr-floor-gap` (B12, winning bid ≥ 1.01 points above the stated lower award limit; closer scores −11 points, shown as a “Near award floor” chip on every row it lowers) where the bid opening states a limit; one price check per tender, so K7 is then out of scope |
| Supplier holds a large share of the buyer's yearly amount | concentration | — | — | — | — | — | — | — | `kr-supplier-dependence` (N4 ≥ 25 %, controlled for contract size) |

South Korea has two indices (2 November 2026): **bid rigging**, measured on the Fair Trade Commission's cartel decisions, and **corruption**, measured on court convictions tied to a contract. Each check carries its own points under each; the record shows both and takes the higher. Korean points are controlled for what else the index already scores, and no more: competition checks (bid count, one valid bid, bid gap) at equal contract value, business type and period; they share a family, so only the heaviest counts. Price checks also at equal competition result (exactly two bids, large bid gap), so they add only what that family has not said. Concentration checks at equal contract value, rigged prices taken as inflated ×1.3 ([korea-collusion-results.md](../research/calibration/korea-collusion-results.md), “Controlled points and two indices”).

Every check is tested in every country that has labels and the needed fields, whatever country it came from (owner rule, 24 October 2026); status per concept and country: [cross-country-matrix.md](../research/calibration/cross-country-matrix.md). Each check has one standard definition of one of three kinds: a count or category (identical everywhere), a legal threshold (the limit read from each country's law) or a continuous measure (bins from each country's own data); see [indicator-standard.md](../research/calibration/indicator-standard.md). Candidates that are not scored anywhere yet, with their definitions and test results so far, are kept in [untested-checks-plan.md](../research/calibration/untested-checks-plan.md), including the round-number and Benford checks A1–A7 (owner idea, first tested in Korea on 24 October 2026 without effect there).

“—” means the check does not exist for that dataset; “out of scope” means it is listed on every row with the reason. Details and thresholds: [score-v3.md](score-v3.md) (France), [score-colombia.md](score-colombia.md), [score-paraguay.md](score-paraguay.md), [score-ukraine.md](score-ukraine.md), [score-ted.md](score-ted.md), [score-uk.md](score-uk.md), [score-chile.md](score-chile.md), South Korea in [score-v3.md](score-v3.md) (index formula) and [korea-collusion-results.md](../research/calibration/korea-collusion-results.md) (labelled cases, rates and points). Korean points are measured on the Fair Trade Commission's bid-rigging cases; checks that earned none are not shown on the site.

## Legal anchor of each check (v3.3, 4 October 2026)

Anchored means the eligibility or threshold follows a legal text, subject to the verification limits below. Weights were editorial at v3.3, not empirically calibrated (measured points came later, see above); v3.3 reduces the France and Colombia long-duration maximum from 40 to 16 by owner decision. French single-bid associations do not justify a Colombian execution-risk weight. “Editorial” means no legal anchor was found that the data can test.

| Country | Check | Legal anchor and source | Status |
| --- | --- | --- | --- |
| France | direct award | CCP art. R2122-8, dated thresholds ([score-v3.md](score-v3.md)) | anchored (v3.2) |
| France | late publication | EU award notice 30 days (Directive 2014/24/EU art. 50), essential data 2 months; scoring cutoffs are not legal deadlines | editorial: DECP excess > 240 days is exploratory single-bid proxy evidence, not corruption calibration; fallback and BOAMP 120 days |
| France | short bidding period | EU/French minimums per procedure (CCP R2161-2 to R2161-5: 35 days, 30 with e-submission, 15 in urgency) apply only above EU thresholds, which the data does not give; the 15-day cut is the lowest legal minimum | follow-up |
| France | amount increase (> 20 %) | R2194-5 (50 % per modification, unforeseeable circumstances only), R2194-8 (10 % services/supplies, 15 % works, below EU thresholds only). The applicable cap depends on the modification's ground, not in the data | editorial; follow-up |
| France | long duration, single offer, repetition, concentration | none | editorial, no legal anchor |
| Paraguay | amount increase | Ley 7021/22 art. 67, reported 20 % of amount and term; processes from 19 Feb 2024 ([score-paraguay.md](score-paraguay.md)) | provisional legal basis: full text and exceptions unverified, not a universally verified cap; at reference ceiling 8, beyond 16 → 30 |
| Paraguay | exception award (CVE) | grounds, not an amount | no amount anchor |
| Paraguay | short bidding period | decree 2264/24 minimums not verified | out of scope |
| Paraguay | single tenderer, repetition, concentration | none | editorial, no legal anchor |
| Colombia | amount additions | Ley 80/1993 art. 40 parágrafo: additions at most 50 % of initial value in SMMLV ([Función Pública](https://www.funcionpublica.gov.co/eva/gestornormativo/norma.php?i=304)). The extract has no addition value | not testable |
| Colombia | term extension, long duration | no statutory cap on term (art. 40 caps value only) | editorial, no legal anchor |
| Colombia | plurality / urgency awards | Ley 1150/2007 art. 2 num. 4 causales (grounds, no amount threshold) | no amount anchor |
| Chile | direct deal, short period, increase | Ley 19.886: trato directo is outside this source; no tender-period or modification data | out of scope |
| Chile, Ukraine, TED, UK | single offer, repetition, concentration | none | editorial, no legal anchor |
| Ukraine | contract amendments | Law on Public Procurement art. 41 permits listed changes; StateWatch/Prozorro ARI 1-1 sets the three-amendment review threshold | risk-indicator threshold, not a legal cap; 8-point placeholder supported cautiously by the small verdict pilot ([score-ukraine.md](score-ukraine.md)) |
| Ukraine | short bidding period | Law 922-VIII art. 21 and martial-law Resolution 1178 minimums: not verified; raw `tenderPeriod` shows most open tenders near 7 days | follow-up (primary text needed) |
| South Korea | price: gap to the lower award limit (B12) | The limit (낙찰하한율) is read from each tender's bid opening, not looked up; depending on the buyer and procedure it follows the national rules (국가계약법 시행령 art. 42, (계약예규) 적격심사기준), the local-government rules (「지방자치단체 입찰시 낙찰자 결정기준」) or a small-value quotation floor (정부 입찰·계약 집행기준 art. 10의2; 「지방자치단체 입찰 및 계약집행기준」 ch. 5), and varies by contract type, amount tier and date; the data does not say which regime applies. The 1.01-point cut is measured on labelled cases (0.97 until 2026-10-25) | limit anchored per tender; cut data-derived |
| South Korea | award near reserve (K7) | none; the [92.2 %, 100 %) range was chosen on the Fair Trade Commission's cartel cases ([korea-collusion-results.md](../research/calibration/korea-collusion-results.md)) | data-derived, no legal anchor |
| South Korea | two bids, one valid bid, bid gap, bid dispersion, same-minute bids | none; BC2, BV1 and B7 are fixed categories, B4 and B5 use the 10th and 90th percentiles of all openings of the same business type and year; only their points are measured on cartel cases | no legal anchor |
| South Korea | buyer share (5 %), supplier dependence (25 %), concentration | none | editorial cut-offs, points measured on labelled cases |
| South Korea | restricted or nominated competition | procedure category as recorded by the source (제한경쟁, 지명경쟁) | no amount anchor |
| TED countries | direct award | eForms `neg-wo-call`; notices are above EU thresholds by construction, so no amount eligibility applies | no amount anchor |
| UK | direct award | Procurement Act 2023 direct-award grounds; notices are above threshold by construction | no amount anchor |
| TED, UK, Ukraine, Chile | late publication | TED 30 days; others out of scope | anchored where in scope |

## Equivalents in frameworks auditors already use

So that a flag can be cited by the name an auditor knows. “Equivalent” means the same test; “related” means an overlapping but different test, never a claim that the two agree. Checked on 27 September 2026 against the sources linked.

| Universal kind | Framework flag | Relation |
| --- | --- | --- |
| Single offer in a competitive procedure | OCP Cardinal **R018** Single bid received | equivalent |
| Single offer in a competitive procedure | Fazekas Corruption Risk Index: single bidding | equivalent |
| Short bidding period | OCP Cardinal **R003** Short submission period | equivalent (our threshold is local, see score-v3.md) |
| Award without competition | Fazekas Corruption Risk Index: non-open procedure / no call for tender published | related (our eligibility follows each country's law) |
| Three or more contract amendments | StateWatch/Prozorro **ARI 1-1** | same count threshold (active published contract changes); not a finding of unlawful amendment |
| Better-ranked bidder disqualified | OCP Cardinal **R036** Lowest bid disqualified | related: R036 requires price-only award criteria; ours reads Prozorro's award sequence |
| Better-ranked bidder disqualified | OCP Cardinal **R035** All except winning bid disqualified; Ukraine State Audit Service **sas-3-2** (same), **sas-3-5** (at least two bidders rejected) | related: ours fires from one better-ranked bidder set aside |
| Repeated awards without competition / Concentrated awards | Ukraine State Audit Service **sas-3-3** (one supplier across four or more purchase codes of a buyer) | related |
| Concentrated awards | OCP Cardinal **R048** Heterogeneous supplier | related |
| Unusual pattern of bid amounts (South Korea) | Imhof, Karagök and Rutz (2018) bid-rigging screens: coefficient of variation (B4) and relative distance between the two lowest bids (B5) | related |

Sources: [OCP Cardinal indicator list](https://github.com/open-contracting/cardinal-rs/blob/main/docs/cli/indicators/index.md); [Prozorro risk rules of the State Audit Service](https://github.com/ProzorroUKR/prozorro-risks/tree/master/src/prozorro/risks/rules); Fazekas, M. and Kocsis, G. (2020), *Uncovering high-level corruption: cross-national objective corruption risk indicators using public procurement data*, British Journal of Political Science 50(1). Cardinal flags we do not compute yet, because they need every bid's price: R024 price close to winning bid, R028 identical bid prices, R058 heavily discounted bid. Prozorro, TED (partly) and Mercado Público publish bids; these are candidates.

## The All countries view (removed after v3.7)

Until 15 October 2026 an *All countries* entry loaded every dataset at once (about 58 MB of JSON) and listed the rows side by side. It was removed: the load was too large, and a single ranking across countries mixed points measured on labelled cases with editorial points (see [score-v3.md](score-v3.md)). Old `#dataset=all` links open the French DECP dataset. The universal kinds still let a reader apply the same *Indicator* filter in each dataset. Limits that applied to the combined view still apply when comparing datasets by hand: amounts are never converted or summed, dates keep each source's meaning, and coverage differs by dataset, so a country with fewer evaluable kinds scores lower for reasons of data, not of conduct.
