Methodology
How Mumbai Roads Monitor turns BMC's public road data into the numbers on the site. Every rule
here is implemented in code under src/lib/data/; the reasoning behind each choice is in
decisions.md. Figures quoted are from the 19 October 2026 snapshot.
Where the data comes from
- Road projects: BMC's public roads dashboard (
roads.mcgm.gov.in). Each record is one stretch of road with a contractor, ward, length, status, start date, and end date. - Road shapes: BMC's road layer on the same dashboard, matched to projects (see Map shapes).
- Open tenders: the Municipal Corporation of Greater Mumbai listing on
mahatenders.gov.in(see Tenders).
We download everything once a day at about 08:00 IST. We do not edit BMC's values. We only tidy contractor names (so "M/s N.C.C Ltd" and "M/s NCC Ltd. W-421" count as one company), standardise ward codes, and set aside dates that are obviously wrong (see Dates). "Today" always means today's date in India.
Dates
- End date is the deadline BMC set for that road. It is usually a season target: 44% of all end dates fall on 30 or 31 May, the pre-monsoon cut-off. In 23 daily snapshots since 4 July 2026, BMC has never changed an end date.
- Start date is whatever BMC currently records. BMC fills it in, usually with an earlier date, when a road moves to In Progress or Completed, and clears it when a road goes On Hold or is Deleted. It is not a record of when work began, and we never use it to judge lateness.
- Malformed dates — a year before 2015 or more than three years after the refresh, such as
0206-03-28or0001-01-01— are excluded from every calculation and shown as "N/A (malformed source date)". The raw value is kept and listed inmeta.json.
Road statuses
Each road gets one status, worked out from BMC's own status and dates every time the page loads.
| Map colour | Status | Rule |
|---|---|---|
| Red | Overdue | BMC says In Progress, today is after the end date, and BMC's progress data does not show the road finished. |
| Blue | Awaiting closeout | BMC says In Progress and the end date has passed, but BMC's progress data shows the final concrete layer (PQC) at 100%, or records a PQC completion date that is not in the future while PQC is at least 95% or unreported. The work looks done; BMC has not marked it Completed. |
| Green | Active | BMC says In Progress and the end date has not passed. Roads with no end date at all (15 today, 10.9 km) are counted here because there is no deadline to be late against; their detail panel says so. |
| Orange | Not Started | BMC says Not Started. When the end date has also passed (49 roads today, 11.0 km) the road is flagged "deadline passed" but not counted as overdue — see below. |
| Cyan | Completed | BMC says Completed. BMC publishes no completion date, so we cannot say whether it finished on time. |
| Yellow | On Hold | BMC says On Hold. |
| — | Deleted | BMC says Deleted. Excluded from every map, count, and list, but kept in the history ledger and on the deleted roads page. |
Why a progress photo does not count as finished. BMC uploaded its road photos in bulk, between July and August 2025. They appear on 67 of 185 active roads and even on a road BMC still lists as Not Started, so a photo shows a site visit, not completion. Photos are shown as "Progress photo (BMC)".
Why "Not Started, deadline passed" is not counted as overdue. End dates are season targets shared by batches of roads that are at very different stages, so a passed batch deadline does not show that this particular road was due. BMC's Not Started status is also often out of date: of the 9 past-deadline Not Started roads whose status later changed, 7 turned out to have start dates before their deadline (the other 2 were deleted). And BMC gives no reason when a road does not start (a pending permission, a utility shift). We show the flag on the map panel, in contractor dossiers, in the Not Started count's explanation, and in the CSV, but it does not raise anyone's overdue figures.
Why "overdue" is mostly "missed 31 May". 81 of today's 107 overdue roads had an end date of 30 or 31 May 2026, across 8 contractors. That is the deadline BMC set for those roads, so we report it as such; the site never claims it was the contractor's own contract date.
Numbers on the dashboard
- Days overdue: whole days since the end date. A road is not late on its end date itself.
- Disrupted km: total length of Active and Overdue roads — roads that are physically under works. Awaiting closeout, Not Started, On Hold, and Completed roads are not included.
- Contractors: distinct contractors among the roads currently in view.
- Excluded from statistics: Completed records whose start date is in the future, or after their own end date (5 today). They contradict themselves, so they stay on the map with a note but are left out of every count and dossier. In Progress records with the same problem keep counting, because the road works are real.
Contractor dossiers
- Overdue share = overdue roads ÷ (completed roads + overdue roads). It describes today's backlog. It is not an on-time rate: BMC publishes no completion dates.
- km delivered = total length of roads BMC lists as Completed.
- Not Started (past BMC's deadline) is shown as a separate line, not added to overdue.
- Ward and contractor filters narrow a dossier; status filters do not, because a status-based figure computed over a status-filtered list would only repeat the filter.
Monsoon deadline
The monsoon deadline is 31 May of the current year. After it passes, "Past monsoon deadline" lists overdue roads whose end date was on or before 31 May. From 1 January to 31 May the filter is empty until the new deadline passes; during that window the monsoon report lists roads due before the coming monsoon instead.
Map shapes
BMC's road layer is a separate dataset. We match each shape to a project by road name, ward, and start date. If that finds nothing, we try road name and ward alone, and accept it only when exactly one project fits (168 of 2,003 matched shapes today). Any ambiguous match is refused rather than guessed. 91% of listed projects (1,974 of 2,165) have a shape; the rest appear in lists and counts but not on the map. Identical repeated shapes are drawn once.
History ledger
public/data/ledger.json is the site's memory of BMC's records, started on 4 July 2026 and
rebuilt from every daily snapshot since.
- Every project ever seen keeps one permanent id, so a shared
?road=link keeps working when BMC rewrites the road's start date, renames it, or corrects its ward. - Every change BMC makes to a road's status, start date, end date, contractor, name, or ward is logged with the date we first saw it.
- When BMC deletes a road, the ledger keeps the record as it stood the day before. The deleted roads page lists every deletion since tracking began, with the road's status at the time (34 so far; one was overdue at 52% done). Deleted is not always final: 5 roads BMC deleted came back, usually as Completed.
Records are matched across days using, in order: the same record and end date; the same road name, ward, and end date; the same record; the same road name and ward; and finally the same contractor, end date, and length with either the same ward or the same name (renames and ward corrections). Each step only pairs records that are unique on both sides.
Tenders
The Tenders tab lists open tenders from BMC's Roads & Traffic Department on
mahatenders.gov.in. Ward-office works and the Traffic sub-department (parking, signals) are not
included. Tenders are not linked to the roads on the map.
We read only the public listing and tender pages any visitor can open without logging in or
solving a CAPTCHA: about ten requests a day, half a second apart, identifying the site by name.
The portal's robots.txt asks automated clients not to crawl it; we treat a small daily read of
public procurement notices as reasonable use and will stop if the portal asks.
The tab shows open tenders only. Tenders that closed since the last check are listed separately; a day with no open tenders says so; and if the tender data could not be loaded, the tab says it is unavailable rather than showing an empty list.
What this site cannot tell you
- Whether a finished road was finished on time (BMC publishes no completion dates).
- Why a road is late, on hold, not started, or deleted (BMC publishes no reasons).
- What any road cost (BMC's road records carry no money).
- Whether a finished road stays pothole-free (BMC publishes no complaint data).
See bmc-data-gaps.md for the gaps in BMC's own reporting.