About

I work on getting great interfaces out of coding agents.

I approach it as a management job, done in code: give the agent clear direction, then put the constraints, tools and examples it needs into the codebase, instead of hoping it follows a prompt.

This blog is for design engineers who ship UI with agents every day, for designers who code and want their prototypes to reach production, and for the people who lead those teams and still care about the craft.

I started as a builder. I spent nearly twelve years at ustwo, joining as the second engineer, growing the engineering and delivery team, and eventually running the US business as CEO. Then I led design organizations: Director of Product Design and User Research at Splunk, and Head of Design at Grammarly. I tried my hand at my own travel startup too, which reminded me how much I missed making things. Now I'm back to that, as a programmer at GrowthX, working on front-end architecture and agent-driven tools in React, TypeScript, Next.js and Inertia.js.

That path is why I write about both sides. I've run teams of designers and I write production code with agents every day, and most of what I've learned about one applies to the other.

What you'll find here: setups I actually run, with what they caught and what they missed; walkthroughs from agent-built prototype to code worth merging; mistakes I make and how I address them; and how teams decide what agents should and shouldn't do. What you won't find: brand and visual identity from scratch, building AI products or agent infrastructure, tool buying guides, or beginner tutorials.

I contribute to open source when I can. Some of it is my own, like radix-mcp-server, which gives coding agents the real Radix UI components and tokens instead of their memory of them. More often it's a fix for a bug I hit in a tool I use, like Inertia or Vercel's AI Elements.

When I'm not at a keyboard I travel and take photographs; some of them are at gianpieropuleo.com.

You can find me on LinkedIn and GitHub.