Deterministic first
Model output gets wrapped in rules, scoring and gates so the system behaves predictably even when the model does not. The interesting engineering is almost never the prompt.
About
I build LLM systems wrapped in deterministic, verifiable workflows: multi-model routing, non-LLM scoring layers, evals against real labelled data, human review gates, and safety that fails closed. 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
These are not aspirations. Each one has cost me something, which is the only way I know they are real.
Model output gets wrapped in rules, scoring and gates so the system behaves predictably even when the model does not. The interesting engineering is almost never the prompt.
Evals run against real labelled data and the pass/fail is visible where the work happens, not buried in a notebook nobody opens twice.
Any uncaught edge halts the pipeline. No silent fallback to probably-fine. It costs throughput and I keep paying it.
Operator review gates are a first-class part of the design, not an apology bolted on after a bad week.
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
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.
A tutored exam-prep product with Stripe billing, spaced-repetition scheduling, and bilingual English/Spanish content. The localisation pipeline moves ~3,400 items through a five-stage QA gate; it is resumable and cost-capped, so a bad run is cheap to abandon rather than something I have to babysit to the end.
Groq · Next.js · Supabase · TypeScript · Stripe · SM-2
Type an address, get ranked candidate matches drawn from 25+ public-record sources, with a per-issue score breakdown a voter can read and argue with. Determinism-audited: the same inputs produce the same ranking every run. For anything touching an election, an unexplainable ranking is not a feature.
Next.js · TypeScript · determinism audit · 25+ record sources
One blog topic fans out to a Facebook caption, an Instagram caption with hashtags, and an email subject and body, from a single model call on a nightly cron. 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
One item routed to Ollama, Groq and Codex in parallel. A non-LLM scoring layer picks the winner, then a person approves before anything is written to SQL. Runs at zero marginal cost locally, which is the reason it actually gets used.
Ollama · Groq · Codex · deterministic scoring · human-in-loop
A portable safety fence for AI coding agents: it blocks the dangerous actions — leaking secrets, deleting things, claiming done without proof, rewriting history — and lets the safe ones 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
One model generates assets, a second verifies them, and the run fails closed if centroid drift crosses a fixed threshold. It exists because a single model generating a large asset run will drift confidently and quietly, and nobody notices until the whole set is wrong.
GPT-4o · Gemini vision · consensus gate · spec-driven pipeline
The honest shape of it
I started building with AI in July 2023. Everything on this site postdates that. I am not going to dress it up as a decade in machine learning, because it is not one, and the people I want to work with can tell the difference in about four minutes.
What the last stretch actually bought me is volume under real conditions: 38 systems, 25 of them carrying real users, built end to end rather than handed off at the interesting part. I have written the model routing, the eval harness, the review gate, the billing, and the thing that pages me when it breaks. That range is why I care about governance in the specific way I do — every control I argue for is one I have also had to live with at two in the morning.
The gap in that story is scale of organisation, not scale of system. I have built the controls; I have not yet run them across a large team with independent sign-off. That is precisely the next thing I want.
What I am looking for
Next step
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.