Case study · Procurement analytics, CEU · 2025
Measuring corruption risk in Rail Baltica procurement
Rail Baltica's projected cost rose from €5.8 billion to €15.3 billion, and its completion date moved from 2025 to 2030. With Paula Biša, for Mihály Fazekas's course on procurement corruption at CEU, I checked whether the tenders of EDZL, the Latvian implementer, show the warning signs that usually come with corruption risk.
- Course
- Public Procurement Corruption & Analytics
- Data
- 77 tenders · 675 contracts · €1.8bn
- Method
- Red flags · risk index
Data
Latvian public procurement records for 2018 to 2023. EDZL ran 77 tenders that produced 675 contracts worth €1.8 billion. We compared them with the rest of the Latvian market over the same years.
Five red flags, tested before use
We used five red-flag indicators from the procurement-integrity literature: procedure type, single bidding, length of the submission period, length of the decision period, and the share of a buyer's spending that goes to one supplier. A flag only belongs in an index if it predicts something, so we validated each one with logit and OLS models of single bidding. The models control for contract value, buyer type, supply type, year, market (CPV division) and buyer location. The flags that held up were combined into a contract-level Corruption Risk Index, following the Government Transparency Institute approach. All of this is in R (tidyverse, data.table, estimatr, sandwich).
Findings
- The data shows no sign of unusually high risk at EDZL overall. Its contracts cluster near zero on the index, mostly below the national level.
- Topographic services stand out, with some signs of supplier preference and over-budgeting. Two surveying firms together won 315 contracts worth about €480 million.
- The largest supplier by value received €474 million across just three contracts, which is what you expect for heavy construction lots.
Red flags measure risk. They do not prove wrongdoing, and the topographic contracts are a place to look more closely, not a finding of corruption.
Code and slides
rail_baltika_corruption_replication on GitHub has the cleaning, validation models, index and presentation.
I now build procurement data systems for clients: see procurement intelligence with RAG and ML.