Maps courses from 6 Washington community & technical colleges to PSD high school credit types per the WA State Board of Education 24-credit framework.
Live: https://psd401.github.io/ctc-psd-equivalency/
- Counselors, CTC staff, students & families — read-only public view: course → HS credit value + type
- District deciders (Chief Academic Officer · Director of Secondary Teaching & Learning · Director of CTE · Director of Research & Assessment) — edit-enabled view; decisions persist to a Google Sheet via Apps Script
| File | Audience | Edits |
|---|---|---|
ctc-psd-equivalency.html + equivalency-data.json |
Public | No |
ctc-psd-decisions.html |
Deciders (local-only, API-key gated) | Yes — saves to Sheet via Apps Script |
| College | Catalog platform | Catalog edition | Courses |
|---|---|---|---|
| Tacoma Community College | Coursedog (live API) | 2026-2027 | 839 |
| Olympic College | Acalog | 2025-2026 | 1,246 |
| Pierce College | Acalog | 2025-2026 * | 947 |
| Green River College | Acalog | 2025-2026 | 1,378 |
| Clover Park Technical College | SmartCatalog | 2026-2027 | 1,091 |
| Bates Technical College | Drupal (unversioned) | scraped 2026-09-02 | 1,397 |
| Total | 6,898 |
* Pierce is pinned to Acalog catoid=17, which is its 2023-2024 catalog.
Moving to the current edition is blocked while Acalog serves a bot challenge —
see PIPELINE.md.
Bates' catalog carries no year marker and cannot be addressed by year, so its records are stamped with the scrape date rather than a guessed edition.
hs_credits is credits_total / 5. Five of the six colleges publish a credit
figure. Pierce publishes none at all — only contact hours — so its credits are
derived (lecture/10 + lab/20 + clinical/30, the standard WA quarter-credit
ratios). Those records carry a derived badge beside the credit value in the
viewer and a review_flags entry explaining it. Confirm with Pierce before a
derived figure counts toward a graduation requirement. The derivation and how it
was validated are documented in PIPELINE.md.
# Rebuild HTML + sidecar from existing classified dataset
python build_html.py
# Refresh one institution's catalog
python build_dataset.py olympic
# Refresh all enabled institutions
python build_dataset.py
# Re-classify the merged dataset in place (after editing classify_courses.py)
python classify_courses.py
# Re-merge per-institution files into the unified dataset
python merge_catalogs.py
# Year-over-year diff after annual catalog update
python diff_catalogs.py --year-from 2025-2026 --year-to 2026-2027 -o diff.mdctc-psd-equivalency.html (the public viewer) fetches its data from the equivalency-data.json sidecar, which the browser blocks under file://. Don't double-click it — serve it over HTTP instead:
./serve.sh # serves this folder at http://localhost:8000
# then open http://localhost:8000/ctc-psd-equivalency.htmlctc-psd-decisions.html embeds its data inline and opens fine from file://.
See PIPELINE.md for the full architecture and operational guide.
For each credit type, an LLM workflow compares course descriptions against the relevant WA OSPI K-12 Learning Standards and flags misclassifications. Roughly $0.05/course in API costs.
# Generate workflow script for one credit type
python audit_credit_type.py "Health" # all candidates
python audit_credit_type.py "CTE" --max-confidence 0.85 # focus on uncertain
python audit_credit_type.py "Math" --include-institutions tcc olympic
# Workflow runs externally (1 standards agent + N verdict agents in parallel)
# Then capture the result JSON and apply:
python apply_audit_decisions.py audit-health.json --dry-run
python apply_audit_decisions.py audit-health.jsonDecisions posted by the audit are flagged decided_by = "Director of Research & Assessment (AI-assisted audit)" so they're distinguishable from human-made decisions. The Sheet is append-only, so any human override of an audit decision is preserved as a new row.
Completed audits: see audit-health-vs-ospi.md and audit-cte-vs-ospi.md.
See decisions_setup/SETUP.md. The backing Google Sheet uses an append-only v2 schema:
decision_id | course_code | institution | applies_to | status |
override_credit_types | override_hs_credits | rationale | decided_by |
decided_date | source_citation | decided_for_year |
is_current | superseded_by | created_at | last_updated
WA Common Course Numbers (&-prefixed) default to applies_to=all, so a decision about HIST&146 at TCC automatically applies at every college offering it.
./deploy.sh # stages docs/ for GitHub Pages
git add docs/ && git commit -m "Deploy" && git pushInternal Peninsula School District tool. Not for redistribution.