Source document

docs/cities/philly/00_overview.md

Served verbatim from the project repository. Internal working document conventions apply: documents may reference file paths, branch names, and findings-ledger anchors from the repo.

00 — Overview

1. Why Philadelphia

Philadelphia is structurally simpler than NYC (one school district instead of 32 community districts; ~300 schools instead of ~1,800) and has data sources that are as good or better than NYC's on every axis the current platform exercises. The same analytical machinery — peer groups, residual-z outliers, comparability regimes, the four-check verification harness — drops in once the source layer is rewritten.

The civic case: the District publishes a serious official report (SPREE) and the state publishes a comparable accountability index (Future Ready PA Index), so there is a reference point to validate against and improve on — same posture as the NYC build vs. NYC's School Quality Snapshot.

2. Scope (v1)

  • Universe: School District of Philadelphia district schools + Philadelphia-located brick-and-mortar charter and Renaissance Charter schools (≈210 + ≈85). Cyber charters are out of scope for v1 (they serve students statewide; attribution to Philly is conceptually fuzzy). They're addable as a tagged subset in v2.
  • Outcomes: PSSA grades 3–8 ELA & Math proficiency, Keystone HS subjects (Algebra I, Literature, Biology), four-year graduation rate, chronic absenteeism. Survey climate via the Philly School Experience Survey (PSES).
  • Geography taxonomy: SDP Learning Network (replaces NYC's community-district concept), Philly City Council district, neighborhood (Census tract aggregations from OpenDataPhilly), school type, admission category, grade band.
  • Methodology: lift KX's spec verbatim — peer groups KNN(K=40) with hard filters on grade band + admission category, soft demographic distance; residual-z outliers (WLS on the spec's covariate set); comparability regimes for PSSA test-version changes.
  • Out of scope for v1: statewide comparisons (Philly vs. suburban PA), per-pupil funding (same gap as NYC — patchy data), principal-tenure analytics (same gap).

3. Decisions (settled 2026-06-03)

All seven open decisions resolved. Recording with rationale so the reasoning is recoverable later.

#DecisionResolutionNotes
O.1Same repo vs new repoSame repo (multi-city namespace). Repo also renamed nyc-edu-dataedu-data to reflect multi-city scope.GitHub auto-redirects old URLs ~6 months. Vercel deploy wiring (installation ID, not URL) survives the rename. Philly code lives under docs/cities/philly/, pipeline_philly/, data/cities/philly/, and philly/* branches. NYC code paths stay single-tenant until shared infrastructure is genuinely needed.
O.2Charter inclusion model(a) — one universe, tagged.Matches PDE's data shape (district + charter on same grain) and NYC's posture. school_type enum follows PDE's 5-value taxonomy (regular/charter/compctc/cyber/specialed) per findings.md §F.5; is_renaissance is a derived boolean.
O.3SDP's SPREE role(c) — both. Cross-referenced ranking and (iii-a) spot-check oracle.Mirrors NYC's posture with the School Quality Snapshot. Same-publisher caveat applies (presentation cross-reference, not independent oracle). Independent (iii-b) oracle is Future Ready PA Index, available day one.
O.4PSSA test-version regimesTwo regime breaks: 2014-15 (PA Core redesign) and 2022-23 (post-COVID recalibration). Standardized z within regime; raw values across.Same comparability posture as NYC's 2022-23 handling. Encoded in comparability.yaml during P3.
O.5Keystone aggregation ruleLatest-attempt, all-students, banded by school grade band.Matches PDE's published convention. Encoded in outcomes.yaml.
O.6PSES survey rollup scopeTeacher + student as first-class rollups; parent + principal + support-staff as school-profile detail. Loader still ingests all 5 respondent groups into survey_responses.Avoids UX bloat from 5 top-line survey metrics; mirrors NYC's two-first-class posture.
O.7PVAAS growth as first-class v1 indicatorYes — include in v1.Future Ready exposes PVAAS growth per subject × subgroup (per findings.md §F.2). NYC didn't have this; status-vs-growth methodology question is settled here by data availability. Metric naming: pvaas_growth_*.
O.8Actual vs Acct population cut for SDP PSSAAcct as canonical (matches SDP's published SPREE composite). Loader ingests both files; the primary metric value comes from *_Acct_*.csv; a parallel <metric_key>_actual exposes the all-tested cut for transparency. A per-school "Acct vs Actual" diff report runs at ingest time as an additional reconciliation gate (analogous to a population-cut variant of the (ii) base case).Same gap NYC has — Philly just publishes both cuts natively, so we don't have to reverse-engineer the accountability cohort. See 05_validation_spec.md §"Acct vs Actual" for the validation posture.

4. Inheritance from NYC build

The Philly build reuses, without modification:

  • Methodology spec (docs/design/nyc-school-outcomes-spec.md) — engine, peer-group construction, residual-z math, comparability handling.
  • Reference scaffold (docs/design/reference-scaffold/) — pipeline/analysis/engine.py, outliers.py, trends.py, verify/{checks,reconcile}.py, configs.
  • Validation taxonomy (docs/design/05_validation_spec.md, verify/METHODOLOGY.md) — (i)–(iv) definitions.
  • Front-end shape — Outliers / Movers / Stories / school profiles, with the same direction-adjusted percentile semantics, peer-group toggles, and recipes infrastructure.
  • Contribution workflow — branch-per-capability, additive + feature-flagged, PR linked to gap analysis and spec.

What is new and Philly-specific:

  • Source connectors (Philly publishes via OpenDataPhilly Socrata + Future Ready PA Index Excel downloads + PDE bulk files; no NYCDOE InfoHub equivalent).
  • Geography taxonomy (Learning Networks instead of community districts).
  • The eight known story lines (charter-sector comparison, Mastery/Renaissance trajectory, school-closure retrospective on Hite's 2013 closures, etc.) replace NYC's Renewal / Small Schools / D15 stories.

5. Out-of-band: what this branch does NOT include

  • Any ingested Philadelphia data — not even sample rows. Until the open decisions land, the source connectors are unwritten.
  • Any code change to NYC paths. Everything is under docs/cities/philly/.
  • A decision about repo split (O.1). The plan documents are written so they apply equally to "same repo, new namespace" and "new repo, copy-then-modify."

6. Next step

Decisions settled 2026-06-03; work proceeds from 03_integration_plan.md. First-fetch (P1 prelim) shipped on philly/first-fetch — two Future Ready sources resolved. Next batch: PSES + SPREE + OpenDataPhilly discovery, then P0 scaffolding under same-repo conventions.