Part 6 of 8 in The Office That Tripled
SDP Payroll Grew 27% Over Eleven Years — Less Than Inflation
SDP payroll grew 27% over eleven years — under inflation. School-based, central admin, and central operations each tell a different story.
Over the last decade, Philly's school-district payroll grew 27% in dollar terms — from $1.18 billion in 2014-15 to $1.50 billion in 2025-26, less than regional inflation over the same window. There are many ways to read a number like that — from fiscal restraint to under-investment. Neither is quite right. The headcount side tells the other half: 1 employee for every 9 students, up from 1 in 14.
What has happened is far more complex, ranging from shifts to outsourcing, dramatic expansion in pay for the top-paid people, reclassification of others from one department or location to another, and many others — adjacent to my work on three radically different pay structures and the mapping of what people actually do for work.
The headline in real terms
27% nominal growth over eleven years is small in real terms. Cumulative inflation in the Philadelphia-Camden-Wilmington metropolitan area ran somewhere between 35% and 40% over the same window — the BLS regional CPI series is the underlying figure, and readers who want to verify the comparison can pull it directly from the BLS public data API. By that comparison, the District's in-house payroll did not grow faster than prices over the period; it grew slower. That is the article's first descriptive finding, and the comparison anchor for the three different stories the next sections describe.
By bucket: three different stories
The District does not publish its position roster pre-aggregated; I built the buckets myself, with one map from each position's organization level to one of three roster categories. The school bucket is anyone based at a school — teachers, classroom aides, principals, building staff. The central admin bucket is the headquarters offices, marked administrative in the roster: lawyers, analysts, directors, chiefs, IT, HR, curriculum, finance, communications, school safety leadership, facilities management leadership. The central operations bucket is the physical-logistics tier — non-administrative office roles, school bus garage workers, transportation, and district building/property roles — bus depots, food services, carpenters, painters, electricians, plumbers, custodians. Per-diem positions are excluded from these totals.
The chart above shows the three buckets across eleven years. The school-based slice held roughly proportional to the total. The central operations slice collapsed. The central admin slice bulged — thin in 2014-15, swollen after 2021-22. The three following sections describe each bucket in turn.
School-based payroll grew 48%, in line with the salary schedule
School-based payroll grew from $826 million to $1.22 billion between 2014-15 and 2025-26 — a 48% increase over eleven years. That is the largest single bucket by dollars, and the most moderate growth rate of the three. The growth tracks what a step-and-lane teacher salary schedule produces when applied across the same window: scheduled raises compounded with lane-step movement, plus the headcount changes within the school-based roster, plus any negotiated schedule adjustments that fell inside the period. The hourly teachers and daily substitutes in this bucket scale roughly with their salaried counterparts, so the annualization rules do not change the shape of the school-based growth. School-based payroll grew because the salary schedule moved up. That is the floor the other two buckets contrast against.
Central admin payroll grew 154-171%, and the range is the number
Central admin payroll grew somewhere between 154% and 171% over the same window. The range is not a hedge — it is the descriptive finding. The two endpoints are both correct readings of the same roster, and which one applies depends on how a small set of borderline positions are filed.
The largest contribution to that range is a 2025-26 reclassification. Three named garage organizations — BROAD STREET (110 rows), SHALLCROSS (90 rows), and PASSYUNK (85 rows) — appear in the 2025-26 roster with their organization level labeled administrative rather than garage. That single labeling change moves 285 positions and approximately $15.5 million of payroll from the central operations bucket into the central admin bucket without anyone changing jobs. The lower-bound central admin figure (154%) strips these three organizations back to garage; the upper-bound figure (171%) includes them as administrative.
The two central buckets are not doing the same work. In 2025-26, central admin held 750 distinct job titles — of which 165 are manager or coordinator, 162 are executive/officer/chief, 135 are director, 93 are analyst/specialist, and the rest are administrative, IT, legal, or curriculum roles. Central operations held 44 distinct job titles — 19 of them physical-trades (carpenter, painter, electrician, plumber, mason, machinist), 4 transportation (driver, attendant), and the rest facilities or building maintenance. Of the 794 unique titles across the two central buckets in 2025-26, only 12 appear in both — less than 2%.
The headcount side of the same growth — 1,432 to 4,228 positions — is the subject of Piece 1 of this series.
In-house operations payroll fell 77-88%, and the same range in reverse
Central operations payroll fell 77% to 88% over the same window — and again, the range is the descriptive observation, not a hedge. The two endpoints are both correct; which one applies depends on whether the three reclassified garage organizations fall under this bucket or under the central admin one. Stripped of those three organizations, central operations in 2025-26 is around $33 million; included, it is around $17 million. Either way, central operations payroll did not grow.
A second contribution to the apparent collapse is the cafeteria workforce. The 1,046 food-titled positions District-wide in 2025-26 is up from 890 in 2014-15 — an 18% increase over eleven years. But those positions are not in the central operations bucket in 2025-26; they are filed under school-based organizations. The cafeteria workforce did not leave the District payroll; it was reclassified into a different bucket.
The genuinely eliminated positions are the 562 PARENT AIDE and TEACHER-EXTRA CURR rows that appear in neither bucket in 2025-26. Some of the in-house bus driving also moved off the District payroll. Of the 425 transportation positions in 2014-15, roughly a third (about 140) moved to vendor contracts; the remaining two-thirds are now the 285 in-house drivers at the three bus depots. The vendors named on those contracts include Durham School Services, Philly Transportation, City Cab, Maramont, Whitsons, and Preferred Meal Systems.
The headcount-only comparison and the vendor-spend side are the subject of Piece 3 of this series.
Looking across positions, the median loses to inflation while the top 1% outpaces it
To see this clearly, the data has to be salaried-only — hourly pay annualized at 1,800 hours pushes part-timers into apparent high-earner territory. A NOON TIME AIDE PER DIEM SUB posted at $580/hr annualizes to about $1.04 million under that rule. Excluding hourly roles keeps the upper tail from being a roster of substitute per-diem rows; the same filter applies to per-diem positions, which are excluded entirely from the totals.
The median salaried salary grew from $56,531 to $67,638 — a 20% increase. The p90 climbed from $83,382 to $110,720 — a 33% increase. The p99 jumped from $113,910 to $169,252 — a 49% increase. The median line moves the way a step-and-lane salary schedule would predict; the upper tail moves the way an expanding senior tier does. The p99 makes its single largest year-over-year jump in 2018-19, when it climbed from $116,579 to $138,927 — around the time the Assistant Superintendent tier was staffing up. That upper-tail movement is the subject of Piece 1 of this series.
What payroll records, and what it doesn't
Payroll records the District's in-house positions: every salaried, daily, and hourly position in the quarterly roster. It tracks salary, not the workforce — each row is a position, not a person, and the same individual can appear in multiple rows across years when they move between roles.
What payroll does not record is the rest of the District's operational spending: the contractor and vendor work that the District now buys from outside firms (Piece 3 documents the transportation and food-services vendor side); the pension and benefits contributions, tracked separately from payroll; the total District spending on operations and administration, which lives across both records; and the distinction between a position on the roster and a distinct person occupying it over time. Payroll shows where the dollars are; it does not show what the District spends, who does the work, or whether the District is over- or under-staffed.
Notes, Sources, and Methodology
Data source: SDP's quarterly position roster on OpenDataPhilly, eleven annual snapshots from 2014-15 to 2025-26. Total payroll basis: all pay types (SALARIED + DAILY + HOURLY), annualized at SALARIED × 1.0 (already annual), DAILY × 200 (the standard workday count for daily-rate staff), and HOURLY × 1,800 (the standard work-hour count for full-time hourly staff). Quantile basis: SALARIED only, because HOURLY × 1,800 inflates part-time roles into apparent high earners (a NOON TIME AIDE PER DIEM SUB at $580/hr annualizes to $1.04M under that rule). ORG_CLASS buckets (school / central_admin / central_operations / per_diem) defined by ORGANIZATION_LEVEL in lib_sdp_roles.py: school-based org levels → school; ADMINISTRATIVE / ADMINISTRATIVE OFFICE → central_admin; NON ADMINISTRATIVE OFFICE / GARAGE / DISTRICT BUILDING/PROPERTY / TRANSPORTATION → central_operations; HOME_ORG = PER DIEM → per_diem. Per-diem positions are excluded from the three bucket totals. For the C-suite tier analysis ($175K+, 5 → 53 positions), see Piece 1 of this series; for the operations headcount drop and vendor spend, see Piece 3.