01 · Professional Work
AquaWatch Water Risk Ranking
Ranking water risk for every municipality in Ceará, Brazil, and showing how far to trust each score
Business value
All 184 municipalities ranked into 55 Critical, 65 High, 40 Medium and 24 Low tiers, with a verification table that tells field teams where to check first.
01 · Business problem
Field teams needed to know which of Ceará's 184 municipalities faced the highest water risk, but 142 of them (77%) had no utility records. A simple ranking would have hidden how uncertain it really was.
02 · My approach
I joined census, utility and satellite data in one reproducible pipeline, normalized risk by percentile rank instead of min-max scaling so outliers like Fortaleza and Jaguaribara could not distort the index, and let K-means find natural tier breakpoints instead of imposing policy thresholds.
03 · What I built
A 13-step Python pipeline over IBGE Census, SNIS utility and JRC satellite data, zonal statistics on 338MB of raster tiles with Rasterio and GeoPandas, a 0.05 to 0.774 risk index, K-means tiers, a 3-dimension confidence framework, worst-case sensitivity analysis, and a verify_priority field for a dispatch-ready verification table.
What changed my thinking
The corrections, tradeoffsand decisions behind it.
- 01
The missing data was the finding
77% of municipalities had no utility records. Instead of quietly filling the gap, I built a confidence framework, and it flagged none of the 55 Critical ratings as high-confidence.
- 02
Min-max scaling would have misled
A few extreme municipalities would have squeezed everyone else together, so I normalized every risk variable by percentile rank.
- 03
Tiers came from the data, not a policy line
K-means (k=4) found natural breakpoints, and a worst-case sensitivity test (0% coverage imputation) checked how stable each tier was before anything reached the field.
