APEMAP: Reproducible Parliament Education Data
A public Python and DuckDB pipeline connecting parliamentary biographies, school registers and static research results.

- Historical coverage
- 42nd–48th Parliaments
- Release verification
- 238/238 checks across 54 files
- Dataset scale
- 580 people · 1,754 service segments · 352 education assertions
- python
- duckdb
- parquet
- data-provenance
- astro
- entity-matching
Evidence
Overview
APEMAP records the secondary education of Australian federal parliamentarians and connects those records to school-register data. The public project combines a Python package and CLI, a canonical DuckDB database, reproducible exports and static research results.
The published v0.7.0 bundle covers opening-day membership of the 42nd–48th Parliaments. It separates the existence of a recorded school name from the evidence used to resolve that name to an institution. It does not assume that a biography’s attendance statement implies graduation.
Data architecture
The pipeline ingests Parliamentary Handbook records and ACARA school registers, then stores people, dated parliamentary service, institutions and education assertions separately. Stable identities preserve relationships across parliaments, party changes and reviewed school renames.
School matching combines normalised names, curated evidence and explicit review queues. Unresolved records remain visible. Missing coordinates exclude a school from the map, but do not remove its attendance evidence from the analytical denominator.
Evidence review and corrections
The local reviewer brings together a member’s recorded school name, parliamentary biography, attendance evidence and possible institution matches. A reviewer checks the person and service context, then compares the school name with the pinned ACARA register and institutional histories. Evidence that someone attended a school is separate from evidence that a recorded name refers to a current, renamed or successor institution.
Historical v0.3.3 maintainer tool: the attendance-evidence page linked from the Queechy High School mapping item. Attendance and institution mapping have separate review histories.
The school-mapping chooser keeps possible targets and research leads visible. The reviewer can select the institution and relationship, inspect source links and preview the correction. Unknown graduation, location and historical continuity remain unknown. A name similarity alone does not establish a school relationship.
Historical v0.3.3 maintainer tool: the mapping chooser separates target selection from relationship and attendance evidence. These screenshots show the local review application, rather than the public explorer.
Generated queues are disposable views. The correction authority is an append-only decision log recording the reviewer, review date, decision and applicable evidence. Later corrections explicitly supersede earlier decisions while retaining their history. Research and rejection require a reason; school-mapping source URLs may be omitted when the relationship is clear from the available context, while other accepted decision types require a source.
Saving a decision does not rebuild DuckDB or update the website. The publication workflow validates the log, replays accepted corrections during ingestion, compares the rebuilt results and verifies a versioned release before publication. The website then imports that exact bundle. The review-decision guide and review, update and publication checklist document these steps.
Reproducible publication
Each release records its source commit, source acquisition dates where known, schema version, file sizes and SHA-256 hashes. The published v0.7.0 bundle passed all 238 release-verification checks across 54 canonical files. Its canonical tables contain 580 people, 1,754 dated service segments and 352 education assertions, alongside 171,822 school-profile snapshots. Its consumed review snapshot records 501 events and 375 effective decisions, identified by the decision-log hash. The frontend pins those artifact bytes rather than refreshing upstream sources during a website build.
The historical build retains the pinned input timestamp for reproducibility. That timestamp is separate from the dates of review and publication. The v0.7.0 release notes document the published archive, deterministic builds and comparison with v0.3.3.
Public research exports omit restricted financial fields. School profiles describe their own reporting year and any reviewed successor institution; they do not describe resources available when a member attended school.
Results and coverage
The results page presents sector comparisons, historical coverage, demographics and shared schools as static charts with HTML tables. Coverage accompanies each parliament, including recorded names, verified/provisional institution matches and mapped/unmapped schools.
The school and member explorer loads one selected term’s public records. Filters retain institutions without coordinates, while an optional MapLibre view uses locally hosted land and school layers. Source evidence, reporting-year profiles and URL state keep the results inspectable and shareable.
For example, Parliament 48 has 226 opening-day members. Of those, 177 have a recorded school name and 166 have at least one verified or provisional institution match. The published bundle includes 232 institutional secondary-education assertions for that cohort. Home education remains a separate non-institution assertion with its recorded text and source, and adds no school or map point. Recorded names and resolved institutions answer different questions and are labelled separately. The contemporary ABS student-enrolment benchmark is a comparison population, not an estimate of schooling conditions during members’ childhoods.
Inspectable engineering practice
The repository exposes its contribution rules, development checks, tests and issue history. Work proceeds from a scoped issue through implementation, deterministic verification and review. The Agentic Software Systems case study describes how these controls support bounded agent-assisted development.
The engineering result is an inspectable pipeline and publication contract. The research remains limited by the completeness and interpretation of its source biographies, and corrections require supporting evidence.