Part 1 of 9 in After You Call: A Deep Dive on Philly 311
Most of Philadelphia 311 isn't fixing things. It's answering the phone.
Of 1.3M Philadelphia 311 records since 2024, 57% are phone calls, not service tickets. The contact center logs one every 38 seconds.
Weekday hours (Mon–Fri)
Day of week
The 7am-to-8am jump is roughly 35×. Weekend volume is 1.3% of the total.
The chart above is the daily heartbeat of Philadelphia 311’s biggest single category. For 60 hours a week, Monday through Friday, the city’s contact center is open and a phone-shaped surge moves through it — near zero at 7am, a noon peak, near zero again at 8pm. Then it cuts off entirely on Saturday morning. Most readers, and most of the city’s own reporting on 311, don’t separate this half of the system from the work-order half at all.
Philadelphia’s 311 system logged 1,305,904 records between January 2024 and June 2026. Of those, 557,011 are service tickets — potholes, dumping, broken streetlights, missed trash pickups. The other 748,893 — 57.4% of every record the city logs — are not. They are phone calls into the city’s contact center, logged as service_name = 'Information Request' and routed to the Philly311 Contact Center. The chart above is the temporal signature of those 748,893 calls: 98.7% of them are timestamped on a weekday, 97.4% fall inside the published 8am–8pm window, and the remaining 2.6% are the gray bars — web submissions, mobile-app submissions, after-hours voicemails. The biggest half of 311 by a 1.3× margin is the smaller half by reputation: an information utility that pulses for 60 hours a week and goes quiet for the other 108.
I’ve called Philadelphia 311 seven times in the four years I’ve lived here. Three of those calls were about a tree on my block in Strawberry Mansion that was leaning toward my house — toward the bedroom my wife and I slept in. If it came down, it would come down on us. Two were about an abandoned car parked at a corner in a way that blinded drivers turning onto my block. A car turning right wouldn’t see a kid playing three feet from their own front door. One was about a hanging power or cable line that had been drooping across the sidewalk for weeks. And one, this past winter, was to ask what the snowplow schedule was during a storm.
Six of my seven calls were for service. One was for information. I thought of myself as a service user, and by my own count I am. But the data says I’m the exception. The median Philadelphian using 311 is calling for an answer, not a work order. The chart at the top of this page is what that median user looks like in aggregate, hour by hour and day by day across two and a half years.
This is article 1 of a 9-article series I’m writing on what the conflation of those two halves costs. The case I want to build, article by article, is that Philadelphia 311 isn’t one system with two functions. It is two systems that share a phone number, and the city’s reporting has spent a decade pretending they are one. I’m going to spend this first article showing you what each half actually looks like — the call center on one side, the service-ticket pipeline on the other — so that the cuts in the articles that follow have somewhere to land. The interesting findings — including the income-based wait-time gap — come later. This one is the map.
Data scope for this article. Everything below uses the full public_cases_fc table from OpenDataPhilly — 1,305,904 records, January 2024 through June 2026. That's nearly three times the 466,114 rows in the parent article, because that one was filtered to closed tickets with an SLA promise. This one doesn't filter. Phone calls, web submissions, abandoned voicemails, and open service tickets all count. That matters for the call-center question (the call center doesn't have SLA promises), and it matters because later articles in this series will subset this same full table in different ways.
What 311 actually is
Philadelphia 311 is the city’s non-emergency contact center. Anyone in the city can dial 311 — or (215) 686-8686 from outside — to ask a question or report a problem. The system also accepts requests through a web portal, a mobile app, and email. The phone is staffed 8am–8pm weekdays; the digital channels are open 24/7. The chart at the top of this page traces the phone window: 19,105 records — the 2.6% gray-bar share — are timestamped outside it, and they’re the only signal the dataset gives of the digital channels at all. The system has no field that identifies the submission channel, so that 2.6% is a floor on the true digital share, not a ceiling.
The 57.4% number is the whole story in one number. Open the data, group by service category, sort descending. The top row is "Information Request" with 748,893 records. The next several rows are the service categories you'd expect — Streetlight Repair, Sanitation / Missed Trash, Illegal Dumping, Pothole Repair — and each one has between 30,000 and 70,000 records. None of them is in the same order of magnitude as the call center.
What is an Information Request? It closes the moment the agent hangs up. The median time from "call received" to "call closed" is zero minutes. 94.5% close in under one minute. The 99th percentile is 47 hours — a long tail of records nobody ever bothered to mark closed, the caller probably hung up or the agent forgot. The modal Information Request is a phone call that ended when the caller got an answer.
What was the caller asking? The dataset has a subject field, supposedly a short description. In the 2024+ data, every row of it is null. The free-text status_notes field is filled in 729,195 times, but it tells you almost nothing: 728,274 of those notes are the literal string "Question Answered". The next is "Information Provided", with 856 entries. The system logs the outcome of the call. It does not log the topic.
Call volume runs about 844 Information Requests a day across 887 days. Across the 60 staffed hours a week, the center averages 96 records per hour, or roughly one every 38 seconds. I’m using “records” rather than “calls” because the 311 system logs phone calls, web submissions, mobile-app submissions, and voicemails into the same column, with no field to separate them — during open hours the phone is the dominant channel, but the rate is technically across all of them. The center is not uniformly busy across those 60 hours: the chart at the top shows the load concentrated between 8am and 3pm with a noon peak, a noticeable drop at 4pm, and a long taper to 8pm. The calmest staffed hour is 6pm–7pm ET, with about a seventh of the noon volume.
That’s the within-week shape. Across days, the median is 1,098 records, and three days break from the trend hard enough to register as spikes. The peak day is November 4, 2024 — the day before the general election — with 3,251 records. The next two biggest days, February 24 and 25, 2026, are the first and second days after the Blizzard of 2026, when 13.7 inches of snow fell. Snow emergencies, parking questions, plow schedules, school closures, where to vote — the call center absorbs the city’s information spikes, the spikes a city government would otherwise have to staff a press conference for.
887 days, mean 844/day, median 1,098/day. The three orange dots are days where volume exceeded the trailing 30-day mean by more than two standard deviations. They line up with widely-reported citywide information events.
Article 2 of the series, "The 311 Gap Lives in Three Complaints. L&I Owns One of Them.", breaks the 557,011 service tickets down by the agency responsible for closing them. The call-center side of 311 doesn't appear in that analysis at all — the call center doesn't close service tickets. It answers the phone. The two halves of the system don't even share that work.
Do call-center spikes slow the service queue?
This is the question I most wanted to answer before starting the series. If 311 call-center load on a given day were correlated with slower service-ticket closure that day, the two halves of the system would be competing for the same staffing — a contact-center surge during a snowstorm would slow the city's ability to plow. If the correlation is zero, they are two parallel systems that happen to share a phone number.
The correlation is essentially zero. Across 854 days with at least 30 closed service tickets, the Pearson r between daily Information Request count and same-day median service-ticket close time is 0.028. The slope is 0.0006 days of median wait per extra Information Request. Not distinguishable from noise.
854 days, each point is one day. The dashed line is the linear-regression fit. The cloud looks like noise.
I would have expected snow-day call spikes to slow down the service-ticket queue. They don't appear to. A snowstorm peaks the phone lines; the field crews are already on shift, dealing with the same storm on different equipment. The two halves of 311 look like they are staffed, scheduled, and managed on different rails. They share a brand.
The non-finding matters for what comes next. Articles 3 and 4 of the series look at the service-ticket side — what categories of work the system is doing, and whether the system can keep up with the volume. The call center and the service queue are decoupled enough that call-center spikes are noise relative to service-ticket backlog. That is a useful thing to know before you start looking at the service queue.
What I don’t know about the call center
I wanted to map who uses the call center by zip code. The data won’t support it. Of the 748,893 Information Requests in this dataset, only 22,674 — 3.0% — have a zip code logged. The other 97% are blank. The 3% that do log a zip are not a random sample of the rest: higher-income zips show up at 32.9 zip-tagged calls per 1,000 residents, versus 11.6 per 1,000 in lower-income zips — a 2.8x over-representation. The top of the list is dominated by downtown business addresses (19107 Washington Square, 19102 City Hall, 19106 Society Hill, 19103 Center City West) where the call center’s geocoder probably has a clean address match. Residential row-house addresses outside that commercial footprint — wherever they are in the city — the geocoder doesn’t reliably resolve, and the dataset gives the city no second pass to recover the gap.
So I can’t responsibly say from this data who calls the call center. I can say that the city is not collecting the information that would let me answer it. The geography of who uses 311 as an information utility is a fact this system throws away in the act of logging — itself worth noticing, and worth raising as something the city should change. For the rest of this series I treat the call-center side as a volume-and-timing system: I can see when calls happen and how fast they close, but not where they come from or what they’re about. The service-delivery side does not have this problem. Tickets are tied to physical addresses, and the zip-code coverage is essentially complete.
The five agencies that close 311 tickets
The 557,011 service tickets are not handled by one organization. Five agencies close most of them. Streets Department handles potholes, streetlights, illegal dumping, and sanitation pickups. License & Inspections handles building permits, dangerous-building complaints, and maintenance complaints on rental properties. The Police Department handles mostly abandoned-vehicle complaints. The Community Life Improvement Program (CLIP) handles graffiti removal, opioid-response cleanup, and a handful of maintenance complaints. Parks & Recreation handles the rest of the smaller categories. The share of the 557,011 each agency closes — and the income-tier breakdown of those close times — is in the chart below.
That's the shape of the workload. I want to flag a preview of what shows up when I split each agency's tickets by the income tier of the zip they came from, because it's the central thread of the rest of this series. The full breakdown, the controls, the alternative explanations, and the per-complaint-type analysis all live in Article 2 and the articles that follow. For now, here is the chart that anchors everything.
The five agencies shown handle 98% of all closed service tickets between them. Each bar pair compares the lower-income-zip median to the higher-income-zip median for one agency. Two of the five agencies look essentially even. Three of them don't. The full analysis — the gap sizes, the per-complaint-type decomposition, and the alternative explanations — is in Article 2. Hover for full agency name, gap, and volume share.
I'll save the numbers, the alternative explanations, and the controls for the next article. The point of this article is just the map: 57% of the records are phone calls, the 60 staffed hours cover weekdays only, the call volume doesn't bleed into the service queue, and the 557,011 service tickets break across five agencies, three of which have visible differences by zip income. The articles that follow dig into each of those pieces.
What this series is
I wrote the parent article of this series — Poor people wait ~2x longer for service from Philly 311 — as if Philadelphia 311 were a service-delivery system. By volume it is not. By volume it is a contact center that also dispatches work orders. The contact center absorbs the city’s information shocks — elections, blizzards, water-main breaks — without measurable damage to the service-ticket side. The service-ticket side absorbs the city’s operational workload, and the rest of this series is about what that side actually looks like: which agencies close what, what they promise, how long the work takes, who waits longer, and what “closed” actually means.
The remaining articles in this series walk through, in order: the agency breakdown of the 557,011 service tickets (Article 2); the citywide service mix and how lopsided the workload is (Article 3); the depth of the currently-open queue (Article 4); the gap between published SLAs and what the data shows the city actually delivers (Article 5); the within-tier variance in wait times and which zips the income-only model misses (Article 6); the specific addresses that get called repeatedly for the same problem (Article 7); what “closed” actually means in the status notes (Article 8); and the closing recommendation in “What Philadelphia Should Do About 311.”
Notes, Sources, and Methodology
All data is the OpenDataPhilly 311 Service Requests table public_cases_fc, 2024-01-01 through 2026-06-08, n=1,305,904 rows. Of those, 748,893 (57.35%) have service_name = 'Information Request' and 746,382 (99.7% of that subset) have agency_responsible = 'Philly311 Contact Center'. The contact center’s published phone hours (8am–8pm Monday–Friday ET), the existence of the web portal, mobile app, and email channel, and the public description of 311 as a non-emergency contact center all come from the city’s 311 service-request page (last updated 2026-05-11). The spike-day event tags — election eve, blizzard aftermath — were sourced from the Pennsylvania voter services election calendar, the NWS Mount Holly preliminary summary of the February 22-23 2026 winter storm, and the city's own February 22, 2026 snow emergency declaration. The requested_datetime field in the source data is stored as a timestamptz in UTC; the timing analysis at the top of this article converts to America/New_York so the X-axis labels are wall-clock local time, not UTC.
The parent article analyzed a 466,114-row subset of the 557,011 service tickets — closed tickets with an SLA promise, capped at 365 days. This article uses the broader 557,011 because the call-center question is about all service tickets, not just the ones with a measurable wait.
Methodology notes. [1] Timing chart: weekday-only in ET, n=739,287; 24 hourly buckets; green = 8am–7:59pm ET per phila.gov 311; 2.6% outside-phone-hours is a floor on the digital share (no channel field). Timestamps in the source data are stored as UTC; I converted them to America/New_York so the hour-of-day buckets reflect when Philadelphians actually filed, accounting for daylight saving time (EST in winter, EDT in summer). [2] Daily volume chart: 887 days; spike days = trailing 30-day rolling mean + 2 SD; 3 spike days. Daily bucket is computed on UTC date. [3] Correlation scatter: 854 days, ≥30 closed tickets; Pearson r = 0.028; slope = 0.0006 days per extra Information Request; not distinguishable from zero. [4] Agency gap chart: 5 agencies handle 98.1% of closed tickets; “lower” tier = $35K ACS income (14 zips), “higher” = $70K (9 zips); min cell 1,000 tickets.