I've spent fifteen years in rooms where the design decision was never just aesthetic — a pharma batch on a wrong timeline, a displaced family on a caseworker's screen, forty million small businesses trusting a platform I helped rebuild. The hardest problem was never the interface. It's the moment a person has to act on what a system produced and own the result. I've led design functions and shipped agentic systems around that problem. I know how to solve it.
Five systems built alone with Claude Code — blank repo to production. The interface is the easy part. The hard part is what the human needs to see, and when, to trust what the agent did.
High-stakes design for complex human systems — Alibaba, Equinox, Red Cross, pharma. The common thread isn't the client. It's the constraint: the design has to hold when it actually matters.
Knowing what's good
The read before the spec is written. If it needs explaining in a demo, it needed a different design.
Knowing how to
Pharma ops. B2B commerce. Consumer fitness. Agentic AI. The range isn't accidental — it's the point.
Seeing what's possible
Not just what the product should do — what the category should become. The prototype nobody asked for, that makes everyone stop arguing.
Shipping what matters
From Figma to running code. The six apps in this portfolio were built solo — blank repo to live production, no handoffs, no spec doc first.
Nielsen’s heuristics assume a human noticing things. Agents don’t scroll. They don’t feel confused. They can’t see that the button is in the wrong place. Most AI interfaces are designing for the wrong user — the LLM is also a user, and it can’t see your affordances. That’s when the real design problem appears: not building trust in the interface, but designing for the moment a human has to decide whether to trust the output.
Our free users had a 65% task success rate. Our paid users had 32%. People were paying us for a product that worked worse than the one we gave away — traced to one word on a pricing card and a user who ran 3,774 tasks, cost us $743 in infrastructure, paid $20, never complained, and quietly disappeared. A tier name is a recruitment poster. The wrong word recruits the wrong customer, and you only find out when they churn without saying a word.
WeChat replaced business cards before anyone noticed. Shared bikes replaced ownership in a season. The data model overtook the brand model while brands were still arguing about brand. A decade away, a return, and the clearest month I’ve had about what a medium transition looks like from inside it.