Design engineer. What I design is what ships.
Design systems disagree with themselves.
The design files say one thing. The code says another. The documentation says a third. No agent can pick the winner. A person has to.
Plumb is a tool I built that reads all three sources and stops at every conflict it finds. Triage is a Figma plugin that does the same inside a design file, live in Community.
Eight years of building design systems is behind both.
You've got 0 changes waiting.
Every card is a proposal1What the agent read
An AI agent read all three. They disagree, so pick the one that should win.
2Where you set the bar
3What the agent proposed
A working rebuild of the real queue. Try the full version at plumb-approval-queue.vercel.app.
I helped enterprise teams in fintech, healthcare, and aerospace stand up design systems, and their docs always ended up scattered across pages that disagreed with each other. An AI agent editing that codebase fails the same way, and produces a change nobody decided to trust.
Behind the queue is an AI agent running a local language model. It reads those pages, rates how sure it is about every disagreement it finds, and proposes each fix. Plumb is the layer that makes it wait for you.
Built with Next.js, TypeScript, shadcn/ui, and qwen2.5 running locally in Ollama through LiteLLM. Nothing you click in the demo above leaves your browser.
A Figma plugin
Triage
The same idea inside Figma. Triage finds what is quietly rotting in a design file, and hands every fix to a person.
Get Triage on Figma Community →
A rebuild of the plugin's review queue, running the real scan output. The plugin itself is live on Figma Community.
Now
Building Plumb. It catches a design system disagreeing with itself, and hands every fix to a person to approve.
Shipped Triage. The same idea as a Figma plugin, now live on Figma Community.
Outside of that, I'm usually on a mountain bike somewhere in the hills around Portland, or at home with my two Boston terrors. Terriers. Both.
Before design systems
Before I graded tokens, I graded footage. I filmed, edited, colored, and did the sound design for BMX films for outlets like DIG BMX. The job was matching what's in your head to what's on the screen, exactly, one frame at a time.
That eye never left. It's why I notice a token that's four percent off, a corner radius that disagrees with itself, a spacing rhythm that breaks. Design systems are the same job with different source files.
Work
Owned the design system. Shipped the layer connecting enterprise systems to AI tools, where customers upload context and then decide what the AI can see and touch.
Taught Fortune 1000 teams in fintech, healthcare, and aerospace to run their own design systems, and watched the same failure every time. The files, the code, and the docs drift apart, and nobody notices until something ships wrong.
Built the design system and website for 650,000 residents. Held WCAG A and AA across all services. Figma to Pattern Lab to Drupal, with public commits.
Design systems I owned and shipped.
One at a startup, one for a city.
Owning a design system, and making deletion trustworthy
Ran releases, contributed components, and taught the system to the product designer and Fortune 1000 teams. Then audited all 18 destructive actions and cut them to three patterns.
A design system for a city
Components and service templates for 650,000 residents, holding WCAG A and AA across public services. Figma to Pattern Lab to Drupal, with public commits.