Socrata API · DuckDB · Power BI · 8 charts · Plotly map

A 7.5-point equity gap,
hiding in plain sight inside NYC's 311 data.

Pulled live from NYC Open Data's Socrata API — no login, no Kaggle download. 100,000 latest service requests. The numbers a borough president reads on Monday morning.

SLA gap between
Staten Island and the Bronx
Sample
100,000
latest requests
Citywide SLA
80.2%
hit rate
Median resolution
4.4 h
across 14 agencies
Complaint types
160
normalized
The finding

Slower and worse SLA in the same borough.

Staten Island hits its SLA 85.0% of the time. The Bronx hits it 77.5%. The same data shows the Bronx's median resolution is more than twice Queens' or Brooklyn's — 8.3 hours versus 3.6.

That pairing — slower and worse SLA — is the kind of signal that turns into a policy ask. Not "we need more staff", but "where are the staff already deployed, and why is the routing logic favoring one borough over another?"

Recruiters haven't seen this dataset on every other resume. It signals the analyst went looking for a real public problem instead of recycling Titanic.

The borough breakdown

SLA hit rate by borough.

Sorted best to worst. The Bronx is the only borough below 80%.

Staten Island
85.0%
Queens
84.3%
Brooklyn
82.9%
Manhattan
80.6%
The Bronx
77.5%
Median resolution
Staten Island: 9.6 h · Queens: 3.6 h · Brooklyn: 3.6 h
Manhattan
3.9 h
The Bronx
8.3 h (worst)
Under the hood

What's inside the repo.

The stack

Built with.

Python 3.12requests + Socrata SODApandasDuckDBPlotlymatplotlib + seabornPower BI spec