About

I am the person who asks what happens when it is wrong

I build AI systems that can show their work, and the review process that decides whether they ship: checks against real labelled data, rules that need no model to fire, human sign-off where it counts, and a default of stopping rather than guessing. 38 systems since July 2023, 25 of them in production, 2 in the care sector. Based in Oakland, California.

The part I am actually good at is not getting a model to produce something impressive. That is the easy half now. It is building the apparatus around it that can tell you, honestly and repeatedly, whether the impressive thing is also correct — and that stops the line when it is not.

Method

Five things I do on every build

These are not aspirations. Each one has cost me something, which is the only way I know they are real.

Predictable even when the model is not

Model output gets wrapped in rules, scoring and gates so the system behaves the same way every time. The interesting engineering is almost never the prompt.

Verifiable by design

Evals run against real labelled data and the pass/fail is visible where the work happens, not buried in a notebook nobody opens twice.

It stops rather than guesses

Any uncaught edge halts the pipeline. No silent fallback to probably-fine. It costs throughput and I keep paying it.

A person signs off, by design

Operator review gates are a first-class part of the build, not an apology bolted on after a bad week.

No real data in anything demonstrable

Every demo runs on fictional sample data. Real products operate on separate, isolated data paths. This is enforced by a scanner on every build, not by me remembering.

Selected work

Six that show different parts of the job

Picked because each one shows a different part of the job, not because they went best. The full set, with running demos, is in the portfolio.

See the work in detail

TradeTEST.TRAINING

Live

Paying customers study for a licence exam in two languages, and no translated question ships until five checks agree it kept its meaning. The pipeline that enforces that moved ~3,400 items, resumable and cost-capped, so a bad run is cheap to abandon.

Groq · Next.js · Supabase · TypeScript · Stripe · SM-2

Find Your Vote

Live

Every voter sees exactly why a candidate ranked where they did, and the same address always gets the same answer — audited for that, run after run. For anything touching an election, a ranking nobody can explain is not a feature.

Next.js · TypeScript · determinism audit · 25+ record sources

Sea Star publish automation

Live

Non-technical staff publish to four channels from one post, nightly, with no engineer in the loop. It runs as an admin tool in production, which means it fails in front of someone who will tell me.

Groq · Next.js · publish API · nightly cron

Multi-Model QA Cascade

Internal

No model grades its own homework: three providers propose in parallel, plain rules rank them, and a person approves before anything is written to the database. Runs at zero marginal cost locally, which is the reason it actually gets used.

Ollama · Groq · Codex · deterministic scoring · human-in-loop

agent-gate

Open source

Stops a coding agent from leaking secrets, deleting data, or claiming success without proof — and lets the safe actions through. Stdlib-only Python, no dependencies, 53 tests. Off by default and on purpose; it only enforces once you explicitly activate it.

Python · deterministic rules · fail-closed · 53 tests

Vision consensus pipeline

Internal

Stops an inconsistent asset run before it reaches production: one model generates, a second verifies, and the run halts when they disagree past a fixed threshold. A single model on a large run drifts confidently and quietly — nobody notices until the whole set is wrong.

GPT-4o · Gemini vision · consensus gate · spec-driven pipeline

The honest shape of it

Where this came from

I began shipping AI systems in July 2023, on top of a longer career of high-stakes work in regulated industries. The relevant fact is volume under real conditions: 38 systems built, 25 live with real users, and two in care settings — built end to end rather than handed off at the interesting part. I have written the model routing, the checks, the review gate, the billing, and the alerting that wakes me when something fails outright. Drift is the part I still catch by looking rather than by an alarm, and I say that out loud because a monitoring claim you cannot show is worse than a gap you can name.

I have built these controls owner-side. I am ready to apply them across a health system with independent review and cross-functional accountability.

What I am looking for

The work I want next

Next step

Worth a conversation?

The resume has the compressed version and opens without an email wall. The governance page has the machinery and the case where my own gates were wrong. If any of it fits what you are hiring for, the form comes straight to me.