Public Procurement Red-Flag Analytics with Supplier Entity Resolution
A final year project that builds an open data analytics platform for public procurement contracts, linking the many spellings of the same supplier into one entity and computing integrity red flags such as single bidding and contract splitting. Built for journalists, auditors and civic groups working with open contracting data.
Advanced
Needs a team, real planning, and a supervisor who knows the area.2 semesters · 3 to 4 students
6 to ship
3 optional extrasSuggested stack
What you should ship
- Ingestion of at least two public procurement sources: one published in the Open Contracting Data Standard (OCDS) and one messier source such as tender notices or award PDFs, with lineage from every row back to its source file.
- A supplier entity resolution pipeline using a Fellegi-Sunter model (for example with Splink) with blocking rules, name and address normalisation, and a human review queue for uncertain pairs.
- A labelled gold set of at least 500 supplier record pairs and a report of precision, recall and F1 at several match thresholds.
- Implementation of at least eight documented red-flag indicators (single bidder, short tender period, repeated winner per buyer, contract splitting below thresholds, and similar) with a methodology page for each.
- A public web interface to search a buyer or supplier, see their contract history, linked entities and red flags, with every figure traceable to source records.
- An API with documented endpoints for entities, contracts and indicators, plus a bulk CSV export.
If you have time left
- Co-bidding network analysis that finds groups of suppliers who repeatedly bid together and rotate wins.
- Linking suppliers to an open company register where one exists, with confidence scores.
- A change-alert feature that emails a journalist when a watched buyer awards a contract with two or more flags.
The problem with reading public procurement data
Governments spend a large share of their budgets through public contracts, and many now publish tender and award data. Publishing is not the same as being usable. The same company appears as "ABC Traders", "A.B.C. Traders (Pvt) Ltd", "ABC Trading Co" and a misspelt version, sometimes with different addresses. Without resolving those into one supplier, you cannot answer basic questions: which firms win most often from one department, who always bids alone, which contracts were split just under the open-tender threshold.
Journalists, audit offices and civic groups do this by hand in spreadsheets, one investigation at a time, and the cleaning is thrown away afterwards.
What already exists and the gap
- Open Contracting Partnership publishes the OCDS standard, a data registry of published datasets, and a red flags guide with a long list of indicators.
- Cardinal is OCP's open-source command-line library that calculates red flags from OCDS data.
- OpenOpps and Tussell aggregate tender data commercially, mainly for suppliers hunting bids in Europe and the UK.
- Splink, from the UK Ministry of Justice, is an open-source Python package for probabilistic record linkage that runs on DuckDB or Spark.
The gap: the tools exist as parts. Cardinal assumes identifiers are clean; many publishers have weak or missing supplier IDs. There is no small, reproducible platform that resolves suppliers first, then computes indicators on the resolved entities, then explains each flag to a non-technical reader.
What you build
Three roles: public visitor (search and read), reviewer (confirms or rejects uncertain supplier matches), admin (manages sources and runs).
Flows:
- Scheduled ingestion of OCDS releases and one messier source into a raw zone, then into cleaned staging tables.
- Name normalisation (legal suffixes, punctuation, transliteration variants), then blocking and pairwise scoring.
- Clustering matched pairs into supplier entities, with uncertain pairs sent to the review queue.
- Indicator computation on resolved entities, stored with the evidence rows.
- A web interface showing a buyer or supplier profile, contract timeline, flags and "why this flag" explanations.
The technically interesting part
Entity resolution at useful quality, with honest uncertainty. You will need blocking rules that keep candidate pairs manageable, comparison functions for names, addresses and tax or registration numbers where present, and an EM-trained Fellegi-Sunter model. Clustering matters too: if A matches B and B matches C, should A and C merge? Show how you avoid giant false clusters (for example by limiting cluster size or requiring a minimum edge weight).
The second hard part is defensible indicators. A red flag is a signal for further reading, not an accusation. Each indicator needs a written definition, the fields it depends on, what happens with missing data, and a false-positive discussion. The pattern resembles how Uber's Databook team describes attaching lineage and freshness to every dataset: every number on screen should link back to the rows behind it.
How to evaluate it
- Entity resolution: precision, recall and F1 on your 500+ pair gold set, at three thresholds; cluster-level metrics on a sample of 50 suppliers.
- Reviewer effort: how many pairs need human review per 10,000 records, and time per decision.
- Indicators: compare your results with Cardinal's output on the same OCDS data for the indicators both compute; explain differences.
- Performance: full rebuild time on the whole dataset; query latency for a supplier profile.
- Usability: three to five target users (a journalist, a student auditor, a civic volunteer) complete set tasks; report success rate and confusion points.
Suggested plan
- Weeks 1 to 4: choose sources from the OCDS registry plus one local source, study the red flags guide, write indicator definitions.
- Weeks 5 to 9: ingestion, staging models, normalisation rules.
- Weeks 10 to 15: gold-set labelling, entity resolution model, review queue.
- Weeks 16 to 20: indicators on resolved entities, evidence storage, API.
- Weeks 21 to 25: web interface and methodology pages.
- Weeks 26 to 30: evaluation, user sessions, write-up.
Path to a product
The first users are newsrooms and transparency NGOs, who can fund work through grants or pay for custom sources and training. A second route is compliance: companies and banks check suppliers and counterparties and would pay for an API on resolved entities. Keep the public site free and charge for bulk API access, alerts and hosted instances for audit offices.
Scope warning
Do not claim fraud or name individuals as wrongdoers; show flags and evidence only. Do not scrape sites that forbid it; start with officially published datasets. Do not try to cover every country: two sources done carefully beat ten done badly.
Learn what you need on Sefism
- Data Analytics roadmap : the SQL and modelling base the pipeline sits on.
- System Design cheat sheet : batch pipelines, storage and API design trade-offs.
- DuckDB Documentation : the engine Splink can run on locally.
- dbt Documentation : tested staging and indicator models.
- Fundamentals of Data Engineering : ingestion, lineage and serving layers.
Get help with this idea
The biggest risks are choosing sources with too little data and underestimating the labelling work for entity resolution. If you want a second opinion on scope, stack or how to evaluate it before you pitch it to your supervisor, a mentor can help you shape it. You still build it; the guidance is about making the plan realistic and the results defensible. New here? create a free account first.
Ideas and guidance, not finished projects
These are project ideas and scoping guidance, published free for students to use as a starting point. I do not build, write, or sell final-year projects, and I do not complete coursework for anyone. Take an idea, make it yours, and build it.
Not sure this one fits you?
I help students pick an idea that matches their skills and their deadline, then scope it down until it is finishable. Guidance only, never done for you.
Stuck on something specific?
Writing only gets you so far. If you want an answer to your situation rather than the general case, book a session and we will work through it together. Sessions are free for approved Sefism members, and a few slots open each week.
Follow along
New writing, resources and project ideas land here first.