<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Adrià Cidre</title><description>Writing about AI-assisted development, Claude Code workflows, and building software with AI.</description><link>https://adriacidre.com/</link><item><title>An AI Wrote 200% Where It Meant 20%. The Bound Caught It.</title><link>https://adriacidre.com/blog/bounded-extraction/?utm_source=rss/</link><guid isPermaLink="true">https://adriacidre.com/blog/bounded-extraction/?utm_source=rss/</guid><description>Confidence is what the model thinks of itself. Bounds are what your system thinks of the model. They are independent signals; use both.</description><pubDate>Tue, 16 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Don&apos;t Delete the Row. Delete the Key.</title><link>https://adriacidre.com/blog/dont-delete-the-row-delete-the-key/?utm_source=rss/</link><guid isPermaLink="true">https://adriacidre.com/blog/dont-delete-the-row-delete-the-key/?utm_source=rss/</guid><description>Append-only history and GDPR-style erasure look incompatible. They are not, if you put the secret in two places.</description><pubDate>Mon, 18 May 2026 00:00:00 GMT</pubDate></item><item><title>There Is No Workflow Engine. It&apos;s Just Git.</title><link>https://adriacidre.com/blog/there-is-no-workflow-engine/?utm_source=rss/</link><guid isPermaLink="true">https://adriacidre.com/blog/there-is-no-workflow-engine/?utm_source=rss/</guid><description>My agent pipeline runs for hours, survives Ctrl+C, and resumes from where it stopped. There&apos;s no Temporal, no queue, no database. The state lives in YAML files and commits.</description><pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate></item><item><title>I&apos;ve Been Shipping &apos;Multi-Tenant&apos; Wrong for a Decade</title><link>https://adriacidre.com/blog/multi-tenant-isolation-vs-awareness/?utm_source=rss/</link><guid isPermaLink="true">https://adriacidre.com/blog/multi-tenant-isolation-vs-awareness/?utm_source=rss/</guid><description>Every system I built had a tenant_id column and a discipline problem. This is the first one where the database itself refuses to return the wrong rows.</description><pubDate>Wed, 13 May 2026 00:00:00 GMT</pubDate></item><item><title>Voice Agents Don&apos;t Need to Be Faster — They Need to Feel Faster</title><link>https://adriacidre.com/blog/voice-agent-perceived-latency/?utm_source=rss/</link><guid isPermaLink="true">https://adriacidre.com/blog/voice-agent-perceived-latency/?utm_source=rss/</guid><description>Two agents with identical latency can feel completely different. The gap is fixable at the orchestration layer, without touching the model.</description><pubDate>Tue, 05 May 2026 00:00:00 GMT</pubDate></item><item><title>I ran a maintenance agent for 10 days. The number that mattered was 14</title><link>https://adriacidre.com/blog/maintenance-agent-14-refusals/?utm_source=rss/</link><guid isPermaLink="true">https://adriacidre.com/blog/maintenance-agent-14-refusals/?utm_source=rss/</guid><description>A maintenance agent filed 559 bugs and fixed 412 on its own. The interesting number is the 14 it refused to touch.</description><pubDate>Sun, 26 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Parallelism Was a Workaround. Agents Make It Optional.</title><link>https://adriacidre.com/blog/parallelism-was-a-workaround/?utm_source=rss/</link><guid isPermaLink="true">https://adriacidre.com/blog/parallelism-was-a-workaround/?utm_source=rss/</guid><description>Feature branches and merge queues were how we coped with slow humans. When an agent finishes a task in ten minutes, the overhead is the bottleneck.</description><pubDate>Tue, 21 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Don&apos;t Read the PDF. Write the Parser.</title><link>https://adriacidre.com/blog/self-healing-parsers-instead-of-vision/?utm_source=rss/</link><guid isPermaLink="true">https://adriacidre.com/blog/self-healing-parsers-instead-of-vision/?utm_source=rss/</guid><description>I stopped feeding hospital PDFs to a vision model. When the layout changes, the AI fixes the parser instead — and production never sees a token.</description><pubDate>Sun, 19 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Voice Agents Don&apos;t Know When You&apos;re Done Talking</title><link>https://adriacidre.com/blog/voice-agent-turn-taking/?utm_source=rss/</link><guid isPermaLink="true">https://adriacidre.com/blog/voice-agent-turn-taking/?utm_source=rss/</guid><description>Most builders assume end-of-turn detection is a silence threshold. That model breaks in production. The fix is architectural: four probabilistic events, speculative reasoning, and everything downstream cancellable.</description><pubDate>Wed, 15 Apr 2026 00:00:00 GMT</pubDate></item><item><title>The 8th Specialist: An AI That Breaks Things on Purpose</title><link>https://adriacidre.com/blog/explorer-agent-breaks-things-on-purpose/?utm_source=rss/</link><guid isPermaLink="true">https://adriacidre.com/blog/explorer-agent-breaks-things-on-purpose/?utm_source=rss/</guid><description>An 8th specialist that touches the browser — navigating, clicking, and typing to find bugs that scripted journeys miss. How exploratory testing with Playwright catches what verification alone cannot.</description><pubDate>Mon, 23 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Specialist Agents: Looking at Every Page with Different Eyes</title><link>https://adriacidre.com/blog/specialist-agents-different-eyes/?utm_source=rss/</link><guid isPermaLink="true">https://adriacidre.com/blog/specialist-agents-different-eyes/?utm_source=rss/</guid><description>Seven specialists, each with their own checklist — QA, UX, UI, Security, Performance, Data Leakage, Language. How splitting evaluation into focused agents catches more.</description><pubDate>Wed, 18 Mar 2026 00:00:00 GMT</pubDate></item><item><title>25 Issues Overnight: Batch AI That Doesn&apos;t Need You</title><link>https://adriacidre.com/blog/batch-ai-orchestration-overnight/?utm_source=rss/</link><guid isPermaLink="true">https://adriacidre.com/blog/batch-ai-orchestration-overnight/?utm_source=rss/</guid><description>The leap from AI-assisted coding to autonomous batch processing. Fresh context per task, filesystem locks, model routing, and orchestration that runs while you sleep.</description><pubDate>Wed, 18 Mar 2026 00:00:00 GMT</pubDate></item><item><title>The Boring Stuff That Keeps AI Running at 3am</title><link>https://adriacidre.com/blog/reliability-patterns-ai-systems/?utm_source=rss/</link><guid isPermaLink="true">https://adriacidre.com/blog/reliability-patterns-ai-systems/?utm_source=rss/</guid><description>Exponential backoff, dual timeouts, SSE heartbeats, idempotency caches — the unglamorous patterns that keep LLM-powered systems running at 3am.</description><pubDate>Thu, 12 Mar 2026 00:00:00 GMT</pubDate></item><item><title>/qa-run: AI-Driven QA That Closes the Loop</title><link>https://adriacidre.com/blog/qa-run-ai-driven-qa/?utm_source=rss/</link><guid isPermaLink="true">https://adriacidre.com/blog/qa-run-ai-driven-qa/?utm_source=rss/</guid><description>Real browser, predefined journeys, specialist agents checking every step. How QA findings feed back into the issue tracker to close the development loop.</description><pubDate>Sun, 08 Mar 2026 00:00:00 GMT</pubDate></item><item><title>/work-issue: Autonomous Implementation</title><link>https://adriacidre.com/blog/work-issue-autonomous-implementation/?utm_source=rss/</link><guid isPermaLink="true">https://adriacidre.com/blog/work-issue-autonomous-implementation/?utm_source=rss/</guid><description>The AI picks up a planned issue, implements it, tests it, commits, and marks it done. How headless batch mode lets me plan in the afternoon and wake up with code in the morning.</description><pubDate>Wed, 04 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Sub-10ms AI Responses Without Calling the LLM</title><link>https://adriacidre.com/blog/semantic-cache-sub-10ms-ai-responses/?utm_source=rss/</link><guid isPermaLink="true">https://adriacidre.com/blog/semantic-cache-sub-10ms-ai-responses/?utm_source=rss/</guid><description>Users ask similar questions in different words. Semantic caching with pgvector turns repeated intent into instant answers — no LLM call, no embedding, no retrieval pipeline.</description><pubDate>Wed, 04 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Your AI Forgot What You Said 30 Messages Ago</title><link>https://adriacidre.com/blog/context-window-management-long-ai-conversations/?utm_source=rss/</link><guid isPermaLink="true">https://adriacidre.com/blog/context-window-management-long-ai-conversations/?utm_source=rss/</guid><description>Context windows fill up fast in long AI conversations. Sliding windows, progressive compression, and token budgeting — the patterns I built before I knew their names.</description><pubDate>Thu, 26 Feb 2026 00:00:00 GMT</pubDate></item><item><title>/plan-issue: Collaborative Planning with AI</title><link>https://adriacidre.com/blog/plan-issue-collaborative-planning/?utm_source=rss/</link><guid isPermaLink="true">https://adriacidre.com/blog/plan-issue-collaborative-planning/?utm_source=rss/</guid><description>Vague instructions produce vague implementations. How I sit with the AI to refine rough ideas into concrete, implementable specs — before any code gets written.</description><pubDate>Wed, 25 Feb 2026 00:00:00 GMT</pubDate></item><item><title>AI-Assisted Development: A Loop, Not a Chat</title><link>https://adriacidre.com/blog/ai-assisted-development-loop-not-chat/?utm_source=rss/</link><guid isPermaLink="true">https://adriacidre.com/blog/ai-assisted-development-loop-not-chat/?utm_source=rss/</guid><description>The bottleneck isn&apos;t the AI — it&apos;s me. Three slash commands that form a loop: Plan, Work, QA. How structured phases replaced ad-hoc chatting and made AI development manageable.</description><pubDate>Wed, 18 Feb 2026 00:00:00 GMT</pubDate></item></channel></rss>