Possibility Lab Test · July 2026 · berkeleybuild.com

One notebook sequence, any California city:
build and verify the APR from open data

Over the past month we distilled the Berkeley reconstruction into a teachable notebook sequence that takes anyone from a city's raw permit spreadsheets to a scored, independently verified Annual Progress Report. The pipeline is seven short Jupyter notebooks, plus a no-coding-required on-ramp for beginners:

  1. JN1 — Ingest. The city's messy permit export exactly as it arrives: title rows, buried headers, the traps where honest mistakes are born.
  2. JN2 — Address key. One identity for every parcel-address spelling.
  3. JN3 — Project spine & units. Permits grouped into projects; unit counts assembled.
  4. JN4 — Lifecycle events. Application → issuance → certificate of occupancy, in order.
  5. JN5 — Years & cycles. Calendar-year and RHNA-cycle tagging.
  6. JN6a — The oracle. The city's own APR filing, pulled from HCD's statewide open-data portal — a verification target, never an input.
  7. JN6b — Join & score. Our derived count vs the city's filing, every difference named, row by row.

To rebuild the Berkeley APR, a student needs nothing but a browser: every notebook opens free in Google Colab and fetches its data automatically from our public archive. Open JN1, run it top to bottom, continue through JN6b — or flip a one-line switch in the setup cell to skip ingestion and start from our cleaned permit table.

To do the same for Oakland, San Francisco, Delano, or Fresno, only JN1's configuration cell changes — two values: the path to that city's permit ledger and the row its column headings sit on. We tested each city's data door (July 3–8, 2026): Oakland exports a full month of permits in one click from its public Accela portal. San Francisco is the easiest of all: its full permit ledger — 1.29 million rows — answers a public API on DataSF, with unit counts, filing and issuance dates, and even an ADU flag already in the columns. Fresno runs the same Accela platform as Berkeley and Oakland, so the same retrieval tooling applies; a single public-records request for its annual building-permit report is the fallback. Delano runs a different platform (SmartGov) with no bulk export, so there the records request is the path — one request, same report. The scoring step needs no change at all: we confirmed HCD's statewide portal carries per-year APR rows for all four cities — for the oracle, only the jurisdiction name changes.

Open the curriculum — every notebook, one click to Colab →

An honest caveat: the two-knob claim is literal (it is JN1's configuration cell), but a city whose permit ledger lacks unit counts would need adaptation at JN3. Method & credibility: the Audit page · berkeleybuild.com