Part 2 of 9 in After You Call: A Deep Dive on Philly 311
The 311 Gap Lives in Three Complaints. L&I Owns One of Them.
L&I and two other discretionary complaint categories explain most of Philadelphia 311's 2.6-day income gap. Routine departments are nearly equal.
Streets handles 62% of the 5-agency volume. The discretionary complaint departments — Police, L&I, CLIP — together handle 35%.
If you report a missing handrail from a Center City brownstone, the city takes 49 days to close your case. If you report the same thing from Strawberry Mansion, it takes 84 days. Both are slow. The relative difference is 70%. The absolute difference is over a month.
If you call 311 to report an abandoned car on your block, the median wait is 197 days in a lower-income zip code and 156 days in a higher-income one. The 90th percentile is over 500 days in both. Those are functionally never-resolved cases.
I've personally been on the receiving side of this disparity, during the two years I was living in Strawberry Mansion (19121), one of the poorest Zips in Philadelphia. I had to report two abandoned cars - one took 13 months to resolve and the second car is still there 3 years later, with 3 flat tires, a smashed trunk, and a partially shattered back windshield.
The two examples above are two of the three services that drive the citywide gap. The handrail case is an L&I Maintenance Complaint; the abandoned car is the Police Department's signature service. Both come from the discretionary complaint departments, which together handle 35% of the volume and have gaps of 28 and 41 days. The Streets Department, which handles 62% of all 311 cases, has a 0.8-day gap. The 2.6-day citywide average is the result.
My first article on 311 wait times by income showed a 2.6-day citywide gap: lower-income zip codes wait 7.4 days for a 311 response, higher-income zip codes wait 4.8. That number is an average across nine city agencies. Pull it apart, and the gap is not everywhere. It lives in three complaint categories. The agencies that handle them are all discretionary. The agencies that handle the city's routine, scheduled work have essentially no gap.
I pulled the same OpenDataPhilly 311 data for 2024-2026 and broke it down by agency. Five agencies handle 430,295 of the 481,082 valid non-call-routing requests in the dataset (89%). The other four top-nine agencies — Water, Fire, Homeless Services, and Public Health — don't individually clear the volume threshold. Water and Public Health have too few total cases; Fire and Homeless Services have enough volume but not enough in higher-income zips to draw a meaningful per-agency median. Combined, those four account for 8,545 cases (2% of 5-agency volume) — shown in the “All other” row below.
The Agency Table
Here is every top-9 agency with at least 1,000 cases in both lower- and higher-income zip codes, sorted by median-wait gap. The “Top service gap” column shows the median gap of each agency's dominant service category — for L&I and CLIP it's Maintenance Complaint, for Police it's Abandoned Vehicle. The rightmost column weights each row's gap by its share of volume; all six rows sum to 11.73 days. That is a sum of (agency median gap × share) — a different statistic from the citywide 2.6, which is a per-request median (median of all lower-tier cases minus median of all higher-tier cases). Same per-agency medians feed both numbers, but the two are not directly comparable — see Notes, Sources, and Methodology for why the 2.6 is smaller.
| Agency | Volume | Volume share | Lower median | Higher median | Gap (days) | Top service gap | Volume-weighted gap (sums to 11.73) |
|---|---|---|---|---|---|---|---|
| Police Department | 44,106 | 10.1% | 196.9 | 155.9 | +41.0 | Abandoned Vehicle (40.2) | 4.12 |
| License & Inspections | 68,370 | 15.6% | 57.5 | 29.1 | +28.4 | Maintenance Complaint (34.7) | 4.43 |
| Community Life Improvement | 36,936 | 8.4% | 16.7 | 4.8 | +11.9 | Maintenance Complaint (4.7) | 1.00 |
| Streets Department | 270,115 | 61.5% | 4.9 | 4.1 | +0.8 | Right of Way Unit (5.7) | 0.49 |
| Parks & Recreation | 10,768 | 2.5% | 2.9 | 3.0 | −0.1 | Parks and Rec Safety and Maintenance (8.2) | −0.00 |
| All other | 8,545 | 2.0% | 86.1 | 0.8 | +85.3 | — | 1.70 |
| Total (5 agencies + all other) | 438,840 | 100.0% | 34.3 | 22.8 | 11.7 | — | 11.73 |
n = 438,840 closed requests across six rows (2024-2026). “All other” medians are reference-only and average across heterogeneous services (see Notes, Sources, and Methodology). The 11.73 sum is not the citywide 2.6 — different math. Source: OpenDataPhilly public_cases_fc, filtered to status Closed and service_name ≠ Information Request.
What the Table Actually Says
The Police Department has the largest raw gap: 197 days median for a lower-income request, 156 days for a higher-income request — a 41-day difference. License & Inspections is second at 28 days. Both are big numbers. Both dwarf the citywide 2.6-day average.
But raw gap is the wrong way to think about which agency drives the citywide number. The Police Department is just 10% of 311 volume across these five agencies. L&I is 16%. The Streets Department is 62%. The Streets gap is 0.8 days. Multiply that 0.8 by its 62% share and you get a 0.49-day contribution to the 2.6. Multiply L&I's 28-day gap by its 16% share and you get 4.4 days — about 70% larger than the citywide gap on its own.
So the volume-weighted story is led by L&I. But there is a deeper pattern hiding in the columns, and it is the one I think is actually news.
The Discretionary Pattern
Look at the agencies in the order I just listed them. Police, L&I, CLIP, Streets, Parks. The first three are the city's code-enforcement and complaint-investigation arms. They handle questions like “is this vehicle abandoned?” and “is this building dangerous?” and “is this property a maintenance problem?” Those are calls that require a city worker to visit, evaluate, and decide. They are the categories where the city has the most discretion over whether and when to act.
Streets handles trash pickup, streetlight repair, pothole filling — scheduled, geocoded, mostly automated routing. Parks handles park maintenance, rec center programming — also scheduled. Both have small or zero gaps.
This is the structural finding. The gap is concentrated in the parts of city government where someone has to decide a complaint merits action, not in the parts where the city just runs routes.
Inside L&I: One Service, One Smoking Gun
Drill into L&I. The department gets about 68,000 non-call-routing requests over the 2.5-year span (roughly 27,000 a year). Most of them fall into a small set of service categories. The top three by gap:
| Service | Lower median | Higher median | Gap (days) | Lower n |
|---|---|---|---|---|
| Maintenance Complaint | 83.7 | 49.0 | +34.7 | 19,686 |
| Dangerous Building Complaint | 6.1 | 5.5 | +0.7 | 2,069 |
| Construction Complaints | 7.2 | 6.7 | +0.5 | 4,492 |
Filtered to services with at least 100 cases in both lower- and higher-income tiers. Source: OpenDataPhilly 311 Service Requests 2024-2026.
The 34-day gap on Maintenance Complaints is the entire L&I story. 19,686 lower-income requests waited 84 days median to close. 2,214 higher-income requests waited 49 days. The other two services — Dangerous Building and Construction Complaints — have essentially no gap (under a day each). They also have much faster absolute response times, which is what you'd expect: dangerous-building complaints are emergencies and get treated as such.
What is a “maintenance complaint”? It is the bucket for reports of unsafe or noncompliant conditions at a property that are not immediately life-threatening — broken stairs, missing handrails, peeling paint, structural concerns that aren't an emergency. It is the case type where an inspector has the most room to decide how urgent the situation is. It is also the case type the city has historically under-resourced, because it is the one where a property owner is responsible for the fix and the city's job is closer to monitoring than to acting.
What that means on the ground: if you report a missing handrail from a Center City brownstone, the city takes 49 days to close your case. If you report the same thing from Strawberry Mansion, it takes 84 days. Both of those are slow. The relative difference is 70%. The absolute difference is over a month.
Police: Abandoned Vehicle Is the Whole Story
Drill into the Police Department. Of the 44,000 police-routed requests, almost all of them — 18,758 of the 18,824 in lower-income zips, 2,289 of the 2,319 in higher-income zips — are categorized as “Abandoned Vehicle.” The rest of the police service categories have trivial volume. The 41-day police gap is essentially the abandoned-vehicle gap.
Lower-income zip codes: 197 days median to close. Higher-income: 156 days. The 90th percentile is 515 days in lower-income zips and 512 in higher-income zips, which tells you the distribution has a long, ugly tail of cars nobody ever comes to get.
Why does this matter? Because the police department is the agency that actually has to dispatch a car to a location to verify the vehicle is, in fact, abandoned. The volume in lower-income zips is eight times higher. Either there are eight times more abandoned cars in poor neighborhoods, or the threshold for what counts as “abandoned” gets applied eight times more often there. The data cannot distinguish between those two. The data can say: the 197-day median is functionally a refusal to act, on either interpretation.
CLIP: Maintenance Complaints, in a Different Office
The Community Life Improvement Program (CLIP) is a small unit most Philadelphians have never heard of. Its job is to combat blight: graffiti removal, illegal dumping cleanup, and — relevant here — “maintenance complaints” against residential and commercial properties. It is essentially L&I's quality-of-life twin, sitting under the Office of Clean and Green Initiatives.
CLIP shows the same pattern as L&I, more concentrated. The top service by gap: Maintenance Complaint, 9,568 lower-income requests at 43 days median, 575 higher-income requests at 38 days. The 4.7-day gap is smaller than L&I's, but CLIP's volume is much smaller, and on the 90th percentile the picture is far worse: 91 days for lower-income requests, 21 days for higher-income. The right tail is four times longer.
Two agencies. Two “Maintenance Complaint” categories. Two long gaps. CLIP's graffiti removal, by contrast, has a 0.15-day gap — the closest thing to perfect equity in the dataset. Graffiti is visible, photogenic, and politically easy to assign urgency. Maintenance complaints are not.
The Departments That Don't Show a Gap
This is the part of the analysis I think kills the most common defense.
The Streets Department handles 62% of the 5-agency volume — the largest single operation in the 311 system. Trash collection, streetlight outages, potholes, snow. Its median wait is 4.9 days in lower-income zips and 4.1 in higher-income zips. That's a 0.8-day gap. On a 5-day wait, that's 16%. The 90th percentile is actually slightly better in lower-income zips (65 days vs 73).
Parks & Recreation has a 2.9-day median in lower-income zips, 3.0 in higher-income zips. The gap is negative 0.1 days. Within rounding error of zero. Its 90th percentile is worse in lower-income zips (198 vs 109 days), but at the median the department is essentially delivering equal service.
These are the two largest, most-routinized 311 operations in the city. They have small or zero income-based gaps. The 311 system is not “broken everywhere.” The 311 system is broken in the parts of city government that handle discretionary complaints. The parts that deliver services on a schedule work fine. That is a finding about specific people making specific decisions in specific offices, not about the bureaucracy being generally overburdened.
Volume-Weighted Contribution
Put the gap and the volume together. Here is how much each of the five agencies contributes to the 2.6-day citywide difference, weighting by that agency's share of total 311 volume across these five:
L&I is the single largest contributor at 4.43 days of the 10.04-day weighted sum across the five agencies. Police is right behind at 4.12. CLIP adds another 1.0. The two routine-service departments (Streets, Parks) combined contribute less than 0.5 days.
FYI - for anyone asking why the 11.73 does not match the 2.6 before, they are two completely different numbers: one is a median difference, one is a weighted average mean of median differences. Apples and rocketships.
The SLA Angle
The other way to slice the same data is to look at whether the city meets its own promised response times. Each 311 case has a service notice with a number of days (business or calendar) the city has committed to. Did the city keep the promise?
By this measure, the picture is even sharper. A negative percentage-point gap means the city is meeting its SLA less often in lower-income zip codes than in higher-income ones, even though the promise was the same.
| Agency | Met lower | Met higher | Gap (pp) |
|---|---|---|---|
| Fire Department | 39.6% | 58.3% | −18.7 |
| Police Department | 44.6% | 54.0% | −9.4 |
| License & Inspections | 35.5% | 44.5% | −9.0 |
| Streets Department | 57.6% | 64.0% | −6.5 |
| Parks & Recreation | 73.8% | 78.5% | −4.7 |
| Community Life Improvement | 91.3% | 89.3% | +2.0 |
Met = closed within the promised number of business or calendar days, as stated in the service notice. Source: OpenDataPhilly 311 Service Requests 2024-2026.
The Fire Department has the largest SLA gap at 19 percentage points — but Fire has only 103 SLA-tracked requests in higher-income zips, so the comparison is noisy. Ignore it.
Police and L&I are the meaningful SLA gaps. Both miss their own promised response times in lower-income zips about 9 percentage points more often than in higher-income zips. That is 9% of cases where the city told a lower-income resident “we'll be there in X days” and failed to show up. The promise was the same. The follow-through was not.
The Streets Department has a smaller 6.5-point SLA gap. CLIP actually flips the sign — its 91.3% met rate in lower-income zips is slightly better than its 89.3% in higher-income zips. CLIP does not set its own SLAs, though: those are inherited from the contract terms, and a maintenance complaint is bounded in a way an abandoned-vehicle call is not.
Where the Accountability Sits
Every one of these agencies has a named leader. The accountability is not abstract — but these are also real people managing demanding portfolios, and the gaps above are not their failures alone. I reached out to each of their offices before publishing to invite their account of what the data shows. This section will be updated with what they share.
License & Inspections is led by two commissioners, both appointed by Mayor Cherelle Parker in February 2024 as part of a structural split: Basil Merenda runs the Inspections, Safety and Compliance division; Bridget Collins-Greenwald runs the Quality of Life division. Maintenance Complaints sit in Merenda's division, per the department's published scope. That division shows the single largest service-delivery inequity in the city.
Police Department is led by Commissioner Kevin Bethel, also a Parker appointee. The abandoned-vehicle workload falls under his command. The 197-day median in lower-income zips reflects how abandoned-vehicle calls are triaged.
Community Life Improvement Program is part of the Office of Clean and Green Initiatives, which Parker created in 2024 and placed under Carlton Williams. Williams previously worked in the Streets Department and L&I. The 12-day CLIP gap sits in his current portfolio.
Streets Department is led by Commissioner Kristin Del Rossi, also a Parker appointee. Her department, the largest 311 operation in the city, has a 0.8-day gap. That is the comparison standard.
Parks & Recreation is led by Commissioner Susan Slawson, a Parker appointee. Her department has a gap of negative 0.1 days. That is the other comparison standard.
What the Data Forces Me to Conclude
The “city is overburdened” defense does not survive the agency-level breakdown. The Streets Department, with nearly four times L&I's volume and a much more complex workload (trash, lights, potholes, snow), runs an essentially equal operation across zip codes. The Parks Department runs a perfectly equal operation on a fraction of the budget. Whatever is producing the L&I gap and the Police abandoned-vehicle gap, it is not the size of the workload.
The pattern across the discretionary complaint departments is consistent enough that I think the most honest reading is: when a city worker has to decide whether a complaint merits action, residents in lower-income zip codes wait longer for the decision. The data does not tell me why. The data tells me it is happening, in three separate offices, on a scale of tens of thousands of cases per year.
Notes, Sources, and Methodology
All data is from the OpenDataPhilly 311 Service Requests table public_cases_fc, 2024-01-01 through 2026-06-08, n = 481,082 valid non-call-routing requests after filtering (dropping Information Requests and rows with negative or null actual_days). Income tiering follows the same ACS 2022 5-year zip-code cutoffs as the parent article (lower < $35K median household income, higher ≥ $65K). Commissioner appointments sourced from Parker's February 2024 L&I announcement, the city's Streets Department leadership page, and the Parks & Recreation executive staff page. Police Commissioner Bethel's role per the PPD leadership page. Analysis restricts to closed cases; the open-case tail is reserved for a follow-up article.
Table math. The “Top service gap” column shows the median gap (lower − higher) of each agency's dominant service category, filtered to services with ≥100 cases in both lower- and higher-income tiers. The top services cluster: Abandoned Vehicle (Police), Maintenance Complaint (L&I and CLIP), Right of Way Unit (Streets), Parks and Rec Safety and Maintenance (Parks). The “Volume-weighted gap” column is each row's gap × its share of volume; the five main agencies sum to 10.04 days, and the all-six sum (including “All other”) is 11.73 days. The “All other” row aggregates the four excluded top-9 agencies (Water, Fire, Homeless Services, Public Health) — Water and Public Health contribute zero cases (no zip-level tier data); Fire and Homeless Services have enough volume to compute a combined median but not enough in higher-income zips to qualify individually. The “All other” medians are reference-only — they average across heterogeneous services (fire inspections, homeless outreach) and are not comparable to the per-agency medians above. The total row uses volume-weighted averages of medians (not a true combined median) plus the all-six sum of (gap × share).
Why the 11.73 sum is not the citywide 2.6. The two are different statistics. The 11.73 is a sum of (agency median gap × agency volume share) — a sum-of-products where each agency's median gap gets weight equal to its share of 5-agency volume. The 2.6 is a per-request median: the median of actual_days across all 311 cases in the lower-income tier minus the median across all cases in the higher-income tier. Same per-agency medians feed both numbers, but they are not directly comparable. The 2.6 is smaller primarily because the per-request median is dominated by the high-volume, low-gap Streets cohort — when you take the median of all cases, the middle case is most likely a Streets case (62% of 5-agency volume, 4-5 day median). The sum-of-products preserves the weight of L&I's and Police's large gaps because each agency's median is given full weight equal to its volume share. Including the middle-income tier and the four smaller agencies (which have near-zero gap) further compresses the 2.6. The 11.73 is therefore not a more accurate version of the 2.6 — it is a different question: what would the citywide gap look like if every agency were weighted equally by its volume share, vs. the 2.6's what does the typical 311 request look like.