Methodology
How the Civic Health Score is built
Every input, weight, threshold and known weakness, published in one place. A score that judges a municipality has to be reproducible by the people it judges.
The principle
One number per ward, recomputed hourly, on a fixed 0–100 scale. The scale never moves and it is never normalised against the other wards in view — a 58 means the same thing in Whitefield as it does in Hadapsar, and it means the same thing this month as it did last month. That is the only property that makes the figure usable in a review meeting.
Nothing on this platform is scored against a target a municipality did not agree to. The inputs are service outcomes a citizen can observe and a department already measures.
The formula
Per ward, the score is the inverse of a normalised weighted sum of five inputs. The inversion is what makes 100 good: every raw input is a measure of failure.
Score = 100 − normalise( Σ wᵢ · fᵢ )
where f₁ = issue_density (open reports per 1,000 residents)
f₂ = severity_weighted_backlog (Σ severity of open reports)
f₃ = median_resolution_time (hours, from submission to closure)
f₄ = sla_breach_rate (share past the published window)
f₅ = dispute_rate (closures a citizen reopened)
normalise() maps each fᵢ onto 0–1 against a fixed reference range
published per state, not against the current ward set.Fixed reference ranges matter more than they look. If each input were normalised against the wards currently in scope, adding one badly performing ward to the coverage list would raise every other ward's score without a single thing improving on the ground.
The five inputs
- Issue density
- Open citizen reports per 1,000 residents. Population-normalised, so a large ward is not penalised for being large.
- Severity-weighted backlog
- Each open report carries a severity from 1 (minor) to 5 (severe). A single collapsed manhole should not weigh the same as a single faded road marking.
- Median resolution time
- Median, not mean, from submission to published closure. A mean is distorted by a handful of very old items in a way that flatters the wrong departments.
- SLA breach rate
- The share of reports still open past the service window published for that category. Where a municipality has not published a window, the state default applies and the substitution is recorded on the department row.
- Dispute rate
- Closures a citizen reopened. This is the input that stops the score from being gameable by closing tickets: a closure that did not fix anything costs more than leaving the report open.
Weights and bands
Weights are published per state and revised on a quarterly cycle with the revision dated. They are not adjusted between reviews, and never in response to a particular ward's result.
The four score bands are fixed:
- Good — 75 to 100. Performing well. Service windows are broadly being met.
- Fair — 65 to 74. Monitor. One or two components are dragging.
- Needs attention — 50 to 64. A structural problem in at least one service.
- Critical — 0 to 49. Escalate. Multiple services below their published windows.
Bands appear everywhere as an icon plus the word plus a tint, never as colour alone. That is a WCAG 2.1 requirement (SC 1.4.1) and it is also just correct for a document that gets printed in greyscale and pasted into a file note.
Service components
Six services are scored separately on the same 0–100 scale — roads, water, sewage and drainage, electricity, sanitation, and education infrastructure. The ward score is the weighted combination; the component scores are published alongside it, because “58” is not actionable and “roads 42” is.
Early warnings
The early warnings feed publishes forecasts of service failure that crossed a state-specific confidence threshold. Inputs are report velocity against the same ward's own trailing baseline, asset age records where a municipality has shared them, published India Meteorological Department advisories, and recurrence of a previously recorded failure at the same location.
No personal data is a model input. Confidence is back-tested quarterly and the result is published including the misses — a warning that did not materialise stays on the record with that outcome, because an accuracy figure that hides its failures is not an accuracy figure.
Data sources
- Citizen reports. The primary source. Geo-tagged to ward, time-stamped, public from submission.
- Municipal CRM integrations. Where an urban local body has connected its own grievance system, its closures flow in and are marked as department-sourced rather than citizen-confirmed.
- Government open data. Read-only contextual layers from state and central portals, attributed under the National Data Sharing and Accessibility Policy on every derived dataset.
Where a figure is estimated rather than measured, it is labelled as an estimate on the page that shows it. Coverage never expands by estimate.
Privacy and DPDP
The platform operates under the Digital Personal Data Protection Act, 2023. A report's content is public; the reporter's identifiers are not. A name appears only where the citizen chose to give one, and a phone number is never published anywhere on the platform.
Visitors are not segmented by any demographic characteristic. The profile selector records a role — citizen, student, journalist, municipal officer, researcher — because that changes which page is useful first. It does not record gender, age bracket, income or political identity, none of which the platform has a lawful purpose to collect.
Ward detection runs entirely in the browser: coordinates are matched against a city-centroid list shipped with the page and never transmitted. See the privacy policy and DPDP notice for the full statement and the Grievance Officer's contact details.
Known limitations
Publishing these is not a disclaimer exercise. Each one is a real constraint on how far a reading should be pushed.
- Reporting rate is not uniform. A ward with engaged residents generates more reports, which depresses issue density relative to a quieter ward with the same underlying conditions. Population normalisation reduces this; it does not remove it.
- Closure quality depends on the dispute channel being used. The dispute rate only catches bad closures that somebody contested.
- Service windows differ between municipalities. SLA breach rate is comparable within a state and should be compared across states only with the published windows alongside.
- City scores are unweighted means of ward scores. The population-weighted variant is computed and reported separately; the two can disagree in a city with one very large ward.
- Ward boundaries follow the municipality's own published delimitation. After a redelimitation, historical series are held against the old boundary and marked at the break rather than silently restated.
Coverage and roadmap
Current coverage is Maharashtra, Karnataka and Telangana. Coverage expands ward by ward once every component of a ward's score can be computed from published records — see states and cities for the live list. A geographic map view ships once ward boundary files are available under NDSAP for every covered city.
Version history
- v2.4 — current. Added the dispute rate as a fifth input; fixed reference ranges published per state; education added as a sixth service component.
- v2.3 — median replaced mean for resolution time.
- v2.2 — severity weighting introduced on the open backlog.
Methodology version 2.4. Content last reviewed 2026-07-24; reviewed on a quarterly cycle.
Questions about this page? Write to contact@nagrik.in. For a grievance under the DPDP Act 2023, contact the Grievance Officer.