Adam Selzer
03

Prototypes

A lab notebook. Proof points beat promises, so each entry is working software you can run. They range from small standalone demos to the Safety-Net AI cluster (P-05 to P-09): four interoperating services and a design system, built with the evaluation harnesses and auditable cores a real public-benefits system would need.

P-01

Clear letter

Reads a bureaucratic notice and tells the recipient what it says, what to do, and when. The legal substance stays intact.

State agencies send millions of notices each year that determine whether a family eats, whether someone keeps their healthcare, whether a renewal goes through. Most of them are functionally unreadable. Bridge Michigan called it government mumbo jumbo when Civilla started rewriting Michigan’s letters; this prototype is that work, compressed into software.

The first version was built over two evenings: ingest a notice, identify the legally required disclosures, and rewrite everything around them at a plain-English reading level, preserving meaning and chain-of-custody.

The current version, Clear letter, turns that engine into a tool a resident can use directly. Paste or photograph a Medicaid letter and it returns a plain-English explanation of what the letter says, what you need to do, and the deadline you are up against.

Claude · FastAPI · Next.js
P-02

Async AI-moderated interview tool

A single researcher running a structured conversation with a hundred participants at once, without losing depth.

A field-research tool. Participants get a link, the tool runs a real interview — probing follow-ups, clarifying questions, gentle empathic acknowledgments — and the researcher gets back synthesized findings and the raw transcripts.

We’ve used it inside Civilla research projects with caseworkers and benefits applicants. Not a replacement for in-person research. A way to extend its reach by 10×.

Claude · Next.js · Postgres
P-03

Scholarship eligibility quiz

Designed with a state workforce agency so residents can find programs they qualify for in under three minutes.

Twelve questions. Behind them, a rules engine that maps to ~40 state workforce programs and benefits, at a public URL.

Lena and I mapped the eligibility rules and designed the experience; a partner agency built it. No procurement was required, since it’s a microsite rather than a system change.

Astro · Cloudflare
P-04

Curated intelligence dashboard

A daily-updated view of AI developments relevant to public services. Personal use, but the architecture is shareable.

An internal tool that scrapes ~80 sources, summarizes what’s new, and pushes me a morning brief. Two months in I started sharing the brief with a handful of partner leaders. It’s becoming a small newsletter.

Cron · Claude · RSS
P-05

Rules as code

SNAP (food assistance) eligibility as deterministic, audited code, exposed to AI agents as tools. Every answer carries its rule trace and citation.

SNAP (food assistance) eligibility is a body of federal and state rules. This encodes that math as tested, versioned Python and exposes it to AI agents over the Model Context Protocol (MCP), the open standard for giving a model tools. A model can read a messy application and reason about it, while the eligibility decision is made by code a caseworker or an auditor can inspect.

Every determination comes back with the rule trace and the policy citation behind it, so a result is reproducible and explainable. It is the foundation the other three tools build on: the benefits intake agent calls it for the eligibility screen, and the policy Q&A is exposed through it as a lookup tool. The four run together as one system.

Python · MCP · pytest
Visit →
P-06

Grounded policy answers

Question answering over the real Michigan eligibility manual, every statement cited to its section. It refuses when the manual cannot ground an answer.

A caseworker often needs to look up a policy point and trust the answer. This answers questions over a real subset of the Michigan eligibility manual (the BEM and BAM sections that govern food assistance) and cites every statement to the section it came from. When retrieval cannot ground an answer, it declines rather than inventing one.

The retrieval runs locally, so it costs about nothing: keyword and semantic search over the manual, then a re-rank, with the knobs exposed so the design reads as a measured comparison. This is the retrieval-augmented generation (RAG) layer of the system, and the rules core exposes it as a policy-lookup tool. See it in the system.

Python · LlamaIndex · Streamlit
Visit →
P-07

Benefits intake agent

Reads a messy application and its documents, screens the case, and hands a caseworker a recommendation. It never denies.

This reads an application and its verification documents (pay stubs, leases, IDs), screens the case, and hands a caseworker a recommendation with its reasoning. It never produces a denial; the worst it can do is route a case to a human for review, which is enforced by the type system and a test rather than a prompt.

The model does what it is good at, reading a skewed photo of a pay stub. The eligibility decision is a call into the rules core, and a conflict between a document and the application is surfaced for a person rather than guessed. Its front-end is built in Civil, the design system below. See it in the system.

Python · LangGraph · Claude vision
Visit →
P-08

Plain-language notices

A small fine-tuned model that rewrites benefit notices into plain language, proving every legally operative fact survived.

Agencies send millions of notices that decide whether a family keeps its benefits, and most are unreadable. This rewrites a notice into plain language while proving the legally operative facts survived: the amount, the dates, the action, and the appeal rights. A readable rewrite that drops the appeal deadline fails a deterministic check before it can ship.

It is the engineering study behind Clear letter (P-01, above): the same task, carrying the model-training and safety-evaluation work a production version would need. It compares a small fine-tuned model (LoRA, a lightweight way to adapt a model) against prompting and retrieval, and the rewriter is what makes the intake agent’s output readable for a resident. See it in the system.

Python · LoRA · Streamlit
Visit →
P-09

Civil design system

A design system for software that decides things about people's lives, built on USWDS and refined past what government usually ships.

Civil is a design system for software that makes decisions about people’s lives. It builds on the U.S. Web Design System (USWDS), the federal standard, and refines it past what most government interfaces ship: a serif for display headings, an evergreen primary color, and a warm paper background, all expressed as CSS tokens so a palette change is one edit.

It dresses the four tools above so they read as one system. Browse the live showcase for the tokens, type, color, and components, with the reasoning behind each decision also written up in DESIGN_SYSTEM.md.

USWDS · CSS tokens
Visit →
move · open · esc close