Featured Case Studies

Dcyde: A Decision Log for Product Teams
A production B2B SaaS I designed and built solo, end to end, on an AI-native workflow. Dcyde captures product decisions from Slack and Figma into one searchable place. Live at dcyde.app.
Read Case Study
Stabilizing Design Delivery in a Large-Scale Transformation
Stabilized design delivery across web, mobile, and TV, then carried france.tv through Paris 2024: 200M+ views at the platform's highest-ever load.
Read Case Study
Scaling Design Delivery Across EMEA
Led EMEA campaign and acquisition design across 10+ major launches. Overwatch landing pages alone drove 1M+ signups.
Read Case StudyBefore these case studies, a decade-plus run across industries and platforms.
- Telecom, e-commerce, and creative agencies
- UX/UI across web, mobile, and e-commerce for international markets
- Front-end delivery in HTML, CSS, and JavaScript
How I ship
One loop, end to end: research the problem, orchestrate AI agents to design and build, gate every change behind a branch and a pull request, deploy, then feed what shipped back into the next pass. Click any node for the why and the how behind it.
trigger · new idea
Why
Products start as a recurring pain, not a feature list. Dcyde began while leading teams: decisions kept getting re-litigated because nobody could find why a call was made.
How
An idea has to survive a written one-page brief: who hurts, in what moment, what changes if it's solved. Only then does any pixel or line of code exist.
node · deep research
Why
Building is the expensive part, so most ideas should die before it. Research is where they're allowed to.
How
Competitor teardowns, pricing scans, positioning tests. Findings become written specs (vision, strategy, feature inventory) that later feed the agents as context. For Dcyde: a decision log, not another wiki; free for teams, enterprise pays for SSO.
node · ai agent
Why
Agents compress the distance from decision to working software, but they don't make the decisions. I direct; they parallelize the legwork.
How
Claude Code running under a house rules file and nine project skills, with the specs as memory. Agents plan, scaffold, implement, and attack: one Dcyde security round ran seven agents adversarially in parallel.
model · claude code
Why
A raw model is an intern; a model with house rules is a teammate. The difference is context, and context is a design problem.
How
Non-negotiables live in a CLAUDE.md rules file: git discipline, deploy safety, a Storybook story for every component. On top sit purpose-built skills like firestore-rules-guard and deploy-safely.
memory · decision log
Why
Chat context evaporates; products live for years. The why has to outlive the conversation that produced it, which is literally the product Dcyde exists to be. I run my own tool.
How
30+ living spec documents: vision, architecture, security audits, release process. Non-obvious calls get logged with their rationale, and agents read the relevant ones before touching code.
tool · figma
Why
AI can produce screens; it can't yet decide what good looks like. Taste still happens on the canvas.
How
Explorations and system pieces live in Figma and bridge to code over MCP; design tokens flow into CSS variables so the codebase stays the single source of truth.
tool · github
Why
Solo work needs the same guardrails as a team: a history you can trust, work you can revert, changes that explain themselves.
How
One feature, one branch. Conventional commits (1,189 of them on Dcyde) merged through staging before main. Nothing lands on main directly.
gate · ship-ready?
Why
"Done" is a decision, and a fixed checklist keeps the bar honest when it's late and the demo already works.
How
Self-crit against the spec, accessibility pass (keyboard, focus, contrast), performance budget, security headers. A miss doesn't ship; it routes to iterate.
node · open pr
Why
The pull request is the unit of accountability: reviewable, revertable, self-explaining. The deliverable is a PR, not a handoff file.
How
Branch → PR with the why in the description → checks (tests, Storybook and visual regression on Dcyde) → merge to staging, then release to main.
node · deploy
Why
Shipping is the only proof, and preview URLs kill "works on my machine."
How
Vercel builds a preview per push; staging burns in against a separate environment; production is a deliberate promote. Server rules and functions deploy by hand, never by accident.
node · iterate
Why
v1 is a hypothesis. The loop back into research is what makes the rest of the graph compound.
How
Consent-gated analytics, error monitoring, and user feedback decide the next pass. Dcyde is seven releases in and still looping.
This isn't a metaphor. It's the loop behind Dcyde: researched, designed, and shipped end to end with AI agents in the loop and every change behind a PR.
How I lead
- 01
Stabilize, then scale
Rebuild overloaded design functions into ones that ship, before asking them to grow.
- 02
Design for the highest-stakes day, not the average one
Systems that hold at 200M+ views are built for peak load from the start.
- 03
Stay hands-on to production
Leadership doesn't mean stepping away from the craft. I still design and ship.
- 04
Rebuild the workflow, don't just add the tool
As AI reshapes design, I change how I work, not just my tools.
- 05
Keep shipping solo to stay sharp
Building Dcyde end to end keeps my judgment about what's hard current.
