AI Product Engineer β I ship real software with AI in the loop, in the open.
I work where product, engineering, and AI systems meet: AI-assisted delivery, AI agents, automation, developer tooling, testing and evaluation, and the architecture that holds it all together.
- π οΈ Building useful open-source tools.
- π€ AI-assisted engineering β and being honest that it's part of how I work.
- βοΈ Writing clearly about how the work actually gets done.
- π Security research and responsible disclosure.
- overkill β OVERKILL: Claude Opus 5.5 overengineers chores as chain-reaction machines; a deterministic physics sim, not the model, decides whether each one works. Live: overkill-95w.pages.dev (machines designed offline; live generation needs an API key and isn't running). Prove.
- delivery-gate (source private) β a CLI that gives a hard GO/NO-GO on a release: machine auto-checks plus a human-attested manifest. Enforce.
- hallucination-hunter β detect & score LLM hallucinations by groundedness; runs offline, no API key. Measure.
- ai-delivery-engineering β a playbook for shipping software reliably with AI-assisted workflows. Methodology.
- field-lab β the portfolio hub, live at field-lab.pages.dev.
- CONTROL ROOM (source private) β directs AI coding agents through a visible Scout β Builder β Verifier chain, gated by human approval at every step. Live demo: control-room-build-week-2026.pages.dev. Submitted to OpenAI Build Week 2026, Education track. Supervise.
Ten languages, ten small apps β one small browser app per language, each one live, each README with its tests and limits.
- overprint (live) Β· Rust β WASM β a photo becomes a two-ink riso print. Print.
- sky-report (live) Β· GLSL + TypeScript + Pages Function β the live sky, ray-marched from an airport's current METAR. Render.
- small-print (live) Β· Python in the browser (Pyodide) β any Terms of Service mapped clause by clause by 53 hand-written rules, every quote verified; free, no AI, nothing leaves your device. Verify.
- silt (live) Β· Zig β WASM β 10,000 years of rain carving a painted mountain. Simulate.
- tide-table (live) Β· Go β WASM β a cron schedule as a year-long almanac, daylight-saving seams included. Schedule.
- paren (live) Β· ClojureScript β a Lisp expression evaluated one substitution at a time. Step.
- single-track (live) Β· Elm β a single-track timetable puzzle, par proven on plates IβVIII. Solve.
- sideband (live) Β· C β WASM, AudioWorklet β a six-operator FM synth in the audio thread. Play.
- knot (live) Β· TypeScript + Three.js β draw a rope in 3D; it works out which knot you tied. Identify.
- stroke-order (live) Β· Kotlin/JS β write a kanji; order and direction checked stroke by stroke. Write.
- π Website: field-lab.pages.dev
- π Pinned projects below.
Built with AI-assisted engineering. The work is real; the method is part of the point.