CONTender · Methodology
How the integrity score is computed
Updated: 6 June 2026
The integrity score (0–100) is deterministic and verifiable. Here is the exact formula from the server's code. A high score means a clean procedure; a low score flags risk.
What it measures
A composite score from 0 to 100 for a procedure. 100 means no risk factor detected in the available data; a low score means signals were detected (appeals, court suspensions or annulments, severe decisions).
The four factors and their weights
- Appeals — weight 0.25.
- Court suspensions — weight 0.30.
- Court reversals (annulments) — weight 0.20.
- Decision severity (decision_content) — weight 0.25.
Sub-scores (each clamped to 0–100)
- Appeals = 100 − (appeal count × 20)
- Court suspensions = 100 − (suspension count × 50)
- Court reversals = 100 − (reversal count × 50)
- Severe decisions = 100 − (severe-decision count × 25)
- "Severe" decisions = ProcedureCanceled, ProcedurePartiallyCanceled, RemedialMeasures, ComplaintUpheld, ComplaintPartiallyUpheld.
Aggregation and thresholds
Final score = the rounded sum of (sub-score × weight) across the four factors.
- ≥ 80 → clean (high)
- 50–79 → medium
- < 50 → risk (low)
- 100 = no risk detected.
Source and determinism
All four factors come exclusively from ANSC (appeals, decisions, court suspensions/annulments). MTender data provides context but does not enter the score. The computation is pure arithmetic: the same input always yields the same result, with no AI and no randomness.
Limitations (stated plainly)
- If the ANSC calls partially fail, the lists stay empty and the score tends toward 100 — with an error note in the result. Always read the notes.
- The score reflects only what exists in the ANSC data, not the intrinsic quality of the procedure.
- The app is in a testing phase; the methodology may evolve.