▚ dc complaint radar
signal · rodent reports
same seasonal-anomaly engine, re-pointed at any 311 service type

Where are the rats — is reporting working, and where could we get ahead?

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 ANC Single Member District, labeled by neighborhood, scored causally so "should-have-known" dates are honest.

—

🔥 Hot right now

last ~90 days vs each area's seasonal normal

📈 Trending up

accelerating over the past month

🔭 Early warning

recent spikes flagged weeks before they peaked

—

Pick a hotspot on the map or from the board.

—
reports · last 90d
—
vs seasonal normal
—
best early warning

the analytics behind it

Anatomy of an early-warning signal

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.

01

Ingest

Every geolocated report for the selected signal and its ticket-closure date, straight from DC's live 311 API, back to 2018.

DC Open Data · S0311
02

Locate

Each report assigned to its ANC Single Member District by point-in-polygon, then labeled with its nearest single DC neighborhood so a hotspot reads as a real place.

~345 SMDs · point-in-polygon
03

Seasonal baseline

Expected count = the same week-of-year in prior years. Kills the "everything spikes in July" false alarm.

±3-week window
04

Trend correction

A trailing multiplier tracks each area's current trajectory, so a decade of growth isn't a permanent alarm.

adaptive level
05

Causal scan

Week 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-ahead
06

Response check

Do ticket closures drive future reports below baseline? A partial correlation (controlling for current levels) separates the response's effect from regression-to-mean.

closures → future excess

Built with PythonANC SMD polygonsShapely PIPNumPy Leaflet + heatChart.jsDC Open Data API

Detection per ANC Single Member District (345 active) labeled by nearest neighborhood; heatmap at H3 res 9. One script re-points the engine at any 311 service code. Response effects are observational — suggestive, not proof. Aggregate DC public-records data; not an official city agency signal.

Aggregate DC public-records data from DC Open Data (ArcGIS). Detection + visualization are experimental.