<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>Somesh Bhardwaj</title>
  <link>https://someshbhardwaj.dev/blog</link>
  <description>Notes on the systems, tools and incidents behind the work.</description>
  <language>en</language>
  <atom:link href="https://someshbhardwaj.dev/rss.xml" rel="self" type="application/rss+xml" />
  <lastBuildDate>Mon, 21 Sep 2026 09:00:00 GMT</lastBuildDate>
  <item>
    <title>Five dashboards nobody was opening</title>
    <link>https://someshbhardwaj.dev/blog/five-dashboards</link>
    <guid isPermaLink="true">https://someshbhardwaj.dev/blog/five-dashboards</guid>
    <pubDate>Mon, 21 Sep 2026 09:00:00 GMT</pubDate>
    <description>A monthly summary posted to Slack instead of five logins. The report was the easy half: the work was deciding what each number honestly meant, and building something that stays true when one of the five has a bad day.</description>
    <category>Automation</category>
    <category>Operations</category>
    <category>Slack</category>
    <category>Analytics</category>
  </item>
  <item>
    <title>Six agents were running and I could not tell you what any of them did</title>
    <link>https://someshbhardwaj.dev/blog/runlanes</link>
    <guid isPermaLink="true">https://someshbhardwaj.dev/blog/runlanes</guid>
    <pubDate>Fri, 04 Sep 2026 09:00:00 GMT</pubDate>
    <description>Coding agents already write transcripts to disk. runlanes reads them, so you can see cost, real concurrency and which files each run touched, on runs that have already finished.</description>
    <category>Developer tools</category>
    <category>AI agents</category>
    <category>Observability</category>
    <category>Open source</category>
  </item>
  <item>
    <title>The message that mentioned finance and tagged nobody</title>
    <link>https://someshbhardwaj.dev/blog/finance-mentions-nobody-tagged</link>
    <guid isPermaLink="true">https://someshbhardwaj.dev/blog/finance-mentions-nobody-tagged</guid>
    <pubDate>Thu, 09 Apr 2026 09:00:00 GMT</pubDate>
    <description>A Slack message can point at a channel without involving it. Parsing that difference, joining every public channel automatically, and the ten lines of health-check server that kept the whole thing running.</description>
    <category>Slack</category>
    <category>TypeScript</category>
    <category>Integrations</category>
    <category>Governance</category>
  </item>
  <item>
    <title>A small event tool, and the day it stopped being small</title>
    <link>https://someshbhardwaj.dev/blog/event-tool-to-platform</link>
    <guid isPermaLink="true">https://someshbhardwaj.dev/blog/event-tool-to-platform</guid>
    <pubDate>Sun, 15 Feb 2026 09:00:00 GMT</pubDate>
    <description>Scoped as registration and a confirmation email. It became an orchestration layer over video, email, marketing and calendar systems, because attendance, certification and reminders each live in somebody else's product.</description>
    <category>Architecture</category>
    <category>Integrations</category>
    <category>SaaS</category>
    <category>Scope</category>
  </item>
  <item>
    <title>Routing email into Slack, which is not the same as forwarding it</title>
    <link>https://someshbhardwaj.dev/blog/email-that-belongs-in-slack</link>
    <guid isPermaLink="true">https://someshbhardwaj.dev/blog/email-that-belongs-in-slack</guid>
    <pubDate>Wed, 20 May 2026 09:00:00 GMT</pubDate>
    <description>Forwarding a mailbox to a channel works exactly as specified and makes things worse. What changes it: Message-ID deduplication, real thread detection, and never touching the mailbox's unread state.</description>
    <category>Slack</category>
    <category>Gmail</category>
    <category>Automation</category>
    <category>Operations</category>
  </item>
  <item>
    <title>A portfolio chatbot that can drive the page it lives on</title>
    <link>https://someshbhardwaj.dev/blog/chatbot-that-drives-the-page</link>
    <guid isPermaLink="true">https://someshbhardwaj.dev/blog/chatbot-that-drives-the-page</guid>
    <pubDate>Thu, 12 Mar 2026 09:00:00 GMT</pubDate>
    <description>Tool calling pointed at the interface rather than only at retrieval, why the API key decides the architecture, and why the retrieval layer is a substring matcher with tests around it.</description>
    <category>AI</category>
    <category>Tool calling</category>
    <category>Netlify</category>
    <category>Retrieval</category>
  </item>
</channel>
</rss>
