02 / 03BeyondWeb Development / Information Design / Data Architecture2026
The Public Record
A political accountability tracker for New Zealand where neutrality is enforced by the database and the interface rather than promised in an editorial policy. No colour carries meaning, no status uses loaded language, and right of reply is a constraint in the schema. Parliament from 2011 onward.
Next.jsReactPostgresDrizzle ORM
SoftwareOngoing
- Organisation
- Role
- Year
- Kind
- Sector
- Location
- Status
Background
Political claims and the record of what actually happened are usually presented separately, and by the time they meet they have been framed by someone. The intent here was a source-linked tracker of promises and public statistics that holds people accountable without producing a partisan artefact in the process.
The problem
Every design decision on a project like this either introduces bias or removes it, and most of them are invisible. Colour choice, status wording, which fact appears first, whether a subject can respond. Stating a neutrality policy does nothing. The constraints have to be structural or they will erode the first time something is inconvenient.
What I built
A Next.js application with Postgres behind Drizzle ORM, deployed on Vercel, covering New Zealand from the 50th Parliament in 2011 onward. That cutoff is not arbitrary: before it, Labour's manifestos were internal documents, so the record is not comparable.
The design constraints are the substance of the project:
- No colour carries meaning anywhere. Status meters are ink only. No party colours, no red for failure, no green for success.
- Three typefaces, three jobs. Serif is always a verbatim quote. Sans is the site's own voice. Mono is provenance. You can tell who is speaking before reading a word.
- A six-status vocabulary with no loaded language. Nothing is "broken" and nobody "lied". A
seventh status,
not_yet_assessed, was added after an audit found 147 records making a no-action claim the evidence could not support. - Right of reply enforced at the database and admin tool level, not stated as a policy.
- Statement and record comparison publishes two sourced facts side by side and characterises neither.
How it works
Indicators use a term differential calculation that separates movement in the domestic series from the median across comparator economies. That answers the question every political statistic argument actually turns on, which is whether it was them or whether it was happening everywhere.
The AI role is inverted from the obvious design. It is a private curation tool for assembling and checking records, never a public judge of them.
Where it goes next
Soft-launched to a small group. Current work is the assessment backlog and the audit comparing the two assessment cohorts to test for sampling bias.
Tools and disciplines
- Built with
Next.jsReactPostgresDrizzle ORMVercel
- Discipline
Web DevelopmentInformation DesignData ArchitectureEditorial Governance