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.

Plumb approval queue Demo Badge component · 0 waiting

You've got 0 changes waiting.

Every card is a proposal

1What the agent read

An AI agent read all three. They disagree, so pick the one that should win.

    2Where you set the bar

    Plumb approves on its own at 90% and up
    60% to 100%

    Drag it and watch the cards move. The model scores each finding, but it never gets to move 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 →

    Triage's Figma Community cover: a blue and violet gradient app icon above the wordmark Triage, the line 'Find design-system drift and sort every fix into a queue you actually review, nothing is auto-applied', and a label reading Figma Community Plugin, all on a pale grey background.
    I designed the plugin's identity and its Community listing.
    Triage figma plugin

    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.

    Under Your Influence, Ep. 2, for DIG BMX. I shot, edited, colored, and scored it.

    Work

    2024–2026
    Knapsack, UX Engineer

    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.

    2022–2024
    Knapsack, Solutions Architect

    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.

    2017–2022
    City of Portland, UX Engineer

    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.