Back to News & Insights
Artificial Intelligence October 4, 2026 · 10 min read

I Built a Political Accountability Agent That Queries Sanity

This is a submission for the Sanity Challenge, Path One: Ship an Agent That Queries Real Content ...

I Built a Political Accountability Agent That Queries Sanity

This is a submission for the Sanity Challenge, Path One: Ship an Agent That Queries Real Content

True Oath is a political accountability ledger starting with Australia and designed to expand to other countries. It is designed to answer a question that ordinary keyword search cannot answer reliably:

What did a political party promise, what evidence shows what happened next, and where is the evidence still incomplete or contradictory?

The project models political accountability as linked, source-grounded records rather than as a list of unverified claims. A promise is connected to its manifesto, government, evidence records, dates, status, confidence, and source URLs.

The first jurisdiction is Australia. The initial evidence plan combines: election manifestos and policy documents; Australian Parliamentary Budget Office election-commitment costings; federal budgets and budget papers; parliamentary records and legislation; departmental and statutory-authority reports; official outcome statistics; and carefully labelled independent assessments.

The interface presents each promise with a status such as Kept, Partially kept, In progress, Not started, Broken, Reversed, or Unverifiable. The system is intentionally conservative: an absent search result is not treated as proof that a promise was broken.

Election season is arriving in one country after another, and the question many voters eventually ask is simple: what actually happened? Campaign language is memorable, but the details are scattered across budget papers, legislation, departmental updates, audits, statistics, court records, and later explanations. It is easy to remember a promise and much harder to audit it fairly.

True Oath is my attempt to make that audit navigable. The point is not to manufacture a score for every political claim. It is to preserve the promise, follow the evidence, show contradictions, and leave uncertainty visible when the record is incomplete. Can Sanity help us keep our sanity? That is the experiment, with the pun fully intended.

The project is named true-oath, the clean true-oath.vercel.app domain is publicly reachable, and Vercel SSO deployment protection has been disabled for this read-only demo. During development, run it locally:

Its first screen is an investigative ledger: readers can search and filter the four promise files, select a case file, inspect confidence and linked evidence counts, and jump to the integrity method. The dashboard now includes a status-distribution chart, evidence-depth bars, and an average-confidence readout so the corpus can be scanned before a reader opens an individual file. Lucide icons, responsive layouts, keyboard-friendly controls, status colors, subtle motion, and mobile overflow states are included in the interface.

The Sanity dataset contains the first independently collected Australia corpus: 15 public sources, 4 promises, 4 evidence records, 4 milestones, 4 outcome indicators, 4 independent assessments, 3 competing claims, 1 manifesto, 1 government record, and 4 integrity events. The production dataset is now public-read for judging and API inspection. Public reads do not grant anonymous editing or uploads.

The repository contains: web/ — the Next.js accountability interface; sanity/ — the Sanity Studio and schema; sanity/schemaTypes/index.ts — the structured content model; README.md — local setup and deployment notes.

Sanity is the evidence layer for True Oath. The Studio schema separates the main concepts instead of flattening them into one article: government records the governing party or coalition and its time period; manifesto records the election document and the party that published it; promise records a specific commitment and its current assessment; source preserves the publisher, URL, date, and source category; evidence records a dated finding and whether it supports, partially supports, contradicts, or is neutral toward a promise; milestone records announcements, funding, legislation, starts, delays, cancellations, and delivery events; indicator records measurable outcomes against a defined baseline, target, period, and unit; assessment records an independent verdict and its reasoning; and claim records competing explanations or interpretations without silently treating them as verified facts. integrityEvent records corruption and integrity signals separately from promise verdicts, including mechanism, evidence status, official-finding status, confidence, source, and whether a demonstrated effect on implementation exists.

The current promise records are linked to milestones, outcome indicators, independent assessments, and competing claims. That means an agent can distinguish “a policy was announced”, “a measurable output changed”, “an assessor gave a verdict”, and “a government or public interpretation explains why” instead of collapsing those into one status field.

Sanity Studio and schema. I used a hosted Sanity Studio as the editorial surface for the project. The schema is the first important design decision: it keeps a campaign promise separate from the source that announced it, the evidence that tests it, the milestone that records implementation, the indicator that measures an outcome, and the assessment that explains a verdict. The model also has claim and integrityEvent documents so competing explanations and corruption-related records are not silently merged into a promise score.

Content Lake and dataset. The structured records live in the separate True Oath project wak4l160, dataset production. The dataset is public-read so judges can inspect the records, but writes still require authorization. The current corpus has 57 documents: sources, promises, evidence, milestones, indicators, assessments, claims, integrity events, a manifesto, and a government record.

I imported the public records as linked Sanity documents instead of flattening them into one JSON blob:

That makes relationships queryable. For example, an assessment can point to a promise and its source, while an indicator can preserve the measurement period and unit independently from the political language that motivated it.

Want to discuss this further?

Book a free strategy call with our team to see how these insights apply to your specific business goals.

Book a consultation