I started in 2012 as a designer who could nudge a div. Seven years later I was a frontend engineer who could run a usability study. Somewhere in between, I stopped introducing myself as either.
I like the job most when the handoff doesn’t exist — when design and engineering are the same conversation and the artifact is the product. That’s where I try to work.
I work independently, partnering with two clients at a time — usually climate, fintech, or AI — because I like to stay deep in the work. Most engagements last 8–16 weeks and end with something shipped.
When I’m not working I’m running long distances in bad weather, making mediocre coffee, and reading about obscure typefaces. I over-index on monospace.
Climate analytics teams, fintech unicorns, healthcare networks, consumer AI startups, and a handful of small editorial products. Names on request — a few are under NDA.
You can train it, but you have to want to. I've watched enough people talk about 'taste' as an excuse for shortcut decisions — it isn't. It's a slow-grown pattern-match.
No prototype teaches you what a hundred real users teach you. I stay in the repo until launch and for two weeks after. That's where design actually happens.
In that order. Products that try to please everyone please nobody. I build for a specific person doing a specific thing — and the world of 'everyone else' sorts itself out.
A good system lets the next designer safely disagree with me. If the tokens can't flex, I haven't built a system — I've built a cage.
Partnering with climate, fintech and AI founders to ship opinionated v1s and scale design teams from 1 → 6.
Led redesign of a 12-surface B2B SaaS platform. Shipped the design system that now backs 9 products.
Scaled the consumer app from 40K to 2.4M users. Hired and mentored four designers.
Seed-stage MVPs across commerce, education and logistics. Learned production React the hard way.