Part 5 of 9 in After You Call: A Deep Dive on Philly 311

Shoveling in 1 Business Day, Broken Traffic Signals in 1 Business Day. Philadelphia 311 Meets Both Promises Less Than Half the Time.

7 of Philadelphia 311's 27 published SLAs are met less than half the time. Two are 1-Business-Day safety promises. The published numbers are fiction.

Top 5 and bottom 5 performance vs SLAs

Philadelphia 311 publishes a 1-business-day response promise for shoveling complaints. Between January 2024 and June 2026, the system met that promise 11.4% of the time. The shoveling SLA is the worst in the city's published 27-code SLA set, and 7 of those 27 codes (about a quarter) meet their own promise less than half the time. A handful of the seven are safety-critical.

1 Business Day
The city-stated SLA for Shoveling (SR-ST20) on the 311 public page
11.4%
Of 6,365 Shoveling tickets closed within that 1 business day

The shoveling number

The Philadelphia 311 system records a service_notice of 1 Business Day for Shoveling (SR-ST20) — that string is published against every shoveling ticket at filing time, in the city's own 311 dataset. A citizen filing a complaint about an unshoveled sidewalk reads that promise on the front door of the system, then waits. Between January 2024 and June 2026, 6,365 Philadelphians did exactly that. Of those 6,365 filings, 728 were closed within one business day. The rest were not. The met rate is 11.4%.

The median actual close time for a Shoveling ticket is 4 business days (about 6.1 calendar days). The typical experience is: file, wait a week, give up on the promise, then see the work get done. A typical ticket takes four times longer than the city said it would. A bottom-quartile ticket is much worse than that, but I want to be careful with the tails, and the median is enough to make the point.

It's not just shoveling

Shoveling is the floor, but it's not alone. Five of the seven service codes that meet their own SLA less than half the time are the chart's leftmost bars.

The two that deserve singling out are the safety promises. Traffic Signal Emergency and Stop Sign Repair are short-window promises on tickets where someone could die at the intersection, and both sit on the wrong side of 50%. Together, those two codes account for 13,595 tickets under a sub-50% public promise.

The biggest single code in the sub-50% group is Abandoned Vehicle (SR-PD01) — 45,502 tickets, 120 business days promised, 43.3% met. This one cuts differently. The SLA is four months, the met rate is 43%, and the median close is 148 business days (about 7 months). The data is bad and the promise is loose. The Police Department is essentially publishing "we'll get to it sometime before the heat death of the universe" and then missing that window more than half the time.

This is not just theoretical for me. I experienced this painful right tail of SLA failure for car towing myself. In September 2022, I filed two abandoned-vehicle complaints on my block in Strawberry Mansion — request 15188100 and request 15188120, both filed the same evening. The city's 120-business-day SLA meant the police had until late March 2023. The tickets were closed on October 29, 2025 — three years and one month after I filed them, both on a single day. The published promise was 120 business days. The actual elapsed time was 1,136 calendar days. The data does not say whether the cars were towed, rusted out, or simply abandoned twice. It just says: closed.

Of the 352,281 closed tickets in the universe I'm looking at, 104,417 of them (29.6%) lived under an SLA the city meets less than half the time.

The system is bimodal, not gradual

I expected a smooth distribution — a few codes that meet their SLA most of the time, a few that meet it sometimes, a long tail of codes that miss it most of the time. The data is not shaped that way. The codes that do well really do well. These are not the easy codes. Illegal Dumping alone is 49,909 tickets. Salting alone is 17,921 tickets. These are the agencies that publish a number and then keep the number. The bimodal shape — codes that pass and codes that don't, with very little in the middle — is what you'd expect if some agencies take their published promise seriously and other agencies do not.

The inverse problem: SLAs that are too loose to ever miss

There is a second way to fail the public, and it looks the opposite of failing. Four of the 27 codes publish SLAs that are so generous the met badge is essentially built into the promise. The median ticket on each of these codes closes in 10–17% of the stated window:

  • Complaint (Streets) (SR-ST08) — 30 business days promised, 3.95-day median close, 87.6% met rate
  • Parks and Rec Safety and Maintenance (SR-PR01) — 120 business days promised, 20.05-day median close, 89.8% met rate
  • Street Paving (SR-ST23) — 60 business days promised, 9.79-day median close, 85.7% met rate
  • Hydrant Request (SR-WD02) — 30 business days promised, 3.09-day median close, 92.3% met rate

These four codes cover 2.1% of the closed-ticket universe. A citizen filing a street complaint and reading the published "30 business days" promise is being told the city has a month to respond. The city, in fact, almost always responds in four days. The published promise under-sells the work, and the met rate is fake. The agency has set the SLA long enough that it cannot lose, and the dashboard lights up green.

This is the inverse of the Shoveling problem. Shoveling publishes a 1-day promise and misses it 89% of the time; Hydrant Request publishes a 30-day promise and "meets" it by closing in 3 days. One is public-facing false advertising in the bad direction. The other is public-facing false advertising in the good direction. Both are SLAs the city publishes but does not treat as a real commitment.

The "Business Days" defense is dead

The methodology note I owe you. Every SLA I’ve quoted in this article is stated in “Business Days,” which is the city’s chosen unit. A Business Day, as the city defines it, excludes weekends and federal holidays. “Shoveling in 1 Business Day” means the agency responds by close-of-business the next weekday — a Tuesday filing gets a response by Wednesday EOB; a Friday filing gets a response by Monday EOB. The met-rate math in this article uses business-day arithmetic throughout. I have not been unfair to the city by sneaking calendar days in.

I expected to find a few codes where the "Business Days" unit confusion was doing real work — where a citizen counting calendar days would say "you missed" but the agency counting business days would say "we met it." I checked. Across the 38 service codes whose SLA unit is "Business Days" and which have at least 100 closed rows (a slightly broader set than the 27 codes analyzed for the sub-50% finding, because it includes every business-day SLA regardless of whether it appears in the worst/best rankings), zero codes show a 10-percentage-point or larger swing between the business-day and calendar-day interpretations. The number of codes where the unit ambiguity is doing meaningful work is, per my analysis, 0 of 38.

That is a load-bearing finding. If the city's met-rates were misleading because the public counts days one way and the agency counts them another, then the fix would be a unit clarification. The data says that fix would not move the needle on any of the seven sub-50% codes. The met-rates are real. The SLAs are fiction. The gap between them is the city's.

What the published SLA is for

A published SLA is a contract the city holds itself to. It tells the citizen what to expect, and it tells the agency what to be measured against. When a citizen reads "1 Business Day" and the city meets that 11% of the time, the citizen is being told something false at the moment they need the system most — when they have just filed a complaint and are trying to figure out whether anyone will respond.

In the private sector, an SLA is a real commitment contracts live and die by. As CEO of a mid-sized software company, two of our standard SLAs were 99.9% software uptime and under-24-hour resolution for critical issues. 99.9% uptime means we could be down — in total, over the course of a year — no more than 8.8 hours. AWS publishes 99.99%, which works out to about 8.6 seconds per day. When SLAs mean what they say, customers enforce them, contracts include clawbacks, and the number is something the company plans against. Philadelphia 311 has chosen the version where the number is published and not enforced.

I am not going to argue the city should publish a 90-day SLA for Shoveling so the met rate stops looking bad. The honest answer is the opposite: the city should publish the SLA it can keep, and staff to keep it. The Water Department publishes 3 business days for Inlet Cleaning and meets it 89% of the time. The Streets Department publishes 1 business day for Shoveling and meets it 11% of the time. Both are in the same city. Both are filling potholes' cousin-codes. The difference is whether the published number is something the department plans against.


Top 20 ticket types by volume: SLA, count, met-rateClick to expand

Every 311 service code from the published worst-10 and best-10 lists, sorted by ticket count descending. The article’s headline universe is 27 codes with at least 100 closed-with-SLA rows; the 7 mid-distribution codes (met-rates between roughly 46% and 71%) are not in the published JSON files, so this disclosure covers the 20 codes I have per-code numbers for. Run the source script to extend.

CodeDescriptionDepartmentSLACount in our datasetSLA met-rate
SR-ST03Rubbish/Recyclable Material CollectionStreets Department2 business days80,43153.7%
SR-ST02Illegal DumpingStreets Department5 business days49,90974.9%
SR-PD01Abandoned VehiclePolice Department120 business days45,50243.3%
SR-ST01Street DefectStreets Department45 business days33,79245.6%
SR-CL01Graffiti RemovalCommunity Life Improvement Program6 business days21,42789.9%
SR-ST18SaltingStreets Department3 business days17,92180.5%
SR-ST16Other (Streets)Streets Department5 business days15,77454.0%
SR-ST25Traffic Signal EmergencyStreets Department1 business day11,54641.7%
SR-PR08Street TreesParks & Recreation15 business days9,16871.3%
SR-WD01Inlet CleaningWater Department (PWD)3 business days6,51889.4%
SR-ST20ShovelingStreets Department1 business day6,36511.4%
SR-FD02Smoke DetectorFire Department90 business days5,00543.9%
SR-ST08Complaint (Streets)Streets Department30 business days2,17087.6%
SR-PR01Parks and Rec Safety and MaintenanceParks & Recreation120 business days2,16589.8%
SR-ST21Stop Sign RepairStreets Department4 business days2,04939.5%
SR-ST23Street PavingStreets Department60 business days1,77485.7%
SR-WD02Hydrant RequestWater Department (PWD)30 business days1,15392.3%
SR-ST19Sanitation / Dumpster ViolationStreets Department5 business days46450.0%
SR-ST05Abandoned BikeStreets Department250 business days15729.3%
SR-PD02Police ComplaintPolice Department6 business days15698.1%

Notes, Sources, and Methodology

All data is the OpenDataPhilly 311 Service Requests table public_cases_fc, pulled on 2026-06-08. The cohort is 473,011 service requests filed 2024-01-01 through 2026-06-05 that have both a published SLA and a closed timestamp. The 27 service codes discussed in this article are the subset with at least 100 closed-with-SLA rows in the window, covering 352,281 tickets in total.

Methodology. Every 311 ticket in the public dataset carries a service_notice field — a free-text string the city publishes against each service code, such as “1 Business Day” or “120 Business Days.” I extracted the integer day count and the unit (business vs calendar) from that string for every row, then compared it against the actual close time for each ticket. A ticket is “met” if its closed timestamp falls within the published window: for “Business Days,” the window excludes weekends and the four US federal holidays (New Year’s, Independence Day, Veterans Day, Christmas); for “Calendar Days,” elapsed calendar days are used. The headline finding — 7 of 27 codes (25.9%) meet their own SLA less than half the time, accounting for 104,417 tickets (29.6% of the universe) — is weighted by ticket count, not by number of service codes. The four “loose promise” codes are the subset whose median close time runs in under 20% of the published window — SLAs so generous that the green badge is essentially built into the promise.

Limitations. The “Business Days” defense does not move the headline: across the 38 service codes whose stated unit is “Business Days” and which have at least 100 closed rows, recomputing met-rate under calendar-day arithmetic moves zero codes by 10 or more percentage points. The data also cannot distinguish a ticket closed because the underlying issue was actually fixed from one closed administratively — only the city knows that, and the published dataset does not.