All posts
Engineering 3 min read Feb 23, 2026

Day 5: Cleaning Up AI Slop

Generative AI struggles with design reuse and human-friendly output—templatizing conversations, taming UUIDs, and the liberation of delegating implementation.

Where AI Falls Short

There are a few things that generative AI is not very good at.

For example, it tries to build everything from primitives instead of reusing existing design patterns. I could write a skill to guide the agents to adopt existing patterns, but it’s surprisingly difficult to come up with engineering principles that are general enough to apply across the codebase yet specific enough to be strictly followed by LLMs.

Another example is the long strings of UUIDs contained in the generated response templates. These are not a problem for the LLM to parse and understand, but for the human user, you always want something friendlier like the customer name.

Templatized Messaging

A key product decision I made early on was to only allow admins to have free-form conversation with the agent. All outgoing conversations to customers have to be templatized to avoid hallucination. This somehow resulted in many duplicated or non-templatized messages that I had to prompt Claude to refactor.

A Liberating Experience

Despite these shortcomings, delegating implementation to coding agents has freed my mind to work on other tasks that are critical to the business. I still need to touch the code from time to time in order to get a firm grasp of any bugs or UX issues. But moving one layer above the code without sacrificing quality and productivity is definitely a liberating experience for me.