About Mumbai Water Intelligence

An open-source water intelligence platform for Indian cities - Chennai and Madurai live, Bengaluru onboarding - built to make public data accessible and actionable.

Sections are collapsed by default. Click any heading to expand it.

What we track for Mumbai

Mumbai is governed by BMC Hydraulic Engineer Department with civic services under Brihanmumbai Municipal Corporation (24 wards). Estimated daily city demand: ~3850 MLD.

Water sources tracked daily

Bhatsa
reservoir - 25,321.9 Mcft full capacityprimary drinking
Upper Vaitarna
reservoir - 8,018.1 Mcft full capacityprimary drinking
Middle Vaitarna
reservoir - 6,834.4 Mcft full capacityprimary drinking
Modak Sagar
reservoir - 4,552.9 Mcft full capacityprimary drinking
Tansa
reservoir - 5,123.5 Mcft full capacityprimary drinking
Tulsi
reservoir - 284.1 Mcft full capacityprimary drinking
Vihar
reservoir - 978.2 Mcft full capacityprimary drinking

Reading this dashboard

How “Days of Water Left” Works

We compute three scenarios based on current reservoir storage, daily consumption, and inflow patterns:

Pessimistic (no rain): Assumes zero inflow. Storage divided by net daily demand (consumption minus desalination).
Current trend: Uses the 7-day rolling average inflow. Storage divided by (demand minus recent inflow).
Seasonal rains: Uses the historical average inflow for this calendar month across all available years.

What each page shows for Mumbai

Home / dashboard

Mumbaiis reservoir-impounded like Chennai - the seven BMC lakes (Bhatsa, Upper and Middle Vaitarna, Modak Sagar, Tansa, Vihar, Tulsi) are the city's tap, so the headline is an honest days-of-supply-left figure rather than an allocation. Bhatsa alone supplies about 48% of the water. Praja Foundation's 2024 audit puts BMC supply at 3,975 MLD against a demand of 4,664 MLD (~15% shortfall); BMC's own stated draw is 3,850 MLD - a different measure of the same system - and that drawdown rate is what the runway divides storage by.

Daily lake levels come from the Maharashtra WRD Pravah dam-safety feed - the official daily bulletin covering 5 of the 7 lakes (~97% of system capacity); Vihar and Tulsi (BMC-owned, in-city, under 3% of capacity) have no public feed. BMC itself publishes no CMWSSB-style bulletin - its Hydraulic Engineer page is a closed portal applet. The lakes sit 30-130 km outside the city; they render as source cards, not map pins.

The headline figure is labelled an upper bound: storage counts the full live water in the five state-owned dams, part of which serves users beyond BMC. And because the Pravah bulletin publishes storage only (no inflows), the rain scenarios other cities carry collapse here to a single at-current-draw figure that states its divisor.

A decade of history; no forecast yet

The history chart spans February 2015 to the present for Bhatsa and Upper Vaitarna - weekly readings recovered from the Central Water Commission's bulletin archive (discontinued May 2025) - and opens on the All-time view. The other three fed lakes have no public archive before July 2026; their record accumulates from the daily Pravah scrape, which also harvests the bulletin's same-date-last-year column so each run adds two years of context. AutoARIMA forecasts (Chennai-style) follow once the daily history banks up. Rainfall pairs IMD's gridded history with a daily provisional layer so the current monsoon appears as it happens, asterisked until IMD confirms it.

Groundwater

Mumbai City and MumbaiSuburban are the only two of Maharashtra's 35 districts left out of the CGWB Dynamic Ground Water Resources Assessment - they are treated as fully urban and never classified Safe / Critical / Over-Exploited. So there is no block exploitation choropleth to show; the absence is itself the finding.

CGWB observation-well overlay + ward depth estimate

What does exist is a point network: 53 CGWB manual dug wells across the metro (25 inside Greater Mumbai, the rest in Thane, Vasai and Panvel/Uran), transcribed from the CGWB Ground Water Year Book of Maharashtra and shown as click-through markers with each well's seasonal depth history. The ward depth view interpolates these wells into a per-ward estimate for the 24 BMC wards.

Seasonal, not live - and not assessed

The Year Book runs four seasonal readings a year (currently to January 2025); Mumbai has no DWLR (telemetric) stations, so nothing here is a live feed. The ward depth surface is an estimate, not a survey - the interpolation method and station count are disclosed on the map, and wards too far from any well render as no-data rather than a guess. The other corporations' wells appear as points only, because their ward boundaries are not published.

Rivers

Four rivers - the Mithi, Dahisar, Poisar and Oshiwara - drawn from OpenStreetMap with their monitoring points. In CPCB's October 2025 assessment the Mithi at Mahim is India's single worst polluted river stretch (Priority I, max BOD 210 mg/l); the other three do not appear in the national list at all - they are barely monitored as rivers, which is its own finding. The Mithi, an 18 km open drain from the Powai/Vihar overflows to Mahim Creek, is the river that overflowed in the 26 July 2005 deluge.

Mithi water quality (2018-2023)

The Mithi station carries a real series extracted from the MPCB 2019 Mithi River Action Plan (2017-18 monthly pH/DO/BOD/FC at Mithi Bridge) and CPCB's National Water Quality Monitoring Programme (2019-2023 annual maxima, via Praja's 2024 report). Maximum BOD rose from 95 mg/l (2018) to 210 (2023) and faecal coliform reached 540,000 MPN/100 ml, far past the bathing norm. MPCB's live portal returns N/A; these numbers come from the report PDFs. The other three rivers (Dahisar, Poisar, Oshiwara) are genuinely not monitored by MPCB or CPCB, so they carry no readings.

Sewage-treatment plants

The map also marks Mumbai's 9 operational MCGM sewage-treatment plants with their capacity and treatment performance (MPCB inventory + Praja's RTI-obtained per-STP inlet/outlet BOD, 2020-2024). Four - Versova, Bhandup, Ghatkopar and Malad - consistently fail the 10 mg/l discharge standard; Malad effectively does not treat at all (2023 outlet BOD 140.6 vs inlet 144.2). Worli, Bandra, Colaba and Charkop are compliant.

Flood risk

Mumbai floods when an intense monsoon cloudburst coincides with a high tide that shuts the city's gravity outfalls and an under-capacity drainage network cannot clear the water - a different driver from Madurai's dam releases, so the page is its own. It maps the 110 flooding spots in BMC's own Disaster Management register (official names, wards and coordinates, each spot tied to an automatic rain gauge - Hindmata, Milan/Andheri/Khar subways, King's Circle and the rest), with the citywide context stated honestly: the 2026 pre-monsoon list counts 496 spots, of which only these 110 are published with locations. Two further toggles carry the reference event and the mechanism: the 26 July 2005 deluge layer (sourced from the Concerned Citizens' Commission record, with reported depths where the record gives one) and the ~350 km OSM-mapped storm-drain and nalla network - real geometry, but community-traced, not BMC's BRIMSTOWAD as-built survey.

Data we don't have

iFLOWS-Mumbai, the city's integrated flood-warning system, was built with public money but briefs officials only - no public dashboard or API. The BMC publishes no open BRIMSTOWAD stormwater-drain GeoJSON and no modelled hazard-zone / return-period polygons. The best openly available flood-precursor is the IITM Mumbai-rain mesh, India's only city-scale polarimetric-radar rainfall network.

My Ward / Report Card (in build - not yet live)

Ward-boundary map for the 24 BMC administrative wards (A..T), not the 227 electoral wards - those exist only as SEC PDFs with no open geometry. Click a ward for its code, locality, area and a link into the rankings.

Ward risk composite (risk_v2_mum)

Because Mumbai is excluded from the CGWB groundwater assessment, the Chennai / Bangalore groundwater-led ward composite is not honest here. Mumbai's defining water risk is service equity - the citywide average supply is just 5.37 hours a day, and only one ward in 24 gets 24x7 (Praja 2024) - plus monsoon flooding. The composite is equity-first:

FactorWeightDirection
Water-supply deficit (per-ward avg hours/day, Praja 2024)50%Fewer hours = higher risk
Chronic flood exposure (hotspots in ward)30%More spots = higher risk
Priority-I river burden (river length in ward)20%More polluted river = higher risk

The supply-hours factor uses the real per-ward averages from Praja's 2024 report (Table 4) - from C / Marine Lines at 1.53 h/day to T / Mulund at 24 h - replacing an earlier slum-area-share proxy (still computed and shown as context). Each factor is converted to a city-wide percentile, weighted and summed; composite ≤20 = A, ≤40 = B, ≤60 = C, ≤80 = D, >80 = F. The worst-graded wards (Matunga/Sion, Goregaon, Bandra West) combine low supply hours with chronic flooding; the best is T / Mulund (24x7).

Water facts

Journalist-ready, sourced facts grouped by category - supply, water equity, groundwater, rivers, floods, and coast & wetlands. Today Mumbaiships 21 hand-curated facts, each with a source URL: the supply-demand gap, 34% non-revenue water (BMC audit, 2024), the building-level connections denominator, the slum/non-slum LPCD gap and the one ward in 24 with 24x7 supply, the groundwater-assessment exclusion, the Mithi as India's worst river stretch (CPCB, Oct 2025) and Powai's sewage load, the 26/7/2005 deluge, the locked iFLOWS model, the climate budget's flood bill, and the mangrove / salt-pan / Mahul / Gargai signature stories.

Water bodies & catchments

OSM water-body polygons plus a lost-tank inventory and restoration priority scoring, with the Catchments view (FABDEM terrain-derived) making every lake clickable for its contributing area, feeder streams and downstream flow path - the same pipeline as the other cities. Powai's NGT record anchors the restoration entries.

Shoreline

The same satellite shoreline-change measurement as Chennai (MNDWI transects, Landsat + Sentinel-2), west-coast orientation. No rate-publishing study exists for Mumbai, so the measurement is corroborated against the official record instead: NCCR's 1990-2016 district table and the 2017 Shoreline Management Plan risk grades.

Allocation Ledger

Who is owed what water: 15 arrangements (source → authority → recipient) across the metropolitan region with entitled vs received, the instrument each rests on (WRD Government Resolutions, STEM board minutes, the MMRDA Annual Report) and a confidence grade. Ten of the fifteen carry the "unreported" verdict - a quota exists on paper but nobody publishes what actually flows - which is the ledger's central finding about how the region's water is governed.

Commitments Register

Nineteen dated commitments by named institutions - wastewater-facility commissioning dates from BMC's own climate budget and ESR, the Gargai / Kalu / Manori source projects, BRIMSTOWAD, flood-spot mitigation - each checked against time. Statuses change only with a dated citation; when a date slips, the old one stays on the record. Cross-linked with the Allocation Ledger entry-to-entry.

Origins

The four-chapter water history - seven islands with no river, the first pipe at Vihar (1860), hydraulic citizenship, and 26/7 with the forty-five litres - with five licensed archival and contemporary images whose provenance is recorded file-by-file in the repository manifest.

See also the dedicated Chennai about page (/about) for the canonical methodology pattern this follows. My Ward is the one page still in build for Mumbai; it will be documented here when it ships. Linked from /mumbai/facts.

Intelligence & AI narratives

Daily AI briefings, longer-form weekly narratives, and per-ward AI profiles are pending for Mumbai- the underlying summary stores aren't yet multi-city. Until those land, the page surfaces raw data without an AI commentary layer.

Daily briefing Template-based briefing (no LLM) summarising current storage, 7-day delta, days-of-water-left, and high-risk ward count. Pending for Mumbai.
CityStory narrative Anthropic Claude API generates a longer-form weekly narrative grounded in the latest data. Pending for Mumbai.
Per-ward AI profile Monthly Claude-generated micro-narrative per ward. Pending for Mumbai.

Cascade reconstruction methodology - Mumbai

Mumbai's tanks were once organised into chained cascades (system kanmoi): water from upper tanks overflowed through feeder channels into lower tanks, which fed the next, and so on. Most cascade channels are now broken by encroachment. The cascade overlay surfaces a terrain-derived hypothesis of how the cascade structure should have been organised, given the actual elevation and flow direction of the land.

See cascade health scores: Tank cascades at risk - Mumbai ranks every documented and auto-derived cascade by fragility + priority, with citations and court / restoration anchors where known.

What you are seeing

  • Sky-blue circles (297 tanks): one per OpenStreetMap water-body polygon at least 1 ha in size. Size encodes cascade depth (deeper-in-the-chain tanks render larger).
  • Sky-blue lines (110 edges): predicted tank-to-tank cascade links. Each upstream tank has at most one outflow.
  • Amber lines (27 outflows): tanks whose flow direction points to a river within ~2 km, modelling the river itself as the terminal sink.

Inputs

  • Tank polygons: OpenStreetMap water=* features.water_type in {river, canal, stream, drain, ditch, wastewater} is excluded so river segments don't get treated as tanks.
  • Elevation: WWF/HydroSHEDS/03CONDEM- HydroSHEDS conditioned DEM at 3 arc-second (~90 m) resolution. "Conditioned" means sinks have been pre-filled so flow routing behaves predictably.
  • Flow direction: WWF/HydroSHEDS/03DIR - the corresponding ESRI D8 flow-direction raster. Each pixel encodes which of its eight neighbours water drains to.
  • River barriers: the {city}-rivers.geojson we already use on the map.

Algorithm (per tank)

  1. Compute centroid; sample DEM elevation and D8 flow direction at that point in a single batched Earth Engine call.
  2. Find all other tanks within 3 km whose elevation is lower.
  3. Reject candidates that fall outside ±67.5° of the upstream tank's flow-direction bearing - terrain-aware directionality, not just "is downhill".
  4. Reject candidates whose straight-line edge would cross a mapped river segment - water doesn't flow across rivers.
  5. Pick the single steepest remaining candidate (elevation drop / distance) as this tank's outflow.
  6. For tanks with no tank-to-tank outflow but a flow direction pointing to a river within 2 km: mark drains_to_river and draw an amber arrow to the nearest in-cone river point.

What this is NOT

  • Not a registry of historical channels.We don't claim that any specific cascade link historically existed; we claim the terrain would have organised water this way.
  • Not full hydrological flow accumulation.A stricter approach would trace flow paths pixel-by-pixel through the DEM. We use a "downhill within a flow-direction cone" heuristic that's correct for most obvious cases but can miss subtle terrain features that aren't river-mapped.
  • Not a real-time water transport model. Edge existence does not imply current water flow.
  • Not a model of any inflow that isn't tank-to-tank. Reservoirs receive water from at least four sources that this graph cannot represent: (a) direct rainfall on the lake surface, (b) catchment runoff via unmapped channels and overland flow, (c) the river the reservoir dams (rivers are deliberately excluded from cascade nodes), and (d) engineered canals, pipelines, and trans-basin diversions. A reservoir showing 0 cascade inflows here is not isolated in real life - Chembarambakkam Lake, for example, is fed by all four kinds of inflow (its 71.6 km2 Adyar catchment, the upper Adyar itself, plus Krishna water via the Kandaleru-Poondi canal and Cauvery water from Veeranam) yet none of those appears in this layer. The cascade graph is solely about tank-to-tank structure derived from terrain.

Known limitations

  • DEM resolution ~90 m. Adequate for district-scale cascade structure; may miss very small channels. In flat terrain (e.g. coastal Chennai) elevation differences often round to the same integer metre, so the flow-direction cone does most of the work.
  • Single outflow per tank (default). Real tanks often have one feeder channel and one separate surplus channel; the V1 algorithm models only the steepest candidate edge per upstream. A per-district allow_multi_outflowopt-in relaxes this and keeps near-tied candidates (within 30% of the best score by default), modelling tanks with both feeder and surplus. Off by default for Mumbai; we plan to enable it for plateau-geography districts where terrain gradients are weaker and multi-branch cascades are documented in the historical record.
  • River-coverage gaps. The river-crossing barrier is only as complete as the OSM river polylines. Where the polyline is sparse, edges may slip through.
  • Edges are labelled predicted only. A future iteration will cross-check predicted edges against OSM waterway=* tags and Sentinel-1/2 monsoon imagery, then label each edge as intact / partial / broken / encroached.
  • OSM water_type=reservoir is ambiguousin this region. In Madurai roughly 87% of cascade nodes carry that tag, including many traditional kanmoi tanks that historically fed downstream cascades. The algorithm therefore does NOT auto-classify reservoirs as terminal sinks. A per-district curation hook (terminal_sink_osm_ids) exists for marking specific known engineered reservoirs (large dams whose outflow is via spillway / canal rather than via gravity to another tank); it is currently empty pending validation against TN PWD / DHAN inventories.

Reading cascade_position = 1: headwater, not source

Tanks at cascade_position = 1have no tank-to-tank inflow in this graph. They are the shallowest nodes in the network, not the literal source of water in the basin. Real inflow into these tanks comes from rainfall on the lake surface, surface runoff from the surrounding catchment via channels not in OpenStreetMap, and (in dammed basins) the river itself - none of which are modelled here.

We call these headwatertanks rather than "sources" to avoid implying the cascade graph accounts for where water actually originates. A reservoir with cascade_position = 1 is not isolated from rainfall and runoff; it just sits at the top of whatever tank-to-tank chain the terrain organises.

Edge confidence

Each predicted edge carries a confidence field bucketed by its score_m_per_km (elevation drop normalised by edge length). Thresholds:

  • HIGH(≥ 5 m/km): a clear downhill gradient unambiguous even given HydroSHEDS 90 m elevation noise.
  • MEDIUM(1-5 m/km): plausible cascade link with moderate confidence. Most kanmoi-cascade edges fall here.
  • LOW(< 1 m/km): below 0.2 m drop per 200 m. Near the noise floor of the conditioned DEM; the edge may be terrain noise as much as real flow.

For Mumbai: 58 high (53%), 38 medium (35%), 14 low (13%).

Isolated tanks: why each one is isolated

A tank is "isolated" in this graph when it has no tank-to-tank inflow, no tank-to-tank outflow, and no river sink. The pipeline re-walks the candidate-evaluation gates for each such tank and stamps it with one of these reasons, surfaced in the on-map hover tooltip:

  • elevation_sampling_failed- the HydroSHEDS DEM returned no value at the tank's centroid, so the algorithm has nothing to compare against. Usually data-coverage at the DEM's 90 m resolution boundaries.
  • no_neighbors_in_range- no other tanks within the 3 km radius the cascade window uses. Real geographic effect, common on the rural fringe of the district.
  • all_neighbors_uphill - in-range tanks exist but every one of them is at a higher elevation. The tank sits at a local basin low; water has nowhere downhill to go through the tank network in this window.
  • all_neighbors_out_of_cone- downhill tanks exist in range, but all sit outside the ±67.5° cone aligned with the upstream tank's D8 flow direction. The terrain wants water to go somewhere other than where the nearest downhill tank is.
  • all_neighbors_river_blocked - downhill, in-cone, in-range tanks exist, but every edge to them would cross a mapped river LineString. May indicate either real river-cut isolation or a gap where the OSM river polylines are over-segmented relative to ground truth.
  • unknown_isolation - defensive fallback. Should be empty in practice.

What you can use it for today

  • Spot likely historical hubs: tanks with high in-degree are where multiple terrain-driven flow paths converge. Maximum cascade depth in Mumbai is 5.
  • Surface river-front tanks: anything with an amber outflow is a tank that drains directly into a river - useful for restoration prioritisation since the ecological functions differ from internal-cascade tanks.
  • Identify isolated tanks: tanks with neither inflow, outflow, nor river sink carry an isolation_reason field distinguishing genuine basin orphans from data-coverage gaps. See the bucket-by-bucket breakdown above.

Lake catchment atlas methodology - Mumbai

The cascade overlay answers "which tank drains into which". The catchment atlas answers the prior question: where does each lake's water come from. Every lake sits at the bottom of a catchment - the land whose rain drains toward it. Click any lake on the Catchments view and we draw its area of influence: the catchment polygon, the feeder streams inside it, the tanks upstream and downstream, and where its overflow finally reaches a river.

What you are seeing

  • Orange (solid): the lake's own / direct catchment - the land that drains straight into it before reaching any other tank.
  • Amber (dashed): the inherited basin upstream - catchment that drains in via other tanks. Own + inherited = total upstream basin.
  • Blue lines: feeder streams, width graded by Strahler order (trunks thicker than first-order rills).
  • Violet dotted line: the downstream flow path- how the lake's overflow actually runs through the channel network, lake by lake, until it reaches a river.

Inputs

  • Elevation:FABDEM (Forest And Buildings removed Copernicus DEM) at 30 m. This is a bare-earthsurface - buildings and tree canopy are removed - so water routes over the real ground rather than over rooftops, which matters in dense urban terrain. (The cascade graph uses coarser 90 m HydroSHEDS; the atlas deliberately uses the finer DEM.)
  • Lake polygons: OpenStreetMap water=* features, the same set the water-bodies map uses.
  • Buildings: Overture Maps building footprints, for the rooftop-harvest estimate.
  • Rainfall: India Meteorological Department (IMD) long-period annual normals for the district.

How the catchment is delineated

  1. Mosaic FABDEM over the district (buffered so edge catchments close), then condition it with WhiteboxTools breach_depressions_least_cost (preferred over fill in cities - it preserves channels running under roads and culverts).
  2. Compute D8 flow direction and flow accumulation; extract a stream network and assign Strahler order; vectorise the streams and smooth them (Chaikin corner-cutting) so they trace the natural curved channels rather than blocky raster steps.
  3. For each lake, trace the contributing area upstream from its footprint. The own (direct) catchment is the upstream trace that stops at the next water body - the land draining to this lake before any other tank intercepts it. Removing that barrier gives the total upstream basin; the difference is the inherited area. This is threshold-free: there are no impound-vs-transit tuning knobs.
  4. Downstream:from the lake's outlet (its highest-accumulation boundary cell) follow the channel by always stepping to the highest-accumulation neighbour until it enters another water body; chaining those hops along the cascade gives the full downstream flow path to the river.
  5. Rooftop harvest: clip Overture footprints to the own catchment, then rooftop area × annual rainfall × 0.8 (0.8 runoff coefficient), reported in million litres per year.

Naming the lakes and rivers

  • OpenStreetMap names many water bodies but leaves a large share unnamed (in Mumbai the OSM gap is substantial). Where an authoritative open dataset exists - for Bengaluru, the ATREE/CSEI named-lake census published on OpenCity - we attach the real toponym by polygon overlap and tag it name_sourcewith a match confidence. OSM-native names are never overwritten, and a small pond sitting inside a large lake's outline is notgiven that lake's name (a wrong name is worse than a blank one).
  • The river a lake drains into is named by snapping its downstream flow path to the nearest mapped river (within 0.5 km). Lakes whose path stays far from any named river - because they flow off the edge of our coverage - honestly show no named river rather than a guess.

What this is NOT, and known limits

  • Not a substitute for a surveyed catchment.A 30 m bare-earth DEM resolves urban catchments well but misses sub-cell culverts, storm drains, and engineered diversions that move water against the natural terrain.
  • Bounded by our map extent. A lake near the edge can drain to a reservoir or river outside the area we model (for example a southern Bengaluru tank flowing toward the Krishnagiri reservoir, which is off-map). We trace the flow path correctly but cannot name a sink we do not hold.
  • Rivers are conduits, not catchments. Named rivers/canals are excluded as lakes; very elongated polygons with a huge catchment-to-area ratio (river segments mis-tagged as water bodies) are filtered out.
  • Rainfall is a long-period normal, not the actual rainfall of any given year, so rooftop-harvest figures are a typical annual potential, not a measured yield.
  • Backfilled names are a join, not ground truth. They carry a source tag and a match confidence; treat low-confidence matches as provisional.

Data sources for Mumbai

All operational data is collected by the Python pipeline and supporting scripts that power the dashboard. Raw source data and Earth Engine summaries are upserted into Supabase (PostgreSQL) and then exposed as small, readable product signals.

Reservoir & weather

Free, no-auth daily weather data: precipitation, temperature, humidity, ET0, wind. ECMWF / ERA5-Land base.

India Meteorological Department 0.25-degree gridded rainfall, 1970-present. Used for monsoon-context overlays.

Groundwater

Daily and seasonal manual + telemetric (DWLR) groundwater readings from the Central Ground Water Board's National Hydrograph Network.

Annual block-level Dynamic Groundwater Resource Assessment (Safe / Semi Critical / Critical / Over Exploited).

Water bodies & restoration

OpenStreetMapstatic (refetch as needed)

Base geometry for water-body polygons and the rivers polyline.

Rivers & pollution

Flood & civic infrastructure

Civic-infrastructure layers (drainage / sewerage / flood hazard) are city-specific. See Chennai's about page for the canonical layer registry.

Satellite & remote sensing (planned)

Per-water-body wet/dry history from satellite. Pipeline ready; data layer pending for Madurai's 19 flagships.

NDWI thumbnails + change detection per flagship. Pending for Madurai.

Catchment polygons for Vaigai dam and its sub-basins, used to ground catchment-rainfall context. Pending wiring for Madurai.

Base geometry & AI

Anthropic Claude APIdaily / monthly

AI city narratives and per-ward profiles. Pending for Madurai.

Data quality & limitations

How we classify river health

CPCB publishes two parallelriver-water-quality classification systems, and they don't always agree. Knowing which one we use - and why - matters for reading our river status badges honestly.

Designated Best-Use classes (A-E)

Computed from current dissolved-oxygen, BOD and coliform thresholds at each NWMP station. Updates every reading. Class A = drinking with disinfection only; Class B = outdoor bathing; Class C = drinking with conventional treatment; Class D = fisheries/wildlife; Class E = irrigation only. Below E = practically dead.

Polluted River Stretch (PRS) Priority I-V

A historical, multi-yearstretch-level designation reflecting cumulative pollution. Slow to update; once a river stretch is on the Priority list it tends to stay there even if recent readings improve. Priority I = worst (BOD > 30 mg/L sustained); Priority V = least bad of the polluted stretches.

Our status badges ("dead", "severely degraded", "degraded", "stressed", "healthy") are computed from current readings via the Designated Best-Use thresholds- not from the PRS Priority list. We take the worst classification across a river's monitored stations and surface that as the river-level status.

Practical consequence: a river on CPCB's PRS Priority list (e.g. the Madurai-Manamadurai stretch of the Vaigai is Priority III) won't automatically render as "severely degraded" here. If the underlying NWMP readings show only Class C/D conditions, the badge reflects that. The PRS designation belongs in the river description as historical context, not as the live status.

Methodology lives in src/lib/utils/river-classification.ts; readings are from CPCB NWMP annual River Water Quality reports.

Known Limitations

  • Estimates are approximations. Actual water availability depends on factors not modeled (groundwater extraction, Krishna water transfer, distribution losses, industrial use).
  • CMWSSB data may occasionally be stale (weekends, holidays). The dashboard shows a freshness indicator.
  • Groundwater data from OpenCity may lag by months. The map always shows the most recent available period.
  • Forecasts use ARIMAX (AutoARIMA with inflow/outflow as exogenous regressors) and work best with 2+ years of daily data.
  • Risk scores are relative indicators for comparison between wards, not absolute measures of water safety.
  • Satellite spread is a summary of surface water extent, not a direct measure of storage volume, water quality, or inflow source. A lake can look broad and still hold less usable water than expected.
  • Reservoir catchment polygons are reviewed operational geometries for rainfall context, not official legal boundaries. This matters especially in Chennai's managed canal and transfer system.
  • Current satellite context relies on optical Sentinel-2 observations. During persistently cloudy periods, some water bodies may temporarily lose this insight until a radar fallback is added.

About the project

Disclaimer

Not an official government tool. Neer Vazhvu is an independent, open-source project. It is not affiliated with, endorsed by, or connected to CMWSSB, GCC, CGWB, or any government body.

Informational purposes only. All data, estimates, and forecasts are provided “as is” for general awareness. Always refer to official CMWSSB advisories for critical decisions.

No personal data collected. Neer Vazhvu does not collect, store, or process any personal information. There are no user accounts, cookies, or analytics trackers.

Open Source

Neer Vazhvu is fully open source. The code, data pipeline, and methodology are transparent and available on GitHub. Contributions, bug reports, and data corrections are welcome.

View on GitHub

Support this project

Neer Vazhvu is free and open source. If you find it useful, consider supporting us on Patreon to help cover satellite data, hosting, and API costs.

Support on Patreon