Live read on DC rat reports: where it's hot right now, what's trending up, which recent surges we could have caught early, and whether abatement is actually driving reports down. Detection runs per hex, labeled by neighborhood, scored causally so "should-have-known" dates are honest.
—
last ~90 days vs each area's seasonal normal
accelerating over the past month
recent spikes we had early warning on
Pick a hotspot on the map or from the board.
Anyone can plot a line that rises in summer. The hard part is separating a real, actionable surge from ordinary seasonality and years-long growth, dating it honestly using only what was knowable at the time, and then asking whether the response actually worked. That's the whole pipeline — and it re-points at any 311 service type, not just rats.
Every geolocated rodent report and its ticket-closure date, straight from DC's live 311 API, back to 2018.
DC Open Data · S0311Each report snapped to an H3 hexagon and labeled with its nearest single DC neighborhood — fine, uniform, no merged clusters.
res-8 hex · 132 nbhd namesExpected count = the same week-of-year in prior years. Kills the "everything spikes in July" false alarm.
±3-week windowA trailing multiplier tracks each area's current trajectory, so a decade of growth isn't a permanent alarm.
adaptive levelWeek t uses only data before t. Fire on an overdispersed-Poisson exceedance or a sustained warm run, then measure lead time to the peak.
z ≥ 3.5 · no look-aheadDo ticket closures drive future reports below baseline? A partial correlation (controlling for current levels) separates treatment from regression-to-mean.
closures → future excessBuilt with PythonH3 hex gridNumPy Leaflet + heatChart.jsDC Open Data API
Detection at H3 res 8 labeled by nearest neighborhood; heatmap at res 9. One script re-points the engine at any 311 service code. Abatement is observational — suggestive, not proof. Aggregate DC public-records data; not an official DPW signal.