Case studies
Not just what I built, but why: the problem, the options I turned down, what each decision cost, and what review caught. Each one has live comparisons you can try.
Run explorer
Finding the one bad run in five thousand
Designing a tool for inspecting AI agent runs: aligning steps with their timing, failure that survives colour blindness, and a list that keeps under 30 rows in the page for 5,000 runs.
Returns assistant
Designing for an agent you can’t fully predict
Steps that appear live then fold away, a person approves the money, failure you can act on, and one screen-reader announcement per reply instead of 25.
Design system
Tokens as data, components with no surprises
Semantic tokens enforced by a test, a theme that never flashes, and a loading button that keeps its name for screen readers.