Bengaluru Public Works Explorer Koramangala

About the data

Methodology

How 432 projects were reconstructed from public records, and how every claim stays traceable to its source.

1. Public sources

Collection was rate-limited (about one request per second) and cached. Contractor phone numbers and e-mail addresses were removed before anything was stored. No login, CAPTCHA or access control was bypassed: where a view required a session, collection stopped. See every source file.

2. Discovery

BBMP's public payment grid lists every RTGS-paid work bill in the city since mid-2015 (90,525 bills). Each row is tested with the same scope rules: the work description names Koramangala (including common misspellings and sub-localities), or the job number carries Koramangala's ward prefix for the ward map in force when the job was created, unless the description names another locality. Job numbers repeat across ward maps, so bills whose description belongs to another area are set aside.

3. Entity resolution

Bills are grouped into a project by BBMP job number. Tenders are linked to jobs by scored matching (description, place, ward, work type, dates, contractor), never by a shared number, because none exists. Every link records its supporting and conflicting evidence and its confidence. Contractor name variants are merged only on strong evidence (registration codes, identical names after normalisation, shared contact details used in memory only).

A tender is scored against each job on: description similarity (content words only), same kind of work, same places (block, main/cross, locality), ward numbers across the three ward maps, the awarded bidder appearing among the payees, bills starting after the tender, the amount paid against the tender value, and the engineering division. Each tender links to at most one job; weaker candidates are shown as "possible" and never merged.

4. Truth and provenance

Every fact is confirmed (read directly from a source record), inferred (derived, matched or read by OCR; the reasoning is shown) or unknown (no public source publishes it). Facts never overwrite stronger sources: an IFMS value outranks a typed attachment, which outranks a scanned one read by OCR.

5. Quantity extraction

Schedule B, estimates, bill forms and work slips are read with the native PDF text layer where present, otherwise by OCR, with orientation detection and table-ruling removal. A line item is accepted only if quantity × rate = amount on the printed row. Work-slip rows carry two more checks: executed quantity × rate = actual amount, and tender − actual = savings or excess. Handwritten measurement books are never read as numbers.

6. Signals

Rules flag patterns worth a second look: payments far above a contract, work past its completion date with no final bill, quantities above or below the tendered quantity, identical documents on different jobs, placeholder files, fines. Each signal states its threshold, its evidence and benign explanations. A signal is an observation, not a finding.

7. Investigation case review

Before a signal becomes a case, the system tries to resolve it from the public documents: it fetches variation documents, work slips, final bill forms, work orders and extension-of-time orders, and reconciles them item by item. Each issue ends up explained, an artefact, partially explained, insufficient evidence, or unexplained in the public records examined. Only high- and medium-confidence open questions become cases (5 of 23 reviewed).

8. A signal can disappear when better evidence is found

This is the most important rule. In the case review, most of the strongest earlier signals did not survive. Examples:

See the cases page for the full list of set-aside signals and why.