Back to projects

Independent project, 2026

Aura

Public data about a city's air, health, and schools is free, but it's scattered across federal datasets and written for specialists. I built briefs anyone can read, without letting the model say what the data doesn't.

Role
Sole designer and engineer
Data
U.S. Census gazetteer, EPA air quality, NCES school districts, and more
Live
systems.earth

The problem

An LLM can turn a page of federal statistics into a paragraph a city council member will actually read. It can also call a moderate asthma rate "high" because "high" makes a better sentence.

For a non-technical reader, a confident wrong sentence is worse than no summary at all.

How it works

  1. Badges are the ground truth. Each metric gets a status, like "moderate," computed in code from the source data. The model never assigns one.
  2. The prose is commentary on the badges. The LLM writes each section with the badges as fixed inputs, so its characterizations have to agree with them.
  3. An audit layer checks that it did. Briefs are reviewed against their badges, and new metrics go through a research, propose, and approve workbench before they reach a brief.
  4. It runs at national scale. Any of about 30,000 Census places can get a brief on demand, with fuzzy search, peer-city rankings, trend language, and cached generation that refreshes in the background.
How a brief is built Federal datasets feed a deterministic badge layer. The LLM writes prose locked to the badges. An audit layer checks the prose against the badges and sends drift back before the brief is published. Federal datasets Census, EPA, NCES, and more Badge layer status computed in code LLM prose badges are fixed inputs Audit prose must match its badges drift
Same principle as the reporting system: code decides what's true, the model decides how to say it.

What I'm still fixing

A school-district matcher once paired a large city with a much smaller district nearby, and prose can still drift from a badge, like calling a moderate rate "high." Both are exactly the errors the audit layer exists to catch, and catching them is how I tighten it.

Why it matters to me

Civic data should be traceable, consistent, and readable by the people who make decisions with it. That's the same job I do with AI inside client operations.