
Building with AI in Production
What it actually takes to ship AI. Prompt debugging, conversation history, vendor architecture, and the gap between demo and real product.
When the LLM Remembers Too Much
A vendor rate becomes a budget constraint and reasoning leaks across step boundaries — two failures from implicit state crossing where it shouldn't, and the architecture that fixed both.
Null Bytes, Dead Streams, Last Chunk
SSE adds overhead for mixed events, silent streams hang without error, and the last audio chunk vanishes on page close — three LLM streaming fixes.
200 OK, Data Wrong
Imagen rewrites your prompt, Lambda corrupts your binary buffer, GSC returns empty rows, and structured output truncates without error.
Filling Forms No Tool Can Template
Every tender form is different, templating tools need placeholders you can't insert, and markdown round-trips destroy the document.
It Works, But You Can't Ship It
Two AI providers fill the form correctly. Both route document data through global endpoints that don't meet every customer's residency policy.
An Empty AI Response Corrupted Chat History
Gemini returned HTTP 200 with zero content. I saved the empty response to conversation history. The chat never recovered. Here's what went wrong.
Three Bugs That Were Actually My Prompts
Three debugging sessions where I chased AI misbehavior for hours. Each time the model was executing my instructions exactly as written.
Nobody Finishes a 15-Minute AI Interview
How I decomposed a monolithic AI discovery interview into 8 standalone tools — each with its own deliverable, landing page, and search intent.
Build Apps Like LEGO Bricks
Use ports & adapters architecture to swap AI providers like LEGO bricks. Avoid vendor lock-in, optimize costs, test new models easily.
"It Works" Isn't Enough for Commercial Software
Vibe-coding excels for personal projects but creates dangerous technical debt in commercial products that require human-designed architecture and oversight