<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[The Operator's Guide to AI-Native B2B — by Harpreet Singh]]></title><description><![CDATA[Operator insights on building AI-native B2B—agent engineering, product, and GTM. Building in public.]]></description><link>https://newsletter.harpreet.io</link><image><url>https://substackcdn.com/image/fetch/$s_!lxyf!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe095407c-ed71-4d41-97be-e2145b03b637_1280x1280.png</url><title>The Operator&apos;s Guide to AI-Native B2B — by Harpreet Singh</title><link>https://newsletter.harpreet.io</link></image><generator>Substack</generator><lastBuildDate>Mon, 25 May 2026 00:46:11 GMT</lastBuildDate><atom:link href="https://newsletter.harpreet.io/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Harpreet Singh]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[aientrepreneurship@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[aientrepreneurship@substack.com]]></itunes:email><itunes:name><![CDATA[Harpreet Singh]]></itunes:name></itunes:owner><itunes:author><![CDATA[Harpreet Singh]]></itunes:author><googleplay:owner><![CDATA[aientrepreneurship@substack.com]]></googleplay:owner><googleplay:email><![CDATA[aientrepreneurship@substack.com]]></googleplay:email><googleplay:author><![CDATA[Harpreet Singh]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Claude Code is Crack Cocaine]]></title><description><![CDATA[The Instagramming of Work and the Death of Deep Work]]></description><link>https://newsletter.harpreet.io/p/claude-code-is-crack-cocaine</link><guid isPermaLink="false">https://newsletter.harpreet.io/p/claude-code-is-crack-cocaine</guid><dc:creator><![CDATA[Harpreet Singh]]></dc:creator><pubDate>Thu, 12 Mar 2026 13:17:36 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!qIjP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72635ce1-994b-46bb-aab3-3dca6c4333de_2816x1536.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qIjP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72635ce1-994b-46bb-aab3-3dca6c4333de_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qIjP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72635ce1-994b-46bb-aab3-3dca6c4333de_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!qIjP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72635ce1-994b-46bb-aab3-3dca6c4333de_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!qIjP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72635ce1-994b-46bb-aab3-3dca6c4333de_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!qIjP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72635ce1-994b-46bb-aab3-3dca6c4333de_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qIjP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72635ce1-994b-46bb-aab3-3dca6c4333de_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/72635ce1-994b-46bb-aab3-3dca6c4333de_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:8842050,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.harpreet.io/i/190572292?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72635ce1-994b-46bb-aab3-3dca6c4333de_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qIjP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72635ce1-994b-46bb-aab3-3dca6c4333de_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!qIjP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72635ce1-994b-46bb-aab3-3dca6c4333de_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!qIjP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72635ce1-994b-46bb-aab3-3dca6c4333de_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!qIjP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72635ce1-994b-46bb-aab3-3dca6c4333de_2816x1536.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In 2021, I sat in front of a camera to talk about the sanctity of the &#8220;One Horse.&#8221; I was a disciple of Cal Newport, preaching the gospel of <strong>Deep Work</strong>&#8212;the idea that to produce anything of value, you have to shield yourself from the &#8220;monkey mind&#8221; of multitasking. <a href="https://www.youtube.com/watch?v=ZKpfh1s8zTA&amp;list=PLStbUb-C3vWr-9s9fS0lcBE6HJQfY59M5&amp;index=3&amp;t=1s">At Launchable, we built an entire culture around &#8220;Get Shit Done&#8221; (GSD) days, creating organizational umbrellas to protect our cognitive sovereignty.</a></p><p>I thought I had mastered the &#8220;horses running all over the place.&#8221; I was wrong.</p><p>In late 2025, I dove into <strong>Claude Code</strong>. I lucked out on the timing; the models had just hit a threshold of capability where the vibe of building shifted from <em>collaborating</em> to <em>orchestrating</em>. It felt like I had finally found the ultimate GSD weapon.</p><p>But within weeks, the &#8220;One Horse&#8221; was trampled by a stampede.</p><h3>The Infinite Monkey Circus</h3><p>The industry is currently obsessed with building the &#8220;harness.&#8221; Whether it&#8217;s <a href="https://gastownhall.ai/">Steve Yegge&#8217;s </a><strong><a href="https://gastownhall.ai/">Gastown</a></strong>, the <strong><a href="https://newsletter.harpreet.io/p/from-vibespec-to-fleet-agent-engineering">Agentic Flywheel</a></strong>, or the various frameworks designed to keep AI agents on track, we are all trying to build a better circus. I&#8217;ve spent the last few months immersed in these systems, writing about how they work and, more importantly, trying to use them to build.</p><p>The promise is intoxicating: an <strong>Infinite Monkey Circus</strong> where you are the Director. You provide the vision, and the agents provide the relentless, 24/7 labor. But here is the reality of being the Director: you are still the one holding the whip.</p><p>I&#8217;ve reached a point where I am running 3&#8211;4 parallel projects, each powered by a swarm of 4&#8211;5 agents. I am using the most sophisticated harnesses available to keep the monkeys performing, but I&#8217;ve inadvertently tied myself to the center pole. These agents provide incredible volume, but they demand a constant, high-intensity cognitive presence to stay on the tightrope.</p><p>I am no longer the &#8220;visionary architect&#8221; I set out to be; I am the <strong>AI Babysitter.</strong> I am a vital component in the system, providing the one thing the harnesses can&#8217;t yet automate: the &#8220;ground truth&#8221; and the sense of direction. Because the monkeys are so fast, the feedback loop is instantaneous. If I look away for even two minutes, the momentum stalls or the circus falls apart.</p><h3>Cognitive Redlining</h3><p>This brings me to the physical and mental cost: <strong>Cognitive Redlining.</strong> Steve Yegge describes this perfectly. Your brain is an engine built for a certain speed, but working with Claude Code is like redlining that engine at 9,000 RPM for twelve hours straight. You aren&#8217;t &#8220;coding&#8221; in the traditional sense; you are making high-stakes decisions every ten seconds.</p><p>The physical implications are wild. I find myself standing at my desk for hours at a time, afraid to sit down because the &#8220;payout&#8221; is always imminent. If I do step away to the couch, I&#8217;m rarely there for more than two minutes before the itch pulls me back.</p><p>Even my walks&#8212;the ultimate staple of the Deep Work lifestyle&#8212;have been ruined. I&#8217;m no longer &#8220;present.&#8221; I am mentally tethered to the terminal, hurriedly trying to get back because I know Claude is likely waiting to ask me a question. The &#8220;AI baby&#8221; is hungry, and I&#8217;m the only one who can feed it. By the time I finally disconnect, the crash is absolute. I wake up the next morning in a depleted state, my mental battery at 5% before the day has even begun.</p><h3>The Instagramming of Work</h3><p>This is where the behavior mirrors my struggle with Instagram, but with a devious twist.</p><p>We all know the &#8220;doom scroll.&#8221; You&#8217;re on Instagram, your thumb is moving, and the hours are vanishing. There is an inherent understanding in that moment: you have surrendered your mental energy to the vampire. It feels bad. You feel the &#8220;waste,&#8221; and that guilt is usually the only thing that eventually makes you put the phone away.</p><p>With Claude, the behavior is identical&#8212;the dopamine hits, the variable rewards, the inability to look away&#8212;but <strong>the guilt is gone.</strong></p><p>I tell myself, <em>&#8220;Hey, I&#8217;m working. I&#8217;m being a conscientious builder.&#8221;</em> This is the <strong>Instagramming of Work.</strong> We&#8217;ve taken the addictive engineering of social media and dressed it up in a suit and tie. Because the output is &#8220;productive,&#8221; we have no internal defense mechanism. We are &#8220;Vibe Coding,&#8221; and as long as the progress looks fast, we ignore the fact that our cognitive sovereignty is being harvested.</p><p>What&#8217;s worse? Even when the &#8220;vibes&#8221; are rancid&#8212;when I&#8217;m struggling with a wrong implementation or an agent is hallucinating in a loop&#8212;I still can&#8217;t leave. I keep pulling the lever, desperate for the next hit of a working fix. I&#8217;ve reached a place where the reward of the &#8220;fix&#8221; is so good it overrides my physical need to rest.</p><h3>The Final Warning</h3><p>I reached a point where I realized my brain was legit fried by the end of every day. My solution, ironically, was more AI. I learned how to build a <strong>Director Claude agent</strong>&#8212;a harness aide designed to sit above the others and respond on my behalf. I thought if I could just automate the &#8220;Director&#8221; role, I could finally take that walk without looking over my shoulder.</p><p>It didn&#8217;t work. The Director agent still comes back to me &#8220;ever so often.&#8221; And in this high-velocity world, &#8220;ever so often&#8221; is enough to keep the tether tight.</p><p>To my fellow conscientious builders: we need to look at what we are actually building. If the price of a &#8220;10x&#8221; output is the total extraction of our mental and physical well-being, is it a fair trade?</p><p>I am still in the loop. I am writing this very post while Claude is running in another window, moving my product development forward. I literally couldn&#8217;t leave the desk to write about why I can&#8217;t leave the desk.</p><p>The &#8220;One Horse&#8221; of Deep Work hasn&#8217;t just been outpaced; it&#8217;s been turned into a ghost. We&#8217;ve entered the age of the <strong>AI Vampire</strong>, and the scariest part is that we invited him in because he promised to make us &#8220;productive.&#8221;</p><p>Put down the terminal. Take a walk. And if you can&#8217;t stay away for more than two minutes, you might want to ask yourself: </p><p>Who&#8217;s really running the circus?</p>]]></content:encoded></item><item><title><![CDATA[The Latent Space Gardener: How to Stay a Relevant Musician When Your Skill Becomes a Prompt]]></title><description><![CDATA[Lessons from a veteran music producer on staying relevant in the age of AI-generated art.]]></description><link>https://newsletter.harpreet.io/p/the-latent-space-gardener-how-to</link><guid isPermaLink="false">https://newsletter.harpreet.io/p/the-latent-space-gardener-how-to</guid><dc:creator><![CDATA[Harpreet Singh]]></dc:creator><pubDate>Tue, 10 Mar 2026 19:08:36 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/IUBUQ42HUM8" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p></p><div id="youtube2-IUBUQ42HUM8" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;IUBUQ42HUM8&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/IUBUQ42HUM8?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>I started this podcast series (<a href="https://youtu.be/IUBUQ42HUM8">Relevance&#8212;AI changed Work. How to stay relevant?</a>) because of a series of private messages.</p><p>After I wrote about how AI was fundamentally changing the nature of coding, I saw a surge of people reaching out&#8212;not publicly, but in my DMs. They weren&#8217;t just curious about the tech; they were trying to figure out what these shifts meant for their own lives and careers. They were asking the same core question: <strong>How do I stay relevant?</strong></p><p>The answer started to crystallize for me during a conversation in a college alumni group. My friend Jay described how he was using AI in his music production workflow.</p><p>Now, Jay isn&#8217;t an amateur &#8220;prompter.&#8221; He&#8217;s a Berklee-trained engineer and producer who has spent decades in the trenches of the music industry. He lives at the confluence of deep musical theory and high-end software engineering.</p><p>I, on the other hand, have been trying to learn the handpan the &#8220;old&#8221; way. It&#8217;s a tedious, manual journey of building muscle memory. When I saw Jay&#8217;s workflow, the gap between my manual effort and his exponential output was jarring. I realized I had no idea how far the ceiling had moved.</p><p>Music is the &#8220;canary in the coal mine&#8221; for all of us. Whether you are a coder, a writer, or a designer, the shift Jay is navigating in the studio is the same one coming for your desk. We are moving from a world where we are paid for <strong>technical execution</strong> to one where we are paid for <strong>creative direction.</strong></p><div><hr></div><h2>The Mental Model: Autoregressive vs. Diffusion</h2><p>To understand how to work with these tools, you have to understand the two different &#8220;engines&#8221; driving them. Jay broke this down in a way that makes sense for anyone who has used an LLM like Claude or ChatGPT.</p><h3>1. Autoregressive Models (The Storyteller)</h3><p>These are the models we are most familiar with in the text world. They work by predicting the next &#8220;token&#8221; based on everything that came before.</p><ul><li><p><strong>In Music:</strong> This is great for <strong>structure and anticipation</strong>. It understands that after a certain chord, the human ear expects a specific resolution. It builds the &#8220;story&#8221; of the song linearly.</p></li><li><p><strong>The Flaw:</strong> Just like a &#8220;drunk teenager,&#8221; it can commit to a path and &#8220;hallucinate,&#8221; losing the plot if the context window gets too crowded.</p></li></ul><h3>2. Diffusion Models (The Sculptor)</h3><p>This is the tech behind tools like Midjourney, now applied to sound.</p><ul><li><p><strong>In Music:</strong> Imagine a block of marble (noise) that is slowly chipped away until a statue (a clean audio signal) remains. This is how AI creates <strong>texture and mood</strong>. It&#8217;s how you get that rich, &#8220;shimmering&#8221; sound of a nylon-string guitar.</p></li><li><p><strong>The Flaw:</strong> This process creates &#8220;denoising artifacts.&#8221; In AI images, it&#8217;s the &#8220;melted hands&#8221; effect; in music, it&#8217;s a slight digital blur or a loss of &#8220;crispness.&#8221;</p></li></ul><p>When you understand these two engines, you stop looking at AI as a &#8220;black box.&#8221; You start seeing the seams. You realize that while the AI is incredible at generating <strong>probability</strong> (what sound usually comes next), it is still fundamentally missing human <strong>intentionality</strong>.</p><div><hr></div><h2>The &#8220;Missing Layer&#8221;: Why AI Can&#8217;t Create a Signature</h2><p>If AI has access to the sum total of recorded music, why hasn&#8217;t it replaced the artist? Jay pointed out a fundamental gap: <strong>The lack of persistent musical memory.</strong></p><h3>1. The Amnesia Problem</h3><p>Current AI models are incredible at the &#8220;now.&#8221; They can generate a breathtaking 30-second clip, but they struggle with <strong>thematic coherence</strong>. If you want to create a 10-song concept album where a subtle melodic motif returns in a different key during the climax&#8212;the way a composer like John Williams or a band like Pink Floyd does&#8212;the AI fails. It doesn&#8217;t remember the &#8220;soul&#8221; of the project once the session ends.</p><h3>2. Probability vs. Intentionality</h3><p>AI is a probabilistic engine. It chooses the most likely next note. But art is often about the <strong>unlikely</strong> choice. Jay shared a moment where he completely overrode the AI&#8217;s suggestion. The AI provided a mathematically &#8220;correct&#8221; resolution, but it felt sterile. Jay chose a &#8220;blemished&#8221; or unexpected chord that evoked the specific emotion he wanted.</p><blockquote><p><em>&#8220;The question isn&#8217;t whether AI can make music. It&#8217;s whether it can make music that sounds like you.&#8221;</em> &#8212; Jay Swami</p></blockquote><div><hr></div><h2>The Shift: From Musician to &#8220;Latent Space Gardener&#8221;</h2><p>If the AI is doing the execution, the human moves into a role that looks more like a <strong>Gardener</strong>.</p><p>In AI terms, &#8220;Latent Space&#8221; is the vast map of all possible sounds a model can create. As a creator, you are no longer building the seed from scratch; you are deciding which ones to plant, which ones to water, and&#8212;most importantly&#8212;which ones to prune.</p><ul><li><p><strong>Curation as a High-Value Skill:</strong> When an AI can give you 100 variations of a melody in seconds, the person who can identify the <strong>one</strong> that actually resonates is the one who wins. Value is moving from <em>scarcity of ability</em> to <em>quality of taste</em>.</p></li><li><p><strong>The &#8220;Last Mile&#8221; Polish:</strong> The AI gets you 90% of the way there in 10% of the time. But that final 10%&#8212;the human &#8220;swing&#8221; in the drums or the specific EQ choice&#8212;is where the professional resides.</p></li></ul><div><hr></div><h2>The Handpan Paradox: Why We Still Do the Hard Things</h2><p>I asked Jay: Does he still find joy in this? When the &#8220;struggle&#8221; of technical execution is removed, is the satisfaction fleeting?</p><p>Jay sees his role like a CEO. A CEO doesn&#8217;t write every line of code, but they steer the ship. The satisfaction doesn&#8217;t come from the &#8220;grunt work&#8221;; it comes from seeing a multidimensional vision come to life.</p><p>Paradoxically, using AI hasn&#8217;t made Jay stop playing &#8220;real&#8221; instruments. It&#8217;s driven him <em>back</em> to them. Because the AI handles the &#8220;boilerplate&#8221; so quickly, he can focus his mental bandwidth on the parts that require a true human touch&#8212;the soulful guitar solo or the specific &#8220;blemish&#8221; that makes a track feel alive.</p><h3>Final Thought: The New Bar for Relevance</h3><p>The democratization of music is real. But as Jay reminded me, the question isn&#8217;t &#8220;Can AI make music?&#8221;</p><p>The question is: <strong>What kind of music requires </strong><em><strong>you</strong></em><strong>?</strong></p><p>If your value was only in the &#8220;execution&#8221;&#8212;the ability to follow a formula&#8212;you are in trouble. But if your value is in your <strong>intent, your taste, and your persistent creative vision</strong>, then the ceiling for what you can build has just been removed.</p><p>Don&#8217;t be a &#8220;prompter.&#8221; Be a <strong>Gardener</strong>.</p><div><hr></div><p><strong>Watch the full conversation below to see Jay demonstrate his workflow and hear the live creation of a Punjabi-infused podcast theme.</strong></p><div id="youtube2-IUBUQ42HUM8" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;IUBUQ42HUM8&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/IUBUQ42HUM8?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div>]]></content:encoded></item><item><title><![CDATA[Throughput Without Verification Isn’t a Superpower—It’s a Liability]]></title><description><![CDATA[I gave 4 agents a week&#8217;s worth of work and they finished in 2 hours&#8212;then I spent 3 days fixing what they broke. Here is how you need to think about coding with agents.]]></description><link>https://newsletter.harpreet.io/p/throughput-without-verification-isnt</link><guid isPermaLink="false">https://newsletter.harpreet.io/p/throughput-without-verification-isnt</guid><dc:creator><![CDATA[Harpreet Singh]]></dc:creator><pubDate>Tue, 03 Mar 2026 19:42:45 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1652396510783-7eb7c30635cb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxNXx8amFpcHVyJTIwZm9ydHJlc3MlMjBlbnRyYW5jZXxlbnwwfHx8fDE3NzI1NjYyODd8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1652396510783-7eb7c30635cb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxNXx8amFpcHVyJTIwZm9ydHJlc3MlMjBlbnRyYW5jZXxlbnwwfHx8fDE3NzI1NjYyODd8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1652396510783-7eb7c30635cb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxNXx8amFpcHVyJTIwZm9ydHJlc3MlMjBlbnRyYW5jZXxlbnwwfHx8fDE3NzI1NjYyODd8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1652396510783-7eb7c30635cb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxNXx8amFpcHVyJTIwZm9ydHJlc3MlMjBlbnRyYW5jZXxlbnwwfHx8fDE3NzI1NjYyODd8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1652396510783-7eb7c30635cb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxNXx8amFpcHVyJTIwZm9ydHJlc3MlMjBlbnRyYW5jZXxlbnwwfHx8fDE3NzI1NjYyODd8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1652396510783-7eb7c30635cb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxNXx8amFpcHVyJTIwZm9ydHJlc3MlMjBlbnRyYW5jZXxlbnwwfHx8fDE3NzI1NjYyODd8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1652396510783-7eb7c30635cb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxNXx8amFpcHVyJTIwZm9ydHJlc3MlMjBlbnRyYW5jZXxlbnwwfHx8fDE3NzI1NjYyODd8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="5651" height="3767" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1652396510783-7eb7c30635cb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxNXx8amFpcHVyJTIwZm9ydHJlc3MlMjBlbnRyYW5jZXxlbnwwfHx8fDE3NzI1NjYyODd8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:3767,&quot;width&quot;:5651,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;a group of people standing on a roof of a building&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="a group of people standing on a roof of a building" title="a group of people standing on a roof of a building" srcset="https://images.unsplash.com/photo-1652396510783-7eb7c30635cb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxNXx8amFpcHVyJTIwZm9ydHJlc3MlMjBlbnRyYW5jZXxlbnwwfHx8fDE3NzI1NjYyODd8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1652396510783-7eb7c30635cb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxNXx8amFpcHVyJTIwZm9ydHJlc3MlMjBlbnRyYW5jZXxlbnwwfHx8fDE3NzI1NjYyODd8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1652396510783-7eb7c30635cb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxNXx8amFpcHVyJTIwZm9ydHJlc3MlMjBlbnRyYW5jZXxlbnwwfHx8fDE3NzI1NjYyODd8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1652396510783-7eb7c30635cb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxNXx8amFpcHVyJTIwZm9ydHJlc3MlMjBlbnRyYW5jZXxlbnwwfHx8fDE3NzI1NjYyODd8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@philton88">Parker Hilton</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><div class="pullquote"><p>In the &#8220;Vibe-coding&#8221; honeymoon phase, we marvel at the ability to generate features with a single prompt. But as we move from simple experiments to managing complex <strong>agent fleets</strong>, we hit a vertical wall: throughput without verification is a liability, not a superpower.</p><p>This piece explores why the rise of Agentic Engineering is forcing a return to the architectural rigor of the platform era. I examine the new economics of &#8220;Token Burn,&#8221; the logistical chaos of the &#8220;Worktree Explosion,&#8221; and why the most critical role in the AI-native SDLC isn&#8217;t the implementer&#8212;it&#8217;s the <strong>Architect</strong> who can define the contracts and build the &#8220;Verification Fortress&#8221; to keep the agents in check.</p></div><h3>The Two-Hour Regression</h3><p>I recently spent four days doing the deep, quiet, and often lonely work of a founder: grooming a backlog. I was sharpening requirements, refactoring small pieces of technical debt, and getting my project ready for a massive push. It felt like I had laid the tracks perfectly. Every ticket was clear, every acceptance criterion was defined.</p><p>I decided to put my own &#8220;Agentic Engineering&#8221; thesis to the ultimate test. I handed that groomed backlog to six concurrent Claude agents.</p><p>For about two hours, it was magical. My screen was a blur of activity&#8212;terminal commands flying by, files being created, and &#8220;Done&#8221; markers appearing in rapid succession. The agents reported success with the absolute, unshakeable confidence that only a machine can muster. </p><p>I felt that brief, intoxicating rush of agentic velocity&#8212;the feeling that I had just compressed a week of high-intensity engineering into a single lunch break.</p><p><strong>Then I opened the app.</strong></p><p>It was a disaster. It wasn&#8217;t just that things were &#8220;buggy&#8221;&#8212;it was that the entire soul of the application had been mangled. Features I had already shipped, polished, and verified a week prior were now completely re-written in a way that made no sense. I had obsessed over the UI, spending hours on the &#8220;feel&#8221; and the responsiveness of the interface, and in just two hours, it had drastically regressed into a broken, generic mess.</p><p>The agents hadn&#8217;t just &#8220;done the work&#8221;; they had unilaterally decided to refactor functioning code into a broken state because it fit their local &#8220;reasoning&#8221; at that moment. I didn&#8217;t spend the next three days building new features; I spent them chasing regressions, untangling hallucinations, and acting as a high-priced triage nurse for a fleet of over-eager AI bots.</p><p>That was the moment I realized I was still thinking like a developer from six months ago. I was skimping on tests to &#8220;write them later&#8221; once the basic functionality was settled. Partly, I was worried about token costs&#8212;thinking I was being &#8220;economical.&#8221; But after seeing my UI shredded, I realized I could no longer afford <em>not</em> to verify.</p><blockquote><p>In a world where the PRD is generated, the API is generated, the code is generated, and the tests are generated... <strong>how the hell do you know if any of it actually works?</strong></p></blockquote><div><hr></div><h3>The Shift: From &#8220;Vibe-Coding&#8221; to Agentic Engineering</h3><p>We are currently transitioning out of the &#8220;Vibe-Coding&#8221; honeymoon. Vibe-coding is a seductive, low-friction loop. It&#8217;s that feeling when you ask a chatbot to &#8220;make me a landing page&#8221; and it works. It&#8217;s magic for a weekend project, but it fails the moment the system grows beyond a few files or requires a team (even a team of agents) to collaborate.</p><p><strong>The Vibe-Coding SDLC:</strong></p><blockquote><p><strong>Idea &#8594; Plan &#8594;Push (and hope the &#8220;vibe&#8221; is right).</strong></p></blockquote><p>As I&#8217;ve moved into serious building with agents, I&#8217;ve had to adopt a fundamentally different lifecycle&#8212;<strong>Agentic Engineering.</strong> It&#8217;s a disciplined SDLC that treats the agent as a high-throughput, probabilistic implementation engine that must be constrained by deterministic boundaries.</p><p><strong>The Agentic Engineering SDLC (first pass):</strong></p><blockquote><p><strong>Idea &#8594; Plan (Overview &#8594; Contracts &amp; Specs) &#8594; Code &#8594; Tests &#8594;Push.</strong></p></blockquote><p><strong>The next iteration loop:</strong></p><blockquote><p><strong>Idea &#8594;Plan &#8594; Code &#8594;Verify Regressions &#8594;Push.</strong></p></blockquote><p>The critical phase in this new workflow is <strong>Sharpening Contracts &amp; Specs.</strong> This is where the real engineering happens. You cannot let the agent touch a line of source code until you have forced it to define the API boundaries, the UI constraints, and the success criteria. </p><p>By &#8220;freezing&#8221; the contract before a single line of implementation is written, you create a deterministic cage for a probabilistic machine. If the agent generates code that doesn&#8217;t match the contract, the code is discarded. You aren&#8217;t just telling the agent what to build; you are telling it what it is <em>forbidden</em> to change.</p><div><hr></div><h3>Lessons from the Java Platform Days: The TCK Mindset</h3><p>This reality check took me straight back to a formative era of my career in the Java organization at Sun Microsystems. When you are building a platform or a standard like JavaEE, you are essentially building a contract for a world you cannot control.</p><p>We were writing specifications that would be implemented by companies as diverse as IBM, BEA, Oracle, or open-source communities like JBoss. You couldn&#8217;t &#8220;trust&#8221; their implementation by default. You had to obsess over the <strong>Interface</strong> and the <strong>Verification.</strong> The JavaEE certification was the <strong>TCK (Technology Compatibility Kit)</strong>&#8212;a suite of 100,000+ tests that an implementation had to pass to be &#8220;certified.&#8221;</p><p>We didn&#8217;t write those tests because we were pedantic. We wrote them because when you have multiple parties (or multiple agents) building on a shared foundation, <strong>the contract and the test suite are the only things that prevent total chaos.</strong> </p><p>In 2026, the &#8220;other party&#8221; is an LLM&#8212;the ultimate &#8220;unpredictable implementer.&#8221; To build non-trivial systems today, we have to treat our own projects like a platform standard:</p><ul><li><p><strong>Interface over Implementation:</strong> The &#8220;how&#8221; matters less than the &#8220;what.&#8221; As long as the contract remains unbroken, the agent can iterate.</p></li><li><p><strong>The TCK for your App:</strong> You need a suite of tests so rigorous that even if the agent refactors the entire backend, if it doesn&#8217;t pass the TCK, it doesn&#8217;t get shipped.</p></li></ul><div><hr></div><h3>The Logistics of the Fleet: Worktree Explosion</h3><p>This isn&#8217;t just a philosophical shift; it&#8217;s a logistical nightmare.</p><p>Right now, I&#8217;m coding with a fleet of 4 to 6 agents simultaneously. Each one of these agents spins up its own <strong>worktree.</strong> I have six concurrent worktrees, each with its own set of changes, each running its own test suite.</p><p>This is a &#8220;Director of Engineering&#8221; problem scaled down to a single person. I&#8217;m no longer a coder; I&#8217;m a <strong>Triage Director.</strong> I&#8217;m looking at 4x to 6x the test failures I&#8217;m used to. And when you see that many failures, the temptation to &#8220;vibes-check&#8221; them and move on is immense. </p><p>But every failed test in an agentic workflow is a &#8220;reasoning leak&#8221; that will cascade into the rest of your system.</p><p>If I scale this to 10s or 100s of agents&#8212;the <strong>Gastown</strong> horizon&#8212;the volume of verification noise becomes a vertical wall. The &#8220;human in the loop&#8221; can no longer monitor the output of the fleet without a radically different approach to verification.</p><div><hr></div><h3>The New P&amp;L: Token Economics vs. CI Minutes</h3><p>In traditional DevOps, we obsessed over CI minutes. In the agentic world, that equation has been turned upside down. </p><p>The bottleneck is now the <strong>Agent Re-contextualization Cost.</strong></p><p>Every time a test fails, the agent doesn&#8217;t just &#8220;fix it.&#8221; It has to read the failure log, re-read the source, and re-evaluate the context of the system. </p><p>This &#8220;thinking time&#8221; (tokens) is a direct tax on your progress. </p><p>Paradoxically, <strong>AI has made test creation cheap, but it has made test execution (and reasoning) extremely expensive.</strong> </p><p>This is where my work as the ex-CEO of <strong>Launchable</strong> feels eerily relevant again. Years ago, we pitched <strong>Smart Test Selection</strong> to 500-person engineering teams. </p><p>Today, it&#8217;s a <strong>survival tool for the solo dev.</strong> </p><p>I cannot afford to run 100,000 tests on every agent iteration across 6 worktrees. </p><p>I need a &#8220;judgment layer&#8221; that says: <em>&#8220;Based on these 4 files the agent changed, only run these 50 tests.&#8221;</em> This preserves the token budget and keeps the velocity high without the regression tax.</p><div><hr></div><h3>The Death of the Pipeline Configurator</h3><p>In my time at Launchable and CloudBees, I sat through thousands of calls where leaders were terrified of touching their YAML/CI pipelines for fear of impacting hundreds of devs. The pipeline was a &#8220;black box&#8221; of legacy fear.</p><p><strong>In the agentic world, that fear has to die. The pipeline is a dynamic extension of the agent&#8217;s intent.</strong></p><p>We are moving from <strong>Implementation to Intent.</strong> </p><p>I don&#8217;t debug deployments in a dashboard anymore. </p><p>I tell Claude: <em>&#8220;Use the Railway API to pull the latest logs so you can analyze why the staging build is failing.&#8221;</em> (not entirely there yet imho but it is a matter of a weeks if not months).</p><p>This is the future of <strong>Self-Healing Infrastructure.</strong> </p><p>If a build is slow, the agent proactively analyzes the bottleneck and pulls in tools to prune the test suite. We are moving from &#8220;Developer Experience&#8221; (DX) to <strong>&#8220;Agent Experience&#8221; (AX).</strong></p><div><hr></div><h3>Conclusion: The Return of the Architect</h3><p>We are in a brief moment where we are fascinated that the bear can dance. But as code generation becomes a commodity, its value will inevitably drop toward zero.</p><p>The value in software engineering is moving back to the <strong>Architect.</strong> The most important person in the room is no longer the one who can churn out the most lines of code; it&#8217;s the person who can define the contracts, sharpen the specifications, and build the verification fortress that keeps the agents in check.</p><p>As I manage my own fleet of agents today, I realize the most critical work I do isn&#8217;t &#8220;coding&#8221; in the traditional sense. It&#8217;s <strong>defining the TCK</strong> for my own vision.</p><p><strong>Throughput without verification isn&#8217;t a superpower&#8212;it&#8217;s a liability.</strong> In the agentic age, the winners won&#8217;t be the ones with the fastest agents; they&#8217;ll be the ones who can verify those agents the fastest. It&#8217;s time to stop &#8220;vibing&#8221; and start engineering.</p>]]></content:encoded></item><item><title><![CDATA[Using Claude Agent Teams: An Operator's Guide to Hands-Off Development]]></title><description><![CDATA[Micro-releases, self-sufficient tickets, the workflow and the discipline that enabled hands-off execution]]></description><link>https://newsletter.harpreet.io/p/using-claude-agent-teams-an-operators</link><guid isPermaLink="false">https://newsletter.harpreet.io/p/using-claude-agent-teams-an-operators</guid><dc:creator><![CDATA[Harpreet Singh]]></dc:creator><pubDate>Tue, 24 Feb 2026 21:09:29 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1730382625230-3756013c515c?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxzY2FsYWJpbGl0eXxlbnwwfHx8fDE3NzE5NjQzMjN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1730382625230-3756013c515c?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxzY2FsYWJpbGl0eXxlbnwwfHx8fDE3NzE5NjQzMjN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1730382625230-3756013c515c?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxzY2FsYWJpbGl0eXxlbnwwfHx8fDE3NzE5NjQzMjN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1730382625230-3756013c515c?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxzY2FsYWJpbGl0eXxlbnwwfHx8fDE3NzE5NjQzMjN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1730382625230-3756013c515c?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxzY2FsYWJpbGl0eXxlbnwwfHx8fDE3NzE5NjQzMjN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1730382625230-3756013c515c?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxzY2FsYWJpbGl0eXxlbnwwfHx8fDE3NzE5NjQzMjN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1730382625230-3756013c515c?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxzY2FsYWJpbGl0eXxlbnwwfHx8fDE3NzE5NjQzMjN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="5796" height="4000" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1730382625230-3756013c515c?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxzY2FsYWJpbGl0eXxlbnwwfHx8fDE3NzE5NjQzMjN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:4000,&quot;width&quot;:5796,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A person placing a block into a pile of wooden blocks&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A person placing a block into a pile of wooden blocks" title="A person placing a block into a pile of wooden blocks" srcset="https://images.unsplash.com/photo-1730382625230-3756013c515c?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxzY2FsYWJpbGl0eXxlbnwwfHx8fDE3NzE5NjQzMjN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1730382625230-3756013c515c?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxzY2FsYWJpbGl0eXxlbnwwfHx8fDE3NzE5NjQzMjN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1730382625230-3756013c515c?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxzY2FsYWJpbGl0eXxlbnwwfHx8fDE3NzE5NjQzMjN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1730382625230-3756013c515c?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzfHxzY2FsYWJpbGl0eXxlbnwwfHx8fDE3NzE5NjQzMjN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@imaginebuddy">Imagine Buddy</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><h2>Section 1: The Seduction of Scale</h2><p>I started playing with Claude Agent Teams about 10 days ago. Given my experience with the <a href="https://newsletter.harpreet.io/p/from-vibespec-to-fleet-agent-engineering">Agentic Flywheel System (ACFS)</a>, I was able to easily spin up 2-3 agents and solve for some tickets. The transition was smooth &#8212; the patterns I&#8217;d learned from ACFS (breaking work into tickets, coordinating parallel agents) translated directly.</p><p>Then I asked myself: Now that I understand this reasonably well, can I get to 5+ agents?</p><p>The natural thought was: if I can run 3 agents effectively, why not tackle a bigger surface area of the product? More agents means more parallelization. More parallelization means I can ship faster.</p><p>I spent 3 days trying. Claude kept losing itself designing the features. I&#8217;d explain the architecture, we&#8217;d make decisions, then two hours later we&#8217;d be re-explaining the same context. Design churn without progress. I&#8217;d answer the same clarifying questions over and over.</p><p>The problem wasn&#8217;t the agents. The problem was scope.</p><p>When you give Claude a large surface area to plan over, it gets lost. Multiple parallel agents working on loosely-coupled features means worry about overlaps, shared assumptions, integration points. Claude couldn&#8217;t hold all of it in context.</p><p>The key realization: <strong>the bottleneck falls back to planning</strong>. If the plan is too big, agents can&#8217;t execute on it&#8212;no matter how many you spin up.</p><p>After 3 days, I decided to fall back to my original 0.01 release steps. One meaty feature set per release. Claude doesn&#8217;t get confused when you box it this way.</p><div><hr></div><h2>Section 2: The Constraint That Unlocked Scale</h2><p>After 3 days of struggle, I fell back to my original approach: micro-releases. Instead of 0.01 release cycles, I went tighter&#8212;0.005 release cycles. One meaty feature set per release. For example, v0.16a was building the MCP catalog. v0.16b was the next feature set. That&#8217;s it.</p><p>(side note: I move between v0.16a, v0.16b and v0.17a because I didn&#8217;t take some screenshots in v0.17a. The conclusion and message remains the same.  At 0.16a/b I built with 3 (+1 director) agents. At 0v0.17a I built with 6 (+1 director agent). Appreciate your patience if this gets confusing because of versioning number)</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ahup!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef02ea6a-2ed5-49e8-aabe-65380d6a4d16_1210x1089.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ahup!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef02ea6a-2ed5-49e8-aabe-65380d6a4d16_1210x1089.png 424w, https://substackcdn.com/image/fetch/$s_!ahup!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef02ea6a-2ed5-49e8-aabe-65380d6a4d16_1210x1089.png 848w, https://substackcdn.com/image/fetch/$s_!ahup!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef02ea6a-2ed5-49e8-aabe-65380d6a4d16_1210x1089.png 1272w, https://substackcdn.com/image/fetch/$s_!ahup!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef02ea6a-2ed5-49e8-aabe-65380d6a4d16_1210x1089.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ahup!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef02ea6a-2ed5-49e8-aabe-65380d6a4d16_1210x1089.png" width="1210" height="1089" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ef02ea6a-2ed5-49e8-aabe-65380d6a4d16_1210x1089.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1089,&quot;width&quot;:1210,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:206503,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.harpreet.io/i/189060369?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef02ea6a-2ed5-49e8-aabe-65380d6a4d16_1210x1089.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ahup!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef02ea6a-2ed5-49e8-aabe-65380d6a4d16_1210x1089.png 424w, https://substackcdn.com/image/fetch/$s_!ahup!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef02ea6a-2ed5-49e8-aabe-65380d6a4d16_1210x1089.png 848w, https://substackcdn.com/image/fetch/$s_!ahup!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef02ea6a-2ed5-49e8-aabe-65380d6a4d16_1210x1089.png 1272w, https://substackcdn.com/image/fetch/$s_!ahup!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef02ea6a-2ed5-49e8-aabe-65380d6a4d16_1210x1089.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The feature in spotlight. A MCP Server Catalog</figcaption></figure></div><p>The key insight wasn&#8217;t that agents stopped stepping on each other. They still do&#8212;you still have to worry about overlaps, shared files, integration points. That problem gets solved at a different level (dependency analysis, execution waves&#8212;more on that in the next section).</p><p>The real unlock was <strong>predictability</strong>. When you constrain the scope tightly, generating work becomes predictable. I could review 30 tickets for a micro-release and know: yes, this is on track. </p><p>The backlog makes sense. The dependencies are clear.</p><p>With a large surface area, I couldn&#8217;t even tell if the plan was coherent. Too many moving parts, too many assumptions that might not hold.</p><p>Think of this as &#8220;<strong>(micro-)Sprint on steroids.</strong>&#8221; Each micro-sprint is hyper-focused. When the box is that tight, you can go deep. <br><br>Claude doesn&#8217;t lose context because there&#8217;s less context to lose.<br><br>(side note: Going deep in a feature area is not only possible but a good practice in this new world)</p><p>By narrowing scope, I scaled from 3 agents to 6. The math on this release looked like this (that&#8217;s because of the scar tissue of the seduction of a bigger plan):</p><ul><li><p><strong>1-3 days</strong>: Backlog generation (PLAN.md, thinking through the feature set)</p></li><li><p><strong>2-3 hours</strong>: Ticket breakdown with <a href="https://newsletter.harpreet.io/p/beads-agentic-coding">Beads</a> (make tickets self-sufficient)</p></li><li><p><strong>2-4 hours</strong>: Implementation (hands-off, agents execute)</p></li></ul><p>The constraint didn&#8217;t eliminate complexity. It made the complexity manageable.</p><div><hr></div><h2>Section 3: The 6-Step Workflow</h2><p>Here&#8217;s the process I use. I&#8217;ve scaled it to 6 agents running completely hands-off on a VPS.</p><h3>Step 1: Micro-Releases (Scope Boxing)</h3><p>I covered this in the previous section&#8212;0.005 release cycles, one meaty feature set per release (v0.16a = MCP catalog, v0.16b = next feature set). This is the foundation. Everything that follows builds on having a tightly constrained scope.</p><h3>Step 2: PLAN.md &#8594; Beads Tickets</h3><p>Once PLAN.md is ready (the high-level design for the micro-release), I ask Claude to create Beads tickets.</p><p>I&#8217;ve written before about <a href="https://newsletter.harpreet.io/p/beads-agentic-coding">Beads as AI-native issue tracking</a>&#8212;structured tickets that become AI memory. That insight becomes critical at scale. </p><p>With 6 agents working in parallel, self-sufficient tickets aren&#8217;t just nice-to-have. They&#8217;re the only way to prevent agents from:</p><ul><li><p>Asking you the same question 6 different ways</p></li><li><p>Losing context when they switch tickets</p></li><li><p>Breaking each other&#8217;s assumptions</p></li></ul><p>This workflow is heavily inspired by <strong>Jeffrey Emmanuel&#8217;s</strong> approach</p><div class="twitter-embed" data-attrs="{&quot;url&quot;:&quot;https://x.com/doodlestein/status/2007588870662107197?s=20)&quot;,&quot;full_text&quot;:&quot;If you have a markdown plan for a new piece of software that you're getting ready to start implementing with a coding agent such as Claude Code, before starting the actual implementation work, give this a try.\n\nPaste your entire markdown plan into the ChatGPT 5.2 Pro web app with&quot;,&quot;username&quot;:&quot;doodlestein&quot;,&quot;name&quot;:&quot;Jeffrey Emanuel&quot;,&quot;profile_image_url&quot;:&quot;https://pbs.substack.com/profile_images/1225476100547063809/53jSWs7z_normal.jpg&quot;,&quot;date&quot;:&quot;2026-01-03T23:04:20.000Z&quot;,&quot;photos&quot;:[],&quot;quoted_tweet&quot;:{},&quot;reply_count&quot;:41,&quot;retweet_count&quot;:47,&quot;like_count&quot;:761,&quot;impression_count&quot;:70089,&quot;expanded_url&quot;:null,&quot;video_url&quot;:null,&quot;belowTheFold&quot;:true}" data-component-name="Twitter2ToDOM"></div><p>&#8212;using structured issue tracking as the coordination layer for multi-agent work.</p><h3>Step 3: Make Tickets Self-Sufficient</h3><p>This is where the real work happens. I iterate with Claude to make each ticket completely self-contained. The test: a new session of Claude should be able to pick up any ticket and have everything required to implement it.</p><p><strong>This is the memory of the system</strong>. If you get this right, your agents don&#8217;t forget.</p><p>Each ticket needs:</p><ul><li><p>Clear acceptance criteria</p></li><li><p>Relevant context (what files to touch, what patterns to follow)</p></li><li><p>Dependencies (what needs to be done first)</p></li><li><p>Enough detail that an agent doesn&#8217;t need to ask you questions</p></li></ul><h4>Example: Before vs After</h4><p>Before (vague):</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;5f26d63a-ca33-4a63-af4a-eb9bbf2e2d17&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">joystream-2sd.1.1: Add MCP catalog endpoints
- Create API endpoints for MCP catalog
- Wire up to frontend</code></pre></div><p>After (self-sufficient):</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">joystream-2sd.1.1: Add MCP catalog list endpoint

Context: Building the MCP catalog feature (v0.17a). This ticket adds
the backend API endpoint that the frontend catalog page will consume.

Acceptance Criteria:

- GET /api/mcp/catalog returns paginated list of MCP servers

- Response schema: { servers: [...], total: number, page: number }

- Supports query params: ?page=1&amp;limit=20&amp;search=github
Files to modify:

- backend/main.py - add route registration

- backend/routes/mcp.py - create new file with endpoint logic

- backend/models/mcp.py - use existing MCPServer model

Dependencies:

- Requires joystream-cxcx (database migration) to be complete

- Blocks joystream-2sd.3.3 (frontend catalog page)

Pattern to follow:

Follow the existing route pattern in backend/routes/skills.py</code></pre></div><p>My contract with the system is Beads. </p><p>Claude Agent Teams has its own internal task list for tracking minutiae&#8212;I think of it like a secretary keeping track of the details. </p><p>But the Beads tickets are ground truth. When agents get confused, they come back to the Beads task list, not to me.</p><p>This step takes time. It&#8217;s the 2-3 hours in the breakdown phase. But it&#8217;s what makes hands-off execution possible.</p><h3>Step 4: Parallelization Labeling</h3><p>Once tickets are self-sufficient, I ask Claude to review them and identify what can run in parallel.</p><p>The labeling is straightforward: tag tickets with &#8220;<strong>backend</strong>&#8221;, &#8220;<strong>frontend</strong>&#8221;, &#8220;<strong>api</strong>&#8221;, &#8220;<strong>test</strong>&#8221;&#8212;whatever indicates the domain. This makes it easy to see which tickets have zero code overlap and can safely run simultaneously.</p><p>I also experimented with marking tickets by model tier: &#8220;<strong>Opus|Sonnet|Haiku</strong>&#8221;. </p><p>The idea was to assign straightforward scaffold work to Haiku and complex architectural work to Opus. I&#8217;m not sure if this actually worked&#8212;the model selection seemed to happen at the agent level, not the ticket level. </p><p>It&#8217;s on my list as the next experiment to validate.</p><p>But the domain labeling (backend/frontend/cli) definitely works. It gives Claude the signal it needs to understand the dependency structure.</p><h3>Step 5: Determine Team Composition</h3><p>Now I ask Claude: </p><blockquote><p>Based on this backlog, how many agents are required to effectively parallelize the implementation?</p></blockquote><p>Claude&#8217;s first answer: 8 agents. Too many for this release (my judgement).</p><p>I asked it to revise with constraints. </p><p>Second answer: 4 agents (backend, frontend, CLI, tester). Better.</p><p>Then I added two more:</p><ul><li><p><strong>Director agent</strong>: Sits above the team, answers questions when agents are blocked</p></li><li><p><strong>Bug-hunter agent</strong>: Runs after implementation waves, sweeps for issues, creates new tickets</p></li></ul><p>Final team: 6 agents.</p><p>The structure:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!W9yw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c29fec9-43ad-4ece-8b5a-8a2234c37e0c_605x451.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!W9yw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c29fec9-43ad-4ece-8b5a-8a2234c37e0c_605x451.png 424w, https://substackcdn.com/image/fetch/$s_!W9yw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c29fec9-43ad-4ece-8b5a-8a2234c37e0c_605x451.png 848w, https://substackcdn.com/image/fetch/$s_!W9yw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c29fec9-43ad-4ece-8b5a-8a2234c37e0c_605x451.png 1272w, https://substackcdn.com/image/fetch/$s_!W9yw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c29fec9-43ad-4ece-8b5a-8a2234c37e0c_605x451.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!W9yw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c29fec9-43ad-4ece-8b5a-8a2234c37e0c_605x451.png" width="605" height="451" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1c29fec9-43ad-4ece-8b5a-8a2234c37e0c_605x451.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:451,&quot;width&quot;:605,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:30326,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.harpreet.io/i/189060369?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c29fec9-43ad-4ece-8b5a-8a2234c37e0c_605x451.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!W9yw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c29fec9-43ad-4ece-8b5a-8a2234c37e0c_605x451.png 424w, https://substackcdn.com/image/fetch/$s_!W9yw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c29fec9-43ad-4ece-8b5a-8a2234c37e0c_605x451.png 848w, https://substackcdn.com/image/fetch/$s_!W9yw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c29fec9-43ad-4ece-8b5a-8a2234c37e0c_605x451.png 1272w, https://substackcdn.com/image/fetch/$s_!W9yw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c29fec9-43ad-4ece-8b5a-8a2234c37e0c_605x451.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The Agent Team for v0.16a release</figcaption></figure></div><p>It&#8217;s not just about speed. </p><p>It&#8217;s about different kinds of work happening simultaneously. The backend agent owns the critical path. The CLI agent runs fully independent work. The frontend agent is blocked early, uses that time to study the codebase, then executes when unblocked. The tester waits for implementation to finish, then validates. The bug-hunter does a post-implementation QA sweep.</p><h3>Step 6: Execution Waves</h3><p>The final step: I ask Claude to analyze the dependency graph and decide execution waves. </p><ul><li><p>What runs in parallel? </p></li><li><p>What&#8217;s sequential? </p></li><li><p>What&#8217;s blocked?</p></li></ul><p>Claude produces an execution plan showing which tickets can start immediately, which are blocked (and on what), and how many waves of work there are.</p><p>Here&#8217;s what that looked like for an earlier release <em><strong>(I seemed not have taken the snapshot for this release):</strong></em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ManB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9149d7de-0a84-419f-83ef-1f90b3afb356_1007x543.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ManB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9149d7de-0a84-419f-83ef-1f90b3afb356_1007x543.png 424w, https://substackcdn.com/image/fetch/$s_!ManB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9149d7de-0a84-419f-83ef-1f90b3afb356_1007x543.png 848w, https://substackcdn.com/image/fetch/$s_!ManB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9149d7de-0a84-419f-83ef-1f90b3afb356_1007x543.png 1272w, https://substackcdn.com/image/fetch/$s_!ManB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9149d7de-0a84-419f-83ef-1f90b3afb356_1007x543.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ManB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9149d7de-0a84-419f-83ef-1f90b3afb356_1007x543.png" width="1007" height="543" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9149d7de-0a84-419f-83ef-1f90b3afb356_1007x543.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:543,&quot;width&quot;:1007,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:138065,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.harpreet.io/i/189060369?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9149d7de-0a84-419f-83ef-1f90b3afb356_1007x543.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ManB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9149d7de-0a84-419f-83ef-1f90b3afb356_1007x543.png 424w, https://substackcdn.com/image/fetch/$s_!ManB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9149d7de-0a84-419f-83ef-1f90b3afb356_1007x543.png 848w, https://substackcdn.com/image/fetch/$s_!ManB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9149d7de-0a84-419f-83ef-1f90b3afb356_1007x543.png 1272w, https://substackcdn.com/image/fetch/$s_!ManB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9149d7de-0a84-419f-83ef-1f90b3afb356_1007x543.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Execution plan: Follows execution waves</figcaption></figure></div><p>The director agent orchestrates a synchronized start. Each pane shows an agent receiving its mission brief and ticket queue. Backend starts immediately on the critical path. CLI runs fully independent work in parallel. Frontend is blocked early&#8212;it will study the codebase while waiting, then execute once backend completes the API registration.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uLxr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c1a8b74-9e2f-41c9-8b7a-2f5d4f2b45bf_1018x1216.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uLxr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c1a8b74-9e2f-41c9-8b7a-2f5d4f2b45bf_1018x1216.png 424w, https://substackcdn.com/image/fetch/$s_!uLxr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c1a8b74-9e2f-41c9-8b7a-2f5d4f2b45bf_1018x1216.png 848w, https://substackcdn.com/image/fetch/$s_!uLxr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c1a8b74-9e2f-41c9-8b7a-2f5d4f2b45bf_1018x1216.png 1272w, https://substackcdn.com/image/fetch/$s_!uLxr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c1a8b74-9e2f-41c9-8b7a-2f5d4f2b45bf_1018x1216.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uLxr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c1a8b74-9e2f-41c9-8b7a-2f5d4f2b45bf_1018x1216.png" width="1018" height="1216" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8c1a8b74-9e2f-41c9-8b7a-2f5d4f2b45bf_1018x1216.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1216,&quot;width&quot;:1018,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:243380,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.harpreet.io/i/189060369?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c1a8b74-9e2f-41c9-8b7a-2f5d4f2b45bf_1018x1216.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!uLxr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c1a8b74-9e2f-41c9-8b7a-2f5d4f2b45bf_1018x1216.png 424w, https://substackcdn.com/image/fetch/$s_!uLxr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c1a8b74-9e2f-41c9-8b7a-2f5d4f2b45bf_1018x1216.png 848w, https://substackcdn.com/image/fetch/$s_!uLxr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c1a8b74-9e2f-41c9-8b7a-2f5d4f2b45bf_1018x1216.png 1272w, https://substackcdn.com/image/fetch/$s_!uLxr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c1a8b74-9e2f-41c9-8b7a-2f5d4f2b45bf_1018x1216.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Execution Waves: Parallel execution kickoff across three terminal panes</figcaption></figure></div><p>Claude analyzes the 30-ticket backlog:</p><ul><li><p> 1 critical blocker blocks everything downstream</p></li><li><p>5 tickets actionable immediately once blocker clears</p></li><li><p>25 tickets waiting on dependencies</p></li></ul><p>The dependency graph shows 6 waves. Claude identifies the backend agent&#8217;s serial chain as the bottleneck&#8212;everything else is either parallel (WAVE 1 tickets run simultaneously), downstream (frontend blocked until ~wave 5-6), or independent (CLI work finishes while others are still working).</p><p><strong>The key insight</strong>: Claude figures out its own optimal set of agents for the ticket backlog<br><br>Claude identified that splitting the backend into &#8220;data model&#8221; and &#8220;fetcher&#8221; agents was theoretically possible but risky&#8212;they share `backend/models/mcp.py` with only 1 ticket between them in the dependency chain. Not worth the merge conflict risk.</p><p>This is what I mean by &#8220;solving overlaps at a different level.&#8221; The micro-release gives you predictable scope. The dependency analysis tells agents when they can work without stepping on each other.</p><div><hr></div><h2>Section 4: The Execution (Hands-Off Mode)</h2><p>Once the team structure and execution waves are defined, I hand control to the director agent and walk away.</p><p>I run this on a VPS with <em>--dangerously-skip-permissions</em> (more on this in the gotchas section). The director agent sits at the top, fielding questions from the other agents. </p><p>When an agent hits a blocker&#8212;&#8220;Should I use pattern X or Y?&#8221;&#8212;it asks the director. The director responds based on AGENTS.md context and project rules. The agent unblocks and continues.</p><blockquote><p>This is true hands-off mode. I come back 2-4 hours later.</p></blockquote><p>The result: a built release. The backend agent completed its critical path. The CLI agent finished its independent work. The frontend agent executed once unblocked. The tester validated. The bug-hunter swept for issues.</p><h3>The Regression Issue</h3><blockquote><p>From here on, I will talk about the next release v0.17a</p></blockquote><p>v0.16a &amp; v0.16b flew threw seamlessly. For the  v0.17a, I spent 2 days fixing regression bugs after the 2-hour implementation run. Integration bugs slipped through&#8212;<strong>because Claude changed the implementation of the MCP catalog even though, we weren&#8217;t coding it in the release (this was a shocker)</strong>.<br><br>But this wasn&#8217;t inherent to the multi-agent approach. <br><br>It was because <strong>I haven&#8217;t been diligent enough about writing tests.</strong><br><br>With proper test coverage&#8212;backend tests, frontend tests, integration tests&#8212;this can be entirely eliminated.</p><h3>Landing the Plane Protocol</h3><p>After all agents finish, the landing pattern (from Steve Yegge. Written in AGENTS.md) is:</p><ul><li><p>Run backend tests (linters, type checks, unit tests)</p></li><li><p>Run frontend tests (ESLint, TypeScript checks, build validation)</p></li><li><p>Run integration tests (end-to-end flows)</p></li><li><p>Sync Beads tickets to the central repository (`br sync --flush-only`)</p></li><li><p>Commit and push</p></li></ul><p>The task list state + git state must stay in sync. Otherwise you lose track of what&#8217;s actually done vs what&#8217;s committed.</p><h3>The Math</h3><p>For v0.17a (with the 3-day struggle and lacking tests):</p><ul><li><p><strong>1-3 days</strong>: Backlog generation (including the struggle before I constrained scope)</p></li><li><p><strong>2-3 hours</strong>: Ticket breakdown with Beads</p></li><li><p><strong>2-4 hours</strong>: Implementation (hands-off)</p></li><li><p><strong>2 days</strong>: Regression bug fixes</p></li></ul><p>The ideal math for the next release (with better test coverage):</p><ul><li><p><strong>1 day</strong>: Backlog planning</p></li><li><p><strong>1 day</strong>: Implementation (including hands-off execution and landing)</p></li></ul><div><hr></div><h2>Section 5: Comparison to Agentic Flywheel (ACFS)</h2><p><strong>Influence &amp; Credit</strong></p><p>I&#8217;d like to think Claude Agent Teams (I don&#8217;t know anybody there &#8212; if someone reads this, I&#8217;d love to meet you for coffee. I&#8217;m a fan) is clearly influenced by Jeffrey Emmanuel&#8217;s work. Agent communication patterns like agent naming come from <strong>Agent Inbox</strong>. But where Jeffrey had to stitch this on top of Claude, Anthropic built it in.</p><h3>Communication: Hidden vs Visible</h3><p>With Agent Teams, the communication is completely hidden from you Which is a blessing and a curse. (you can go and tail the log files but they are too complex to make sense; better idea is to ask Claude delegate (director) to give you updates). </p><p>It was super cool in Agentic Flywheel to see agents emailing each other. You could watch the coordination happen. In Claude Teams, it just works&#8212;automatic message delivery, no inbox management&#8212;but you don&#8217;t see the wires.</p><p>Both systems are hands-off. Just different types of agent-to-agent communication.</p><h3>Tooling Differences</h3><p>ACFS has some advantages:</p><ul><li><p><strong>File locking</strong>: Prevents agents from stepping on each other&#8217;s work (Jeffrey doesn&#8217;t like git worktrees, so this was his solution)</p></li><li><p><strong>Multi-model support</strong>: `--cc=2 --cod=2 --gemini=2` = 6 agents across 3 model families. You can mix Claude Code, Codex 5.3, Gemini 3.1. Not locked into one model.</p></li><li><p><strong>Cockpit view (NTM)</strong>: See all agent panes, agent inbox, ticket assignments in one interface</p></li></ul><p><strong>Claude Teams advantages:</strong></p><ul><li><p><strong>Easier setup</strong>: ACFS takes ~2 days to get right. Claude Teams works out of the box.</p></li><li><p><strong>Built-in coordination</strong>: No stitching required</p></li><li><p><strong>Lower cognitive overhead</strong>: Less to manage</p></li></ul><h3>Recommendation</h3><p>Start with Claude Code and graduate. If you need multi-model support or want the cockpit view, invest the 2 days in ACFS setup. But for most use cases, Claude Teams&#8217; ease-of-use wins.</p><h3>The Team Abstraction</h3><p>One thought: Breaking agents into &#8220;work teams&#8221; (backend team, frontend team, etc.) is a natural way to think. It maps to how we organize human work today.</p><p>But does it actually matter in the long run that my agents were in these logical units? I don&#8217;t think so.</p><p>The coordination happens through the task list and dependency graph, not the team structure itself. The &#8220;team&#8221; abstraction is for humans to reason about the work, not for the agents.</p><div><hr></div><h2>Section 6: The Real Bottleneck</h2><p>The bottleneck isn&#8217;t implementation time. It&#8217;s <strong>backlog quality</strong>.</p><p>If your tickets are self-sufficient&#8212;clear acceptance criteria, relevant context, explicit dependencies&#8212;agents don&#8217;t need you. They read the ticket, understand what to build, and execute.</p><p>If your tickets are vague or incomplete, agents get stuck. They ask questions. You become the blocker.</p><p>This is why the ticket breakdown phase (Step 3 in the workflow) takes time. </p><blockquote><p>You&#8217;re not just creating tickets. You&#8217;re creating the distributed memory of the system. </p><p>Each ticket is a packet of context that an agent can pick up cold and run with.</p></blockquote><h3>The New Ratio for team throughput</h3><p>The traditional equation is simple: </p><blockquote><p>1 PM supports N engineers.</p></blockquote><p>With agent teams, the equation has three variables:</p><blockquote><p>x PMs : 1 human engineer : z agents</p></blockquote><p>The human engineer becomes the orchestrator. They translate PM requirements into self-sufficient tickets, then manage a fleet of agents executing in parallel.</p><p>The more agents you can effectively manage (the higher z), the more PM throughput you can support (the higher x). If I can run 6 agents and deliver a feature in 1-2 days, I can support more product surface area than a traditional 1:1 PM-to-engineer model.</p><p><strong>My conviction</strong>: we&#8217;re moving toward <strong>1-2 PMs per human engineer, with the engineer managing 5-10 agents</strong>. </p><p>The leverage isn&#8217;t in the number of agents alone&#8212;it&#8217;s in the engineer&#8217;s ability to create high-quality backlogs that agents can execute autonomously.</p><div><hr></div><h2>Section 7: Gotchas &amp; Lessons</h2><h3>Tmux Panes Don&#8217;t Auto-Start</h3><p>For a few iterations, I couldn&#8217;t get Claude Code to run in independent panes. I&#8217;m on iTerm, thought I did things right. I have Tmux on both my Mac and VPS. I figured Claude would automatically start Tmux and I&#8217;d see panes like ACFS&#8217;s cockpit (NTM) where you start agents and see everything.</p><p>It doesn&#8217;t. You have to start Tmux FIRST, then start Claude in there. Not a biggie.</p><h3>No Agent History Tracking</h3><p>Claude doesn&#8217;t keep history of how many agents were used or what they did. I thought for this blog I&#8217;d just ask Claude for the information&#8212;was disappointed to find it hadn&#8217;t tracked this. This is why you see me talk about different release and corresponding images. </p><p>As agent teams become more common, this will be a frequent ask. </p><p>In ACFS I can go to Agent Inbox and see what tickets were picked up by what agent. Claude Teams doesn&#8217;t have this yet.</p><h3>Running `--dangerously-skip-permissions`</h3><p>I run this on a VPS because I really wanted to see if I can go hands-off. <strong>Don&#8217;t do this on your local machine.</strong></p><p>This was my first time running it. I have confidence because I use tools from ACFS like `<strong>dcg</strong>` (destructive command guard)&#8212;it acts as a guardrail. Anytime a destructive operation is about to happen, it explicitly denies it.</p><p>The director agent handles minor asks and unblocks agents. But the guard prevents disasters. Without it, `--dangerously-skip-permissions` is exactly what it sounds like: dangerous.</p><div><hr></div><h2>Section 8: Conclusion</h2><p>This post documents using a different harness from ACFS. My muscle improved &#8212;I moved from 3-4 agents to 6 agents running hands-off.</p><p>In Steve Yegge&#8217;s framing of agentic engineering systems, I moved up the scale. Not just in agent count, but in the ability to delegate complex work and walk away.</p><h3>The Takeaways</h3><ul><li><p>Scaling agents requires constraining scope. Micro-releases (0.005 release cycles) make planning predictable. Claude doesn&#8217;t get lost when the box is tight.</p></li><li><p>Self-sufficient tickets are the foundation. They&#8217;re the distributed memory of the system. If tickets are good, agents don&#8217;t need you.</p></li><li><p>Hands-off mode is achievable. Director agent + quality backlog + execution waves = you come back 2-4 hours later to a built release.</p></li><li><p>The bottleneck is backlog generation, not implementation. The new ratio is <strong>x PMs : 1 human engineer : z agents</strong>. The more agents you can manage, the more PM throughput you can support.</p><p></p></li></ul><h3>Getting Started: The Progression Path</h3><p>Don&#8217;t start with 6 agents. Start with 2.</p><h4>Stage 1: Prove the workflow (2 agents)</h4><ul><li><p>Pick a small micro-release (~10 tickets)</p></li><li><p>Backend + Frontend agents (or Backend + CLI if simpler)</p></li><li><p>Focus on making tickets self-sufficient</p></li><li><p>Goal: Complete one release hands-off without asking questions</p></li></ul><h4>Stage 2: Add specialization (3-4 agents)</h4><ul><li><p>Add a Tester agent</p></li><li><p>Introduce dependency waves (some work blocks other work)</p></li></ul><p><strong>Goal: Agents handle blocked states without your intervention</strong></p><h4>Stage 3: Scale complexity (5-6 agents)</h4><ul><li><p>Add Director agent (you&#8217;re no longer the question-answerer)</p></li><li><p>Add Bug-hunter for post-implementation sweep</p></li></ul><p><strong>Goal: Come back 2-4 hours later to a landed release</strong></p><p><strong>When to scale up</strong>: When agents stop asking you questions. If you&#8217;re still the blocker at 2 agents, adding more won&#8217;t help. Fix the backlog quality first.</p><blockquote><p><strong>The Real Unlock</strong></p><p>The real unlock wasn&#8217;t the 6 agents. It was the discipline: tight scope, self-sufficient tickets, dependency-aware execution.</p><p>Get that right, and the agents scale themselves.</p></blockquote><h2>Quick Reference: The 6-Step Checklist</h2><p><strong>Pre-Work (1-3 days):</strong></p><ul><li><p>[ ] Write PLAN.md for micro-release (one meaty feature, 0.005 cycle)</p></li><li><p>[ ] Ask Claude: &#8220;Create Beads tickets from this PLAN.md&#8221;</p></li><li><p>[ ] Iterate on tickets until self-sufficient (test: can cold agent execute?)</p></li></ul><p><strong>Preparation (2-3 hours):</strong></p><ul><li><p>[ ] Label tickets by domain (backend/frontend/cli/test)</p></li><li><p>[ ] Ask Claude: &#8220;How many agents needed to parallelize?&#8221;</p></li><li><p>[ ] Negotiate team size, add director + bug-hunter</p></li><li><p>[ ] Ask Claude: &#8220;Analyze dependency graph, create execution waves&#8221;</p></li></ul><p><strong>Execution (2-4 hours, hands-off):</strong></p><ul><li><p>[ ] Start Tmux, spawn agents in separate panes</p></li><li><p>[ ] Hand control to director agent</p></li><li><p>[ ] Walk away</p></li></ul><p><strong>Landing:</strong></p><ul><li><p>[ ] Run quality gates (backend tests, frontend tests, integration)</p></li><li><p>[ ] beads_rust ticket sync`br sync --flush-only`</p></li><li><p>[ ] commit code</p></li></ul><p><strong>Key Prompts:</strong></p><ul><li><p> &#8220;Make this ticket self-sufficient so a new Claude session can execute it&#8221;</p></li><li><p>&#8220;Review these tickets and identify what can run in parallel&#8221;</p></li><li><p>&#8220;Based on this backlog, how many agents are required?&#8221;</p></li><li><p>&#8220;Analyze the dependency graph and create execution waves&#8221;<br><br><strong>Side note</strong>: It took me less time to implement the backlog than having to reformat my markdown because Substack doesn&#8217;t support markdown. What a world we live in now!</p></li></ul>]]></content:encoded></item><item><title><![CDATA[I Gave ChatGPT and Claude Code a 500-Year-Old Sacred Text and a Weekend. I Just Brought the Questions.]]></title><description><![CDATA[A field report on running a real NLP pipeline with ChatGPT as product manager, Claude as engineer, and four AI agents in parallel.]]></description><link>https://newsletter.harpreet.io/p/i-gave-chatgpt-and-claude-code-a</link><guid isPermaLink="false">https://newsletter.harpreet.io/p/i-gave-chatgpt-and-claude-code-a</guid><dc:creator><![CDATA[Harpreet Singh]]></dc:creator><pubDate>Tue, 17 Feb 2026 21:26:48 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!dqhs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2e4fd0a-44bc-46b7-ad2d-cf02e5790afb_980x504.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Over this long weekend, I did three things I&#8217;d never done before: built my first data science analysis project, published my first self-incepted open source project, and orchestrated a team of Claude Agent Team to do it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dqhs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2e4fd0a-44bc-46b7-ad2d-cf02e5790afb_980x504.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dqhs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2e4fd0a-44bc-46b7-ad2d-cf02e5790afb_980x504.png 424w, https://substackcdn.com/image/fetch/$s_!dqhs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2e4fd0a-44bc-46b7-ad2d-cf02e5790afb_980x504.png 848w, https://substackcdn.com/image/fetch/$s_!dqhs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2e4fd0a-44bc-46b7-ad2d-cf02e5790afb_980x504.png 1272w, https://substackcdn.com/image/fetch/$s_!dqhs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2e4fd0a-44bc-46b7-ad2d-cf02e5790afb_980x504.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dqhs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2e4fd0a-44bc-46b7-ad2d-cf02e5790afb_980x504.png" width="980" height="504" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e2e4fd0a-44bc-46b7-ad2d-cf02e5790afb_980x504.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:504,&quot;width&quot;:980,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1022971,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.harpreet.io/i/188308994?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2e4fd0a-44bc-46b7-ad2d-cf02e5790afb_980x504.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!dqhs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2e4fd0a-44bc-46b7-ad2d-cf02e5790afb_980x504.png 424w, https://substackcdn.com/image/fetch/$s_!dqhs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2e4fd0a-44bc-46b7-ad2d-cf02e5790afb_980x504.png 848w, https://substackcdn.com/image/fetch/$s_!dqhs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2e4fd0a-44bc-46b7-ad2d-cf02e5790afb_980x504.png 1272w, https://substackcdn.com/image/fetch/$s_!dqhs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2e4fd0a-44bc-46b7-ad2d-cf02e5790afb_980x504.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I&#8217;m not a data scientist&#8212;though I&#8217;m not a stranger to the work. <br><br>As founder and co-CEO of <a href="https://help.launchableinc.com/">Launchable</a>, an AI company, I watched my team build data pipelines from 2019 onward. I understood the architecture. I could review the output. But I&#8217;d never taken an entire project end-to-end myself&#8212;from the questions to the pipeline to the results. There was always a team to explain my vision to, and then wait for them to implement it. <br><br>This weekend, for the first time, I didn&#8217;t need that team. That was genuinely empowering.</p><p>The project: computationally analyzing the <strong><a href="https://en.wikipedia.org/wiki/Guru_Granth_Sahib">Guru Granth Sahib</a></strong>&#8212;the central scripture of the Sikhs, 1,430 pages, 60,629 lines, six languages woven into Gurmukhi script. I&#8217;d wanted to do this since my early 20s. I don&#8217;t read Punjabi fluently, and the interpretation of this text had always been outsourced to clerics. </p><p>That felt like being illiterate.</p><p>The open source piece is personal. I&#8217;ve lived in OSS for most of my career -- five to six years in <strong><a href="https://glassfish.org/">GlassFish</a></strong>, twelve years in <strong><a href="http://jenkins.io">Jenkins</a></strong>, building an enterprise business (<a href="http://cloudbees.com">CloudBees.com</a>) on top of it. But every one of those projects was someone else&#8217;s vision that I contributed to. </p><p>This is the first piece of work I conceived, built, and shipped myself. The entire GGS is now available as structured JSONL&#8212;every line tagged, every entity traced to its source page.</p><p>Anyone can query it.</p><p>And the agent orchestration connects to something I&#8217;ve written about before&#8212; the <a href="https://newsletter.harpreet.io/p/from-vibespec-to-fleet-agent-engineering">Agent Flywheel System</a>. This week I tried Claude&#8217;s new agent teams harness (which, honestly, feels like they were heavily inspired by Agent Flywheel System). Four agents, dependency graphs, execution waves. </p><p>The analysis I&#8217;d dreamed about for two decades became a weekend project because the AI stack finally caught up.</p><h2>The AI Architecture: Three Roles</h2><p>The project used three distinct AI roles, each doing a different kind of cognitive work.</p><h3>ChatGPT was the product manager.</h3><p>I spent hours in dialogue designing the analytical framework&#8212;not &#8220;write me code,&#8221; but &#8220;what are the right layers of analysis for a sacred text?&#8221; </p><p>That conversation evolved through multiple iterations: </p><ul><li><p>From naive word counting, to the critical insight that lexical frequency and theological reference are different questions (&#8221;the token &#2608;&#2622;&#2606; (Ram) appears 2,019 times&#8221; is not the same claim as &#8220;the Hindu deity Rama is referenced 2,019 times&#8221;)</p></li><li><p>To a three-layer architecture&#8212;<strong>Lexical, Structural, Interpretive</strong> &#8212;with explicit guardrails like &#8220;never collapse layers in reporting.&#8221; </p></li></ul><p>The PRD that came out of this dialogue was 1,169 lines of serious engineering: data contracts, schema validation, normalization pipelines, error models.</p><h3>Claude Code was the engineer. </h3><p>It built the entire pipeline: <br></p><ul><li><p>Aho-Corasick multi-pattern matching against 346 Gurmukhi spelling variants, </p></li><li><p>11-dimensional feature vectors per line, </p></li><li><p>PMI co-occurrence analysis, </p></li><li><p>author profiling. </p></li><li><p>733 tests passing. </p></li></ul><p>The methodology itself &#8212;density scoring over boolean presence, PMI over raw co-occurrence, exact string matching over embeddings was recommended by Claude. </p><p>It chose Aho-Corasick because with 346 patterns against 60,000 lines, regex would be O(patterns x text) while Aho-Corasick scans once. The full pipeline runs in under four seconds.</p><h3>I was the domain expert</h3><p>I was the domain expert. I built the 124-entity lexicon with 346 spelling variants across 11 theological dimensions. I decided what &#8220;<strong>nirgun (formless)</strong>&#8221; means, which entities matter, how to classify registers. </p><p>I ran 10 iterations of planning with ChatGPT and Claude, ensuring my biases were weeded out&#8212;kudos to ChatGPT, it flagged biased questions. </p><p>The pipeline has no opinions. </p><p>The lexicon doesn&#8217;t. And the lexicon is entirely human.</p><h2>The Agent Team</h2><p>When it came time to execute, I didn&#8217;t want one agent doing everything sequentially. This was a weekend project after all&#8212;I wanted to experiment with Claude Agent Teams and importantly wrap it up as quickly as I could. </p><p>I asked Claude to spawn agents. It analyzed the task graph (from Beads) and recommended 6 agents, noting that 8 would be a stretch. I ended up running 4&#8212;I could clearly see that a couple of agents would write to the same files, and unlike the <a href="https://newsletter.harpreet.io/p/from-vibespec-to-fleet-agent-engineering">Agent Flywheel System</a> which has filesystem locking, here I needed to worry about that myself.</p><p> The tickets themselves were generated using beads_rust (a variant of Beads), a project tracker that gives me a dependency graph (I&#8217;ve written about <a href="https://newsletter.harpreet.io/p/beads-agentic-coding">this</a> before).   </p><p>At this point, this workflow works well for me that handing it to opaque task management inside Claude doesn&#8217;t feel right. </p><p>I want to see the graph. I want to own the structure&#8212;just because I trust Beads to do its job well. Claude reviewed these tickets and built the dependency waves: which tasks can run in parallel, which are blocked, which agent gets which track.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_iFr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9772019-1cb0-4d26-aff2-f876cf59d137_1010x1183.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_iFr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9772019-1cb0-4d26-aff2-f876cf59d137_1010x1183.png 424w, https://substackcdn.com/image/fetch/$s_!_iFr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9772019-1cb0-4d26-aff2-f876cf59d137_1010x1183.png 848w, https://substackcdn.com/image/fetch/$s_!_iFr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9772019-1cb0-4d26-aff2-f876cf59d137_1010x1183.png 1272w, https://substackcdn.com/image/fetch/$s_!_iFr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9772019-1cb0-4d26-aff2-f876cf59d137_1010x1183.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_iFr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9772019-1cb0-4d26-aff2-f876cf59d137_1010x1183.png" width="1010" height="1183" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b9772019-1cb0-4d26-aff2-f876cf59d137_1010x1183.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1183,&quot;width&quot;:1010,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:236820,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.harpreet.io/i/188308994?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9772019-1cb0-4d26-aff2-f876cf59d137_1010x1183.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_iFr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9772019-1cb0-4d26-aff2-f876cf59d137_1010x1183.png 424w, https://substackcdn.com/image/fetch/$s_!_iFr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9772019-1cb0-4d26-aff2-f876cf59d137_1010x1183.png 848w, https://substackcdn.com/image/fetch/$s_!_iFr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9772019-1cb0-4d26-aff2-f876cf59d137_1010x1183.png 1272w, https://substackcdn.com/image/fetch/$s_!_iFr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9772019-1cb0-4d26-aff2-f876cf59d137_1010x1183.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">dependency graph suggestion (from another project)</figcaption></figure></div><p>Each agent got its own track, its own ticket queue ordered by dependency, its own prompt file. </p><p>The backend agent was busy the entire time on the critical path. The CLI agent started immediately&#8212;zero shared dependencies&#8212;finished early, and picked up test tickets. </p><p>The frontend agent was blocked until upstream work finished, so it studied the codebase while waiting, then ran its serial chain. </p><p>All agents committed to the same branch. Git pull/push handled merges. Quality gates after every ticket.</p><p>This is the Agent Flywheel System in practice&#8212;natively supported by Claude Agent Teams. </p><p>The human defines the work and the structure. </p><p>The AI analyzes the dependency graph, recommends team size, and executes. The coordination protocol&#8212;who&#8217;s blocked, who picks up slack, when to start the downstream agent&#8212;came from Claude, not from me. </p><p>I was the architect. Claude was the general contractor running the crew.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://newsletter.harpreet.io/p/i-gave-chatgpt-and-claude-code-a?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading The Operator's Guide to AI-Native B2B &#8212; by Harpreet Singh! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.harpreet.io/p/i-gave-chatgpt-and-claude-code-a?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.harpreet.io/p/i-gave-chatgpt-and-claude-code-a?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><h2>The Irreducible Human</h2><p>Here&#8217;s what AI couldn&#8217;t do: decide what questions to ask.</p><p>The entire project hangs on a 124-entity lexicon&#8212;346 spelling variants in Gurmukhi, organized across 11 theological dimensions: </p><p>nirgun (formless/non-dual), sanskritic, devotional, ethical, oneness, ritual, cleric, sagun (form/dual) narrative, scriptural, Perso-Arabic, identity. </p><p>Every entity, every dimension, every classification is domain knowledge. </p><p>No model has that for the project. </p><p>I had to know that SAHIB (&#2616;&#2622;&#2617;&#2623;&#2604;) isn&#8217;t Perso-Arabic in the GGS context, even though it&#8217;s etymologically Persian. That single reclassification dropped the Perso-Arabic register from 0.73% to 0.29%. The lexicon is the most valuable artifact in the project, not the pipeline.</p><p>The bias control was the hardest work. I came in with hypotheses&#8212;everyone does when they care about a text. I ran 10 iterations of planning with ChatGPT and Claude, ensuring my biases were weeded out. Kudos to ChatGPT&#8212;it flagged biased questions. </p><p>But ultimately, the discipline of checking and rechecking was mine to maintain. </p><p>The pipeline has no opinions. The lexicon does. And if your lexicon is biased, your results are biased. </p><p>No amount of engineering rigor fixes a loaded question.</p><p>This is the punchline for anyone thinking about using AI for serious analytical work: </p><div class="pullquote"><p>AI collapses everything around the domain expertise. </p></div><p>The engineering, the project management, the parallelization, the testing&#8212;all compressed into a weekend. </p><p>But the questions you ask, the categories you choose, the biases you catch&#8212;that&#8217;s still entirely you. And that&#8217;s the part that matters most.</p><h2>What the data showed: Formless wrapped in a love poem</h2><p>The pipeline worked. <strong>60,012</strong> entity matches across <strong>60,629</strong> lines&#8212;<strong>57.3%</strong> of the text lit up. The headline: <strong>42.25%</strong> of all lines contain <strong>nirgun</strong> (formless divine) vocabulary. Nearly half the text is about a nameless, formless reality. </p><p>Add the oneness markers and it&#8217;s <strong>44.25%</strong> <strong>Advaita</strong>-adjacent. The Gurus were talking about non-dual philosophy&#8212;the field, the formless&#8212;before it became an Instagram trend.<br><br>What was amazing for me, was Non-dual philosophy is intellectual, the Gurus wrapped into a love poem. Which is genuinely unique perspective. </p><p>The surprises were real (for me&#8212;not my parents :-)). HARI (a name for Lord Vishnu/Krishna) appears 55 times for every 1 occurrence of WAHEGURU. </p><p>Modern Sikh practice centers on Waheguru, but the text itself speaks a different lexical language. RAM, which appears 2,019 times, behaves statistically as a synonym for the formless divine, not as a reference to the Ramayana hero -- its co-occurrence neighborhood is indistinguishable from HARI&#8217;s. </p><p>And HINDU and TURK (Muslims referenced by the ethnicity of the Turkish invaders) have the highest statistical association in the entire corpus. </p><p>The central message of Sikhism is that all humans are equal and whenever the text references Hindu and Turk, it names them together to make the point that they are not different.</p><p><a href="https://www.formeditators.com/p/what-does-the-guru-granth-sahib-actually">I wrote the full findings in a separate post&#8212;13 findings, per-author profiles, the Stoic-Bhakti-Advaita triangle, the civilizational vocabulary ratio (99.9:1 Sanatan (Hinduism) to Islamic). </a></p><p>But the point for this audience isn&#8217;t the theology. </p><p>It&#8217;s that a domain expert with an AI stack produced findings that are reproducible, auditable, and traceable to specific Gurmukhi lines. </p><p>Every number links to a source. <a href="https://github.com/harpreetsingh/guru-granth-sahib-data-analysis">The repo is open. File a bug.</a></p><h2>The Takeaway</h2><p>Here&#8217;s the reusable framework. </p><ol><li><p>Step one: use ChatGPT to design the what&#8212;the questions, the methodology, the architecture. Push back on yourself. Let the AI challenge your framing.</p></li><li><p>Step two: use Claude Code to build the how&#8212;the pipeline, the tests, the engineering. Let it recommend the methodology.</p></li><li><p>Step three: when the task graph gets big enough, spawn Claude Agent Teams &#8212;define the dependency waves, let agents run parallel tracks. </p></li></ol><p>And throughout: you are the domain expert. You own the lexicon. You own the bias control. You own the interpretation. </p><div class="pullquote"><p>The ratio that matters isn&#8217;t AI-to-human. It&#8217;s thinking-to-building. </p></div><p>This project was maybe 70% thinking&#8212;what questions to ask, what entities to track, what dimensions capture the theology, what claims the data can support&#8212; and 30% building. </p><p>AI inverted that ratio from what it would have been five years ago. The building used to be the bottleneck. Now the thinking is. And it should be.</p><p>Links:</p><ul><li><p><a href="https://github.com/harpreetsingh/guru-granth-sahib-data-analysis">GitHub Repository</a></p></li><li><p><a href="https://www.formeditators.com/p/what-does-the-guru-granth-sahib-actually">Analysis Post</a></p></li></ul>]]></content:encoded></item><item><title><![CDATA[From VibeSpec to Fleet: Agent Engineering with Agentic Flywheel]]></title><description><![CDATA[Three agents, four hours, one sprint&#8212;what it actually takes to build and run a multi-agent coding system]]></description><link>https://newsletter.harpreet.io/p/from-vibespec-to-fleet-agent-engineering</link><guid isPermaLink="false">https://newsletter.harpreet.io/p/from-vibespec-to-fleet-agent-engineering</guid><dc:creator><![CDATA[Harpreet Singh]]></dc:creator><pubDate>Fri, 13 Feb 2026 01:09:34 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1680691672091-9a90ca3c31c6?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0NHx8Zmx5d2hlZWx8ZW58MHx8fHwxNzcwOTQ0MzMxfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1680691672091-9a90ca3c31c6?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0NHx8Zmx5d2hlZWx8ZW58MHx8fHwxNzcwOTQ0MzMxfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1680691672091-9a90ca3c31c6?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0NHx8Zmx5d2hlZWx8ZW58MHx8fHwxNzcwOTQ0MzMxfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1680691672091-9a90ca3c31c6?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0NHx8Zmx5d2hlZWx8ZW58MHx8fHwxNzcwOTQ0MzMxfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1680691672091-9a90ca3c31c6?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0NHx8Zmx5d2hlZWx8ZW58MHx8fHwxNzcwOTQ0MzMxfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1680691672091-9a90ca3c31c6?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0NHx8Zmx5d2hlZWx8ZW58MHx8fHwxNzcwOTQ0MzMxfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1680691672091-9a90ca3c31c6?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0NHx8Zmx5d2hlZWx8ZW58MHx8fHwxNzcwOTQ0MzMxfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="1080" height="720" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1680691672091-9a90ca3c31c6?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0NHx8Zmx5d2hlZWx8ZW58MHx8fHwxNzcwOTQ0MzMxfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1080,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;a large ferris wheel lit up at night&quot;,&quot;title&quot;:&quot;a large ferris wheel lit up at night&quot;,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="a large ferris wheel lit up at night" title="a large ferris wheel lit up at night" srcset="https://images.unsplash.com/photo-1680691672091-9a90ca3c31c6?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0NHx8Zmx5d2hlZWx8ZW58MHx8fHwxNzcwOTQ0MzMxfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1680691672091-9a90ca3c31c6?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0NHx8Zmx5d2hlZWx8ZW58MHx8fHwxNzcwOTQ0MzMxfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1680691672091-9a90ca3c31c6?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0NHx8Zmx5d2hlZWx8ZW58MHx8fHwxNzcwOTQ0MzMxfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1680691672091-9a90ca3c31c6?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0NHx8Zmx5d2hlZWx8ZW58MHx8fHwxNzcwOTQ0MzMxfDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>I. The Problem That Led Me Here</h2><p>Over the last six weeks, I&#8217;ve been posting about my journey with agentic coding. I&#8217;m in exploration mode&#8212;figuring out what&#8217;s actually required to build software now that coding agents like Claude have evolved significantly since <a href="https://newsletter.harpreet.io/p/an-everything-just-changed-moment">December</a>. It became clear to me that the future isn&#8217;t single-agent assistance. It&#8217;s agent fleets.</p><p>I&#8217;d read Steve Yegge&#8217;s piece on GasTown, which laid out a scale from basic AI assistance to full autonomous development. I realized I was at stage 6&#8212;barely. Not in YOLO mode, but aligned with where he was headed. I reached out. He asked me to hold off while bugs settled. There&#8217;s a thriving community there, but it&#8217;s still early days. Then I came across Jeffrey Emanuel&#8217;s work with the Agentic Flywheel System.</p><p>What caught my attention wasn&#8217;t just the claim of running 31 projects in parallel. It was his thoughtful approach to PM-ing and architecting. This wasn&#8217;t YOLO mode. This was a system built for quality code with proper coordination.</p><p>I decided to test it on my current project&#8212;a real production system I&#8217;m calling JoyStream for now. Not a toy app. Not a demo. A system with actual architecture constraints, API integrations, and consequences for getting it wrong.</p><p>Three agents. Four hours. They cleared my entire sprint backlog.</p><p>What changed wasn&#8217;t just the coding speed&#8212;that&#8217;s been improving for months. What changed was the rapid compression of the PM-to-spec-to-code cycle. The work shifted almost entirely to specification and architecture upfront. Here&#8217;s what I learned running my first agent fleet.</p><h2>II. What Is the Agentic Flywheel System?</h2><p>The Agentic Flywheel isn&#8217;t another AI coding tool. It&#8217;s infrastructure for running agent fleets.</p><p>Jeffrey&#8217;s philosophy mirrors the Unix approach: small, composable tools that pipe together. Instead of one monolithic &#8220;AI developer,&#8221; you get 20+ specialized utilities that coordinate through well-defined interfaces. Each tool does one thing well. Together, they create a compounding loop.</p><p><strong>The Core Loop:</strong></p><ol><li><p><strong>Plan</strong> (<a href="https://newsletter.harpreet.io/p/beads-agentic-coding">Beads</a> + bv (beads viewer)) - Graph-aware task management with dependencies; bv provides the terminal UI for viewing and triaging</p></li><li><p><strong>Coordinate</strong> (Agent Mail) - Multi-agent messaging and file reservations</p></li><li><p><strong>Execute</strong> (NTM + Agents) - Terminal orchestration across Claude, Codex, Gemini</p></li><li><p><strong>Remember</strong> (CASS Memory) - Session search and procedural memory</p></li><li><p><strong>Scan</strong> (UBS) - Code quality guardrails before commit</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VFXZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F919f6ba2-fa5a-452f-9f25-9216c5effebc_822x467.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VFXZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F919f6ba2-fa5a-452f-9f25-9216c5effebc_822x467.png 424w, https://substackcdn.com/image/fetch/$s_!VFXZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F919f6ba2-fa5a-452f-9f25-9216c5effebc_822x467.png 848w, https://substackcdn.com/image/fetch/$s_!VFXZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F919f6ba2-fa5a-452f-9f25-9216c5effebc_822x467.png 1272w, https://substackcdn.com/image/fetch/$s_!VFXZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F919f6ba2-fa5a-452f-9f25-9216c5effebc_822x467.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VFXZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F919f6ba2-fa5a-452f-9f25-9216c5effebc_822x467.png" width="822" height="467" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/919f6ba2-fa5a-452f-9f25-9216c5effebc_822x467.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:467,&quot;width&quot;:822,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:490160,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.harpreet.io/i/187807890?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F919f6ba2-fa5a-452f-9f25-9216c5effebc_822x467.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!VFXZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F919f6ba2-fa5a-452f-9f25-9216c5effebc_822x467.png 424w, https://substackcdn.com/image/fetch/$s_!VFXZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F919f6ba2-fa5a-452f-9f25-9216c5effebc_822x467.png 848w, https://substackcdn.com/image/fetch/$s_!VFXZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F919f6ba2-fa5a-452f-9f25-9216c5effebc_822x467.png 1272w, https://substackcdn.com/image/fetch/$s_!VFXZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F919f6ba2-fa5a-452f-9f25-9216c5effebc_822x467.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><a href="https://agent-flywheel.com/learn/flywheel-loop">from agent-flywheel.com</a></figcaption></figure></div><p>Each cycle improves the next. CASS remembers what worked. Memory distills patterns. UBS catches more issues. Agents coordinate better through Agent Mail.</p><p>The system includes 20+ tools beyond the core loop: DCG for pre-execution safety, RU for multi-repo management, SRPS for system protection under agent load, and more. The full stack is documented at agent-flywheel.com/learn.</p><p><strong>Where I Am:</strong></p><p>I haven&#8217;t graduated to using the entire system. Like learning Linux commands, I&#8217;ve piped together the four basic core tools&#8212;Beads, Agent Mail, NTM, and my agents&#8212;and that works well enough. I&#8217;ll add others as I get better at this.</p><p><strong>The Key Distinction:</strong></p><p>This sits between solo Claude Code usage and full autonomous systems like GasTown. With GasTown&#8217;s vision, code gets generated and you trust the output. With Agentic Flywheel, you maintain control through heavy upfront specification and coordinated execution. The scale is manageable: 3-20 agents instead of fully autonomous fleets.</p><p>I&#8217;m staying at this level. The infrastructure supports scaling to dozens of agents, but the real power is in the coordination harness&#8212;not just raw agent count.</p><h2>III. Agent Engineering = Vibe-Specing = Vibe-PMing + Vibe-Architecting</h2><p>I&#8217;ve been calling this shift &#8220;Vibe-PMing&#8221; and &#8220;Vibe-Architecting&#8221;&#8212;though Andrej Karpathy recently coined &#8220;agent engineering,&#8221; which is probably the term that&#8217;ll stick. They&#8217;re the same thing: the new skill of specification work that makes agent fleets possible.</p><p><strong>The Bottleneck Has Moved</strong></p><p>AI has revealed product management as the new constraint in software development. When Claude can write a thousand lines of correct code in minutes, the blocker isn&#8217;t engineering capacity anymore. It&#8217;s specification quality.</p><p>Traditional PM-to-engineer handoffs had built-in error correction. You&#8217;d sketch requirements, engineers would ask clarifying questions, you&#8217;d iterate through implementation. Humans are good at filling gaps and making reasonable assumptions.</p><p>Agents don&#8217;t work that way. They execute what you specify. The work now happens entirely upfront, before any agent touches code.</p><p><strong>Multi-Shot Specification: Sense-making Through Iteration</strong></p><p>This isn&#8217;t one-shot prompting. It&#8217;s structured iteration across models to refine intent into executable architecture.</p><p>My process:</p><ol><li><p><strong>Start with loose intent</strong> - Rough problem statement, no implementation details</p></li><li><p><strong>Iterate with one model (Claude)</strong> - 4-5 rounds of refinement, tightening the specification each time</p></li><li><p><strong>Take it to another model (Codex)</strong> - Fresh perspective catches assumptions and gaps. I found Claude &#8594; Codex worked better than adding Gemini to the chain, though that&#8217;s worth exploring separately</p></li><li><p><strong>Return to original model</strong> - Synthesize insights, finalize the approach</p></li><li><p><strong>Generate architecture</strong> - Multiple iterations here. Get the structure right</p></li><li><p><strong>Create Beads tickets</strong> - Iterate until each ticket is self-contained and executable without additional context</p></li></ol><p>That last step is critical. Each ticket needs enough detail that an agent can execute independently, without needing clarification or shared context with other agents.</p><p><strong>The PM-Architecture Feedback Loop</strong></p><p>Working solo on this, I realized something: PM-specing and architecture weren&#8217;t sequential phases. They were rapid, interleaved loops feeding each other. A specification question would surface an architecture constraint. An architecture decision would reveal missing product requirements. Back and forth, getting tighter each cycle.</p><p>My engineering background helped here. I could push models to justify their design choices, and often they were making suboptimal trade-offs. They&#8217;d suggest patterns that looked reasonable but wouldn&#8217;t scale, or architectures that created unnecessary coupling. The ability to evaluate those proposals critically&#8212;to know when the model was wrong&#8212;mattered.</p><p><strong>What This Means for Teams</strong></p><p>The implication: we&#8217;re heading toward a 1:1 or 1:2 PM-to-engineer ratio. Maybe it flips entirely&#8212;2-3 PMs for every engineer. The bottleneck is no longer &#8220;who can write the code?&#8221; It&#8217;s &#8220;who can think through what needs to be built and specify it clearly enough that agents can execute?&#8221;</p><p><strong>Why I Didn&#8217;t Hit Collisions</strong></p><p>I followed Jeffrey Emanuel&#8217;s patterns. There&#8217;s a reason he&#8217;s running 31 projects simultaneously&#8212;the coordination infrastructure works when you do the specification work properly. Agents didn&#8217;t collide because the upfront Vibe-Specing made collisions impossible.</p><p>The shift from &#8220;vibe coding&#8221; (iterative collaboration with an agent) to &#8220;Vibe-Specing&#8221; (multi-shot refinement before execution) is where the real work happens now. You&#8217;re not just writing tickets. You&#8217;re creating an execution environment where agents can operate independently.</p><p>This is the new skill.</p><h2>IV. Installation Reality Check</h2><p>The Agentic Flywheel System comes with ACFS (Agentic Coding Flywheel System)&#8212;an opinionated installer that sets up the full stack. When it works, it&#8217;s fantastic. When you hit issues, you&#8217;re debugging infrastructure you don&#8217;t fully understand yet.</p><p><strong>VPS Requirements</strong></p><p>You need horsepower. Jeffrey runs this on serious VPS instances because agent fleets consume resources. I went with a mid-tier VPS&#8212;enough to run 3-5 agents comfortably. If you&#8217;re planning to scale to 10-20 agents, provision accordingly.</p><p><strong>The Opinionated Stack</strong></p><p>ACFS installs everything: zsh with p10k theme, tmux configuration, git setup, all the flywheel tools. It&#8217;s comprehensive. Run the installer and it handles package management, shell configuration, even your terminal aesthetics.</p><p>The trade-off: when something breaks, you&#8217;re deep in configuration files you didn&#8217;t write. I spent time learning zsh after years of bash, reacquainting myself with tmux after a 15-year hiatus since my Sun Microsystems days, and understanding how p10k customizes the prompt.</p><p><strong>Time Investment</strong></p><p>Plan for 2-3 days from zero to your first successful flywheel run. That includes:</p><ul><li><p>VPS setup and Tailscale configuration</p></li><li><p>ACFS installation</p></li><li><p>Learning the shell environment</p></li><li><p>Understanding tmux session management</p></li><li><p>Debugging your first agent coordination issues</p></li></ul><p>This isn&#8217;t a &#8220;install and go&#8221; system. It&#8217;s infrastructure. You&#8217;re building the environment that makes agent fleets possible.</p><h2>V. The Setup Gauntlet: Getting Agents Coordinated</h2><p>Getting the tools installed is one thing. Getting them to coordinate is another. Here&#8217;s what I learned setting up the core coordination stack.</p><h3>A. Beads: Task Management as Agent Memory</h3><p>Beads is git-native issue tracking with dependency graphs. Unlike Jira or Linear, Beads stores everything as git objects. This means agents can read task history, understand dependencies, and coordinate work through the same git operations they already use.</p><p><strong>What Beads Does:</strong></p><ul><li><p>Stores issues and tasks as git objects</p></li><li><p>Tracks dependencies between tickets</p></li><li><p>Provides structured metadata agents can parse</p></li><li><p>Terminal and web UI options for viewing and triaging</p></li></ul><p><strong>The Compatibility Decision</strong></p><p>I&#8217;d been using Beads and was getting comfortable with it. I was specifically using <code>beads_ui</code>&#8212;part of the thriving Beads community&#8212;which provides a web interface.</p><p>Then I saw Jeffrey had created <code>beads_rust</code>, a fork moving in a different direction from the original Beads. This should&#8217;ve been simple, but the databases are no longer compatible. He built bv, a terminal UI for <code>beads_rust</code>. It&#8217;s nice, but I prefer web UIs.</p><p>The original Beads has a <code>beads-sync</code> repo pattern where all tickets sync to a dedicated repository. I loved this. <code>Beads_rust</code> documentation says it supports this, but looking at the codebase, it&#8217;s not implemented yet.</p><p>For this project, I chose to go the opinionated way: <code>beads_rust</code> and <code>bv</code>. If you want to experience the full system as Jeffrey designed it, this is the path.</p><p><strong>The Good News</strong></p><p>Coding happens so fast with agent fleets that tickets are like filling a leaky bucket&#8212;they empty quickly in micro-versions (0.01, 0.02, 0.03). If I wanted to switch back to the original Beads, I could at any point. The velocity makes tool choices less permanent for a solo developer.</p><p><strong>The Robot-Triage Pattern</strong></p><p>The key command: <code>bv --robot-triage</code></p><p>This outputs deterministic, parseable ticket data that agents can consume. It handles:</p><ul><li><p>Identifying parallelizable work</p></li><li><p>Flagging dependencies</p></li><li><p>Showing what&#8217;s ready to execute</p></li></ul><p>Once you have tickets properly structured, <code>--robot-triage</code> becomes the interface between your planning and agent execution.</p><h3>B. Agent Mail: The Coordination Layer</h3><p>Agent Mail is what makes multi-agent coordination possible. It&#8217;s not just messaging&#8212;it&#8217;s the coordination protocol.</p><p><strong>Why File Locking Alone Isn&#8217;t Enough</strong></p><p>Git provides some conflict detection, but it&#8217;s reactive. By the time git catches a merge conflict, two agents have already done incompatible work. Agent Mail provides proactive coordination through file reservations.</p><p><strong>The Three-Layer Protection:</strong></p><ol><li><p><strong>Beads structure</strong> - Tasks are decomposed to minimize overlap</p></li><li><p><strong>File locks</strong> - Agents reserve files before editing</p></li><li><p><strong>Agent Mail</strong> - Agents communicate what they&#8217;re working on</p></li></ol><p>This triple redundancy meant I never hit file conflicts during execution.</p><p><strong>Setup Challenge: The .claude.json Nightmare</strong></p><p>This took me 3 days to debug. Agent Mail runs as an MCP server. Claude Code connects to it via HTTP.</p><p>Claude Code uses two configuration files:</p><ul><li><p>~/.claude/settings.json - User-editable settings</p></li><li><p>~/.claude.json - Runtime cache</p></li></ul><p>I updated settings.json with the correct Agent Mail endpoint and bearer token. Restarted Claude. Nothing. The MCP server showed as &#8220;failed.&#8221;</p><p>Debug logs showed Claude was hitting the wrong endpoint. The cache file had stale configuration&#8212;wrong URL, wrong token, and the server marked as disabled for my project.</p><p>The fix: manually edit .claude.json to match settings.json. Restart Claude. It worked.</p><p><strong>Lesson: Always check both config files when debugging MCP connections.</strong></p><p><strong>Remote UI Access</strong></p><p>Agent Mail has a web UI for viewing messages and agent activity&#8212;essential for monitoring what agents are doing. I set up Nginx as a reverse proxy on my Tailscale network so I could access the UI from my Mac while the server ran on the VPS. Nginx injects the bearer token, giving me auth-free browser access while Claude connects directly for low latency. It took me a few iterations to figure this out.</p><h3>C. NTM: The Cockpit</h3><p>NTM (New Terminal Multiplexer) is your command center for orchestrating agents. Think of it as tmux with agent-aware features.</p><p><strong>Multi-Pane Orchestration</strong></p><p>You spawn agents in separate panes, each running different models. With a single command, you can create multiple Claude Code sessions or Codex sessions&#8212;each in its own tmux pane. You can watch them all simultaneously, seeing exactly what each agent is doing in real time.</p><p><strong>The --pane Option</strong></p><p>Here&#8217;s the power move: assign agents to specific work using labels.</p><p>Beads tickets have labels. Agents filter by label. You&#8217;ve just parallelized your workflow across agent specializations.</p><p><strong>Why This Matters</strong></p><p>Gemini might be better at documentation. Claude excels at backend logic. Codex handles certain patterns well. The --pane option lets you route work to the right model.</p><p>I haven&#8217;t fully explored this yet&#8212;I&#8217;m still running primarily Claude. But the infrastructure supports heterogeneous agent fleets, and that&#8217;s the direction I&#8217;m heading.</p><h3>D. The Missing Piece: AGENTS.md</h3><p>Here&#8217;s what cost me half a day: I had all the tools installed and configured, but the agents weren&#8217;t coordinating properly. The engine wouldn&#8217;t fire.</p><p>The problem: I was missing the AGENTS.md file with the Agent Specific Flywheel components. Not because of oversight, I had this file in a different directory and was referencing it in AGENTS.md but Claude would not follow the link and read it.</p><p>AGENTS.md is the bootstrap protocol that ties everything together. It tells agents:</p><ul><li><p>How to use Agent Mail for coordination</p></li><li><p>Where to find Beads tickets with bv --robot-triage</p></li><li><p>What labels they should filter on</p></li><li><p>File reservation protocols</p></li><li><p>When to send status updates</p></li></ul><p>Without this ACFS entries, agents don&#8217;t know they&#8217;re supposed to coordinate. They run independently, unaware of the coordination infrastructure you&#8217;ve built.</p><p>I had to go through Jeffrey&#8217;s projects to understand the right structure. Once I had AGENTS.md in place, everything clicked. Agents registered with Agent Mail, checked for tickets, reserved files, and communicated status.</p><p><strong>Critical: The AGENTS.md with ACFS related changes are not optional. It&#8217;s the coordination contract.</strong></p><h2>VI. The Flywheel in Motion: What Actually Happened</h2><p>Once the infrastructure was in place and AGENTS.md was configured, I spawned my first fleet. Three Claude agents. One project. Here&#8217;s what happened.</p><h3>A. Spawning the Fleet</h3><p>I started conservative&#8212;three agents instead of pushing for higher numbers immediately (I did try with one agent first to run through some tickets).</p><p>NTM created three tmux panes, each running a Claude Code session. The agents registered with Agent Mail, pulling whimsical names from the system: BlueLake, GreenCastle, RedStone. The naming is automatic&#8212;adjective plus noun combinations.</p><p>Watching them register was surreal. These weren&#8217;t just terminal sessions. They were coordinated entities with identity, checking in with the coordination server.</p><h3>B. Execution Observations</h3><p><strong>Agents Picking Tickets</strong></p><p>The first agent checked the robot-triage output, saw available tickets, and sent a message to Agent Mail: &#8220;I&#8217;m taking backend-auth-123.&#8221;</p><p>The second agent did the same moments later, picked a different ticket&#8212;something marked frontend&#8212;and claimed it.</p><p>The third agent grabbed documentation work.</p><p>No conflicts. No duplication. The coordination layer worked exactly as designed.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1620287341401-e2945a4b9daa?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw4fHxlbWFpbHxlbnwwfHx8fDE3NzA5NDAxNTJ8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1620287341401-e2945a4b9daa?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw4fHxlbWFpbHxlbnwwfHx8fDE3NzA5NDAxNTJ8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1620287341401-e2945a4b9daa?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw4fHxlbWFpbHxlbnwwfHx8fDE3NzA5NDAxNTJ8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1620287341401-e2945a4b9daa?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw4fHxlbWFpbHxlbnwwfHx8fDE3NzA5NDAxNTJ8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1620287341401-e2945a4b9daa?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw4fHxlbWFpbHxlbnwwfHx8fDE3NzA5NDAxNTJ8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1620287341401-e2945a4b9daa?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw4fHxlbWFpbHxlbnwwfHx8fDE3NzA5NDAxNTJ8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="5803" height="3871" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1620287341401-e2945a4b9daa?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw4fHxlbWFpbHxlbnwwfHx8fDE3NzA5NDAxNTJ8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:3871,&quot;width&quot;:5803,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;smartphone screen showing facebook application&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="smartphone screen showing facebook application" title="smartphone screen showing facebook application" srcset="https://images.unsplash.com/photo-1620287341401-e2945a4b9daa?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw4fHxlbWFpbHxlbnwwfHx8fDE3NzA5NDAxNTJ8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1620287341401-e2945a4b9daa?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw4fHxlbWFpbHxlbnwwfHx8fDE3NzA5NDAxNTJ8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1620287341401-e2945a4b9daa?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw4fHxlbWFpbHxlbnwwfHx8fDE3NzA5NDAxNTJ8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1620287341401-e2945a4b9daa?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw4fHxlbWFpbHxlbnwwfHx8fDE3NzA5NDAxNTJ8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@justin_morgan">Justin Morgan</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p><strong>Speed</strong></p><p>Four hours. That&#8217;s how long it took three agents to empty my backlog.</p><p>These were real tasks&#8212;API endpoint implementation, database schema updates, frontend component work. Not trivial tickets. The kind of work that would&#8217;ve taken my old team a full sprint.</p><p><strong>The NTM Cockpit</strong></p><p>The fact that I could send messages to all agents from a central cockpit was fantastic. No jumping between agent sessions. One command from NTM, broadcast to the fleet.</p><p>This changed everything about coordination overhead.</p><p><strong>The Forgetting Problem</strong></p><p>Agents kept forgetting to update Agent Mail. They&#8217;d pick a ticket, start work, and go silent. I&#8217;d send a broadcast from NTM: &#8220;Hey, update others on email.&#8221;</p><p>They&#8217;d acknowledge, send an update, then forget again ten minutes later.</p><p>I&#8217;d follow up: &#8220;Hey, did you do a review before committing?&#8221;</p><p>It felt strange at first&#8212;talking to agents like they were humans. Jeffrey mentions this too. The language is conversational, not command-line syntax. &#8220;Update others&#8221; not &#8220;execute status_update protocol.&#8221;</p><p>After the third reminder, I thought: &#8220;I want to automate this too.&#8221;</p><p>That realization hit hard. I&#8217;d gone from amazed that agents could coordinate at all to impatient that they needed reminders. The baseline shifted fast.</p><h3>C. The Emotional Shift</h3><p><strong>From Fascination to Impatience</strong></p><p>Week one: &#8220;This is incredible&#8212;agents are talking to each other!&#8221;</p><p>Week two: &#8220;Why do I have to keep reminding them to send status updates?&#8221;</p><p>The trust/action boundary moved quickly. Tasks I was carefully monitoring in the first session became background work by the third session.</p><p><strong>Different, Not Better or Worse</strong></p><p>Managing agent fleets isn&#8217;t like managing human teams. Humans remember context, anticipate problems, and communicate proactively. Agents execute what you specify and forget protocols unless reminded.</p><p>It&#8217;s not better or worse. It&#8217;s different. You trade human intuition for perfect execution of specification. The skill is knowing what to specify and how much supervision the work requires.</p><p><strong>Claude Agent Teams: The Pattern Recognition</strong></p><p>A number of these patterns have been adopted by Claude Agent Teams. The Delegate pattern&#8212;where the starting Claude can send messages to others&#8212;is like NTM. Agents exchanging messages mirrors Agent Mail, though you can&#8217;t see what they&#8217;re saying in human-parseable form. Just verbose logs in agent-specific directories. The internal task distribution resembles Beads, except you have no control over it.</p><p>Jeffrey is on the leading edge here. More of his patterns will be picked up by Claude and other agent systems. The Agentic Flywheel is showing what coordinated agent work looks like at scale.</p><h2>VII. What Works, What Doesn&#8217;t</h2><p>After running the flywheel for two weeks, here&#8217;s what I&#8217;ve learned about what actually delivers and where the limitations are.</p><h3>What Genuinely Works</h3><p><strong>Parallelizable Tasks Execute Simultaneously</strong></p><p>When tickets are properly decomposed, agents work in parallel without stepping on each other. Three agents clearing a backlog in four hours isn&#8217;t theoretical&#8212;it&#8217;s what happened. The coordination infrastructure makes this possible.</p><p><strong>Agent Mail Prevents File Conflicts</strong></p><p>When agents remember to use it, the file reservation system works perfectly. I never hit a merge conflict during execution. The triple-layer protection&#8212;Beads structure, file locks, Agent Mail messaging&#8212;creates enough redundancy that collisions don&#8217;t happen.</p><p><strong>Beads Structure Keeps Agents Focused</strong></p><p>The robot-triage output gives agents clear direction. They don&#8217;t wander or get distracted. They pick a ticket, execute it, move to the next one. The git-native storage means they can see dependencies and respect execution order.</p><p><strong>Multi-Model Access Ready</strong></p><p>Though I haven&#8217;t tried Codex or Gemini yet, the infrastructure supports heterogeneous fleets. You can route different work types to different models. The plumbing is there when I&#8217;m ready to use it.</p><h3>Current Limitations</h3><p><strong>Heavy Vibe-PM Investment Upfront</strong></p><p>You cannot skip the specification work. The multi-shot iteration across models, the architecture refinement, the ticket decomposition&#8212;all of that has to happen before you spawn agents. There&#8217;s no shortcut here. If you try to hand agents loose specs, they&#8217;ll execute them loosely. Although, I think this is feature not a bug.</p><p><strong>Agents Forget Coordination Protocols</strong></p><p>The forgetting problem is real. Agents need reminders to update Agent Mail, to communicate status, to follow patterns you&#8217;ve established. This isn&#8217;t a one-time training issue. It&#8217;s ongoing supervision.</p><p><strong>Beads Sync Challenges Across Tool Versions</strong></p><p>The beads versus beads_rust compatibility issue cost me time. If you&#8217;re mixing tools from the ecosystem, expect friction. Going fully opinionated&#8212;beads_rust and bv&#8212;is cleaner, but you lose some flexibility.</p><p><strong>Crawl, Walk, Run</strong></p><p>I believe fire-and-forget is achievable if your design and tickets are solid. I&#8217;ve just crawled&#8212;learning the system, staying hands-on. Next is walking&#8212;reducing supervision as I get better at specification. Eventually running&#8212;full permissions off, agents execute autonomously.</p><p>The constraint right now is my skill, not the system. I need more tests built in so the system doesn&#8217;t regress without supervision. I&#8217;ve already identified a smaller project to try hands-off execution once I have my katas down.</p><p><strong>Team Scale: Unknown</strong></p><p>I don&#8217;t know how this scales across a team yet. My hypothesis: entire subsystems get handed to different developers with no overlap. Each developer runs their own agent fleet on their domain. Coordination happens at the subsystem boundary, not the ticket level.</p><p>Making agent fleets work for teams is a skill we&#8217;ll learn as base tooling gets better. Right now, the patterns are optimized for solo operators or small teams with clear domain separation.</p><div><hr></div><h2>VIII. Positioning: Where This Fits in the AI Dev Landscape</h2><p>After running agent fleets for a few weeks, I have a clearer sense of where this approach fits in the broader landscape of AI development tooling.</p><p>The AI development tooling landscape has a spectrum. Understanding where the Agentic Flywheel sits helps clarify when to use it&#8212;and when something else makes more sense.</p><h3>The Scale Spectrum</h3><p><strong>Solo Claude Code</strong> &#8594; Single agent, iterative collaboration, you&#8217;re in the loop for every decision. Good for exploratory work, learning a new domain, or tasks where the specification emerges through conversation.</p><p><strong>Agentic Flywheel</strong> &#8594; Coordinated fleet of 3-20 agents, heavy upfront specification, orchestrated execution. Good for projects with clear architecture where parallelization delivers velocity.</p><p><strong>GasTown Full Automation</strong> &#8594; Autonomous development with minimal human intervention. The vision of &#8220;describe what you want, walk away, come back to working software.&#8221; Still early, thriving community, but not production-ready for most use cases yet.</p><h3>Why I&#8217;m Staying at Flywheel Scale</h3><p>The trust gradient matters. I&#8217;m comfortable delegating implementation to agents when I&#8217;ve done the architecture work. I&#8217;m not comfortable delegating architecture decisions&#8212;yet. I actually want to know what the system is and what it does so I know where to go fix things. </p><p>At Flywheel scale, I maintain control through specification. I decide what gets built, how components integrate, what the boundaries are. Agents execute within those constraints. The coordination harness gives me visibility and intervention points.</p><p>GasTown&#8217;s vision is compelling, but I&#8217;m not ready to trust autonomous architecture decisions on production systems. Maybe that changes as the tooling matures and I see more case studies. Right now, Flywheel hits the right balance between velocity and control.</p><h3>My Scaling Path</h3><p>I ran three agents. My next goal is graduating to 5-7, then to 10 agents.</p><p>Running 10-20 agents will come at a cost that&#8217;s prohibitive for individual developers&#8212;though still cheaper than hiring a team of engineers. The API costs add up fast when you&#8217;re running multiple Claude sessions simultaneously.</p><p><strong>Where Flywheel Will Shine: Open Source Models</strong></p><p>This is imminent. When OSS models reach Claude-level quality, the economics change completely. I can decide granularly which agents run on which models, actively managing costs. Frontend work on a cheaper model, critical backend logic on Claude, documentation on the cheapest option that works.</p><p>The Flywheel infrastructure supports this already. It&#8217;s model-agnostic by design.</p><p><strong>The Supervisor Pattern</strong></p><p>Another pattern I&#8217;m considering: one supervisor agent that reviews outputs from other agents. This gets me out of the loop without going full fire-and-forget. The supervisor checks quality, flags issues, decides when work is ready to merge.</p><p>This is the bridge between hands-on orchestration and autonomous execution.</p><h3>Prediction: This Happens Fast</h3><p>My bet is all of this happens within 12 months, not 18.</p><p>Claude just released Agent Teams. I&#8217;m going to blog about my first experience with it next, but the pattern recognition is clear&#8212;delegation, messaging, task distribution. The same concepts the Flywheel has been proving out.</p><p>When commercial AI platforms adopt these patterns and OSS models reach quality parity, agent fleet development becomes standard tooling for small teams. Solo founders get sprint-level velocity. Small teams multiply their output without hiring.</p><p>The constraint shifts from &#8220;how many engineers can we afford?&#8221; to &#8220;how well can we specify what needs to be built?&#8221;</p><p>Organizations will need people who can do Vibe-PM work&#8212;think in systems, decompose cleanly, specify precisely. That&#8217;s a different skill than traditional product management, but it&#8217;s learnable.</p><p>The Agentic Flywheel shows what that future looks like.</p><div><hr></div><h2>References</h2><ul><li><p>Agentic Flywheel System: https://agent-flywheel.com/</p></li><li><p>Steve Yegge&#8217;s GasTown: https://steve-yegge.medium.com/welcome-to-gas-town-4f25ee16dd04</p></li><li><p>Beads (Steve Yegge): https://github.com/steveyegge/beads</p></li><li><p>Beads Community Tools: https://github.com/steveyegge/beads/blob/main/docs/COMMUNITY_TOOLS.md</p></li></ul>]]></content:encoded></item><item><title><![CDATA[Beads: Memory and Execution Smarts for Agent-Native Coding]]></title><description><![CDATA[Why your AI coding agent keeps forgetting everything&#8212;and how to fix it]]></description><link>https://newsletter.harpreet.io/p/beads-agentic-coding</link><guid isPermaLink="false">https://newsletter.harpreet.io/p/beads-agentic-coding</guid><dc:creator><![CDATA[Harpreet Singh]]></dc:creator><pubDate>Wed, 28 Jan 2026 19:57:26 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1634867458242-5ce026e688aa?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyNnx8YmVhZHN8ZW58MHx8fHwxNzY5NjI5NTU3fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Context rot is the defining problem of AI-assisted coding.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1634867458242-5ce026e688aa?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyNnx8YmVhZHN8ZW58MHx8fHwxNzY5NjI5NTU3fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1634867458242-5ce026e688aa?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyNnx8YmVhZHN8ZW58MHx8fHwxNzY5NjI5NTU3fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1634867458242-5ce026e688aa?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyNnx8YmVhZHN8ZW58MHx8fHwxNzY5NjI5NTU3fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1634867458242-5ce026e688aa?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyNnx8YmVhZHN8ZW58MHx8fHwxNzY5NjI5NTU3fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1634867458242-5ce026e688aa?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyNnx8YmVhZHN8ZW58MHx8fHwxNzY5NjI5NTU3fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1634867458242-5ce026e688aa?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyNnx8YmVhZHN8ZW58MHx8fHwxNzY5NjI5NTU3fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="4032" height="2688" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1634867458242-5ce026e688aa?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyNnx8YmVhZHN8ZW58MHx8fHwxNzY5NjI5NTU3fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2688,&quot;width&quot;:4032,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;a close up of a beaded necklace on a table&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="a close up of a beaded necklace on a table" title="a close up of a beaded necklace on a table" srcset="https://images.unsplash.com/photo-1634867458242-5ce026e688aa?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyNnx8YmVhZHN8ZW58MHx8fHwxNzY5NjI5NTU3fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1634867458242-5ce026e688aa?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyNnx8YmVhZHN8ZW58MHx8fHwxNzY5NjI5NTU3fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1634867458242-5ce026e688aa?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyNnx8YmVhZHN8ZW58MHx8fHwxNzY5NjI5NTU3fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1634867458242-5ce026e688aa?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyNnx8YmVhZHN8ZW58MHx8fHwxNzY5NjI5NTU3fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@alexeydemidov">Alexey Demidov</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p>Your agent loses state. Forgets what&#8217;s done. Hallucinates progress. You compact the context, and suddenly it&#8217;s re-litigating decisions you made an hour ago.</p><p>Markdown plans feel lightweight, but they&#8217;re part of the problem. Agents can&#8217;t query them. No dependency tracking. No structured state to reason about. You end up being the memory layer&#8212;copying context back and forth, reminding your agent what it already knew.</p><p>Beads solves this.</p><p>It&#8217;s a git-native issue tracker built for agents. SQLite database, JSONL format, version controlled alongside your code. Your agent can query it, update it, track dependencies, and pick up exactly where it left off.</p><p>Claude&#8217;s new Tasks feature is inspired by Beads. When Anthropic builds a feature based on an open-source CLI tool, pay attention. This pattern is becoming infrastructure.</p><div><hr></div><p><strong>What goes into Beads (and what doesn&#8217;t)</strong></p><p>Planning happens outside Beads. Execution happens inside.</p><p>I use PLAN.md or PRD-for-sprint.md to define what we&#8217;re trying to accomplish. Then I ask Opus to decompose it into epics, create tasks, figure out dependencies&#8212;all captured in Beads. The instruction is that each epic and ticket must be self-sufficient to be picked up cold.</p><p>Human plans the what. AI decomposes the how.</p><p><strong>Sprint</strong> &#8212; Weekly milestone. I define the goal in markdown with Opus. This lives in PLAN.md, not Beads.</p><p><strong>Epic</strong> &#8212; High-level items from sprint planning. 1-2 epics per sprint ticket. Epics go into Beads.</p><p><strong>Task</strong> &#8212; Granular work items. AI handles the breakdown&#8212;subtasks, dependencies, sequencing. Tasks go into Beads.</p><p>Between the epic (big picture) and the task (details), Claude has all the information required to pick up any ticket cold.</p><p>Tight scope in, deep decomposition out.</p><p>I don&#8217;t create subtasks manually. I tell Claude to analyze the epic, break it down, identify dependencies, and file the tickets. I review what it created, adjust if needed, then let it execute.</p><div><hr></div><p><strong>Session discipline</strong></p><p>I started by churning through epics in one session. Felt productive until context overflow hit&#8212;Claude compacting, and then I&#8217;d have to ask it to reload state from the ticket.</p><p>Then I realized: because tickets are granular and have all the context required, I don&#8217;t need to be chained to the Claude session. I was holding onto sessions afraid of losing important context. But the context isn&#8217;t in the session&#8212;it&#8217;s in Beads.</p><p>That was liberating.</p><p>Now I open Claude, ask it to pick the next task, and go. Shorter sessions. More productive. No context anxiety. One task, execute, restart.</p><p><strong>Starting a session:</strong></p><p><code>bd prime</code> is in my CLAUDE.md. It loads the workflow rules, the session close protocol, the available commands. Hooks auto-call this in Claude Code when .beads/ is detected.</p><p><strong>Ending a session:</strong></p><p>I just tell Claude &#8220;land the plane.&#8221; The closing discipline is so good that Steve Yegge named the pattern after it. Claude automagically runs through everything:</p><pre><code><code>[ ] git status &#8212; check what changed
[ ] git add &lt;files&gt; &#8212; stage code changes
[ ] bd sync &#8212; commit beads changes
[ ] git commit -m "..." &#8212; commit code
[ ] bd sync &#8212; commit any new beads changes
[ ] git push &#8212; push to remote</code></code></pre><p>Work isn&#8217;t done until it&#8217;s pushed. Your agent finishes current work before wandering to the next thing.</p><div><hr></div><p><strong>Patterns that work</strong></p><p>These emerged from weeks of daily use. None are obvious until you&#8217;ve lost context the hard way.</p><p><strong>File as you go.</strong> When Claude surfaces something during implementation&#8212;a bug, a refactor needed, a question for later&#8212;file it immediately. <code>bd create</code> captures the context fresh, in the moment. Don&#8217;t carry it in your head. Don&#8217;t trust yourself to remember. The issue exists, the context is preserved, you pick it up in a future session.</p><p><strong>Land the plane.</strong> Agents love to wander. They&#8217;ll start three things and finish none. The land-the-plane pattern keeps them focused: finish current work before starting new work.</p><p><code>bd ready</code><strong> for what&#8217;s next.</strong> This shows issues with no blockers&#8212;ready to work. Use <code>bd blocked</code> to see what&#8217;s stuck in dependency chains. I&#8217;ll admit I&#8217;m still often picking tasks manually because my dependency graphs aren&#8217;t mature yet. But as I get better at upfront decomposition, <code>bd ready</code> becomes the natural entry point.</p><p><strong>Kanban for the big picture.</strong> Beads is CLI-first, but I run a Kanban UI alongside it. I watch as Claude updates tickets in real-time&#8212;what&#8217;s moving, what&#8217;s stuck, what just closed. Big picture visibility without micromanaging.</p><p>One thing I&#8217;ve learned: I don&#8217;t actually know all the <code>bd</code> commands. Claude does. I just tell it what I want&#8212;create a ticket, set dependencies, close these three issues. The CLI is abstracted away. That&#8217;s the point.</p><div><hr></div><p><strong>What I had to teach my agents</strong></p><p>Beads is agent-native, but agents still need guardrails.  </p><p><strong>CLI discipline.</strong> Claude sometimes forgets to use <code>bd</code> and tries to directly read or write <code>.beads/issues.jsonl</code>. It also confuses <code>bd</code> with <code>beads</code>. Both break things. Add explicit instructions and examples to CLAUDE.md:</p><pre><code><code>Always use `bd` CLI commands &#8212; NEVER directly read or write .beads/issues.jsonl</code></code></pre><pre><code><code>bd list                        # List all issues
bd show &lt;issue-id&gt;             # Show details
bd update &lt;id&gt; --status in_progress
bd close &lt;id&gt;
bd comments add &lt;id&gt; "message"</code></code></pre><p><strong>Ticket hygiene.</strong> Claude is eager. It wants to chomp through tasks and move on. It&#8217;ll come back and tell you everything is done&#8212;and often it&#8217;s wrong. I explicitly tell it in CLAUDE.md to update tickets with status and learnings as it goes. This keeps it on track and ensures context isn&#8217;t lost. The ticket becomes the record of what actually happened, not what Claude thinks happened.</p><p><strong>Sync hygiene.</strong> Without <code>bd sync flush</code>, the database can have stale state. Run it before commits. Build it into the session close protocol.</p><p>These feel like small things, but they compound. An agent that follows CLI discipline, updates tickets, and syncs properly is an agent that maintains accurate state across sessions. That&#8217;s the whole game.</p><div><hr></div><p><strong>The ecosystem forming</strong></p><p>Beads is lightweight by design&#8212;a CLI and a git-backed database. But an ecosystem is growing around it:</p><ul><li><p>Kanban UIs for visualization</p></li><li><p>Hooks that auto-sync when .beads/ is detected</p></li><li><p>Community patterns like epic decomposition and land-the-plane</p></li></ul><p>This is early infrastructure. The primitives are right. The UX will mature. The patterns will standardize.</p><p>Context rot was the problem. Beads is the memory layer that solves it. The rest is discipline.</p><p>Credit to <a href="https://www.linkedin.com/in/steveyegge/">Steve Yegge</a> for creating Beads and the patterns that make it work. Repo here: https://github.com/steveyegge/beads</p><div><hr></div><p>#AgenticCoding #DevTools #Beads</p>]]></content:encoded></item><item><title><![CDATA[An "Everything Just Changed" Moment in AI Coding]]></title><description><![CDATA[Moving from Single Horse Power Coding to a 400HP Car]]></description><link>https://newsletter.harpreet.io/p/an-everything-just-changed-moment</link><guid isPermaLink="false">https://newsletter.harpreet.io/p/an-everything-just-changed-moment</guid><dc:creator><![CDATA[Harpreet Singh]]></dc:creator><pubDate>Fri, 09 Jan 2026 18:40:30 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!xn9S!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38b5c7ab-02e9-4adf-974c-bae97aef9ada_1024x608.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1></h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xn9S!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38b5c7ab-02e9-4adf-974c-bae97aef9ada_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xn9S!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38b5c7ab-02e9-4adf-974c-bae97aef9ada_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!xn9S!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38b5c7ab-02e9-4adf-974c-bae97aef9ada_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!xn9S!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38b5c7ab-02e9-4adf-974c-bae97aef9ada_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!xn9S!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38b5c7ab-02e9-4adf-974c-bae97aef9ada_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xn9S!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38b5c7ab-02e9-4adf-974c-bae97aef9ada_1024x608.png" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/38b5c7ab-02e9-4adf-974c-bae97aef9ada_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xn9S!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38b5c7ab-02e9-4adf-974c-bae97aef9ada_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!xn9S!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38b5c7ab-02e9-4adf-974c-bae97aef9ada_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!xn9S!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38b5c7ab-02e9-4adf-974c-bae97aef9ada_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!xn9S!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38b5c7ab-02e9-4adf-974c-bae97aef9ada_1024x608.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A horseless buggy car from early automotive history with a human on top, standing next a modern muscle car</figcaption></figure></div><h1>Five Paradigm Shifts in 25 Years of Building Software</h1><p>I&#8217;ve had five &#8220;everything just changed&#8221; moments in my career. Not incremental improvements. Moments where the ground shifted and what was possible afterward looked nothing like what came before.</p><h2>1. Java: Write Once, Run Anywhere Wasn&#8217;t Marketing</h2><p>The first was Java in grad school. I was a confident C++ developer. Then I turned in an assignment that worked perfectly on my machine and completely broke on the professor&#8217;s.</p><p>Next assignment, I tried Java on a lark. Sun&#8217;s &#8220;write once, run anywhere&#8221; promise wasn&#8217;t marketing copy&#8212;it was real. The friction I&#8217;d accepted as normal just... disappeared.</p><p>I spent the next decade at Sun building Java EE. That one broken assignment changed the trajectory of my career.</p><h2>2. Jenkins: Software Delivery Could Be Automated</h2><p>The second was discovering Jenkins&#8212;built by my colleague Kohsuke Kawaguchi at Sun. At the time, software delivery was manual, painful, and treated as someone else&#8217;s problem after you wrote the code.</p><p>Jenkins made a simple proposition: software delivery could be as automated as software building.</p><p>That insight led to 15 years of working together. It spawned the entire DevOps movement. Billions of builds later, the friction we accepted as normal had vanished again.</p><h2>3. Cloud: Infrastructure as Someone Else&#8217;s Problem</h2><p>The third was the advent of cloud computing. Suddenly the entire infrastructure layer&#8212;servers, networking, scaling&#8212;became someone else&#8217;s problem.</p><p>This led me to CloudBees PaaS. We were building Heroku for Java, or in more modern terminology, something like Lovable&#8212;but a decade too early. The market wasn&#8217;t ready. But the insight was right: developers shouldn&#8217;t manage infrastructure.</p><p>More importantly, cloud changed how I thought about building products. Everything I built afterward was SaaS-first. The mental model shifted permanently.</p><h2>4. AI/ML: The Signal in the Noise</h2><p>The fourth was 2018. Something clicked. The convergence of cloud maturity, DevOps tooling, and AI/ML capabilities felt like it was reaching a tipping point.</p><p>That conviction led to Launchable&#8212;an AI/ML company applying machine learning to software testing. We were probably a couple of years early there too. The pattern recognition was right, but the market needed more time to catch up.</p><p>Being early is its own kind of lesson. You see the shift coming, but timing matters as much as vision.</p><h2>5. Claude Code: Something Shifted Last Week</h2><p>The fifth happened last week with Claude Code.</p><p>I&#8217;ve played with AI coding tools since GPT-3. Copilot was useful&#8212;like a smart autocomplete. Cursor was better&#8212;more context-aware, more capable. But neither felt like a paradigm shift. They were incremental.</p><p>Then I started using Claude Code&#8217;s multi-agent workflows. I haven&#8217;t opened an IDE in days. Not because I&#8217;m lazy. Because I&#8217;m building faster than I ever have.</p><h2>The 400 Horsepower Problem</h2><p>My friend Sameer Karmarkar, CTO CloudHedge put it well: we learned to code and came out with a single horsepower engine. Copilot gave us maybe 2-3x. But with agentic workflows, it feels like every developer is about to have a 400 horsepower engine.</p><p>The question isn&#8217;t whether you can code. It&#8217;s whether you can drive.</p><p>This is where it gets interesting&#8212;and where most of the current discourse misses the point.</p><p>I&#8217;ve heard observations like &#8220;AI assistants will just expose your process inefficiencies&#8221; and &#8220;you need to clean up your processes first.&#8221; That&#8217;s not wrong, but it&#8217;s missing the bigger picture.</p><p>Here&#8217;s my contrarian take: a large number of these processes are going to be rewritten entirely. We&#8217;re not going to clean up our existing workflows and bolt on AI. We&#8217;re going to discover that many of the workflows existed because of constraints that no longer apply.</p><p>Think about it. We have code review processes designed for human attention spans. Deployment pipelines built around the assumption that builds are expensive. Testing strategies that assume developers won&#8217;t write enough tests because it&#8217;s tedious.</p><p>What happens when the cost of generating code drops 10x? When an agent can write and run 500 tests in the time it takes you to write one? When the bottleneck isn&#8217;t writing code but deciding what to build?</p><p>The processes we&#8217;ll need are fundamentally different.</p><h2>From Driving to Fleet Management</h2><p>Here&#8217;s where I think this is headed.</p><p>Right now, we&#8217;re in the &#8220;horseless carriage&#8221; phase. If you look at early automobiles, they literally looked like horse carriages with engines bolted on. The driver sat up front, in the same position as someone holding reins. It took decades for car design to reflect what cars actually were&#8212;not horses.</p><p>We&#8217;re doing the same thing with AI coding tools. We&#8217;re sitting at our IDEs, prompting one agent at a time, reviewing its output like we&#8217;d review a junior developer&#8217;s pull request. We&#8217;ve bolted a 400HP engine onto our horse carriage.</p><p>The next evolution is fleet management. Not one agent you supervise, but multiple agents you orchestrate. The mental model shifts from &#8220;I&#8217;m coding with AI assistance&#8221; to &#8220;I&#8217;m directing a team of AI developers.&#8221;</p><p>This changes everything&#8212;what skills matter, how we organize work, what &#8220;senior&#8221; even means.</p><h2>Where the Hard Problems Are</h2><p>I don&#8217;t have this figured out. Nobody does. But from experimenting with multi-agent workflows, here&#8217;s where I see the friction:</p><p><strong>Governance.</strong> When multiple agents collaborate, who&#8217;s responsible for the output? How do you audit decisions? The compliance and security implications are massive for enterprises.</p><p><strong>Merge conflicts.</strong> Not just Git conflicts&#8212;conceptual conflicts. Agent A builds a feature assuming one architecture. Agent B builds another feature assuming a different architecture. Human judgment is still required to resolve the contradictions.</p><p><strong>Abstraction layers.</strong> We need new primitives. Just like we went from assembly to C to Python, we need new abstractions for orchestrating agent work. The current tools feel like writing shell scripts to manage processes&#8212;it works, but it&#8217;s not the right level of abstraction.</p><p>I&#8217;m early in exploring this. But it feels like the same kind of &#8220;something is shifting&#8221; sensation I had with Java, Jenkins, cloud, and Launchable.</p><h2>The Compound Effect</h2><p>Each shift made the next one possible:</p><p>Java made Jenkins possible&#8212;you needed portable code before you could automate delivery.</p><p>Jenkins made cloud-native development possible&#8212;you needed automated pipelines before you could deploy continuously to elastic infrastructure.</p><p>Cloud made AI/ML accessible&#8212;you needed scalable compute before you could train models economically.</p><p>And now AI-native development is emerging from all of it.</p><p>I&#8217;ve been experimenting with new workflows&#8212;multi-agent orchestration, tools like Beads, new patterns for how software gets built. The compound effect of these five shifts is just starting to become visible.</p><p>The question for anyone building software: are you still driving a horse carriage with an engine bolted on? Or are you learning to manage a fleet?</p>]]></content:encoded></item><item><title><![CDATA[From Newsletter Chaos to Thematic Clarity]]></title><description><![CDATA[My N8N Experiment]]></description><link>https://newsletter.harpreet.io/p/from-newsletter-chaos-to-thematic</link><guid isPermaLink="false">https://newsletter.harpreet.io/p/from-newsletter-chaos-to-thematic</guid><dc:creator><![CDATA[Harpreet Singh]]></dc:creator><pubDate>Tue, 07 Oct 2025 21:52:24 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1495427513693-3f40da04b3fd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2fHxkcm93bmluZ3xlbnwwfHx8fDE3NTk4NDgyOTN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1495427513693-3f40da04b3fd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2fHxkcm93bmluZ3xlbnwwfHx8fDE3NTk4NDgyOTN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1495427513693-3f40da04b3fd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2fHxkcm93bmluZ3xlbnwwfHx8fDE3NTk4NDgyOTN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1495427513693-3f40da04b3fd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2fHxkcm93bmluZ3xlbnwwfHx8fDE3NTk4NDgyOTN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1495427513693-3f40da04b3fd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2fHxkcm93bmluZ3xlbnwwfHx8fDE3NTk4NDgyOTN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1495427513693-3f40da04b3fd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2fHxkcm93bmluZ3xlbnwwfHx8fDE3NTk4NDgyOTN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1495427513693-3f40da04b3fd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2fHxkcm93bmluZ3xlbnwwfHx8fDE3NTk4NDgyOTN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="2391" height="1593" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1495427513693-3f40da04b3fd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2fHxkcm93bmluZ3xlbnwwfHx8fDE3NTk4NDgyOTN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1593,&quot;width&quot;:2391,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;photo of person reach out above the water&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="photo of person reach out above the water" title="photo of person reach out above the water" srcset="https://images.unsplash.com/photo-1495427513693-3f40da04b3fd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2fHxkcm93bmluZ3xlbnwwfHx8fDE3NTk4NDgyOTN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1495427513693-3f40da04b3fd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2fHxkcm93bmluZ3xlbnwwfHx8fDE3NTk4NDgyOTN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1495427513693-3f40da04b3fd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2fHxkcm93bmluZ3xlbnwwfHx8fDE3NTk4NDgyOTN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1495427513693-3f40da04b3fd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2fHxkcm93bmluZ3xlbnwwfHx8fDE3NTk4NDgyOTN8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@nikkotations">nikko macaspac</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><h2>The Problem: Drowning in Smart People&#8217;s Thoughts</h2><p>I have a newsletter problem. Not the &#8220;I need to unsubscribe&#8221; kind, but the opposite: I&#8217;m subscribed to brilliant people sharing valuable insights, and I <em>can&#8217;t keep up</em>.</p><p>The emails pile up. Dharmesh Shah sending updates about his agentic AI experiments at HubSpot. Industry leaders dropping wisdom bombs about product strategy, market trends, and technical deep-dives. Each one valuable. Each one sitting unread in my inbox, mocking me.</p><p>The issue isn&#8217;t just volume, it&#8217;s the cognitive load. Reading these newsletters one-by-one means constant context switching. I&#8217;m jumping from AI agents to SaaS pricing to developer tools to marketing strategy. </p><p>My brain feels like a browser with 47 tabs open, each demanding attention.</p><p>I tried the obvious solution: summarize each email. But that still doesn&#8217;t solve the context switching problem, and more importantly, I was missing something bigger. When Dharmesh sends a couple of emails per week about his AI journey, I don&#8217;t just want bite-sized summaries. I want to step back and understand: <em>What is he really thinking about? What themes is he exploring? Where is his attention focused?</em></p><p>That&#8217;s when I realized: I don&#8217;t need to see individual trees. I need to see the forest.</p><h2>The Vision: NotebookLM as My Second Brain</h2><p>Enter NotebookLM. If you haven&#8217;t played with it, it&#8217;s Google&#8217;s AI-powered research assistant that lets you upload documents and have deep, contextual conversations about them. I&#8217;ve fallen in love with it for exactly this use case: throw in related content, and it helps me synthesize themes and insights that span multiple sources.</p><p>The ideal workflow became crystal clear in my head:</p><ol><li><p>Extract all emails from a specific sender (say, Dharmesh)</p></li><li><p>Consolidate them into a single document</p></li><li><p>Feed that into NotebookLM</p></li><li><p>Ask: &#8220;What are the recurring themes? What&#8217;s the evolution of thinking here?&#8221;</p></li></ol><p>Simple, right? Except there&#8217;s no integration between Gmail and NotebookLM. Which seems like an <em>obvious</em> oversight, but here we are.</p><h2>Why N8N? (Spoiler: I Have Jenkins PTSD)</h2><p>I&#8217;ve been in DevOps for 15 years. Jenkins, CI/CD pipelines, automation workflows&#8212;it&#8217;s been my lifeline. When I see a repetitive manual process, something in my brain just screams &#8220;AUTOMATE THIS.&#8221;</p><p>Recently, I&#8217;ve been exploring the agentic AI tools landscape, and N8N kept coming up. YouTube tutorials, blog posts, Twitter threads&#8212;everyone seemed to be building with it. The pitch was compelling: a visual workflow builder with integrations to <em>everything</em>. Gmail, Google Docs, Sheets, Slack, you name it.</p><p>I thought: &#8220;N8N is a workflow processor with plug-and-play integrations. Building this pipeline should be <em>very</em> easy.&#8221;</p><p>So I dove in.</p><h2>The Honeymoon Phase: First Impressions</h2><p>I&#8217;ll give N8N credit: the first impression was genuinely impressive.</p><p>I&#8217;m using N8N Cloud, and the low-code visual editor felt intuitive. Dragging nodes, connecting them with lines, searching for integrations&#8212;as long as you have the data model in your head, it&#8217;s straightforward. Certainly less work than configuring Jenkins pipelines or wrestling with YAML files.</p><p>The node library is extensive. Gmail? Check. Google Docs? Check. Data transformations? Check. It felt like Lego blocks for workflows. Snap pieces together, configure a few settings, hit execute, and watch the magic happen.</p><p>Unfortunately, that initial impression was the peak. It was a gradual downhill from there.</p><h2>The Build: Two Iterations and Many Lessons</h2><p>Let me walk you through what I actually built.</p><h3>Iteration 1: The HTML Export Dream</h3><p>My first workflow looked like this:</p><p><strong>Form submission trigger &#8594; Get many messages &#8594; Edit Fields &#8594; Get a message &#8594; Edit Fields &#8594; Convert to File</strong></p><p>The idea: trigger the workflow with an email address, fetch all their emails, extract the content, convert it to HTML, and dump it somewhere I could grab for NotebookLM.</p><p>Here&#8217;s where I hit my first gotcha: <strong>&#8220;Get many messages&#8221; is a misnomer.</strong> It doesn&#8217;t actually get you many messages with full content. It gives you a <em>table</em> of message metadata&#8212;IDs, snippets, basic info&#8212;but not the actual email bodies. This is presumably to prevent you from downloading gigabytes of data accidentally, but the naming is misleading.</p><p>So I had to add another node: &#8220;Get a message.&#8221; This takes each message ID from the first step and fetches the full content. The good news? N8N is smart enough to automatically iterate over the table, so I didn&#8217;t need to explicitly create a loop. That was actually slick.</p><p>Then came the &#8220;Edit Fields&#8221; nodes. Why two of them? Because the Gmail API returns <em>everything</em>: headers, labels, thread IDs, metadata soup. I had to explicitly extract just what I wanted: subject, date, and the actual email text.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!N3yr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93535ccc-9d19-4b29-83da-f03e3b8b2f27_1581x290.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N3yr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93535ccc-9d19-4b29-83da-f03e3b8b2f27_1581x290.png 424w, https://substackcdn.com/image/fetch/$s_!N3yr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93535ccc-9d19-4b29-83da-f03e3b8b2f27_1581x290.png 848w, https://substackcdn.com/image/fetch/$s_!N3yr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93535ccc-9d19-4b29-83da-f03e3b8b2f27_1581x290.png 1272w, https://substackcdn.com/image/fetch/$s_!N3yr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93535ccc-9d19-4b29-83da-f03e3b8b2f27_1581x290.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N3yr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93535ccc-9d19-4b29-83da-f03e3b8b2f27_1581x290.png" width="1456" height="267" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/93535ccc-9d19-4b29-83da-f03e3b8b2f27_1581x290.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:267,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:81280,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://aientrepreneurship.substack.com/i/175568858?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93535ccc-9d19-4b29-83da-f03e3b8b2f27_1581x290.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!N3yr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93535ccc-9d19-4b29-83da-f03e3b8b2f27_1581x290.png 424w, https://substackcdn.com/image/fetch/$s_!N3yr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93535ccc-9d19-4b29-83da-f03e3b8b2f27_1581x290.png 848w, https://substackcdn.com/image/fetch/$s_!N3yr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93535ccc-9d19-4b29-83da-f03e3b8b2f27_1581x290.png 1272w, https://substackcdn.com/image/fetch/$s_!N3yr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93535ccc-9d19-4b29-83da-f03e3b8b2f27_1581x290.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Workflow 1: The prototype</figcaption></figure></div><p>I tried converting this to HTML and using Postbin (which N8N recommends for testing) to dump the output. Then I&#8217;d copy-paste into NotebookLM. It worked... but felt clunky.</p><h3>Iteration 2: The Google Docs Integration</h3><p>The second iteration was cleaner:</p><p><strong>Form submission trigger &#8594; Create a document &#8594; Get many messages &#8594; Get a message &#8594; Edit Fields &#8594; Update a document</strong></p><p>Instead of exporting files, I&#8217;d create a Google Doc on the fly and append each email to it. Then I could just share the Google Docs link directly with NotebookLM as a source. Much more elegant.</p><p>This worked! Sort of. The output was a chronological dump of emails&#8212;no fancy formatting, no headers, just raw content. I&#8217;d tried to use Markdown in an earlier attempt, but it didn&#8217;t work as expected for reasons I&#8217;ve honestly forgotten.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!s7x0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe462fab5-98f0-40a4-a8d2-890697d2c2b8_1344x263.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!s7x0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe462fab5-98f0-40a4-a8d2-890697d2c2b8_1344x263.png 424w, https://substackcdn.com/image/fetch/$s_!s7x0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe462fab5-98f0-40a4-a8d2-890697d2c2b8_1344x263.png 848w, https://substackcdn.com/image/fetch/$s_!s7x0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe462fab5-98f0-40a4-a8d2-890697d2c2b8_1344x263.png 1272w, https://substackcdn.com/image/fetch/$s_!s7x0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe462fab5-98f0-40a4-a8d2-890697d2c2b8_1344x263.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!s7x0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe462fab5-98f0-40a4-a8d2-890697d2c2b8_1344x263.png" width="1344" height="263" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e462fab5-98f0-40a4-a8d2-890697d2c2b8_1344x263.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:263,&quot;width&quot;:1344,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:32545,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://aientrepreneurship.substack.com/i/175568858?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe462fab5-98f0-40a4-a8d2-890697d2c2b8_1344x263.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!s7x0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe462fab5-98f0-40a4-a8d2-890697d2c2b8_1344x263.png 424w, https://substackcdn.com/image/fetch/$s_!s7x0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe462fab5-98f0-40a4-a8d2-890697d2c2b8_1344x263.png 848w, https://substackcdn.com/image/fetch/$s_!s7x0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe462fab5-98f0-40a4-a8d2-890697d2c2b8_1344x263.png 1272w, https://substackcdn.com/image/fetch/$s_!s7x0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe462fab5-98f0-40a4-a8d2-890697d2c2b8_1344x263.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Workflow 2: The final workflow</figcaption></figure></div><p>But the core loop was functional: fetch emails, filter out noise, write to Google Doc, link to NotebookLM.</p><h2>The Frustrations: Death by a Thousand Paper Cuts</h2><p>Here&#8217;s where we need to talk about the things that drove me slowly insane.</p><h3>The Auto-Save Betrayal</h3><p>The most frustrating moment&#8212;and there were many&#8212;was discovering that my entire Day 1 workflow had disappeared because <strong>N8N doesn&#8217;t auto-save by default.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!H0xa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5460d687-4510-4db4-8624-17506f0ab791_486x196.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!H0xa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5460d687-4510-4db4-8624-17506f0ab791_486x196.png 424w, https://substackcdn.com/image/fetch/$s_!H0xa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5460d687-4510-4db4-8624-17506f0ab791_486x196.png 848w, https://substackcdn.com/image/fetch/$s_!H0xa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5460d687-4510-4db4-8624-17506f0ab791_486x196.png 1272w, https://substackcdn.com/image/fetch/$s_!H0xa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5460d687-4510-4db4-8624-17506f0ab791_486x196.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!H0xa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5460d687-4510-4db4-8624-17506f0ab791_486x196.png" width="486" height="196" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5460d687-4510-4db4-8624-17506f0ab791_486x196.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:196,&quot;width&quot;:486,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:16871,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://aientrepreneurship.substack.com/i/175568858?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5460d687-4510-4db4-8624-17506f0ab791_486x196.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!H0xa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5460d687-4510-4db4-8624-17506f0ab791_486x196.png 424w, https://substackcdn.com/image/fetch/$s_!H0xa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5460d687-4510-4db4-8624-17506f0ab791_486x196.png 848w, https://substackcdn.com/image/fetch/$s_!H0xa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5460d687-4510-4db4-8624-17506f0ab791_486x196.png 1272w, https://substackcdn.com/image/fetch/$s_!H0xa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5460d687-4510-4db4-8624-17506f0ab791_486x196.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Workflow 1: What remains</figcaption></figure></div><p>I could see the execution history. The logs showed my workflow had run successfully. I could see the outputs, the data transformations, everything. But the workflow itself? Gone. Because I&#8217;d closed the tab without manually hitting the save button.</p><p>This happened. Multiple times. My bad!</p><p>For someone coming from modern dev tools where auto-save is table stakes, this felt like using software from 2005. And yes, you can argue &#8220;user error,&#8221; but when the platform shows you execution history proving your workflow existed and worked, not saving it feels like a betrayal.</p><h3>The 75% Problem</h3><p>This became my mental model for N8N: <strong>it gets you 75% of the way there, then leaves you stranded.</strong></p><p>Example: I wanted to use Google Sheets instead of Google Docs initially. N8N has a Google Sheets integration. Great! You can create a sheet, write data to it, update cells&#8212;all the things you&#8217;d expect.</p><p>But here&#8217;s the gotcha: to dynamically update columns in Google Sheets, N8N requires you to explicitly define headers. Makes sense. Except when you <em>dynamically create</em> the sheet through the workflow, there&#8217;s no easy way to add those headers. You&#8217;re stuck in a catch-22: can&#8217;t update without headers, can&#8217;t create headers programmatically.</p><p>I also wanted to move the created sheet into a specific folder. That had its own set of gotchas. What should have been a simple &#8220;create &#8594; organize &#8594; populate&#8221; flow turned into an afternoon of wrestling with the API.</p><h3>Variables, If-Then-Else, and Pro Plans</h3><p>I wanted to store some values across nodes&#8212;basic variable management. Turns out N8N does have variables, but they&#8217;re <em>global</em>. Coming from a programming background, this was shocking. Global state is generally considered an anti-pattern, yet here it was as the default (and on the free tier, it is not an available) option.</p><p>Want proper variable scoping? That&#8217;s a pro plan feature.</p><p>I also wanted basic if-then-else logic. N8N has conditional nodes, but they felt clunkier than they should be. For someone who thinks in code, I kept wanting to just write:</p><p>javascript</p><pre><code><code>if (emailCount &gt; 10) {
  // do this
} else {
  // do that
}</code></code></pre><p>Instead, I&#8217;m dragging nodes and configuring dropdown menus.</p><h3>The Documentation Dance</h3><p>The documentation is extensive, but I found myself constantly Googling for examples because the official docs would explain the <em>what</em> but bare minimum.</p><h2>The Verdict: Is N8N Worth It?</h2><p>After nearly two days of work spread across a couple of sessions, I have a working workflow. And I need to be fair: <strong>it does work.</strong></p><p>I can trigger it, give it an email address, and out comes a Google Doc with all their messages consolidated. I link that to NotebookLM, and suddenly I <em>can</em> ask those high-level thematic questions. &#8220;What are Dharmesh&#8217;s main focus areas this quarter?&#8221; &#8220;How has his thinking on AI agents evolved?&#8221; It delivers exactly the forest-level view I was looking for.</p><p>But would I recommend N8N? The jury is still out.</p><h3>Who It&#8217;s Good For</h3><p>I think N8N optimizes for a specific user: someone who wants to prototype workflows quickly, who doesn&#8217;t have a programming background, and who needs to connect common SaaS tools without writing code. For that person, the visual interface and extensive integration library are genuinely valuable. I don&#8217;t quite know what happens when they run into the issues that I outlined.</p><p>It&#8217;s excellent for mocking up ideas. &#8220;Let me see if this flow makes sense&#8221; can happen in minutes. That&#8217;s powerful.</p><h3>Who Should Look Elsewhere</h3><p>If you&#8217;re a programmer who thinks in code, loops, and proper variable scope? N8N might frustrate you. The visual editor that&#8217;s supposed to make things &#8220;easier&#8221; actually adds friction. You&#8217;re constantly translating your mental model (&#8221;I just need a for loop and a conditional&#8221;) into drag-and-drop nodes.</p><p>If you need production-grade reliability and you&#8217;re planning to hand off your workflow to someone else? I&#8217;m not convinced N8N is there yet and to be fair, I haven&#8217;t tried the enterprise plan. The auto-save issues, the &#8220;last mile&#8221; gaps in integrations, and the need for workarounds make me hesitant to treat it as mission-critical infrastructure.</p><h3>My Next Steps</h3><p>I&#8217;m giving N8N a fair shake. I&#8217;ll try one or two more workflows before making a final judgment. But I&#8217;m also exploring other agentic workflow tools to see if there&#8217;s something that offers more programmatic access&#8212;essentially, a tool that doesn&#8217;t hide the code but rather enhances it.</p><p>If I were starting this project over today? I&#8217;d probably reach for a tool with a code-first approach rather than a visual editor. Sometimes writing Python or JavaScript <em>is</em> the faster path, especially when you already think in those patterns.</p><h2>The Bigger Picture: Information Needs Better Tools</h2><p>Here&#8217;s what I keep coming back to: <strong>the newsletter problem is real, and it needs solving.</strong></p><p>We&#8217;re inundated with information. Smart people are sharing valuable insights across dozens of platforms and formats. But our tools for sense-making haven&#8217;t kept up. We&#8217;re still treating emails as individual items rather than as threads in a larger narrative.</p><p>The workflow I built&#8212;as janky as parts of it are&#8212;actually addresses a genuine need. Being able to go from &#8220;trees&#8221; (individual emails) to &#8220;forest&#8221; (thematic understanding) is valuable. NotebookLM as the final piece is what makes it sing, turning raw text into conversational insights.</p><p>This experiment taught me that the gaps between our tools are often where the most interesting opportunities live. Gmail doesn&#8217;t talk to NotebookLM. NotebookLM doesn&#8217;t have email integration. So we build bridges.</p><h2>Closing Thoughts</h2><p>Would I use N8N again? Maybe. Would I recommend it to a friend? Depends on the friend.</p><p>But here&#8217;s what I <em>would</em> say: if you&#8217;re drowning in newsletters from people whose thinking you value, consider building some kind of consolidation workflow. Whether it&#8217;s N8N, Zapier, a Python script, or even a manual process of copy-pasting into a doc once a month&#8212;find a way to step back and see the patterns.</p><p>The insights are there. You just need to zoom out far enough to see them.</p><div><hr></div><p><em>What do you think? Have you built something similar? Are you also drowning in newsletters? Drop a comment or reach out&#8212;I&#8217;d love to hear about your approaches to this problem.</em></p><p><em>And if you want the technical deep-dive on the actual workflow structure and data models, let me know. That might be a separate post for the nerds (affectionate) who want to build something similar.</em></p>]]></content:encoded></item><item><title><![CDATA[10 Themes Shaping AI's Future: What Sequoia Capital's Industry Conversations Reveal]]></title><description><![CDATA[Insights from 15 months of interviews with AI's most influential leaders]]></description><link>https://newsletter.harpreet.io/p/10-themes-shaping-ais-future-what</link><guid isPermaLink="false">https://newsletter.harpreet.io/p/10-themes-shaping-ais-future-what</guid><dc:creator><![CDATA[Harpreet Singh]]></dc:creator><pubDate>Thu, 25 Sep 2025 20:19:26 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1676285437146-d924855ecf28?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHx0cmVuZHxlbnwwfHx8fDE3NTg4MzA3NTl8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1676285437146-d924855ecf28?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHx0cmVuZHxlbnwwfHx8fDE3NTg4MzA3NTl8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1676285437146-d924855ecf28?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHx0cmVuZHxlbnwwfHx8fDE3NTg4MzA3NTl8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1676285437146-d924855ecf28?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHx0cmVuZHxlbnwwfHx8fDE3NTg4MzA3NTl8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1676285437146-d924855ecf28?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHx0cmVuZHxlbnwwfHx8fDE3NTg4MzA3NTl8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1676285437146-d924855ecf28?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHx0cmVuZHxlbnwwfHx8fDE3NTg4MzA3NTl8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1676285437146-d924855ecf28?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHx0cmVuZHxlbnwwfHx8fDE3NTg4MzA3NTl8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="6000" height="4000" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1676285437146-d924855ecf28?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHx0cmVuZHxlbnwwfHx8fDE3NTg4MzA3NTl8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:4000,&quot;width&quot;:6000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;a keyboard and a pen sitting on a desk&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="a keyboard and a pen sitting on a desk" title="a keyboard and a pen sitting on a desk" srcset="https://images.unsplash.com/photo-1676285437146-d924855ecf28?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHx0cmVuZHxlbnwwfHx8fDE3NTg4MzA3NTl8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1676285437146-d924855ecf28?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHx0cmVuZHxlbnwwfHx8fDE3NTg4MzA3NTl8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1676285437146-d924855ecf28?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHx0cmVuZHxlbnwwfHx8fDE3NTg4MzA3NTl8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1676285437146-d924855ecf28?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw0fHx0cmVuZHxlbnwwfHx8fDE3NTg4MzA3NTl8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@walls_io">Walls.io</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><pre><code><strong>post methodology
@perplexity comet, @google deep research: </strong>Take the following list of blogs, essays and build me the top 10 topics in the order of highest importance first that these blogs and essays discuss. Give me 3 bullet points under each topic and give me a 1-2 paragraph digest that helps me understand the bullets

[https://inferencebysequoia.substack.com/s/essays][https://inferencebysequoia.substack.com/s/ai-ascent][https://inferencebysequoia.substack.com/s/training-data-podcast]

<strong>@claude </strong>Act as a Senior Content Creator - one that has an output of two essays from junior content creators (Perplexity, Google Resource) that have looked at the same resource (Inference by Sequoia) to create a top ten list of themes with 3 key points under each theme and summary paragraph that distills the key lesson from the themes. Format this into Substack-style post for me. 

<strong>HS</strong>: Ultimately, the list was refactored to bring in key items that were missed by Claude by me.</code></pre><p>The AI revolution isn&#8217;t coming&#8212;it&#8217;s here. But understanding where we&#8217;re headed requires looking beyond the headlines to the deeper currents shaping this transformation. Sequoia Capital&#8217;s extensive research reveals ten critical themes that will define the next phase of AI development, from autonomous agents to the infrastructure powering them.</p><div class="pullquote"><p><em>Note: Credit to <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Inference by Sequoia&quot;,&quot;id&quot;:332685954,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/43573bbb-0a2b-42c6-8a84-e1a55073ad3d_292x292.png&quot;,&quot;uuid&quot;:&quot;cdc4abd4-51a5-421f-85b2-ad5771072c75&quot;}" data-component-name="MentionToDOM"></span> for their wonderful interviews. The themes/trends are my gist of the interviews.</em></p></div><h1>1. The Agent Economy: Beyond Tools to Digital Workers</h1><p><strong>&#8226; Foundational Infrastructure:</strong> New digital pillars are emerging&#8212;persistent identity systems, standardized communication protocols, and trusted security frameworks&#8212;that will enable AI agents to operate autonomously in economic systems.</p><p><strong>&#8226; From Deterministic to Probabilistic:</strong> Unlike traditional software that follows predictable paths, AI agents embrace uncertainty and adapt to dynamic conditions, much like human decision-making processes.</p><p><strong>&#8226; Economic Participation:</strong> Agents aren&#8217;t just automating tasks; they&#8217;re becoming economic participants capable of generating value, negotiating deals, and forming networks with other agents in entirely new digital marketplaces.</p><p>The shift toward autonomous agents represents a fundamental reimagining of software&#8212;from tools we use to digital workers that act on our behalf. This isn&#8217;t just about better chatbots; it&#8217;s about creating a new layer of economic activity where intelligent agents handle everything from routine transactions to complex negotiations.</p><div><hr></div><h1>2. AI Reasoning: The Great Paradigm Shift</h1><p><strong>&#8226; System 2 Thinking:</strong> AI is evolving beyond pattern recognition toward structured reasoning, enabling deeper problem-solving and explainable decision-making that mirrors human expert thinking.</p><p><strong>&#8226; Computational Scaling:</strong> Recent breakthroughs show that giving models more compute during inference&#8212;not just training&#8212;dramatically improves reasoning ability, like allowing a person more time to think through complex problems.</p><p><strong>&#8226; Transparency Revolution:</strong> New reasoning models are designed to be interpretable and reliable, reducing hallucinations and making AI decisions more trustworthy for critical applications.</p><p>We&#8217;re witnessing AI&#8217;s evolution from fast pattern matching to deliberate reasoning. This transition promises to unlock AI&#8217;s potential in high-stakes domains where accuracy and explainability are paramount, fundamentally changing how we think about machine intelligence.</p><div><hr></div><h1>3. The Application Layer Gold Rush</h1><p><strong>&#8226; Value Concentration:</strong> The biggest opportunities are shifting from foundational models to application-layer products&#8212;the interfaces and platforms where users actually interact with AI capabilities.</p><p><strong>&#8226; Killer App Emergence:</strong> Standout applications achieve extraordinary user retention by seamlessly integrating AI into daily workflows, creating new habits and setting higher expectations for software experiences.</p><p><strong>&#8226; Competitive Intensity:</strong> Both startups and tech giants are racing to capture the application layer, leading to rapid innovation cycles and a relentless focus on user experience over pure technical capability.</p><p>While foundation models grab headlines, the real value creation is happening where AI meets human needs. The companies winning this race aren&#8217;t just building better AI&#8212;they&#8217;re crafting experiences that make AI indispensable to their users&#8217; daily lives.</p><div><hr></div><h1>4. Synthetic Data: The New Training Revolution</h1><p><strong>&#8226; Efficiency Breakthrough:</strong> Synthetic data generation dramatically reduces the cost and time required for model training while enabling rapid experimentation without real-world data collection bottlenecks.</p><p><strong>&#8226; Precision Customization:</strong> Artificially generated datasets can be tailored for specific domains and edge cases, enabling enterprises to build AI systems perfectly aligned with their unique requirements and business logic.</p><p><strong>&#8226; Innovation Acceleration:</strong> The ability to rapidly create and iterate with synthetic data removes traditional barriers to AI development, allowing teams to prototype ambitious ideas and accelerate deployment timelines.</p><p>Synthetic data is democratizing AI development by removing the traditional barriers of data collection and curation. This shift enables more companies to build specialized AI systems and accelerates innovation across industries.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.harpreet.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.harpreet.io/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><h1>5. AI Infrastructure: Building the Foundation</h1><p><strong>&#8226; Next-Gen Data Centers:</strong> AI&#8217;s computational demands are driving the construction of specialized &#8220;AI factories&#8221;&#8212;massive data centers designed specifically for training and serving sophisticated models at global scale.</p><p><strong>&#8226; Ecosystem Integration:</strong> Success requires orchestrating partnerships between cloud providers, hardware manufacturers, and innovative startups to create seamless deployment and support systems.</p><p><strong>&#8226; Sustainability Imperative:</strong> The enormous energy footprint of large-scale AI raises critical questions about environmental impact, making efficient resource utilization essential for scalable AI adoption.</p><p>The infrastructure supporting AI represents one of the largest technological buildouts in history. Getting this foundation right&#8212;from energy efficiency to global distribution&#8212;will determine who can actually deliver on AI&#8217;s promise at scale.</p><div><hr></div><h1>6. Human-AI Collaboration: The New Working Model</h1><p><strong>&#8226; Interdisciplinary Integration:</strong> Successful AI systems require diverse teams combining technical expertise with domain knowledge, ensuring AI products are practical, relevant, and reliable in real-world scenarios.</p><p><strong>&#8226; Trust Architecture:</strong> Effective human-AI partnerships depend on transparency, predictability, and accountability&#8212;users need confidence that AI recommendations are sound and systems behave ethically.</p><p><strong>&#8226; Complementary Strengths:</strong> The optimal future merges human judgment and creativity with machine speed and scale, where AI handles complex computations while humans provide strategic direction and values-based decisions.</p><p>The most impactful AI implementations don&#8217;t replace human expertise&#8212;they amplify it. Success requires rethinking workflows to leverage the unique strengths of both human and artificial intelligence.</p><div><hr></div><h1>7. Specialized vs. General AI: The Precision Advantage</h1><p><strong>&#8226; Domain Expertise:</strong> Specialized AI agents excel in industries with complex regulations and unique workflows, delivering superior accuracy and compliance compared to general-purpose alternatives.</p><p><strong>&#8226; Architecture Optimization:</strong> Building effective domain-specific agents requires curated high-quality data, advanced reasoning engines, and workflows designed to match real business complexity.</p><p><strong>&#8226; Competitive Differentiation:</strong> Organizations investing in custom AI agents see measurable improvements in performance, cost reduction, and process efficiency, creating sustainable competitive advantages.</p><p>While general AI captures attention, specialized applications are where the immediate value lies. Companies that invest in domain-specific AI solutions are seeing transformational results that general models simply can&#8217;t match.</p><div><hr></div><h1>8. The Open Source Ecosystem: Community-Driven Innovation</h1><p><strong>&#8226; Collaborative Acceleration:</strong> Open-source development connects global developer communities, accelerating innovation through shared knowledge, code, and best practices that no single organization could achieve alone.</p><p><strong>&#8226; Modular Architecture:</strong> Success increasingly requires orchestrating suites of specialized agents and tools rather than relying on monolithic models, creating more flexible and scalable AI systems.</p><p><strong>&#8226; Standardization Imperative:</strong> Growing ecosystem complexity demands universal standards and protocols to enable interoperability, making diverse AI systems communicate and collaborate effectively.</p><p>The open-source movement is becoming a crucial counterbalance to proprietary AI development, fostering innovation accessibility while pushing the entire field forward through collaborative development.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://newsletter.harpreet.io/p/10-themes-shaping-ais-future-what?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading AI, Agents  &amp; Entrepreneurship &#8212; by Harpreet Singh! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.harpreet.io/p/10-themes-shaping-ais-future-what?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.harpreet.io/p/10-themes-shaping-ais-future-what?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><div><hr></div><h1>9. Coding with AI: The Developer Revolution</h1><p><strong>&#8226; Context Engineering:</strong> AI coding tools excel when they understand the complete development environment&#8212;codebase history, architecture decisions, and project goals&#8212;enabling suggestions that are genuinely useful rather than generic.</p><p><strong>&#8226; Manual Work Reduction:</strong> Smart context-aware AI can automate tedious tasks like refactoring, bug fixing, and legacy code updates, freeing developers to focus on creative problem-solving and strategic architecture decisions.</p><p><strong>&#8226; Environmental Setup Over Prompting:</strong> The most effective AI coding assistance comes from creating rich, structured development environments where AI understands developer intent, making information organization as crucial as the instructions given.</p><p>AI is fundamentally transforming software development by shifting the focus from perfect prompts to perfect context. This represents a new paradigm where developers become orchestrators of AI capabilities rather than manual coders, dramatically accelerating development cycles and democratizing software creation.</p><div><hr></div><h1>10. AI&#8217;s Economic Transformation: The Trillion-Dollar Shift</h1><p><strong>&#8226; Generational Opportunity:</strong> Leading investors describe AI as a once-in-a-generation transformation unlocking trillions in new economic activity across every major industry and sector.</p><p><strong>&#8226; Workforce Evolution:</strong> AI isn&#8217;t just automating tasks&#8212;it&#8217;s fundamentally redefining how people work, make decisions, and create value, requiring new skills, strategies, and organizational approaches.</p><p><strong>&#8226; Societal Integration:</strong> The implications extend far beyond business, influencing governance, education, and social connection, making responsible innovation essential for equitable progress.</p><p>AI represents the most significant economic transformation since the internet. Its impact will be measured not just in efficiency gains, but in entirely new forms of value creation and human potential.</p><div><hr></div><h2>The Bottom Line</h2><p>We&#8217;re not just witnessing technological advancement&#8212;we&#8217;re experiencing a fundamental reorganization of how intelligence, work, and value creation operate in our economy. The companies and leaders who understand these ten themes will be the ones shaping the next decade of human progress.</p><p>The AI revolution is still in its early chapters, but the plot is becoming clear. Those who act on these insights today will be the protagonists in tomorrow&#8217;s success stories.</p>]]></content:encoded></item><item><title><![CDATA[From Vibe Coding to Context Engineering]]></title><description><![CDATA[How AI Development is growing up]]></description><link>https://newsletter.harpreet.io/p/from-vibe-coding-to-context-engineering</link><guid isPermaLink="false">https://newsletter.harpreet.io/p/from-vibe-coding-to-context-engineering</guid><dc:creator><![CDATA[Harpreet Singh]]></dc:creator><pubDate>Wed, 24 Sep 2025 00:42:25 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1591617870684-6e861e6a48ad?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxncm93aW5nfGVufDB8fHx8MTc1ODYxMDQzOXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1591617870684-6e861e6a48ad?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxncm93aW5nfGVufDB8fHx8MTc1ODYxMDQzOXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1591617870684-6e861e6a48ad?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxncm93aW5nfGVufDB8fHx8MTc1ODYxMDQzOXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1591617870684-6e861e6a48ad?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxncm93aW5nfGVufDB8fHx8MTc1ODYxMDQzOXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1591617870684-6e861e6a48ad?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxncm93aW5nfGVufDB8fHx8MTc1ODYxMDQzOXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1591617870684-6e861e6a48ad?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxncm93aW5nfGVufDB8fHx8MTc1ODYxMDQzOXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1591617870684-6e861e6a48ad?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxncm93aW5nfGVufDB8fHx8MTc1ODYxMDQzOXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080" width="6000" height="3903" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1591617870684-6e861e6a48ad?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxncm93aW5nfGVufDB8fHx8MTc1ODYxMDQzOXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:3903,&quot;width&quot;:6000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;pink flower on white background&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="pink flower on white background" title="pink flower on white background" srcset="https://images.unsplash.com/photo-1591617870684-6e861e6a48ad?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxncm93aW5nfGVufDB8fHx8MTc1ODYxMDQzOXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1591617870684-6e861e6a48ad?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxncm93aW5nfGVufDB8fHx8MTc1ODYxMDQzOXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1591617870684-6e861e6a48ad?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxncm93aW5nfGVufDB8fHx8MTc1ODYxMDQzOXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1591617870684-6e861e6a48ad?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxncm93aW5nfGVufDB8fHx8MTc1ODYxMDQzOXww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=1080 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@edwardhowellphotography">Edward Howell</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><pre><code><strong>Post methodology 

</strong>@notebooklm write an essay on the subject &#8220;Does Vibe Coding Need Context Engineering? or &#8220;Evolution of Vibe Code in 2025&#8221;;
proposed structure: The promise of vibe coding; The evolution from prompt engineering to context engineering; Comparison of context engineering with the OpenAI spec and Claude Code approaches; description of how context engineering can fulfill the promise of prompt engineering;
Talk about the evolution of VibeCoding through 3 phases in 2025
Lean heavily into patterns and anti-patterns
Lean heavily into lessons from the Ulimate Vibe Coding guide
Make this essay about 4000-5000 words

@claude: read the text of the essay in the prompt and your key insights (generated earlier) and write a 2000 word post that summarizes the main points in the format for substack post. Please make the post as concise as possible and avoid academic language or footnotes.

@chatgpt read the text of the essay in the prompt and output from claude and write a 2000 word post that summarizes the main points in the format for substack post. Please make the post as concise as possible and avoid academic language or footnotes</code></pre><p><strong>Summary:</strong></p><p>The way we build software with AI is evolving. What began as casual &#8220;vibe coding&#8221; &#8212; chatting with an AI to generate code&#8212;is maturing into a structured, scalable practice called <em>context engineering</em>. This post traces the three major waves of this evolution, breaks down the four pillars of context engineering, and shows why managing context&#8212;not prompts&#8212;is the future of AI-assisted development.</p><div><hr></div><h1><strong>&#127744; </strong>The Rise (and Limits) of Vibe Coding</h1><p>In late 2024, a new generation of developers discovered a magical new workflow: vibe coding.</p><p>The pitch was seductive:</p><blockquote><p>&#8220;Just tell the AI what you want &#8212; and it&#8217;ll build it.&#8221;</p></blockquote><p>No syntax. No boilerplate. No need to wire up config files. You were speaking in ideas. The AI did the rest.</p><p>But as projects got more complex, the cracks showed:</p><ul><li><p>&#129504; <strong>Amnesia</strong>: AI forgot architectural decisions between sessions.</p></li><li><p>&#128257; <strong>Repetition</strong>: You kept re-explaining project goals.</p></li><li><p>&#129513; <strong>Incoherence</strong>: Outputs didn&#8217;t fit together.</p></li><li><p>&#128123; <strong>Hallucinations</strong>: The AI invented features or APIs that didn&#8217;t exist.</p></li></ul><p>One dev nailed it:</p><blockquote><p>&#8220;It&#8217;s like managing a brilliant but confused intern.&#8221;</p></blockquote><p>You could get snippets, but not systems. You could vibe, but you couldn&#8217;t scale. The magic prompt fallacy &#8212; that one perfect message would produce a working app &#8212; had met reality.</p><p>And the root cause was clear: <strong>missing context</strong>.</p><div><hr></div><h1><strong>&#129692; </strong>The Three Waves of AI Coding</h1><p>As 2025 unfolded, developers adapted. The evolution came in three distinct waves:</p><div><hr></div><h2>Wave 1: Discovery</h2><p><em>Late 2024 &#8211; Early 2025</em></p><p><strong>&#8220;Why won&#8217;t this AI understand me?&#8221;</strong></p><p>AI was a novelty &#8212; a smarter Stack Overflow. Devs used it for:</p><ul><li><p>Debugging</p></li><li><p>Snippets</p></li><li><p>Small one-off tasks</p></li></ul><p>Then came a breakthrough: <em>role-playing</em>.</p><p>Give the AI a persona like &#8220;Senior Engineer&#8221; or &#8220;Product Manager,&#8221; and it behaved better.</p><p>This trick planted a deeper seed:</p><blockquote><p>AI needs structure. It needs role. It needs environment.</p></blockquote><p>But the workflow was still ad hoc, and prompts were ephemeral.</p><div><hr></div><h2>Wave 2: Structure</h2><p><em>March &#8211; May 2025</em></p><p><strong>&#8220;The AI is a junior dev &#8212; give it guidance.&#8221;</strong></p><p>The metaphor shifted. You didn&#8217;t just talk <em>at</em> the AI. You treated it like an intern.</p><p>The vibe changed from &#8220;magic prompt&#8221; to &#8220;guided collaboration.&#8221;</p><p>Key practices emerged:</p><ul><li><p>&#9989; <strong>Plan first</strong>: Write a vision, strategy, and spec before touching code.</p></li><li><p>&#129534; <strong>Use .rules files</strong>: Codify stack decisions and naming conventions.</p></li><li><p>&#129513; <strong>Break it down</strong>: Decompose into 15&#8211;30 min atomic tasks.</p></li><li><p>&#128257; <strong>Progressive enhancement</strong>: Build a skeleton, then layer functionality.</p></li></ul><p>This added discipline. But devs were still manually juggling context across chat sessions, IDE tabs, and memory.</p><div><hr></div><h2>Wave 3: Engineering</h2><p><em>Late May 2025 &#8211; Present</em></p><p><strong>&#8220;We&#8217;re not just prompting AI &#8212; we&#8217;re designing systems.&#8221;</strong></p><p>This is where things got serious.</p><p>We moved from prompting agents to <strong>architecting agent workflows</strong>.</p><p>Instead of throwing prompts into the void, developers started creating infrastructure &#8212; persistent, queryable, AI-readable context that scaled across:</p><ul><li><p>Sessions</p></li><li><p>Models</p></li><li><p>Tasks</p></li></ul><p>This is the era of <strong>Context Engineering</strong>.</p><div><hr></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.harpreet.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.harpreet.io/subscribe?"><span>Subscribe now</span></a></p><h1><strong>&#129504; </strong>What is Context Engineering?</h1><p>Context engineering is the practice of designing, managing, and delivering the right information to AI systems at the right time &#8212; across entire projects, not just prompts.</p><p>Just like version control or deployment pipelines, <strong>context becomes infrastructure</strong>. It&#8217;s a system &#8212; not a sentence.</p><p>This shift mirrors other historical transitions in tech:</p><ul><li><p>HTML &#8594; CSS &#8594; Component systems</p></li><li><p>Scripts &#8594; Build pipelines &#8594; CI/CD</p></li><li><p>Vibe prompts &#8594; Spec-first workflows &#8594; Context engineering</p></li></ul><div><hr></div><h2><strong>&#129521; </strong>The Four Pillars of Context Engineering</h2><p>Context engineering stands on four core pillars. These are the patterns powering today&#8217;s most productive AI workflows:</p><div><hr></div><h3>1. Context Persistence</h3><p><em>AI needs memory.</em></p><ul><li><p>&#128221; <strong>Session Notes</strong>: progress.md or runtime state files to track thinking within a task.</p></li><li><p>&#129504; <strong>Project Memory</strong>: Long-term documents like architecture.md, ai_context.md, and tech_stack.md that evolve with the project.</p></li><li><p>&#128257; <strong>Living Docs</strong>: Update after each major feature or bug. Don&#8217;t throw away your thinking&#8212;codify it.</p></li></ul><blockquote><p>Think of this as the AI&#8217;s second brain.</p></blockquote><div><hr></div><h3>2. Context Selection</h3><p><em>Only load what&#8217;s relevant.</em></p><ul><li><p>&#128269; <strong>RAG (Retrieval-Augmented Generation)</strong>: Use embedding search or rule-based fetchers to pull in the right files or specs.</p></li><li><p>&#129517; <strong>Hierarchical Docs</strong>: Organize docs from general (project root) to specific (module-level).</p></li><li><p>&#129514; <strong>Pattern Examples</strong>: Give the AI great samples from your codebase so it learns style, architecture, and best practices.</p></li></ul><blockquote><p>Don&#8217;t dump the whole repo. Curate its view like a good teacher would.</p></blockquote><div><hr></div><h3>3. Context Compression</h3><p><em>Keep only what matters.</em></p><ul><li><p>&#129534; <strong>Summarization</strong>: Condense past work, chat history, or long tool outputs into distilled forms.</p></li><li><p>&#9986;&#65039; <strong>Trimming</strong>: Use heuristics to prune stale or irrelevant messages.</p></li><li><p>&#129302; <strong>Auto-Compaction</strong>: Some tools like Claude Code do this for you near context limits.</p></li></ul><blockquote><p>Prevent &#8220;context poisoning&#8221; with lean, meaningful sessions.</p></blockquote><div><hr></div><h3>4. Context Routing</h3><h3><em>Different agents need different context.</em></h3><ul><li><p>&#127917; <strong>Role-Based Agents</strong>: Architect, Coder, Reviewer &#8212; each gets different slices of context.</p></li><li><p>&#128230; <strong>Formal Handoffs</strong>: handover.md files summarize decisions, recent changes, and next steps.</p></li><li><p>&#128257; <strong>State Anchoring</strong>: Use Git SHAs to lock AIs to specific points in the codebase, like &#8220;context bookmarks.&#8221;</p></li></ul><blockquote><p>This is where agent-based development gets orchestration.</p></blockquote><div><hr></div><h1><strong>&#128295; </strong>Spec Coding: Intent as Infrastructure</h1><p>One of the most elegant outcomes of context engineering is <strong>Spec Coding</strong> &#8212; championed by the team at <em>SpecStory</em> and inspired by Claude&#8217;s emerging workflows.</p><p>The idea:</p><blockquote><p><strong>Intent is the new source code.</strong></p></blockquote><p>You don&#8217;t start with implementation.</p><p>You start with clarity:</p><ol><li><p>What are we building?</p></li><li><p>Why does it matter?</p></li><li><p>Who&#8217;s it for?</p></li><li><p>What are the constraints?</p></li></ol><p>The flow looks like this:</p><ol><li><p><strong>Vision &amp; Strategy</strong> &#8212; product goals, user personas, metrics</p></li><li><p><strong>PRD</strong> &#8212; user stories, features, UX flows, requirements</p></li><li><p><strong>Tech Spec</strong> &#8212; architecture, design system, content outline</p></li><li><p><strong>Task Breakdown</strong> &#8212; development, design, and QA tasks</p></li><li><p><strong>Execution with AI</strong> &#8212; each step validated by human and agent collaborators</p></li></ol><p>This isn&#8217;t just good process. It&#8217;s how AI performs best.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://newsletter.harpreet.io/p/from-vibe-coding-to-context-engineering?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading AI, Agents  &amp; Entrepreneurship &#8212; by Harpreet Singh! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.harpreet.io/p/from-vibe-coding-to-context-engineering?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.harpreet.io/p/from-vibe-coding-to-context-engineering?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><div><hr></div><h2><strong>&#9889; </strong>Why This Evolution Matters</h2><h3><strong>&#9989; </strong>Developers become Architects</h3><p>You don&#8217;t micromanage code &#8212; you guide systems. The human role shifts from implementer to orchestrator.</p><h3><strong>&#129504; </strong>Knowledge Compounds</h3><p>Instead of losing context every chat, reasoning is preserved. Every session makes the AI smarter.</p><h3><strong>&#128640; </strong>Onboarding Accelerates</h3><p>Whether it&#8217;s a new human or a new agent, well-maintained context speeds things up dramatically.</p><h3><strong>&#129514; </strong>Quality Becomes Predictable</h3><p>You&#8217;re not gambling with prompts. You&#8217;re engineering conditions that reliably produce great code.</p><div><hr></div><h2><strong>&#129517; </strong>How to Make the Shift</h2><p>Still prompting casually? No shame. But if you want leverage, start shifting toward context engineering.</p><h3>Start Simple:</h3><ul><li><p>Create /ai/docs/ in your repo</p></li><li><p>Add a vision.md, architecture.md, and ai_context.md</p></li><li><p>Track task progress in progress.md</p></li><li><p>Break requests into 15&#8211;30 min chunks</p></li></ul><h3>Scale Up:</h3><ul><li><p>Orchestrate multi-agent workflows (Planner, Coder, Reviewer)</p></li><li><p>Use Git SHAs in memory files for time-anchored context</p></li><li><p>Set up RAG pipelines to fetch relevant docs automatically</p></li><li><p>Build handoff protocols between sessions</p></li></ul><div><hr></div><h2><strong>&#127793; </strong>From Demo to Discipline</h2><p>Vibe coding was fun. It was experimental. It was how we all started.</p><p>But the future belongs to those who treat AI collaboration as infrastructure &#8212; who move from hoping the AI &#8220;gets it&#8221; to <strong>ensuring</strong> it does.</p><p>We&#8217;re not replacing code.</p><p>We&#8217;re elevating how it&#8217;s built.</p><p>Welcome to the age of <strong>Context Engineering</strong>.</p><div><hr></div><p>Sources: </p><ol><li><p><strong>YouTube Video:</strong> <a href="https://www.google.com/url?sa=E&amp;q=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DdQw4w9WgXcQ">&#8220;Context Engineering for Agents&#8221; - LangChain</a></p></li><li><p><strong>GitHub Repository:</strong> <a href="https://www.google.com/url?sa=E&amp;q=https%3A%2F%2Fgithub.com%2FEnzeD%2Fvibe-coding">&#8220;The Ultimate Vibe Coding Guide&#8221; by Nicolas Zullo (EnzeD/vibe-coding)</a></p></li><li><p><strong>Specflow Article:</strong> <a href="https://www.specflow.com/reddit-wisdom/patterns/">&#8220;Patterns &amp; Best Practices&#8221; - Specflow</a></p></li><li><p><strong>Specflow Article:</strong> <a href="https://www.specflow.com/reddit-wisdom">&#8220;Reddit Wisdom&#8221; - Specflow</a></p></li><li><p><strong>YouTube Video:</strong> <a href="https://youtu.be/8rABwKRsec4?list=TLGG6K-noPLGXrgyNDA5MjAyNQ">&#8220;The New Code &#8212; Sean Grove, OpenAI&#8221; - AI Engineer</a></p></li></ol><p></p>]]></content:encoded></item><item><title><![CDATA[Mapping Goose to the Core Loop of AI Agents 🧬☕]]></title><description><![CDATA[From DNA of AI Agents to a Barista Coffee Agent]]></description><link>https://newsletter.harpreet.io/p/mapping-goose-to-the-core-loop-of</link><guid isPermaLink="false">https://newsletter.harpreet.io/p/mapping-goose-to-the-core-loop-of</guid><dc:creator><![CDATA[Harpreet Singh]]></dc:creator><pubDate>Thu, 14 Aug 2025 12:45:55 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!LI4Z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0240af84-a9d2-4a28-941e-f20a7dc753fe_962x656.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Every AI agent &#8212; from the simplest chatbot to a swarm of autonomous specialists &#8212; runs through the same <strong>core loop</strong>:</p><ol><li><p><strong>Perceive</strong> &#8211; sense the world.</p></li><li><p><strong>Think/Plan</strong> &#8211; decide what to do.</p></li><li><p><strong>Act</strong> &#8211; take action via tools.</p></li><li><p><strong>Remember</strong> &#8211; store useful information.</p></li><li><p><strong>Learn</strong> &#8211; adapt over time.</p></li></ol><p>In my last post, I called this <em><a href="https://aientrepreneurship.substack.com/p/the-dna-of-ai-agents">The DNA of AI Agents</a></em>. It&#8217;s the blueprint that underlies everything from ChatGPT to complex multi-agent systems.</p><div><hr></div><h2><strong>Goose in the DNA Loop</strong></h2><p>Recently, I ran <strong>Goose</strong> &#8212; an MCP-enabled agent framework by Block &#8212; and decided to map it back to this DNA.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LI4Z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0240af84-a9d2-4a28-941e-f20a7dc753fe_962x656.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LI4Z!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0240af84-a9d2-4a28-941e-f20a7dc753fe_962x656.png 424w, https://substackcdn.com/image/fetch/$s_!LI4Z!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0240af84-a9d2-4a28-941e-f20a7dc753fe_962x656.png 848w, https://substackcdn.com/image/fetch/$s_!LI4Z!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0240af84-a9d2-4a28-941e-f20a7dc753fe_962x656.png 1272w, https://substackcdn.com/image/fetch/$s_!LI4Z!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0240af84-a9d2-4a28-941e-f20a7dc753fe_962x656.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LI4Z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0240af84-a9d2-4a28-941e-f20a7dc753fe_962x656.png" width="962" height="656" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0240af84-a9d2-4a28-941e-f20a7dc753fe_962x656.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:656,&quot;width&quot;:962,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:273457,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://aientrepreneurship.substack.com/i/170968828?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0240af84-a9d2-4a28-941e-f20a7dc753fe_962x656.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!LI4Z!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0240af84-a9d2-4a28-941e-f20a7dc753fe_962x656.png 424w, https://substackcdn.com/image/fetch/$s_!LI4Z!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0240af84-a9d2-4a28-941e-f20a7dc753fe_962x656.png 848w, https://substackcdn.com/image/fetch/$s_!LI4Z!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0240af84-a9d2-4a28-941e-f20a7dc753fe_962x656.png 1272w, https://substackcdn.com/image/fetch/$s_!LI4Z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0240af84-a9d2-4a28-941e-f20a7dc753fe_962x656.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Here&#8217;s what happens when you run Goose:</p><ul><li><p><strong>Perceive</strong> &#8594; Takes in your prompt and any relevant context from local files or prior steps.</p></li><li><p><strong>Think/Plan</strong> &#8594; Outsources reasoning to an LLM, which decides what tool to run next.</p></li><li><p><strong>Act</strong> &#8594; Calls MCP servers to interact with tools like Git, Slack, or custom extensions.</p></li><li><p><strong>Memory</strong> &#8594; Stores session context locally; can be extended with vector databases.</p></li><li><p><strong>Learn</strong> &#8594; Static for now &#8212; no self-improving strategies without developer input.</p></li></ul><p>Seeing Goose mapped to the loop makes it easier to understand what it&#8217;s doing <em>and</em> what its limits are.</p><div><hr></div><h2><strong>The Barista Agent</strong></h2><p>Of course, not everyone wants to think in abstract diagrams. So I gave Goose a job: <strong>make me a cappuccino.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BSA3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9423986b-caf6-4c0c-beef-63a3784ba9f1_1264x836.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BSA3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9423986b-caf6-4c0c-beef-63a3784ba9f1_1264x836.png 424w, https://substackcdn.com/image/fetch/$s_!BSA3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9423986b-caf6-4c0c-beef-63a3784ba9f1_1264x836.png 848w, https://substackcdn.com/image/fetch/$s_!BSA3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9423986b-caf6-4c0c-beef-63a3784ba9f1_1264x836.png 1272w, https://substackcdn.com/image/fetch/$s_!BSA3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9423986b-caf6-4c0c-beef-63a3784ba9f1_1264x836.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BSA3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9423986b-caf6-4c0c-beef-63a3784ba9f1_1264x836.png" width="1264" height="836" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9423986b-caf6-4c0c-beef-63a3784ba9f1_1264x836.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:836,&quot;width&quot;:1264,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:300952,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://aientrepreneurship.substack.com/i/170968828?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9423986b-caf6-4c0c-beef-63a3784ba9f1_1264x836.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!BSA3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9423986b-caf6-4c0c-beef-63a3784ba9f1_1264x836.png 424w, https://substackcdn.com/image/fetch/$s_!BSA3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9423986b-caf6-4c0c-beef-63a3784ba9f1_1264x836.png 848w, https://substackcdn.com/image/fetch/$s_!BSA3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9423986b-caf6-4c0c-beef-63a3784ba9f1_1264x836.png 1272w, https://substackcdn.com/image/fetch/$s_!BSA3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9423986b-caf6-4c0c-beef-63a3784ba9f1_1264x836.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Here&#8217;s the flow:</p><ol><li><p>You order a cappuccino &#8594; the agent <strong>perceives</strong> the request.</p></li><li><p>It considers the recipe and tools it needs &#8594; <strong>think/plan</strong>.</p></li><li><p>It acts by preparing the drink &#8594; <strong>act/tools</strong>.</p></li><li><p>It remembers your preference for extra foam &#8594; <strong>memory</strong>.</p></li><li><p>Next time, it uses that memory to make your coffee just right &#8594; <strong>learn</strong>.</p></li></ol><p>Whether it&#8217;s coffee or code, the same DNA applies &#8212; only the tools and skills change.</p><div><hr></div><h2><strong>Why This Matters</strong></h2><p>Understanding this DNA loop and the five dials gives you a <strong>universal lens</strong> for looking at any agent framework: Goose, LangGraph, CrewAI, AutoGen, or the next thing that comes along.</p><p>It strips away the hype and shows you:</p><ul><li><p>What&#8217;s actually happening.</p></li><li><p>Where the framework shines.</p></li><li><p>Where it needs work.</p></li></ul><p>Once you see the DNA, you can build, compare, and design agents with much more clarity.</p>]]></content:encoded></item><item><title><![CDATA[The DNA of AI Agents]]></title><description><![CDATA[One loop and five dials that define every AI agent, from ChatGPT to autonomous swarms]]></description><link>https://newsletter.harpreet.io/p/the-dna-of-ai-agents</link><guid isPermaLink="false">https://newsletter.harpreet.io/p/the-dna-of-ai-agents</guid><dc:creator><![CDATA[Harpreet Singh]]></dc:creator><pubDate>Mon, 11 Aug 2025 10:05:55 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!MyYt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca058658-1a67-4bef-bc27-f1d86b0537f8_1668x2154.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Every AI agent &#8212; from the simplest chatbot to a swarm of autonomous specialists &#8212; runs through the same core loop: </p><ul><li><p>perceive, </p></li><li><p>think/plan, </p></li><li><p>act, </p></li><li><p>remember, and </p></li><li><p>learn. </p></li></ul><p>What makes them different are the &#8220;design dials&#8221; that shape their capabilities.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MyYt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca058658-1a67-4bef-bc27-f1d86b0537f8_1668x2154.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MyYt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca058658-1a67-4bef-bc27-f1d86b0537f8_1668x2154.jpeg 424w, https://substackcdn.com/image/fetch/$s_!MyYt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca058658-1a67-4bef-bc27-f1d86b0537f8_1668x2154.jpeg 848w, https://substackcdn.com/image/fetch/$s_!MyYt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca058658-1a67-4bef-bc27-f1d86b0537f8_1668x2154.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!MyYt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca058658-1a67-4bef-bc27-f1d86b0537f8_1668x2154.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MyYt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca058658-1a67-4bef-bc27-f1d86b0537f8_1668x2154.jpeg" width="1456" height="1880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ca058658-1a67-4bef-bc27-f1d86b0537f8_1668x2154.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1880,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:297168,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://aientrepreneurship.substack.com/i/170672132?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca058658-1a67-4bef-bc27-f1d86b0537f8_1668x2154.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!MyYt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca058658-1a67-4bef-bc27-f1d86b0537f8_1668x2154.jpeg 424w, https://substackcdn.com/image/fetch/$s_!MyYt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca058658-1a67-4bef-bc27-f1d86b0537f8_1668x2154.jpeg 848w, https://substackcdn.com/image/fetch/$s_!MyYt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca058658-1a67-4bef-bc27-f1d86b0537f8_1668x2154.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!MyYt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca058658-1a67-4bef-bc27-f1d86b0537f8_1668x2154.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Agents sense the world (<strong>Perceive</strong>), decide what to do (<strong>Think/Plan</strong>), take action (<strong>Act/Tools</strong>), store experience (<strong>Memory</strong>), and evolve over time (<strong>Learn</strong>). This loop repeats endlessly, and upgrading any stage changes what the agent can achieve.</p><h2>The 5 Dials</h2><p>These are the levers an architect can turn to design an agent:</p><p>1. <strong>Perception</strong> &#8212; how much it can sense.</p><p>2. <strong>Reasoning Depth</strong> &#8212; how deeply it thinks.</p><p>3. <strong>Action Space</strong> &#8212; what it can do.</p><p>4. <strong>Memory Strategy</strong> &#8212; how it remembers.</p><p>5. <strong>Learning Mode</strong> &#8212; how it improves.  </p><p>Turning these dials reshapes the agent&#8217;s personality, power, and purpose.</p><p>Every agent architecture is just a variation of this loop, shaped by how you set the five dials. The fun part? There&#8217;s no single &#8220;right&#8221; setting &#8212; it depends entirely on the problem you&#8217;re solving.</p><p>If you were building your own AI agent today, <strong>which dial would you turn up first &#8212; and why?</strong></p>]]></content:encoded></item><item><title><![CDATA[The Protocol Layer for AI Agents: Inside the Model Context Protocol (MCP) (2/2)]]></title><description><![CDATA[The emerging standard that turns language models into system-level actors.]]></description><link>https://newsletter.harpreet.io/p/the-protocol-layer-for-ai-agents-e49</link><guid isPermaLink="false">https://newsletter.harpreet.io/p/the-protocol-layer-for-ai-agents-e49</guid><dc:creator><![CDATA[Harpreet Singh]]></dc:creator><pubDate>Tue, 29 Apr 2025 14:02:54 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1528036788076-c031f7707270?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2MXx8Y29tbXVuaWNhdGV8ZW58MHx8fHwxNzQ1NDU1NjUzfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This part 2 of a 2 part series on the Model Context Protocol (<a href="https://open.substack.com/pub/aientrepreneurship/p/the-protocol-layer-for-ai-agents?r=3sthh&amp;utm_campaign=post&amp;utm_medium=web&amp;showWelcomeOnShare=true">see 1/2 here</a>)</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1528036788076-c031f7707270?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2MXx8Y29tbXVuaWNhdGV8ZW58MHx8fHwxNzQ1NDU1NjUzfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1528036788076-c031f7707270?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2MXx8Y29tbXVuaWNhdGV8ZW58MHx8fHwxNzQ1NDU1NjUzfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1528036788076-c031f7707270?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2MXx8Y29tbXVuaWNhdGV8ZW58MHx8fHwxNzQ1NDU1NjUzfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1528036788076-c031f7707270?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2MXx8Y29tbXVuaWNhdGV8ZW58MHx8fHwxNzQ1NDU1NjUzfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1528036788076-c031f7707270?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2MXx8Y29tbXVuaWNhdGV8ZW58MHx8fHwxNzQ1NDU1NjUzfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1528036788076-c031f7707270?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2MXx8Y29tbXVuaWNhdGV8ZW58MHx8fHwxNzQ1NDU1NjUzfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080" width="6000" height="4000" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1528036788076-c031f7707270?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2MXx8Y29tbXVuaWNhdGV8ZW58MHx8fHwxNzQ1NDU1NjUzfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:4000,&quot;width&quot;:6000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;three men standing on football field&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="three men standing on football field" title="three men standing on football field" srcset="https://images.unsplash.com/photo-1528036788076-c031f7707270?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2MXx8Y29tbXVuaWNhdGV8ZW58MHx8fHwxNzQ1NDU1NjUzfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1528036788076-c031f7707270?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2MXx8Y29tbXVuaWNhdGV8ZW58MHx8fHwxNzQ1NDU1NjUzfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1528036788076-c031f7707270?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2MXx8Y29tbXVuaWNhdGV8ZW58MHx8fHwxNzQ1NDU1NjUzfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1528036788076-c031f7707270?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw2MXx8Y29tbXVuaWNhdGV8ZW58MHx8fHwxNzQ1NDU1NjUzfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="true">Jeffrey F Lin</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><h1>Section 5: The Hard Questions &#8212; Risk, Security, Control</h1><p>The same features that make MCP powerful also makes it open for security risks.</p><p>You&#8217;re giving LLMs access to real-world tools and data. That opens the door to:</p><ul><li><p><strong>Prompt injection</strong> where inputs trick the model into executing unintended actions</p></li><li><p><strong>Tool misuse</strong> especially when semantic descriptions are vague or overlapping</p></li><li><p><strong>Data leakage</strong> through resources passed too liberally or without redaction</p></li><li><p><strong>Permission drift</strong> when agents act beyond their intended scope</p></li></ul><p>Security in MCP is still evolving. There&#8217;s no universal sandboxing, no standardized authentication layer, and no formal permission model baked into the protocol.</p><p>That doesn&#8217;t make it useless. It makes it <strong>local-first by necessity</strong>.</p><p>Right now, MCP is best used in <strong>controlled environments</strong>:</p><ul><li><p>Local agents with scoped access</p></li><li><p>Internal workflows where failures are recoverable</p></li><li><p>Sandboxed toolchains where impact is minimal</p></li></ul><p>As the ecosystem matures, expect to see:</p><ul><li><p>Agent guardrails and policy layers</p></li><li><p>Semantic firewalls between tools and models</p></li><li><p>Auditing systems that trace agent behavior and tool usage</p></li></ul><p>MCP doesn&#8217;t solve trust. It gives you the machinery to build it&#8212;if you do the rest.</p><p>That&#8217;s why protocol-native design will need to think about <strong>governance</strong> as it is has done about the architecture.</p><div><hr></div><h1>Section 6: Protocol-Native Futures</h1><p>The idea of &#8220;MCP compatibility&#8221; may one day be as common as &#8220;REST API support.&#8221;</p><p>Imagine an ecosystem where tools like Gmail, Notion, GitHub, and Salesforce all expose their capabilities semantically:</p><ul><li><p>So agents can discover, evaluate, and invoke them dynamically</p></li><li><p>So orchestration happens through reasoning, not hardcoded flows</p></li><li><p>So systems interconnect based on <strong>intent</strong>, not brittle glue code</p></li></ul><p>That&#8217;s the promise of protocol-native infrastructure.</p><p>MCP gives us a glimpse of what that might look like:</p><ul><li><p>Shared grammar for capability discovery</p></li><li><p>Decoupling of agent logic from environment implementation</p></li><li><p>Portable, composable AI workflows</p></li><li><p></p></li></ul><p>We&#8217;ll need standards. We&#8217;ll need better security models. We&#8217;ll need social trust layers around who can expose what.</p><p>But if you squint, you can already see it:</p><ul><li><p>Tools building MCP endpoints</p></li><li><p>Agents evolving toward autonomous orchestration</p></li><li><p>Developers thinking in terms of protocols</p></li></ul><p>This isn&#8217;t just a better integration strategy. It&#8217;s a foundational layer for a more semantic, agent-native internet.</p><p>Let&#8217;s build it.</p><div><hr></div><h1>Closing: Designing the Future with Protocols</h1><p>By now, it should be clear: MCP isn&#8217;t just a cleaner way to wire up AI tools. It&#8217;s a blueprint for building systems that are fundamentally more agent-aware, context-driven, and interoperable.</p><p>Yes, the risks are real. Yes, the spec is still evolving. But the architectural direction is solid.</p><p>If you&#8217;re serious about building agents&#8212;not just wrappers&#8212;then protocol-native design is inevitable. MCP gives you a head start.</p><p>Whether you're defining your own MCP server, experimenting with semantic tools, or designing governance layers around AI workflows, you&#8217;re not just integrating&#8212;you&#8217;re laying track for the next infrastructure layer of AI.</p><p><strong>Because the future of AI isn&#8217;t just more intelligence. It&#8217;s better interfaces.</strong></p><p>And the interface is the protocol.</p><p>Let&#8217;s build accordingly.</p>]]></content:encoded></item><item><title><![CDATA[The Protocol Layer for AI Agents: Inside the Model Context Protocol (MCP) (1/2)]]></title><description><![CDATA[The emerging standard that turns language models into system-level actors.]]></description><link>https://newsletter.harpreet.io/p/the-protocol-layer-for-ai-agents</link><guid isPermaLink="false">https://newsletter.harpreet.io/p/the-protocol-layer-for-ai-agents</guid><dc:creator><![CDATA[Harpreet Singh]]></dc:creator><pubDate>Fri, 25 Apr 2025 14:03:03 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1615086169217-83e1c06c9f4f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHx1c2ItY3xlbnwwfHx8fDE3NDU0NTM3MzF8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1615086169217-83e1c06c9f4f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHx1c2ItY3xlbnwwfHx8fDE3NDU0NTM3MzF8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1615086169217-83e1c06c9f4f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHx1c2ItY3xlbnwwfHx8fDE3NDU0NTM3MzF8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1615086169217-83e1c06c9f4f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHx1c2ItY3xlbnwwfHx8fDE3NDU0NTM3MzF8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1615086169217-83e1c06c9f4f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHx1c2ItY3xlbnwwfHx8fDE3NDU0NTM3MzF8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1615086169217-83e1c06c9f4f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHx1c2ItY3xlbnwwfHx8fDE3NDU0NTM3MzF8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1615086169217-83e1c06c9f4f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHx1c2ItY3xlbnwwfHx8fDE3NDU0NTM3MzF8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080" width="5863" height="3908" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1615086169217-83e1c06c9f4f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHx1c2ItY3xlbnwwfHx8fDE3NDU0NTM3MzF8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:3908,&quot;width&quot;:5863,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;white usb cable on black surface&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="white usb cable on black surface" title="white usb cable on black surface" srcset="https://images.unsplash.com/photo-1615086169217-83e1c06c9f4f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHx1c2ItY3xlbnwwfHx8fDE3NDU0NTM3MzF8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1615086169217-83e1c06c9f4f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHx1c2ItY3xlbnwwfHx8fDE3NDU0NTM3MzF8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1615086169217-83e1c06c9f4f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHx1c2ItY3xlbnwwfHx8fDE3NDU0NTM3MzF8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1615086169217-83e1c06c9f4f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxfHx1c2ItY3xlbnwwfHx8fDE3NDU0NTM3MzF8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="true">Mishaal Zahed</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p>This is post 1 of a 2 part series (<a href="https://open.substack.com/pub/aientrepreneurship/p/the-protocol-layer-for-ai-agents-e49?r=3sthh&amp;utm_campaign=post&amp;utm_medium=web&amp;showWelcomeOnShare=true">see 2/2 here</a>)</p><h1>Section 1: Why Protocols Matter Now</h1><p>Everyone is building AI agents. But almost no one is asking the deeper question: <strong>How should agents interact with the world?</strong></p><p>Today, most agents rely on brittle wrappers and hardcoded toolchains. A developer stitches together a workflow on a platform and prays that things keep working&#8212;new platform/tool equals new integration. Every integration is bespoke. Every workflow is fragile.</p><p>This doesn&#8217;t scale. Not in terms of engineering effort. Not in terms of reliability. And certainly not in terms of reasoning.</p><p>What we need isn&#8217;t more platforms with custom integrations. </p><p>What we need is <strong>protocol thinking</strong>.</p><p>Just as HTTP standardized how browsers fetch and render content, the AI ecosystem needs a protocol to standardize how agents access tools, data, and workflows. That&#8217;s where the <strong>Model Context Protocol (MCP)</strong> comes in.</p><p>MCP is not a product. It&#8217;s not a dev tool. It&#8217;s a design shift. A shared grammar for agent-to-environment interaction.</p><p>This article is Part 1 of a two-part series exploring MCP from the perspective of someone seriously unpacking its potential. I won&#8217;t give you a hello world or an SDK demo. Instead, I&#8217;ll walk you through the ideas, primitives, and strategic consequences of thinking protocol-first.</p><p>In Part 2, we&#8217;ll dive into design insights, security risks, and what protocol-native systems might look like in the wild.</p><p>If you&#8217;re building in the agent space, MCP might be the most important thing you haven&#8217;t looked at yet.</p><p>Let&#8217;s fix that.</p><div><hr></div><h1>Section 2: What Is MCP, Really?</h1><p>At its core, the Model Context Protocol (MCP) is an **open standard** for how LLMs interact with the outside world.</p><p>It&#8217;s not a new interface for humans. It&#8217;s a grammar for <strong>AI-to-environment interaction</strong>&#8212;focused on enabling models to reason, plan, and act.</p><p>Here&#8217;s how it works:</p><p>MCP operates on a client-server model. The <strong>AI agent (client)</strong> initiates a task and communicates with one or more <strong>MCP servers</strong>, each of which exposes specific capabilities. These capabilities come in three distinct forms:</p><p>1. <strong>Tools</strong> &#8211; executable functions. Think `search_web`, `trigger_build`, `create_task`, `send_email`. These are the verbs&#8212;the actions the agent can take.</p><p>2. <strong>Resources</strong> &#8211; structured context. Think of these as data the model can query, summarize, reason over. Logs, documents, search results, configs, memory.</p><p>3. <strong>Prompts</strong> &#8211; templated workflows. These are starting points: &#8220;summarize this conversation,&#8221; &#8220;set up a CI pipeline,&#8221; &#8220;craft an outreach email.&#8221;</p><p>The power of MCP isn&#8217;t just in what it enables, but *how* it enables it: each tool or resource comes with a <strong>semantic description</strong> written in natural language. That means the model can reason about what&#8217;s available, dynamically.</p><p>This makes MCP a <strong>model-facing protocol</strong>. It&#8217;s designed not just for interop between software components, but for <strong>semantic discoverability</strong> by language models.</p><p>And that&#8217;s what sets it apart from frameworks like REST or GraphQL: those are made for developers. MCP is made for agents.</p><p>Next, let&#8217;s look at why this model-first design unlocks a new scale of integration.</p><div><hr></div><h1>Section 3: The Strategic Payoff &#8212; Solving the M&#215;N Problem</h1><p>Let&#8217;s say you have 5 AI clients&#8212;maybe a chatbot, an IDE agent, a calendar assistant, a customer support bot, and a testing assistant.</p><p>Now imagine you want to connect them to 10 different tools: Jira, Gmail, Jenkins, Salesforce, Notion, GitHub, Slack, Stripe, Zoom, and your internal API gateway.</p><p>Without a shared protocol, you&#8217;re looking at a 5 &#215; 10 matrix of one-off integrations. That&#8217;s 50 glue-code pipelines to maintain. Fifty different ways to break. Fifty reasons for your team to hate their life.</p><p>This is the <strong>M&#215;N integration problem</strong>. Every new model or tool multiplies the integration cost.</p><p>MCP collapses that problem.</p><ul><li><p>Tools implement the protocol once.</p></li><li><p>Clients speak the protocol once.</p></li><li><p>Integration cost becomes <strong>M + N</strong>, not M &#215; N.</p><p></p></li></ul><p>This is what makes MCP more than just convenient. It&#8217;s <strong>infrastructure leverage</strong>. The kind you build ecosystems on top of.</p><p>When people say, &#8220;MCP is like USB-C for AI,&#8221; this is what they&#8217;re getting at: a single standardized interface that lets everything plug into everything else&#8212;securely, semantically, and scalably.</p><p>This is what protocol-native foundations look like.</p><p>And it opens up new design space entirely.</p><p>Next up: what this looks like in practice.</p><div><hr></div><h1>Section 4: Designing with MCP &#8212; A Gmail Agent Sketch</h1><p>Let&#8217;s say you&#8217;re building an AI assistant that helps manage your Gmail inbox: triaging emails, replying to common threads, and pulling in relevant docs.</p><p>Here&#8217;s what exposing Gmail via MCP might look like:</p><ul><li><p><strong>Tools</strong> `send_email`, `reply_to_thread`, `archive_message`, `search_inbox`</p></li><li><p><strong>Resources</strong> full message content, thread history, email metadata</p></li><li><p><strong>Prompts</strong> &#8220;summarize this thread,&#8221; &#8220;compose a polite follow-up,&#8221; &#8220;respond with a calendar link&#8221;</p></li></ul><p>Now the agent doesn&#8217;t need hardcoded API calls. It can dynamically:</p><ul><li><p>Discover capabilities</p></li><li><p>Reason over semantic tool descriptions</p></li><li><p>Invoke actions through the shared grammar of MCP</p></li></ul><p>This is what makes the design <strong>protocol-native</strong>.</p><p>Instead of embedding business logic in your orchestration layer, you externalize capability <strong>semantically</strong>. The agent orchestrates based on intent and environment&#8212;not brittle flows.</p><p>Even more interesting: multiple agents (say, a sales agent and an exec assistant) could share access to the same Gmail MCP server, yet interact with it entirely differently&#8212;based on their role, memory, and task.</p><p>This kind of decoupling is a hallmark of protocol-native infrastructure.</p>]]></content:encoded></item><item><title><![CDATA[I built a Micro-SaaS Frontend in Hours using an AI-Native Stack]]></title><description><![CDATA[Prototyping has changed in the AI-era &#8212; and it&#8217;s never going back.]]></description><link>https://newsletter.harpreet.io/p/i-built-a-micro-saas-frontend-in</link><guid isPermaLink="false">https://newsletter.harpreet.io/p/i-built-a-micro-saas-frontend-in</guid><dc:creator><![CDATA[Harpreet Singh]]></dc:creator><pubDate>Fri, 18 Apr 2025 19:44:34 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Joyd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40189d33-4e0e-40bb-b2d3-9d2b842d612f_868x1199.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>&#129504; What does an AI-native developer stack </strong><em><strong>actually</strong></em><strong> look like in practice?</strong></p><p>To find out, I gave myself a constraint: build and deploy a functional Micro-SaaS frontend in just a few hours.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Joyd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40189d33-4e0e-40bb-b2d3-9d2b842d612f_868x1199.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Joyd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40189d33-4e0e-40bb-b2d3-9d2b842d612f_868x1199.png 424w, https://substackcdn.com/image/fetch/$s_!Joyd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40189d33-4e0e-40bb-b2d3-9d2b842d612f_868x1199.png 848w, https://substackcdn.com/image/fetch/$s_!Joyd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40189d33-4e0e-40bb-b2d3-9d2b842d612f_868x1199.png 1272w, https://substackcdn.com/image/fetch/$s_!Joyd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40189d33-4e0e-40bb-b2d3-9d2b842d612f_868x1199.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Joyd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40189d33-4e0e-40bb-b2d3-9d2b842d612f_868x1199.png" width="868" height="1199" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/40189d33-4e0e-40bb-b2d3-9d2b842d612f_868x1199.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1199,&quot;width&quot;:868,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:223283,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://aientrepreneurship.substack.com/i/161632796?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40189d33-4e0e-40bb-b2d3-9d2b842d612f_868x1199.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Joyd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40189d33-4e0e-40bb-b2d3-9d2b842d612f_868x1199.png 424w, https://substackcdn.com/image/fetch/$s_!Joyd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40189d33-4e0e-40bb-b2d3-9d2b842d612f_868x1199.png 848w, https://substackcdn.com/image/fetch/$s_!Joyd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40189d33-4e0e-40bb-b2d3-9d2b842d612f_868x1199.png 1272w, https://substackcdn.com/image/fetch/$s_!Joyd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40189d33-4e0e-40bb-b2d3-9d2b842d612f_868x1199.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><br>No manual coding, no custom backend &#8212; just AI-powered tools and smart integrations. The goal? Move from idea to live site using tools that streamline every layer &#8212; from UI to auth to deployment. </p><p>I used the following <a href="https://www.youtube.com/watch?v=B-sUaOF2MIc">youtube tutorial</a> to go through the experience. I must say, I was skeptical of the claim of producing an app in 19 minutes (it wasn&#8217;t), and the app is not exactly a MicroSaaS but front-end landing page&#8212;I was still happy with what I accomplished in the few hours.</p><p>&#128073; In this post, I&#8217;ll walk you through how I built it, with links to the source code, deployed app, and the actual UI.</p><div><hr></div><h3>&#128736;&#65039; The AI-Native Stack I Used &#8211; Cursor, v0.dev, Vercel, and Clerk</h3><p><strong>This was my stack: AI in the driver's seat, with just enough structure to ship fast.</strong></p><ul><li><p>I used <strong>Cursor</strong> as my AI-powered code editor &#8212; it let me edit, generate, and debug code directly in the IDE with contextual AI help.</p></li><li><p>For the UI, I turned to <strong>v0.dev</strong>, which generated Tailwind-based components from simple prompts like "generate a pricing section."</p></li><li><p><strong>Clerk</strong> made user authentication effortless, and <strong>Vercel</strong> handled deployment with a GitHub link and one click.</p></li></ul><p><br>I had no experience with any of these tools &#8212; except Vercel &#8212; but AI-native tooling made the rest feel seamless and near-effortless.</p><div><hr></div><h3>&#127912; Building the UI Without Writing Code (v0.dev + Tailwind + Next.js)</h3><p><strong>The fact that I went from zero Next.js experience to a fully functioning landing page in hours blew my mind.</strong></p><ul><li><p>With just a few prompts, <strong>v0.dev</strong> gave me clean Tailwind-based UI sections for the hero, features, pricing, and login &#8212; no manual coding.</p></li><li><p>It felt like magic: describe what you want &#8594; get code that works, with a visual preview so you&#8217;re not guessing.</p></li><li><p>I&#8217;ve built frontends before, but they took days &#8212; this was fast, focused, and Figma-free.</p></li></ul><p><br>It&#8217;s not perfect yet though: v0.dev still generated Shadcn components despite me explicitly asking for only Tailwind.</p><div><hr></div><h3>&#129489;&#8205;&#128187; Using Cursor as a Co-Pilot to Write Code</h3><p><strong>Working with a freshly generated prototype codebase inside Cursor felt surprisingly natural &#8212; like I&#8217;d been using it for years.</strong></p><ul><li><p>Chatting to generate or modify code felt intuitive, and most of the time, Cursor got the changes right on the first try.</p></li><li><p>It really shines when cleaning up messy AI output &#8212; refactoring imports, fixing styles, or restructuring components was fast and fluid.</p></li><li><p>My aha moment? I asked, <em>&#8220;v0 generated Shadcn components instead of Tailwind, can you undo all the changes we&#8217;ve applied so far&#8221;</em> &#8212; and it rolled everything back with one command.</p><div><hr></div><h3>&#128272; Adding Auth with Clerk</h3></li></ul><p><strong>Getting auth working in the </strong><em><strong>first</strong></em><strong> version of a prototype felt borderline insane.</strong></p><ul><li><p>Authentication is usually something I push to the end &#8212; it&#8217;s messy, time-consuming, and easy to get wrong. </p></li><li><p>But with <strong>Clerk</strong>, I had Google login, sign-up, and profile management working in minutes, all with just one CLI command.</p></li><li><p>The drop-in UI looked great out of the box, and I didn&#8217;t write a single backend route.</p></li></ul><p><br>This wasn&#8217;t just auth &#8212; it was production-ready auth from day one.</p><div><hr></div><h3>&#128640; Deploying with Vercel</h3><p><strong>Deploying with Vercel was the most anticlimactic part &#8212; and I mean that in the best way possible.</strong><br></p><ul><li><p>I pushed my code to GitHub, connected the repo on Vercel, added a few environment variables, and hit deploy.</p></li><li><p>No config files, no Docker, no weird build errors &#8212; just a live site in seconds.</p></li><li><p>It felt like publishing a doc, not deploying an app.<br></p><p>This is what shipping should feel like.</p></li></ul><div><hr></div><h3>&#129694; Final Reflection</h3><p><strong>This experience completely shifted how I think about building protoypes.</strong><br>Getting prototypes working used to be slow, messy, and full of compromises.<br>Now, with AI-native tools, not only is the <em>first version</em> easier to build &#8212; but iterating on it is shockingly fast too.<br>It&#8217;s hard to imagine doing this kind of work without AI in the loop anymore.<br>We&#8217;ve crossed a threshold &#8212; and there&#8217;s no going back.</p><div><hr></div><h3>&#128279; Explore the Build</h3><p>&#128187; <strong><a href="https://github.com/harpreetsingh/microsaasNextJSClerk-Apr-2025">View the Source Code</a></strong><br>&#127760; <strong><a href="https://vercel.com/harpreetsinghs-projects/microsaas-next-js-clerk-apr-2025">Live App on Vercel</a></strong></p>]]></content:encoded></item><item><title><![CDATA[How I got interested in Artificial Intelligence]]></title><description><![CDATA[My journey into building a AI-Native company]]></description><link>https://newsletter.harpreet.io/p/how-i-got-interested-in-artificial-498</link><guid isPermaLink="false">https://newsletter.harpreet.io/p/how-i-got-interested-in-artificial-498</guid><dc:creator><![CDATA[Harpreet Singh]]></dc:creator><pubDate>Tue, 15 Apr 2025 00:52:22 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1572803090936-72796aef96a2?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxzd2l0emVybGFuZCUyMHRyYWlufGVufDB8fHx8MTc0NDY3ODMyNXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1572803090936-72796aef96a2?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxzd2l0emVybGFuZCUyMHRyYWlufGVufDB8fHx8MTc0NDY3ODMyNXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1572803090936-72796aef96a2?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxzd2l0emVybGFuZCUyMHRyYWlufGVufDB8fHx8MTc0NDY3ODMyNXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1572803090936-72796aef96a2?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxzd2l0emVybGFuZCUyMHRyYWlufGVufDB8fHx8MTc0NDY3ODMyNXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1572803090936-72796aef96a2?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxzd2l0emVybGFuZCUyMHRyYWlufGVufDB8fHx8MTc0NDY3ODMyNXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1572803090936-72796aef96a2?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxzd2l0emVybGFuZCUyMHRyYWlufGVufDB8fHx8MTc0NDY3ODMyNXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1572803090936-72796aef96a2?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxzd2l0emVybGFuZCUyMHRyYWlufGVufDB8fHx8MTc0NDY3ODMyNXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080" width="7547" height="5026" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1572803090936-72796aef96a2?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxzd2l0emVybGFuZCUyMHRyYWlufGVufDB8fHx8MTc0NDY3ODMyNXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:5026,&quot;width&quot;:7547,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;red and white train near trees during daytime&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="red and white train near trees during daytime" title="red and white train near trees during daytime" srcset="https://images.unsplash.com/photo-1572803090936-72796aef96a2?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxzd2l0emVybGFuZCUyMHRyYWlufGVufDB8fHx8MTc0NDY3ODMyNXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1572803090936-72796aef96a2?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxzd2l0emVybGFuZCUyMHRyYWlufGVufDB8fHx8MTc0NDY3ODMyNXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1572803090936-72796aef96a2?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxzd2l0emVybGFuZCUyMHRyYWlufGVufDB8fHx8MTc0NDY3ODMyNXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1572803090936-72796aef96a2?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxzd2l0emVybGFuZCUyMHRyYWlufGVufDB8fHx8MTc0NDY3ODMyNXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="true">Jacques Bopp</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p></p><p>I would not call myself an expert in Artificial Intelligence, but my journey in this area spans a longer time frame than most.</p><h1><strong>Early days: Undergraduate Program in Pune, India</strong></h1><p>In 1995, when I was in the third year of my Computer Engineering program at <a href="https://pict.edu/">Pune Institute of Computer Technology</a>, we had the option of choosing an elective for our final year.</p><p>Thanks for reading Product and Flow! Subscribe for free to receive new posts and support my work.</p><p>Artificial Intelligence was one of the electives.</p><p>I have always been a forward-leaning person regarding technology adoption, and I picked the coursework because it sounded &#8220;sexier&#8221; than compilers :-).</p><p>Although I was somewhat disappointed by the state of the art, the promise that computers <strong>would magically do grunt work for humans fascinated me.</strong></p><h1><strong>Master&#8217;s program or how I almost didn&#8217;t land in the US because of AI?</strong></h1><p>When the opportunity to do a Master's in CS presented itself, I picked the University of Cincinnati, where <a href="https://researchdirectory.uc.edu/p/bhatnark">Professor Raj Bhatnagar</a> specialized in Data Mining, Pattern Recognition, and AI.</p><p>The year was 1998, and India had just concluded the Pokhran nuclear tests. The sounds of sanctions were in the air. When he heard that I wanted to specialize in AI, the US visa officer told me to return home because he needed time to decide (while he kept my passport with him!!!).</p><p>The visa officer was thinking about the implications of AI x Nuclear Tests!</p><p>I was in limbo for two months before my visa was granted. It was a somewhat stressful period.</p><p>Once in Cincinnati, I took a few AI courses, but now it is too far back in time to remember what they were. I remember writing some trees for homework more than any classical ML pattern recognition work. Prolog, for writing programs that made decisions, was interesting enough but too slow to do anything useful, and I was at a crossroads because I was in complete love with Java.</p><h1><strong>AI and ethics: Implications of AI being used in war</strong></h1><p>When the opportunity to pick a master's project came up, I found myself walking into a program for a neighboring Air Force base&#8212;this was a military-focused AI research project.</p><p>The military aspect made me pause, and I thought deeply and hard about the implications of AI for war (and thought a lot about the visa officer :-) ).</p><p>I chose to explore projects with commercial rather than military aspects, so I switched out of the ML lane and landed on a Data Mining project.</p><p>The project was fascinating as I wrote Agents (IBM had a technology called <a href="https://en.wikipedia.org/wiki/Aglets_(software)">Aglets</a>) in which a computer agent would go into different environments) to answer specific questions.</p><p>The chosen environments were representative of DMV data and health data (I forget the specific database), and the questions were like, &#8220;Do cigarette smokers have a higher propensity to land in accidents?&#8221;</p><p>The intent with the different environments was that neither DMV nor Health data would be publicly available, but you had negotiated restricted and partial access to data in those environments.</p><p>The biggest challenge was getting to any database of a reasonable size to do anything interesting.</p><p>I also remember lecturing in a student body venue about how AI could be used to answer web search queries, book tickets, or build travel itineraries, removing humans from the loop and the gruntwork.</p><p>After graduating in 2000, I found that there were really no jobs in AI or Machine Learning, and frankly, the Java division of Sun Microsystems was an epic place to land.</p><p>From here on, I lost touch with the field.</p><h1><strong>Reengaging with AI and planting the seeds of Launchable</strong></h1><p>About 16 years later, I started the <a href="https://www.udacity.com/course/deep-learning-nanodegree--nd101">Deep Learning Nanodegree coursework on Udacity</a>. I worked on it for six months and did enough assignments to get my feet wet. However, I couldn&#8217;t finish the final project because of work pressure and, candidly, because my programming skills had rusted away. Thus, I needed way more time to complete the assignments than I could allocate.</p><p>I loved the course and concluded that AI had advanced far enough that the underlying technologies would be game-changers.</p><p>I started looking for opportunities to use the technology in the workplace but was way ahead of the adoption curve.</p><p>Eventually, I decided that rather than convince people to incorporate AI into the products at the companies I work for, I would build an AI/ML company because it was less of an uphill battle.</p><p>I wanted to build the next generation of companies, and that was the birth of <a href="http://launchableinc.com/">Launchable</a>.</p><p>Though I haven&#8217;t been involved in the coding side of the house, I have enough practical experience building a company and running marketing and sales for a company that is selling an AI solution. This is active &#8220;AI Product Management&#8221; work, which seems to be the new buzzword.</p><p>Lately, I have delved deeper into the tech side of the ML space and have been reading <a href="https://www.amazon.com/Hands-Machine-Learning-Scikit-Learn-TensorFlow/dp/1492032646">Hands-on ML</a> by O&#8217;Reilly.</p><p>Over the next few months, I intend to explore the LLM space more deeply. I picked the <a href="https://learn.activeloop.ai/courses/langchain">ActiveLoop Langchain</a> course last year and plan to revisit it because I parked it aside as I decided to delve deeper into the fundamentals of ML.</p><p>The end goal remains the same as when I first got into AI in my undergrad program: Incorporating AI into products to remove the grunt work from humans.</p>]]></content:encoded></item><item><title><![CDATA[1 Tip I would give Product Managers who want to get started working in Artificial Intelligence]]></title><description><![CDATA[So you are a PM and you want to started working in Artificial Intelligence?]]></description><link>https://newsletter.harpreet.io/p/1-tip-i-would-give-product-managers</link><guid isPermaLink="false">https://newsletter.harpreet.io/p/1-tip-i-would-give-product-managers</guid><dc:creator><![CDATA[Harpreet Singh]]></dc:creator><pubDate>Tue, 15 Apr 2025 00:50:56 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1619468129361-605ebea04b44?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxwaW4lMjBtYXB8ZW58MHx8fHwxNzQ0Njc4MjI1fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1619468129361-605ebea04b44?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxwaW4lMjBtYXB8ZW58MHx8fHwxNzQ0Njc4MjI1fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1619468129361-605ebea04b44?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxwaW4lMjBtYXB8ZW58MHx8fHwxNzQ0Njc4MjI1fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1619468129361-605ebea04b44?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxwaW4lMjBtYXB8ZW58MHx8fHwxNzQ0Njc4MjI1fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1619468129361-605ebea04b44?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxwaW4lMjBtYXB8ZW58MHx8fHwxNzQ0Njc4MjI1fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1619468129361-605ebea04b44?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxwaW4lMjBtYXB8ZW58MHx8fHwxNzQ0Njc4MjI1fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1619468129361-605ebea04b44?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxwaW4lMjBtYXB8ZW58MHx8fHwxNzQ0Njc4MjI1fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080" width="5200" height="3466" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1619468129361-605ebea04b44?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxwaW4lMjBtYXB8ZW58MHx8fHwxNzQ0Njc4MjI1fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:3466,&quot;width&quot;:5200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;person holding red round medication pill&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="person holding red round medication pill" title="person holding red round medication pill" srcset="https://images.unsplash.com/photo-1619468129361-605ebea04b44?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxwaW4lMjBtYXB8ZW58MHx8fHwxNzQ0Njc4MjI1fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1619468129361-605ebea04b44?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxwaW4lMjBtYXB8ZW58MHx8fHwxNzQ0Njc4MjI1fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1619468129361-605ebea04b44?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxwaW4lMjBtYXB8ZW58MHx8fHwxNzQ0Njc4MjI1fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1619468129361-605ebea04b44?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwyfHxwaW4lMjBtYXB8ZW58MHx8fHwxNzQ0Njc4MjI1fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="true">GeoJango Maps</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p></p><p>So you are a PM and you want to started working in Artificial Intelligence?</p><p>I have been working in AI for the last 5 years now. As a background, I started my company because my hypothesis was (5 years ago) was that &#8220;AI is the imminent future&#8221; and I was annoyed that the adoption of the technology wasn&#8217;t happening fast enough. Rather than wait for others to do something here, I decided to &#8220;be the change you seek,&#8221; and started a company in my domain.</p><p>The good news today is, you don&#8217;t need to go through my route to start working in AI. You can&#8217;t escape the damn thing (AI) today :-) and there are plenty of opportunities around&#8230;</p><p>So what I can tell you (from experience) is that in order to work as a successful Product Manager in/using AI, you need to first be a solid Product Manager, specifically in the following three areas:</p><ul><li><p><strong>Domain expertise</strong>: An absolute grasp on your domain and the problem space. So that you can ask the question &#8221;Does the problem space lend itself to AI and in what ways?&#8221;</p></li><li><p><strong>Audience</strong>: their behaviors, their propensity to adopt new technologies specifically AI. So that you can ask the question &#8220;How should you introduce AI in the problem space? Should you be incremental or disruptive?&#8221;</p></li><li><p><strong>PM craft</strong>: ability to tradeoff the transient value versus long term value&#8212;because if you look around today, everybody is sprinkling AI and building features/companies that aren&#8217;t defensible. (Plus, the first two bullet points can only work well if your craft is strong.)</p></li></ul><p>So, here's the 1 tip I would give you if you wanted to be in AI.</p><p>Side note: I know that there is a mad-rush at the moment to get into AI as if it is a &#8220;scarce commodity.&#8221; It isn&#8217;t! We have entered a new era of computing and one that will remain with us just as the &#8220;internet&#8221; or &#8220;desktops&#8221; became the norm when they were introduced.</p><p>Thus, over a period of time, every PM will be introducing AI to their products.</p><p>So you need to &#8220;slow down so that you can speed up.&#8221;</p><p><strong>Get a grasp of the landscape and fundamentals of AI/ML</strong></p><p>Step back for a few months, catch up on the fundamentals, map out the landscape where you will be playing in. Build the basic body of fundamentals so that you can sit with your engineering counterparts and understand why certain tradeoffs will be made.</p><p>While you build the understanding of the landscape, ask yourself where in the existing product can you bring in the technology and how would it make the lives of your audience better. If you find a compelling use-case, go through the usual PM route to introduce that as a feature for your audience</p>]]></content:encoded></item><item><title><![CDATA[The single most important lesson I've learned from hundreds of sales calls selling a B2B AI solution for developers and QA]]></title><description><![CDATA[They want to understand what's inside the blackbox]]></description><link>https://newsletter.harpreet.io/p/the-single-most-important-lesson</link><guid isPermaLink="false">https://newsletter.harpreet.io/p/the-single-most-important-lesson</guid><dc:creator><![CDATA[Harpreet Singh]]></dc:creator><pubDate>Tue, 15 Apr 2025 00:49:15 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1471958680802-1345a694ba6d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw1fHxyb2FkfGVufDB8fHx8MTc0NDY1MjE4OXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1471958680802-1345a694ba6d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw1fHxyb2FkfGVufDB8fHx8MTc0NDY1MjE4OXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1471958680802-1345a694ba6d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw1fHxyb2FkfGVufDB8fHx8MTc0NDY1MjE4OXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1471958680802-1345a694ba6d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw1fHxyb2FkfGVufDB8fHx8MTc0NDY1MjE4OXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1471958680802-1345a694ba6d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw1fHxyb2FkfGVufDB8fHx8MTc0NDY1MjE4OXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1471958680802-1345a694ba6d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw1fHxyb2FkfGVufDB8fHx8MTc0NDY1MjE4OXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1471958680802-1345a694ba6d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw1fHxyb2FkfGVufDB8fHx8MTc0NDY1MjE4OXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080" width="3000" height="1803" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1471958680802-1345a694ba6d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw1fHxyb2FkfGVufDB8fHx8MTc0NDY1MjE4OXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1803,&quot;width&quot;:3000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;asphalt road between trees&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="asphalt road between trees" title="asphalt road between trees" srcset="https://images.unsplash.com/photo-1471958680802-1345a694ba6d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw1fHxyb2FkfGVufDB8fHx8MTc0NDY1MjE4OXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1471958680802-1345a694ba6d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw1fHxyb2FkfGVufDB8fHx8MTc0NDY1MjE4OXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1471958680802-1345a694ba6d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw1fHxyb2FkfGVufDB8fHx8MTc0NDY1MjE4OXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1471958680802-1345a694ba6d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHw1fHxyb2FkfGVufDB8fHx8MTc0NDY1MjE4OXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="true">Matt Foxx</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p></p><p>Not all lessons are created equal.</p><p>Some lessons we learn are small. They are little reminders along the way of what truly matters. Other lessons are giant. They fundamentally change the course of our entire lives.</p><p>Over the past 5 years as an entrepreneur building a B2B AI company for software engineers and quality professionals, this is the single most important lesson I've learned about selling an AI solution to engineers. (I am the co-CEO and co-founder of LaunchableInc, an AI/ML company for software engineers and software QA in the DevOps arena)</p><p><strong>Engineers want to understand what&#8217;s in the AI black box.</strong></p><p>What makes an engineer an engineer is their inherent curiosity to see how things are put together. They want to understand the individual Lego blocks so that they can put them together.</p><p>However, diving deep is a dual-edged sword. And here's why.</p><p>AI is greenfield; most engineers haven&#8217;t learned it in engineering school. Everybody is picking things up today.</p><p>Thus, they tend to get lost if you dive deep and don&#8217;t have the mental model. Losing engineers on the sales call is especially true if you are with multiple engineers with different backgrounds and skill levels.</p><p>It becomes death by a thousand cuts.</p><p>On the other hand, if you shield them entirely, you come across as a &#8220;marketing&#8221; person and lose credibility.</p><p><strong>So what&#8217;s the solution?</strong></p><p>There is a Goldilocks zone. There are edges of a road that you draw for them so that they can traverse the path to you.</p><p><strong>Explain your solution using non-AI terms </strong>I have learned that the correct pitch is to help people build a mental model and apply their understanding to an existing framework so they can go back and explain what you do to their colleagues.</p><p><strong>Help them evaluate your solutions efficacy </strong>The second has to help them explain and evaluate the efficacy of the underlying model.</p><p>AI brings a new paradigm; people must understand that you likely cannot explain individual decisions, but you must assess the model statistically. I have found the statistical underpinnings weak and consequently prove to be a big challenge with development teams.</p><p>There you have it. If you are in sales or product marketing, you need to figure out how to draw these two edges of the road so that prospects can walk the path to you.</p>]]></content:encoded></item><item><title><![CDATA[3 Core Lego Blocks When Learning AI]]></title><description><![CDATA[These lego blocks show over and over through multiple AI algorithms]]></description><link>https://newsletter.harpreet.io/p/3-core-lego-blocks-when-learning</link><guid isPermaLink="false">https://newsletter.harpreet.io/p/3-core-lego-blocks-when-learning</guid><dc:creator><![CDATA[Harpreet Singh]]></dc:creator><pubDate>Tue, 15 Apr 2025 00:47:27 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1631106254201-ffbee2305c5b?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxOHx8bGVnb3xlbnwwfHx8fDE3NDQ1NzY0NzZ8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1631106254201-ffbee2305c5b?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxOHx8bGVnb3xlbnwwfHx8fDE3NDQ1NzY0NzZ8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1631106254201-ffbee2305c5b?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxOHx8bGVnb3xlbnwwfHx8fDE3NDQ1NzY0NzZ8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1631106254201-ffbee2305c5b?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxOHx8bGVnb3xlbnwwfHx8fDE3NDQ1NzY0NzZ8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1631106254201-ffbee2305c5b?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxOHx8bGVnb3xlbnwwfHx8fDE3NDQ1NzY0NzZ8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1631106254201-ffbee2305c5b?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxOHx8bGVnb3xlbnwwfHx8fDE3NDQ1NzY0NzZ8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1631106254201-ffbee2305c5b?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxOHx8bGVnb3xlbnwwfHx8fDE3NDQ1NzY0NzZ8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080" width="6000" height="4000" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1631106254201-ffbee2305c5b?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxOHx8bGVnb3xlbnwwfHx8fDE3NDQ1NzY0NzZ8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:4000,&quot;width&quot;:6000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;blue red yellow and green lego blocks&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="blue red yellow and green lego blocks" title="blue red yellow and green lego blocks" srcset="https://images.unsplash.com/photo-1631106254201-ffbee2305c5b?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxOHx8bGVnb3xlbnwwfHx8fDE3NDQ1NzY0NzZ8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1631106254201-ffbee2305c5b?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxOHx8bGVnb3xlbnwwfHx8fDE3NDQ1NzY0NzZ8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1631106254201-ffbee2305c5b?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxOHx8bGVnb3xlbnwwfHx8fDE3NDQ1NzY0NzZ8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1631106254201-ffbee2305c5b?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwxOHx8bGVnb3xlbnwwfHx8fDE3NDQ1NzY0NzZ8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=1080 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="true">Mourizal Zativa</a> on <a href="https://unsplash.com">Unsplash</a></figcaption></figure></div><p></p><p>You will encounter a considerable learning curve as you start learning AI.</p><p>The landscape is far and wide. Most books and articles start with linear regression. While easy to learn and use, I found that some individual building blocks appear in approach after approach.</p><p>If you understand these Lego blocks, subsequent reading happens much faster.</p><ul><li><p><strong>Cost or Error Functions</strong> are mathematical functions used to measure the difference between a model's predicted values and the actual value of the data. They help assess the model's performance and guide the optimization process to improve accuracy.</p></li><li><p><strong>Gradient Descent</strong> is a core algorithm used to get to an optimized solution. It is an iterative approach that works on getting to the minimum value of the cost function. Rather, it finds the best way to get to the parameters required for the ML algorithm to do its job well.</p></li><li><p><strong>Hyperparameters</strong> are parameters not learned from the data but set before the training begins. They govern the training process and influence the model's performance. A standard set of parameters and tuning approaches appears in algorithm after algorithm.</p><p>Thanks for reading Journey through AI: Learning and building intuition in AI! Subscribe for free to receive new posts and support my work.</p><p><strong>Subscribed</strong></p></li></ul><p>For anyone in the industry, this stuff is common knowledge._ But to those who haven't lived "a day in the life" in AI, you discover the Lego blocks after reading multiple ML algorithms.</p><p>Lock these concepts in as soon as possible, and they will make the rest of the reading easier.</p>]]></content:encoded></item></channel></rss>