Follow one firm all the way through.
Pick any firm and see the whole file: which ministries it actually works for, who it forms joint ventures with and who leads them, which firms it keeps meeting in the same competitions and who wins those, and what it has won or lost year by year. Where a borrower has published its evaluation sheet, you also get the thing no funder publishes — the score the firm got when it lost.
Methodology & limits
Where the client comes from
A contract award notice names the project, not the body that ran the procurement. For World Bank work the client here is the project's implementing agency, read from the Bank's projects API — in practice the ministry or authority that shortlisted, scored and signed.
EU rows use the contracting authority printed on the TED notice. Borrower evaluation sheets name their own ministry directly. One project can list several agencies; each is credited.
Why losing scores exist here at all
World Bank award notices publish scores for the winner only. The borrower's "Summary of Evaluation and Contract Awarded for Publication" sheet publishes a score and a rank for every firm it rejected — and it appears at first-rank selection, weeks or months before the Bank's notice.
Two stages are kept apart, because mixing them would be meaningless: eoi scores rank a
shortlist, and under CQS only the first-ranked firm is invited to propose at all;
proposal scores are the technical score of the firm that did propose.
Rivals is co-appearance, not head-to-head skill
Two firms count as rivals when they appear on the same tender and one of them lost. "Beat" and "lost to" count those outcomes. It says who competes with whom and how that has gone — it does not adjust for the size or type of contract, and a firm that bids constantly will meet everyone.
Co-winners on a multi-lot notice are excluded from both partners and rivals: they neither partnered nor competed, they each took a different lot.
What "value" means
Signed contract value, converted to USD at static long-run rates — the same table Firm Awards uses. Notices never publish the split between joint venture members, so each member is credited with the full contract value. A firm's total is "value of contracts won", not revenue.
Losing bids carry the bid price where the notice published one, which is common on World Bank goods and works and rare elsewhere.
Adding more evaluation sheets
Drop the ministry PDFs into data/awards-manual/eval-notices/ and run
python scripts/import-eval-notices/parse_eval_notice.py. The parser targets the standard
World Bank publication template, so it generalises across projects and ministries — but it is
a template parser, and a sheet laid out differently will need a look.
These sheets are published on borrower and ministry websites, not by the funder, so they cannot be discovered automatically. Collecting them is the manual step.
Coverage and gaps
World Bank contract awards for ASEAN-11, EU external-aid awards from TED, and whichever borrower evaluation sheets have been imported. ADB is not in here — it blocks automated access; it comes in through the manual CSV path or UN Global Marketplace.
A firm with one bid has a 0% or 100% win rate and neither means anything. The 2+ bids filter is there for that reason.