<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Nabh Patodi Writing</title>
    <link>https://nabhpatodi.com/blog/</link>
    <description>Technical articles about AI engineering, software architecture, and production systems.</description>
    <language>en</language>
    <lastBuildDate>Sun, 26 Jul 2026 00:00:00 GMT</lastBuildDate>
    <atom:link href="https://nabhpatodi.com/rss.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>A Timeout Doesn&apos;t Tell You Whether the Write Happened</title>
      <link>https://nabhpatodi.com/blog/a-timeout-doesnt-tell-you-whether-the-write-happened/</link>
      <guid isPermaLink="true">https://nabhpatodi.com/blog/a-timeout-doesnt-tell-you-whether-the-write-happened/</guid>
      <pubDate>Sun, 26 Jul 2026 00:00:00 GMT</pubDate>
      <description>Retrying an external write is a guess about which of three worlds you are in. Idempotency keys, business-key deduplication, and the database invariants that make the guess unnecessary.</description>
      <category>Distributed Systems</category>
      <category>Reliability</category>
      <category>Integrations</category>
    </item>
    <item>
      <title>Tracing a Request You&apos;re Not Allowed to Log</title>
      <link>https://nabhpatodi.com/blog/tracing-a-request-youre-not-allowed-to-log/</link>
      <guid isPermaLink="true">https://nabhpatodi.com/blog/tracing-a-request-youre-not-allowed-to-log/</guid>
      <pubDate>Sun, 19 Jul 2026 00:00:00 GMT</pubDate>
      <description>Correlating one job across TypeScript, a queue, and Python — without turning routine telemetry into a second copy of the sensitive payloads it describes.</description>
      <category>Distributed Systems</category>
      <category>Observability</category>
      <category>Privacy Engineering</category>
    </item>
    <item>
      <title>Don&apos;t Put a Model Where an If-Statement Will Do</title>
      <link>https://nabhpatodi.com/blog/dont-put-a-model-where-an-if-statement-will-do/</link>
      <guid isPermaLink="true">https://nabhpatodi.com/blog/dont-put-a-model-where-an-if-statement-will-do/</guid>
      <pubDate>Sun, 12 Jul 2026 00:00:00 GMT</pubDate>
      <description>Every model call in a routing path converts a fact into a guess. What I learned about spending probabilistic routing only where the ambiguity is real.</description>
      <category>Multi-Agent Systems</category>
      <category>AI Engineering</category>
      <category>Architecture</category>
    </item>
    <item>
      <title>Generated Charts Are Untrusted Code</title>
      <link>https://nabhpatodi.com/blog/generated-charts-are-untrusted-code/</link>
      <guid isPermaLink="true">https://nabhpatodi.com/blog/generated-charts-are-untrusted-code/</guid>
      <pubDate>Sun, 05 Jul 2026 00:00:00 GMT</pubDate>
      <description>Why a model-generated Mermaid diagram or ECharts spec is a program, not data, and the two-tier validation and bounded repair pipeline I built around it.</description>
      <category>AI Engineering</category>
      <category>LLM Output Validation</category>
      <category>Reliability</category>
    </item>
    <item>
      <title>The Model Wasn&apos;t the Hard Part: My Learnings After Shipping Multi-Agent Systems</title>
      <link>https://nabhpatodi.com/blog/the-model-wasnt-the-hard-part/</link>
      <guid isPermaLink="true">https://nabhpatodi.com/blog/the-model-wasnt-the-hard-part/</guid>
      <pubDate>Sun, 28 Jun 2026 00:00:00 GMT</pubDate>
      <description>Two and a half years of building agent systems, and what I got wrong about architecture, context, evaluations, model routing, permissions, and recovery.</description>
      <category>Multi-Agent Systems</category>
      <category>AI Engineering</category>
      <category>Reliability</category>
    </item>
    <item>
      <title>Retrying an AI Agent Is Not the Same as Retrying an API Call</title>
      <link>https://nabhpatodi.com/blog/retrying-an-ai-agent-is-not-the-same-as-retrying-an-api-call/</link>
      <guid isPermaLink="true">https://nabhpatodi.com/blog/retrying-an-ai-agent-is-not-the-same-as-retrying-an-api-call/</guid>
      <pubDate>Sun, 21 Jun 2026 00:00:00 GMT</pubDate>
      <description>How leases, checkpoints, ownership-safe writes, and tool-history repair made Research-AI recoverable — and what the design still does not guarantee.</description>
      <category>AI Engineering</category>
      <category>Agent Reliability</category>
      <category>Distributed Systems</category>
    </item>
  </channel>
</rss>
