<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Suryansh Chaudhary — Build Logs</title>
    <link>https://suryansh.work</link>
    <description>Build-in-public logs, MacGet, and production AI systems.</description>
    <language>en-us</language>
    <item>
      <title>MCP servers vs agent skills: the payload is the integration</title>
      <link>https://suryansh.work/blog/mcp-servers-vs-agent-skills-tool-payload-design</link>
      <guid>https://suryansh.work/blog/mcp-servers-vs-agent-skills-tool-payload-design</guid>
      <description>Shipping an MCP server is the easy half. The work that decides whether an agent can actually drive your product is payload design — closed vocabularies, schema-constrained returns, and tool descriptions written for a reader who will not ask a follow-up question.</description>
      <pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>MacGet 1.3.0: BitTorrent, book catalogs, and deleting my own adaptive concurrency</title>
      <link>https://suryansh.work/blog/macget-1-3-0-bittorrent-book-catalogs-adaptive-concurrency</link>
      <guid>https://suryansh.work/blog/macget-1-3-0-bittorrent-book-catalogs-adaptive-concurrency</guid>
      <description>MacGet 1.3.0 adds BitTorrent and OPDS book catalogs to the macOS download manager — and rips out the adaptive connection ramp I shipped as a headline feature in 1.1.0, because the heuristic read a saturated link as a failed experiment.</description>
      <pubDate>Thu, 30 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Automating blog cover art with Gemini 3 Pro Image: my 'no legible text' rule was the bug</title>
      <link>https://suryansh.work/blog/automating-blog-cover-art-gemini-3-pro-image</link>
      <guid>https://suryansh.work/blog/automating-blog-cover-art-gemini-3-pro-image</guid>
      <description>I wrote a Node script to generate whiteboard-sketch covers for every post on this blog, and banned the model from drawing readable text. Nano Banana Pro ignored the ban, spelled everything correctly, and proved the constraint was a leftover assumption from 2023.</description>
      <pubDate>Sun, 26 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Claude Opus 5 vs Fable 5: how I'm routing nodes in a LangGraph agent</title>
      <link>https://suryansh.work/blog/claude-opus-5-vs-fable-5-routing-langgraph-agents</link>
      <guid>https://suryansh.work/blog/claude-opus-5-vs-fable-5-routing-langgraph-agents</guid>
      <description>Opus 5 landed at half Fable 5's price and claims to approach it on most tasks. For a multi-agent research desk the real question isn't which model wins — it's which node gets which, and the two API changes that will silently break your existing graph.</description>
      <pubDate>Sun, 26 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Run a build-log blog on your portfolio for $0: Next.js, Supabase, Redis, and Resend on free tiers</title>
      <link>https://suryansh.work/blog/free-build-log-blog-nextjs-portfolio</link>
      <guid>https://suryansh.work/blog/free-build-log-blog-nextjs-portfolio</guid>
      <description>How I added a full build-log blog to my portfolio — likes, email subscribers, and new-post notifications — without paying for anything. The stack, the code, and the one Vercel Hobby limit that broke my cron.</description>
      <pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>How we're architecting a financial AI analyst: a multi-agent research desk on LangGraph</title>
      <link>https://suryansh.work/blog/how-we-architect-a-financial-ai-analyst-multi-agent</link>
      <guid>https://suryansh.work/blog/how-we-architect-a-financial-ai-analyst-multi-agent</guid>
      <description>The system behind an AI that reads filings and answers like an analyst — specialized agents on LangGraph over a Vertex multimodal RAG data plane. What the architecture looks like, and the four things that broke on the way there.</description>
      <pubDate>Thu, 16 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Hard gates and soft gates: stopping system prompt leaks in LangGraph agents</title>
      <link>https://suryansh.work/blog/langgraph-prompt-injection-hard-soft-gates</link>
      <guid>https://suryansh.work/blog/langgraph-prompt-injection-hard-soft-gates</guid>
      <description>Prompt injection isn't one problem, so it doesn't get one fix. How I layered deterministic hard gates and an LLM-as-judge soft gate across a LangGraph agent — and why the refusal itself turned out to be the leak.</description>
      <pubDate>Wed, 15 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Agentic RAG for financial research: grounding agents on Vertex AI's multimodal RAG Engine</title>
      <link>https://suryansh.work/blog/grounding-financial-agents-with-vertex-multimodal-rag</link>
      <guid>https://suryansh.work/blog/grounding-financial-agents-with-vertex-multimodal-rag</guid>
      <description>LangGraph runs the control plane; Vertex AI's managed multimodal RAG Engine runs the data plane. How I got retrieval quality and groundedness where I needed it — because in financial filings, the number lives in the chart, not the paragraph.</description>
      <pubDate>Sun, 12 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>How I actually code with Claude Code: /clear, /compact, and a CLAUDE.md that earns its keep</title>
      <link>https://suryansh.work/blog/how-i-code-with-claude-code</link>
      <guid>https://suryansh.work/blog/how-i-code-with-claude-code</guid>
      <description>The context-management habits that keep an AI coding agent sharp over a long session — when to /clear, when to /compact, and how to write a CLAUDE.md the model actually reads.</description>
      <pubDate>Fri, 10 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>System design notes for AI products: fast, cheap, and boring</title>
      <link>https://suryansh.work/blog/system-design-notes-for-ai-products</link>
      <guid>https://suryansh.work/blog/system-design-notes-for-ai-products</guid>
      <description>The infrastructure lessons behind running LLM features in production — streaming, caching, cost routing, and treating the model as an unreliable network call.</description>
      <pubDate>Fri, 10 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>How I architect LangGraph agents that actually ship</title>
      <link>https://suryansh.work/blog/how-i-architect-langgraph-agents</link>
      <guid>https://suryansh.work/blog/how-i-architect-langgraph-agents</guid>
      <description>The structure I reach for when building production AI agents — explicit state, small nodes, tool boundaries, and knowing when NOT to let the model decide.</description>
      <pubDate>Wed, 08 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Building MacGet's download engine: chunks, actors, and yt-dlp</title>
      <link>https://suryansh.work/blog/building-macget-download-engine</link>
      <guid>https://suryansh.work/blog/building-macget-download-engine</guid>
      <description>A build log on how MacGet downloads files fast on macOS — chunked HTTP parallelism, an actor-based engine in Swift, browser-capture over Native Messaging, and bundled yt-dlp for video.</description>
      <pubDate>Sat, 27 Jun 2026 00:00:00 GMT</pubDate>
    </item>
  </channel>
</rss>