Shipping with AI
The interesting question was never whether to add AI to a feature. It was whether AI made a specific moment better, or just looked impressive in a demo.
Where it earns its place
I've shipped LLM-powered features and agentic workflows: a chat interface grounded in real product data, background agents that turn a rough task into a checked-in change, an assistant that answers honestly instead of guessing. The ones that held up in production shared a pattern: a narrow job, a visible failure mode, and a way for the user to tell when the model got something wrong.
Where it doesn't
A chatbot bolted onto a page that already worked fine tends to add latency and a new way to be wrong, without solving anything a simpler form or a clearer UI didn't already solve. Most of the judgment call is knowing which one you're looking at before you build it, not after.
How I build with it
Claude Code and the Claude Agent SDK are part of how I ship now, not a novelty layered on top of normal work. This portfolio's own assistant panel is built the same way: honest about what it knows, honest about what it doesn't, grounded in real background instead of generic filler.
Stack: Claude Code, Claude Agent SDK, LLM-powered features, agentic workflows