Part 3 of 8 in The Office That Tripled

Where Did SDP's 1,017 Operations Positions Go?

SDP's operations workforce fell from 1,589 to 572 in 11 years. 562 were genuinely cut; 425 moved to contractors.

In-house central-operations headcount (bars, left axis) fell from 1,589 to 572 over 11 years. Transportation and food vendor spend (line, right axis) climbed from about $77M to $228M over the same period. Source: SDP Open Data — position roster and expenditure records.

In 2014-15, the School District of Philadelphia's position roster showed 1,589 people doing the operational work of running a school district: driving buses, serving meals, maintaining buildings, plus a few hundred positions filed under "parent aides." By 2025-26, that number was 572. Buses still run. Meals still get served. Buildings still get maintained. But the people doing the work aren't all on the District's payroll anymore.

"Gone" is doing a lot of work in that sentence. Three things happened to those 1,017 positions: 562 of them are genuinely gone (not on any vendor's payroll either), 425 were partially replaced by contractors, and the rest got reclassified into a different filing system. Here's the breakdown.

The 562 positions that are genuinely gone

The single largest cut is also the strangest one. The position roster has an organizational category for parent aides — the people who chaperone field trips, help in classrooms, support students with hearing and speech services. In 2014-15 that category held 562 positions. In 2025-26, it holds zero.

When I first saw the count I assumed it was mostly parent volunteers — room parents, classroom helpers. Then I looked at the titles filed under that organizational label and found 474 of the 562 positions were actually extra-curricular and staff-development teachers, not parent volunteers. The roster had them filed under the parent-aide category because that's where the funding flowed.

In 2025-26, both the parent-aide category AND the extra-curricular teacher title have zero rows. So this isn't a renaming. We're looking at 562 positions that simply aren't on the District's payroll anymore. About two-thirds of them were actually teachers doing extra-curricular and staff-development work; the rest were classified as aides. Whatever happened to those people, it wasn't a transfer. It was an end.

This is the one cut in the dataset I can point to and say with confidence: these people are no longer being paid by the District, and they're not being paid by a vendor either.

Waterfall of the 1,589 → 572 decline, decomposed by disappeared orgs (top 8) plus the +191 reclassification into surviving orgs (the upward orange step — positions like bus drivers that moved from one org into another, not cut). The parent-aide and extra-curricular teacher roles (562) are the single largest step down. Source: SDP Open Data, position roster.

The 425 positions that became vendor work

The next two biggest cuts are transportation: 239 part-time bus drivers and 186 full-time bus drivers. That's 425 positions in 2014-15. In 2025-26, the in-house bus-driver workforce is 285, scattered across three bus depots — Broad Street, Shallcross, Passyunk — titled bus chauffeurs, mechanics, and dispatchers. Same work, different filing system, 33% fewer people doing it.

So far this looks like the standard outsourcing story. The District cut the in-house workforce and shifted the work to vendors. The bus is still running; the difference is who's driving.

But look at the vendor side. SDP's transportation vendor payments grew from $49 million in FY2015 to $178 million in FY2025 — a 3.6x increase. Durham School Services alone has been paid $134 million over the eleven-year window.

Top 3 transportation vendors by fiscal year (FY 2015-2025). All three grew in parallel with the partial in-house driver cut. Source: SDP Open Data, expenditure records.

So the math is: in-house drivers fell 33%, vendor spend tripled, and the District is paying more for transportation overall than it was in 2014. We're not saving money. We're paying different people to do the same work. The cost line moved from "salary" to "vendor invoice."

What the simple version got wrong

Here's the part of the article I had to rewrite. The original version of this story claimed SDP's cafeteria workforce had collapsed from 882 to 99 positions and that the gap had been outsourced to food vendors. That figure was wrong.

It counted only the cafeteria workers who happened to be filed under a central-operations organizational category. Most cafeteria workers in SDP aren't filed there — they're filed under the school they work at. So the 882 → 99 count was a reclassification, not a reduction.

The actual food-services workforce — anyone with a food, cafeteria, nutrition, or cook title, district-wide — went from 890 in 2014-15 to 1,046 in 2025-26. That's 18% growth.

What IS true is that food vendor spend grew 1.78x ($28M → $50M). Whitsons, Maramont, and Preferred Meal Systems now handle some of the catering that used to be done in-house. But the District's own cafeteria workforce didn't shrink — it moved from one filing system to another.

I mention this because the simple version — "SDP outsourced the cafeterias" — is wrong, and the corrected version tells you something more interesting. The District isn't cutting operations to feed kids through vendors. The food-services workforce grew. The actual cuts are elsewhere.

The cost of the cut

You can't cut the operations workforce by 64% and call it right-sizing when the central-office tier grew 172% over the same window. The 562 parent-aide and extra-curricular teacher positions are gone for good. The 425 transportation positions moved from in-house to vendor. The operations bucket as a whole is a third of its 2014-15 size. Meanwhile, central admin grew from 1,432 to 3,898 positions on the same year-stable basis.

We are paying more for transportation than we were in 2014, the people driving the buses aren't on the District's payroll anymore, and the administrative tier that decides how all this gets spent has roughly tripled.

That's not a cost story. That's a priority story.

What this can't tell you

The public roster can't distinguish between the 562 parent-aide and extra-curricular positions being eliminated, renamed outside the org taxonomy, or absorbed into a different funding stream. The District's own internal accounting would close that question; I don't have access to it.

It also can't tell us whether the bus drivers who left SDP's payroll are the same people now driving for Durham. The work moved, but the workers may or may not have. I'd like to compare SDP's operational headcount decline to other large urban school districts — if NYC and Chicago show similar patterns, this is partly a national story, not just local choices — but I haven't run that comparison yet.

Notes, Sources, and Methodology

The 1,589 → 572 decline and the org-by-org decomposition come from SDP's quarterly position roster on OpenDataPhilly. "Central operations" is defined as positions in NON ADMINISTRATIVE OFFICE, GARAGE, DISTRICT BUILDING/PROPERTY, and TRANSPORTATION organizational classes. Each home organization's class is taken from the latest year before SDP rewrote the ORGANIZATION_LEVEL vocabulary in the 2025-26 file — otherwise three bus depots and a handful of facilities would have moved out of central operations into administrative in the public data. On the as-published ORG_CLASS alone, the same series shows 1,589 → 261, an 83.6% drop; the difference is reclassification, not departure.

A "disappeared org" is a HOME_ORGANIZATION_DESCRIPTION present in the 2014-15 snapshot with zero central-operations rows in the 2025-26 snapshot. Two important corrections:

  • PARENT AIDE, SPEECH & HEARING (562 in 2014-15): both the org and the TEACHER-EXTRA CURR title have zero rows in 2025-26. Genuinely eliminated.
  • AUXILIARY PRINCIPALS (56 in 2014-15): renamed, not eliminated. The 56 RETIRED PRINCIPAL positions became 59 RETIRED PRINCIPAL positions in 2025-26, filed under the PER DIEM home org and scattered across schools like Clemente, Edison, Franklin, and Heston. The genuinely-eliminated count is therefore 1,208 minus 56 = 1,152.

Vendor-spend figures come from SDP's expenditure data, filtered to ACTIVITY_NAME LIKE '%TRANSPORT%' OR '%BUS%' OR '%FOOD%' OR '%CAFETERIA%' OR '%NUTRITION%'. FY2014 is excluded because that file is a mid-year export with only 1,333 rows; a complete fiscal year has 15,000-22,000. Food-services workforce counts use TITLE_DESCRIPTION matching FOOD|CAFETERIA|NUTRITION|COOK across the whole District, not the central-operations slice.

Per-diem positions are excluded from the 1,589 and 572 totals because the home-org classification is inconsistent across years — per-diem staff get reassigned to schools or central offices depending on the snapshot, which would inflate or deflate the central-ops bucket mechanically.