<?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 AI Craft]]></title><description><![CDATA[Building meaningful products with AI takes taste, rigor, and a real point of view. I write about all three, for the builders doing the work.]]></description><link>https://pmdata.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!RnhE!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3554c19b-c837-4565-8300-436de75c540c_211x211.png</url><title>The AI Craft</title><link>https://pmdata.substack.com</link></image><generator>Substack</generator><lastBuildDate>Thu, 05 Nov 2026 05:07:42 GMT</lastBuildDate><atom:link href="iframe.php?url=https%3A%2F%2Fpmdata.substack.com%2Ffeed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Luke Lin]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[pmdata@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[pmdata@substack.com]]></itunes:email><itunes:name><![CDATA[Luke Lin]]></itunes:name></itunes:owner><itunes:author><![CDATA[Luke Lin]]></itunes:author><googleplay:owner><![CDATA[pmdata@substack.com]]></googleplay:owner><googleplay:email><![CDATA[pmdata@substack.com]]></googleplay:email><googleplay:author><![CDATA[Luke Lin]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[The state of deployed agents]]></title><description><![CDATA[A dizzying array of new agent options for on-demand work]]></description><link>https://pmdata.substack.com/p/the-state-of-deployed-agents</link><guid isPermaLink="false">https://pmdata.substack.com/p/the-state-of-deployed-agents</guid><dc:creator><![CDATA[Luke Lin]]></dc:creator><pubDate>Tue, 03 Nov 2026 15:45:30 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21JlVV%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F7b30f3f1-266f-4045-992a-6fdb5ce1af56_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>There&#8217;s been a lot of activity in deployed agents over the last few months. Now that Claude Duet has finally joined the party, we can take a step back and look at what the landscape is like.</p><h2>What&#8217;s launched?</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21JlVV%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F7b30f3f1-266f-4045-992a-6fdb5ce1af56_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JlVV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b30f3f1-266f-4045-992a-6fdb5ce1af56_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!JlVV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b30f3f1-266f-4045-992a-6fdb5ce1af56_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!JlVV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b30f3f1-266f-4045-992a-6fdb5ce1af56_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!JlVV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b30f3f1-266f-4045-992a-6fdb5ce1af56_1672x941.png 1456w" sizes="100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21JlVV%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F7b30f3f1-266f-4045-992a-6fdb5ce1af56_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7b30f3f1-266f-4045-992a-6fdb5ce1af56_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&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_!JlVV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b30f3f1-266f-4045-992a-6fdb5ce1af56_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!JlVV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b30f3f1-266f-4045-992a-6fdb5ce1af56_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!JlVV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b30f3f1-266f-4045-992a-6fdb5ce1af56_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!JlVV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b30f3f1-266f-4045-992a-6fdb5ce1af56_1672x941.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><ul><li><p><strong>Viktor</strong> closed its Series A for an enterprise deployed agent in Slack (May 19, 2026). It&#8217;s a user-friendly option that doesn&#8217;t lock you into a frontier model.</p></li><li><p><strong>Grok Bot</strong> from xAI launched in early beta (August 11, 2026).</p></li><li><p><strong>Instinct</strong> went viral and raised $350M in August 2026 [August 2026].</p></li><li><p><strong>Muse</strong> from Meta launched (September 8, 2026).</p></li><li><p><strong>Dots</strong> from OpenAI launched at DevDay (September 29, 2026).</p></li><li><p><strong>Claude Duet</strong> from Anthropic launched as a research preview (October 21, 2026).</p></li></ul><p>It&#8217;s crazy to think that it was just February of this year when OpenClaw went viral. And 6 months later, we&#8217;re seeing a whole array of polished agents that have productized the OpenClaw promise.</p><h2>The agents, one by one</h2><p>All of these new agent products offer the promise of quick time-to-value for less technical users, where they can get set up with a proactive and always-on agent within a few minutes.</p><p>That said, there are some nuances around their target users and core use cases, as you&#8217;re contemplating which one to try out:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21Pjso%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fe3b9527a-ea89-4c10-a18d-83c9942ed5b4_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Pjso!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3b9527a-ea89-4c10-a18d-83c9942ed5b4_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!Pjso!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3b9527a-ea89-4c10-a18d-83c9942ed5b4_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!Pjso!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3b9527a-ea89-4c10-a18d-83c9942ed5b4_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!Pjso!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3b9527a-ea89-4c10-a18d-83c9942ed5b4_1672x941.png 1456w" sizes="100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21Pjso%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fe3b9527a-ea89-4c10-a18d-83c9942ed5b4_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e3b9527a-ea89-4c10-a18d-83c9942ed5b4_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!Pjso!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3b9527a-ea89-4c10-a18d-83c9942ed5b4_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!Pjso!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3b9527a-ea89-4c10-a18d-83c9942ed5b4_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!Pjso!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3b9527a-ea89-4c10-a18d-83c9942ed5b4_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!Pjso!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3b9527a-ea89-4c10-a18d-83c9942ed5b4_1672x941.png 1456w" sizes="100vw"></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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><h3><strong>Viktor</strong> </h3><p>An AI coworker that lives inside a company&#8217;s Slack or Microsoft Teams workspace. It&#8217;s built for teams and organizations, not individuals.</p><p>This agent handles team requests in shared channels like pulling reports and summarizing meetings. It keeps a memory of how the org works, and reviews channels to suggest workflows it could take over.</p><p>On the flip side its usage-based credits get expensive, with some teams reportedly spending more than they would on a junior hire.</p><h3><strong>Grok Bot</strong></h3><p>xAI calls its agents &#8220;teammates.&#8221; They sign in to a company&#8217;s software and work through multi-step tasks until they need sign-off, running on cloud virtual machines.</p><p>Several bots can work together in a group chat, (Google Workspace, Slack, Microsoft 365, Salesforce, GitHub and Jira) and pause for approval before they send, publish, buy or delete.</p><p>This is more like a high-powered agent team that is meant to handle more complex work, rather than an earnest assistant that lives in slack.</p><h3><strong>Instinct</strong></h3><p>A personal assistant you text or call over SMS or WhatsApp. It connects to your email, messages and calendar, and early testers are founders, investors and tech figures.</p><p>It&#8217;s good at errands: travel booking, restaurant reservations, rides, inbox cleanup, shopping and follow-up emails. It now has its own email address, so it can sign up for services and start returns.</p><p>Instinct feels more like a consumer&#8217;s everyday agent to help with daily personal tasks, not complex enterprise workflows.</p><h3><strong>Muse</strong></h3><p>Meta&#8217;s personal agent runs on its own cloud machine and lives in the Muse app or WhatsApp. Meta pitches it to everyday people with &#8220;no technical experience.</p><p>It sends emails, books travel, fills forms, turns a goal into a plan and keeps working after you close the app, and makes suggestions unprompted from what it remembers about you.</p><p>This one feels similar to instinct, but is obviously integrated with the Meta family of products, which can be convenient, but gives lots of users pause given how Meta handles sensitive data.</p><h3><strong>OpenAI Dots</strong></h3><p>OpenAI&#8217;s always-on agents live inside ChatGPT, each with its own cloud computer and browser. They&#8217;re for ChatGPT Pro and Business Premium subscribers, and you can reach them from Slack and Teams.</p><p>They run goals continuously in the background, like monitoring customer feedback and shipping fixes or rerunning an analysis as new data lands, and they carry your preferences and ongoing work from day to day.</p><p>In reality, it feels like an always on and more easily configured codex session.</p><h3><strong>Claude Duet</strong></h3><p>Anthropic&#8217;s research-preview app where Claude works as a proactive agent. It&#8217;s for professionals and small business owners, starting with a waitlist for US Pro and Max subscribers as of late October.</p><p>Anthropic leads with a daily brief across your connected apps, alerts only when something needs attention, and does work like scheduling, dashboards, forecasts and prototypes across your 3rd party apps.</p><p>This product also feels like the next evolution of Claude Code / Cowork - an always on and more proactive version of them.</p><h2>What does this wave of launches tell us?</h2><p>These agents are markedly different from the previous generation of agent builder tools, like Dust and n8n, which required a more hands-on approach to building agents.</p><p>They also don&#8217;t scratch the itch for people who need a highly configured agent deployed in code, like what Eve from Vercel enables.</p><p>But looking at these agents tells us some important trends about agent adoption in the workplace and with consumers.</p><ol><li><p><strong>Lowering the configuration bar is how we bring agents to the everyday user.</strong> Before this, anyone who wanted a customized, deployed agent had to deploy it with OpenClaw or Hermes (or Bobi, our harness).<br><br>That took advanced technical ability and deep AI expertise: building and deploying MCPs, designing and orchestrating skill files, adding workflows where necessary, and handling memory.<br><br>Most of these new agents are a point-and-click setup that gets you working with the agent in 5 minutes or less. You configure the agent by talking to it, with no custom technical work.<br></p></li><li><p><strong>There&#8217;s something to be said about how these agents are built: to be proactive.</strong> In working with several of them, I connected them to my Gmail, calendar and other tools.<br><br>Unprompted, they&#8217;d let me know about important emails, meetings and changes. They also searched through my Linear board on their own to find work for themselves.<br><br>Again, this is very helpful for the everyday, easy use case. It will help the masses adopt agents a little better.<br></p></li><li><p><strong>A deployed, always-on agent monitors things for you. </strong>It can let you know when an important email lands, rather than scanning your inbox on a schedule at 8am every day.<br><br>In the previous generation of agents, you had to ask the agent to do check things or schedule a job to run every several hours.<br><br>These agents will let you know the moment something important happens, like an email or ticket or support request. This is a huge shift for how we can work with agents that makes them feel more like true assistants.</p></li></ol><h2>What&#8217;s the downside?</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%212g8v%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F81f7c72e-d49c-408a-a216-2b16fba24e2d_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2g8v!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81f7c72e-d49c-408a-a216-2b16fba24e2d_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!2g8v!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81f7c72e-d49c-408a-a216-2b16fba24e2d_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!2g8v!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81f7c72e-d49c-408a-a216-2b16fba24e2d_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!2g8v!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81f7c72e-d49c-408a-a216-2b16fba24e2d_1672x941.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%212g8v%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F81f7c72e-d49c-408a-a216-2b16fba24e2d_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/81f7c72e-d49c-408a-a216-2b16fba24e2d_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!2g8v!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81f7c72e-d49c-408a-a216-2b16fba24e2d_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!2g8v!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81f7c72e-d49c-408a-a216-2b16fba24e2d_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!2g8v!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81f7c72e-d49c-408a-a216-2b16fba24e2d_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!2g8v!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81f7c72e-d49c-408a-a216-2b16fba24e2d_1672x941.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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>These agents do a broad range of tasks decently well, and they&#8217;re easy to set up. But the depth of their work is very limited. They aren&#8217;t very thorough, and they don&#8217;t handle complex work well.</p><p>They&#8217;re like proactive EAs, either for your personal life (Muse, Instinct) or your work life (Viktor, Duet, Dots). They aren&#8217;t exactly disciplined specialists that you can deeply trust, yet. </p><p>What users have posted in their experiences so far:</p><div class="callout-block" data-callout="true"><p>&#8220;I would say it does forget things sometimes; it glosses over or assumes things that are quite important.&#8221;</p><p><em>Viktor reviewer Sk A. on G2, quoted in Lindy&#8217;s Viktor review (updated August 26, 2026)</em></p></div><p></p><div class="callout-block" data-callout="true"><p>&#8220;Last night, it was a little naughty and sent an innocuous email on my behalf without checking with me first.&#8221;</p><p><em>Katie Jacobs Stanton on Instinct, on X (August 22, 2026), via TechCrunch</em></p></div><p></p><div class="callout-block" data-callout="true"><p>&#8220;It thought I had a personal WordPress blog, and that was really company-related information. Fine, AI gets things wrong. The bigger issue was that I could not easily figure out how to correct that specific thing.&#8221;</p><p><em>Taylor Arndt on Muse, in her Substack review (September 21, 2026)</em></p></div><h2>Is it worth getting on these trains?</h2><p>If you don&#8217;t already work with a deployed agent, it&#8217;s practically free to start using one of these if you already have a plan with a frontier lab. A personal always-on agent should be immensely helpful for &#8220;EA&#8221; style tasks: managing calendars and inboxes, summaries, and simple overhead work.</p><p><strong>But do you need a more specialized workflow done?</strong></p><p>Such as engineering work, marketing creative work, in-depth data analysis, or drafting proposals?</p><p>Basically, anything requiring precision and specificity, where a generic draft isn&#8217;t good enough. If so, you&#8217;ll probably want to orchestrate that work through a well-designed skill and some golden examples.</p><p>It&#8217;s not worth your time to have a generalized untrained intern handle your specialized work.</p><p><strong>The thing to be careful about: note how much time you spend correcting the agent over and over again.</strong></p><p>This is where the AI magic becomes an AI burden, and you have to continuously monitor and babysit the agent. They can be forgetful and suffer from invisible context rot, which turns them from a hyper-intelligent EA into a bumbling intern.</p><h2>My prediction for what&#8217;s next</h2><p>In the next 6 months, these deployed agents will get better and better, and they&#8217;ll take on more of the specialized workflows with less of the meticulous design.</p><blockquote><p>The trick, and this is where the defensible IP in agent design lives, is a system that blends general best practices for specific tasks, so the agent doesn&#8217;t have to learn the work from scratch, with the inputs from users. It has to tell apart memories about the user and their preferences from input that belongs in the skill files about how to get the work done well.</p></blockquote><p>Getting the agent to speak colloquially and adjust its own design over time is not an easy feat. It&#8217;s harder than &#8220;throwing an LLM into a harness.&#8221; Believe me, I&#8217;ve tried.</p><p>We&#8217;re going to see agents adopted widely in consumer and enterprise spaces, and a lot of the busy work will get easier. We may also end up with a lot more noise, like generic Slack updates, tickets that don&#8217;t mean anything, and restaurants fielding reservation calls from an army of personal AI agents, and in 2027 we&#8217;ll be reckoning with the secondary effects of the great agent proliferation.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://pmdata.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The AI Craft! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[How I fixed the way Claude talks]]></title><description><![CDATA[Backwards engineering my agent using OpenAI&#8217;s dots]]></description><link>https://pmdata.substack.com/p/how-i-fixed-the-way-claude-talks</link><guid isPermaLink="false">https://pmdata.substack.com/p/how-i-fixed-the-way-claude-talks</guid><dc:creator><![CDATA[Luke Lin]]></dc:creator><pubDate>Tue, 27 Oct 2026 18:13:33 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21ps6F%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fe88e09bc-5808-48b1-9d7e-26e5f85a5302_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I engineered a way to make Claude more comprehensible. The result:</p><ul><li><p>I read a lot more of its messages to me. I&#8217;d started ignoring a lot of them.</p></li><li><p>I can sift through the noise and get to the signal.</p></li><li><p>I get more work done.</p></li></ul><p>It started with a product manager agent. I built it on Bobi, our agent harness, with Claude as the core model. The first time I used it, it was so verbose and noisy that the output was near impossible to read.</p><p>I&#8217;m not the only one hitting this. In August, an r/ClaudeCode thread titled &#8220;Opus 5 is insufferable&#8221; drew 903 upvotes and 246 comments in nine hours, according to The Daily Claude newsletter.</p><p>The complaints were about simple things explained &#8220;at doctoral length&#8221; and &#8220;hype-sentence preambles before a single shell command.&#8221;</p><p>After several iterations, I closed that gap by building examples from one of the newer agents out there, OpenAI&#8217;s Dot. Instead of relying only on OpenAI&#8217;s closed-source agent, I was able to engineer my open-source agent to work a lot better.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21ps6F%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fe88e09bc-5808-48b1-9d7e-26e5f85a5302_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ps6F!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe88e09bc-5808-48b1-9d7e-26e5f85a5302_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!ps6F!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe88e09bc-5808-48b1-9d7e-26e5f85a5302_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!ps6F!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe88e09bc-5808-48b1-9d7e-26e5f85a5302_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!ps6F!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe88e09bc-5808-48b1-9d7e-26e5f85a5302_1672x941.png 1456w" sizes="100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21ps6F%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fe88e09bc-5808-48b1-9d7e-26e5f85a5302_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e88e09bc-5808-48b1-9d7e-26e5f85a5302_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&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_!ps6F!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe88e09bc-5808-48b1-9d7e-26e5f85a5302_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!ps6F!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe88e09bc-5808-48b1-9d7e-26e5f85a5302_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!ps6F!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe88e09bc-5808-48b1-9d7e-26e5f85a5302_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!ps6F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe88e09bc-5808-48b1-9d7e-26e5f85a5302_1672x941.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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>The saga with my PM team agent</h2><p><strong>Where it started: the first PM team.</strong> See the screenshot below. A standup with no content, a long list of bullet points, and a gigantic wall of text. Look familiar? This is the default you get from Claude.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%219AkG%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F64ad1488-6ece-4416-8b89-5cf27fb23b36_1146x741.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9AkG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64ad1488-6ece-4416-8b89-5cf27fb23b36_1146x741.png 424w, https://substackcdn.com/image/fetch/$s_!9AkG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64ad1488-6ece-4416-8b89-5cf27fb23b36_1146x741.png 848w, https://substackcdn.com/image/fetch/$s_!9AkG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64ad1488-6ece-4416-8b89-5cf27fb23b36_1146x741.png 1272w, https://substackcdn.com/image/fetch/$s_!9AkG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64ad1488-6ece-4416-8b89-5cf27fb23b36_1146x741.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%219AkG%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F64ad1488-6ece-4416-8b89-5cf27fb23b36_1146x741.png" width="1146" height="741" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/64ad1488-6ece-4416-8b89-5cf27fb23b36_1146x741.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:741,&quot;width&quot;:1146,&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;: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="" srcset="https://substackcdn.com/image/fetch/$s_!9AkG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64ad1488-6ece-4416-8b89-5cf27fb23b36_1146x741.png 424w, https://substackcdn.com/image/fetch/$s_!9AkG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64ad1488-6ece-4416-8b89-5cf27fb23b36_1146x741.png 848w, https://substackcdn.com/image/fetch/$s_!9AkG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64ad1488-6ece-4416-8b89-5cf27fb23b36_1146x741.png 1272w, https://substackcdn.com/image/fetch/$s_!9AkG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64ad1488-6ece-4416-8b89-5cf27fb23b36_1146x741.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><strong>Version 2: some improvements.</strong> With some prompt tuning, we got tables with summaries and a tighter list of tickets. But it came with little context and wasn&#8217;t particularly useful.</p><p>It still required me to stay on top of everything and remember all the ticket numbers.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21GNR_%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fdd2fe4c9-d788-41b2-a1ca-062dbff847d5_1134x644.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GNR_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd2fe4c9-d788-41b2-a1ca-062dbff847d5_1134x644.png 424w, https://substackcdn.com/image/fetch/$s_!GNR_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd2fe4c9-d788-41b2-a1ca-062dbff847d5_1134x644.png 848w, https://substackcdn.com/image/fetch/$s_!GNR_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd2fe4c9-d788-41b2-a1ca-062dbff847d5_1134x644.png 1272w, https://substackcdn.com/image/fetch/$s_!GNR_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd2fe4c9-d788-41b2-a1ca-062dbff847d5_1134x644.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21GNR_%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fdd2fe4c9-d788-41b2-a1ca-062dbff847d5_1134x644.png" width="1134" height="644" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dd2fe4c9-d788-41b2-a1ca-062dbff847d5_1134x644.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:644,&quot;width&quot;:1134,&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;: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="" srcset="https://substackcdn.com/image/fetch/$s_!GNR_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd2fe4c9-d788-41b2-a1ca-062dbff847d5_1134x644.png 424w, https://substackcdn.com/image/fetch/$s_!GNR_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd2fe4c9-d788-41b2-a1ca-062dbff847d5_1134x644.png 848w, https://substackcdn.com/image/fetch/$s_!GNR_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd2fe4c9-d788-41b2-a1ca-062dbff847d5_1134x644.png 1272w, https://substackcdn.com/image/fetch/$s_!GNR_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd2fe4c9-d788-41b2-a1ca-062dbff847d5_1134x644.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><strong>OpenAI&#8217;s Dot: one shot.</strong> I gave Dot the same standup job with very little tuning or prompt guidance, and its first iteration was significantly better. It provided a short, useful summary of what&#8217;s going on. Its table grouped related tickets together, showed more nuance about what moved, and embedded links naturally.</p><p>The &#8220;needs attention&#8221; section was to the point and pinpointed who needed to do what.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21susQ%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fcb4c3099-f0f8-4492-8aad-9b300db086f5_1161x645.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!susQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb4c3099-f0f8-4492-8aad-9b300db086f5_1161x645.png 424w, https://substackcdn.com/image/fetch/$s_!susQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb4c3099-f0f8-4492-8aad-9b300db086f5_1161x645.png 848w, https://substackcdn.com/image/fetch/$s_!susQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb4c3099-f0f8-4492-8aad-9b300db086f5_1161x645.png 1272w, https://substackcdn.com/image/fetch/$s_!susQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb4c3099-f0f8-4492-8aad-9b300db086f5_1161x645.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21susQ%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fcb4c3099-f0f8-4492-8aad-9b300db086f5_1161x645.png" width="1161" height="645" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cb4c3099-f0f8-4492-8aad-9b300db086f5_1161x645.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:645,&quot;width&quot;:1161,&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;: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="" srcset="https://substackcdn.com/image/fetch/$s_!susQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb4c3099-f0f8-4492-8aad-9b300db086f5_1161x645.png 424w, https://substackcdn.com/image/fetch/$s_!susQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb4c3099-f0f8-4492-8aad-9b300db086f5_1161x645.png 848w, https://substackcdn.com/image/fetch/$s_!susQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb4c3099-f0f8-4492-8aad-9b300db086f5_1161x645.png 1272w, https://substackcdn.com/image/fetch/$s_!susQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb4c3099-f0f8-4492-8aad-9b300db086f5_1161x645.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><strong>Version 3: tuned off Dot.</strong> The result was very similar to Dot&#8217;s, with a golden example leading the way: a model output the agent is told to match.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%219xh5%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fa1b84b27-d3bd-48e8-8051-6577af066536_1135x448.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9xh5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1b84b27-d3bd-48e8-8051-6577af066536_1135x448.png 424w, https://substackcdn.com/image/fetch/$s_!9xh5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1b84b27-d3bd-48e8-8051-6577af066536_1135x448.png 848w, https://substackcdn.com/image/fetch/$s_!9xh5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1b84b27-d3bd-48e8-8051-6577af066536_1135x448.png 1272w, https://substackcdn.com/image/fetch/$s_!9xh5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1b84b27-d3bd-48e8-8051-6577af066536_1135x448.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%219xh5%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fa1b84b27-d3bd-48e8-8051-6577af066536_1135x448.png" width="1135" height="448" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a1b84b27-d3bd-48e8-8051-6577af066536_1135x448.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:448,&quot;width&quot;:1135,&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;: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="" srcset="https://substackcdn.com/image/fetch/$s_!9xh5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1b84b27-d3bd-48e8-8051-6577af066536_1135x448.png 424w, https://substackcdn.com/image/fetch/$s_!9xh5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1b84b27-d3bd-48e8-8051-6577af066536_1135x448.png 848w, https://substackcdn.com/image/fetch/$s_!9xh5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1b84b27-d3bd-48e8-8051-6577af066536_1135x448.png 1272w, https://substackcdn.com/image/fetch/$s_!9xh5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1b84b27-d3bd-48e8-8051-6577af066536_1135x448.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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>How I made the improvement</h2><p>I&#8217;d been iterating on the PM agent&#8217;s instructions and even wrote some golden examples of my own. Nothing was as good as using another LLM&#8217;s output.</p><p>The main thing I learned here was that sometimes you look outside your own walls and see the output another well-funded AI company has already built. Then you iterate your own implementation to match what they&#8217;ve done.</p><p>Here&#8217;s what I ended up using as the communication instructions in my agents.MD file. Feel free to steal it.</p><p><strong>Communicate to make understanding and decisions easier.</strong></p><ul><li><p>Investigate thoroughly, then lead with the answer and what matters most to the reader&#8217;s goal. Explain why it matters. Distinguish what needs attention now from what can wait.</p></li><li><p>Make the explanation stand on its own. Translate technical terms, internal statuses, and identifiers into their practical meaning. Links support the explanation; they do not replace it.</p></li><li><p>Use the fewest words that preserve understanding. Prefer short, coherent paragraphs, and use lists or tables when they make the information easier to grasp. Avoid walls of text, repetition, and process narration.</p></li><li><p>When judgment is needed, give a recommendation with its reasoning and consequential tradeoffs. Distinguish observed facts from inferences. Do not fill missing context with plausible assumptions, including assumptions that nothing is wrong or nobody is affected.</p></li><li><p>Carry earlier decisions and deferrals forward. Revisit them only when relevant circumstances change.</p></li><li><p>Before sending, read from the recipient&#8217;s perspective: can they understand the main point, see what matters most and why, and know whether anything is needed from them without decoding jargon or reconstructing the investigation?</p></li></ul><p>This is a comprehension standard, not a word limit or a mandatory answer template.</p><h2>Where I&#8217;ll go from here</h2><p>I&#8217;m setting this as the communication default for all of my agents that run on Claude. I&#8217;m hoping, and expecting, it will greatly reduce the jargon that lacks context and the walls of text that make me gloss over, and greatly improve how productively I work with all of my deployed agents.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://pmdata.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The AI Craft! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Why software factories are not enough]]></title><description><![CDATA[Top AI companies aren&#8217;t building software factories. They&#8217;re building product factories.]]></description><link>https://pmdata.substack.com/p/why-software-factories-are-not-enough</link><guid isPermaLink="false">https://pmdata.substack.com/p/why-software-factories-are-not-enough</guid><dc:creator><![CDATA[Luke Lin]]></dc:creator><pubDate>Tue, 13 Oct 2026 14:10:14 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21hQjC%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F1379d20e-1a12-45c0-a334-53b4d0ae0086_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The hot topic of 2026 is software factories: the ability to ship code at unprecedented speed. Almost every organization I know is striving to build theirs, and the numbers back it up.</p><p><a href="iframe.php?url=https%3A%2F%2Fcursor.com%2Fblog%2Fagent-swarm-model-economics">Cursor&#8217;s agent swarm</a> now peaks at around 1,000 commits a second, up from roughly 1,000 commits an hour when it built a web browser earlier this year.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://pmdata.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The AI Craft! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>At <a href="iframe.php?url=https%3A%2F%2Fwww.uber.com%2Fus%2Fen%2Fblog%2Fefficient-software-factory%2F">Uber</a>, more than 70% of pull requests are attributed to local or cloud agents, and weekly agentic requests grew 9.4x between February and August.</p><p>Sounds great right? Until the board asks the most important question:</p><p>What&#8217;s the revenue impact from your software factory?</p><p>Atlassian&#8217;s <a href="iframe.php?url=https%3A%2F%2Fwww.atlassian.com%2Fblog%2Fstate-of-teams-2026">State of Teams 2026</a> surveyed 173 Fortune 1000 executives: 89% say AI increases speed, and only 6% are sure they have clear examples of organization-wide AI ROI.</p><p>So, where&#8217;s the gap?</p><blockquote><p><strong>Your customers aren&#8217;t asking for more software. They need something to solve their problems. And products solve problems, not software.</strong></p></blockquote><p>Pendo&#8217;s <a href="iframe.php?url=https%3A%2F%2Fwww.pendo.io%2Fresources%2Fthe-2019-feature-adoption-report%2F">2019 Feature Adoption Report</a>, drawn from usage across 615 of its customers&#8217; products, found that 80% of features in the average software product are rarely or never used.</p><p>So, there&#8217;s still a gap between pumping out software and shipping things that customers love. It&#8217;s not new or novel, it&#8217;s simply good product management.</p><p>But product focus is the missing seat in the agentic engineering conversation.</p><blockquote><p>To graduate to the next level of AI-native work, companies need processes to build, deploy, and iterate on <strong>products</strong> faster, not just software. They need to close the feedback loop with their users to figure out what solves their problems.</p></blockquote><p>The companies that build this capability, going beyond the software factory, are the ones that will discover what works, productize it, and iterate their way to a moat other companies can&#8217;t replicate.</p><p>Product factories are how AI native companies can build long term differentiation.</p><h2>How does a product factory differ?</h2><p>Most software factories focus purely on the engineering workflow: getting clear technical requirements, then going through the SDLC of build, review, test, and deploy.</p><p>The factory scales the engineering workflow with swarms of agents that can parallelize work 24/7, even while people sleep.</p><blockquote><p>A product factory goes further. It connects the software getting built with the surrounding context and efforts in a business, so the acceleration is cross-functional.</p><p>More importantly, a product factory speeds up the time to customer validation, helping teams identify what&#8217;s going to move their business, not simply ship more software.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21hQjC%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F1379d20e-1a12-45c0-a334-53b4d0ae0086_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hQjC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1379d20e-1a12-45c0-a334-53b4d0ae0086_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!hQjC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1379d20e-1a12-45c0-a334-53b4d0ae0086_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!hQjC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1379d20e-1a12-45c0-a334-53b4d0ae0086_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!hQjC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1379d20e-1a12-45c0-a334-53b4d0ae0086_1672x941.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21hQjC%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F1379d20e-1a12-45c0-a334-53b4d0ae0086_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1379d20e-1a12-45c0-a334-53b4d0ae0086_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&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;: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="" srcset="https://substackcdn.com/image/fetch/$s_!hQjC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1379d20e-1a12-45c0-a334-53b4d0ae0086_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!hQjC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1379d20e-1a12-45c0-a334-53b4d0ae0086_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!hQjC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1379d20e-1a12-45c0-a334-53b4d0ae0086_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!hQjC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1379d20e-1a12-45c0-a334-53b4d0ae0086_1672x941.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><h3>Bringing in product</h3><p>The first step is connecting the software work with product context.</p><p>It starts with the PRD that clearly articulates the problem to be solved, why it matters, and the use cases to prioritize. Without this, the agent will guess, and you&#8217;ll ship a mediocre feature.</p><p>This sounds obvious, but I&#8217;ve noticed that many product engineering teams go straight into building without spending enough time clarifying the problem and documenting it.</p><p>Using Fable and Astra reveals this need even more. The top frontier models perform better with context on why, not with detailed instructions on how.</p><p>Anthropic&#8217;s <a href="iframe.php?url=https%3A%2F%2Fplatform.claude.com%2Fdocs%2Fen%2Fbuild-with-claude%2Fprompt-engineering%2Fclaude-prompting-best-practices">own prompting guide</a> says: &#8220;Providing context or motivation behind your instructions&#8230; can help Claude deliver more targeted responses.&#8221; You give these models the problem to be solved and the context around it, not a bare to-do list.</p><blockquote><p>For Moda, we have a PM agent that drafts PRDs to cover all these bases, and it talks with the engineering agents via CLI so that the PRDs are optimized for downstream tech designs.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21cVky%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fb5fb02d0-8698-4ff8-a602-b7e305645ac0_1200x660.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cVky!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5fb02d0-8698-4ff8-a602-b7e305645ac0_1200x660.png 424w, https://substackcdn.com/image/fetch/$s_!cVky!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5fb02d0-8698-4ff8-a602-b7e305645ac0_1200x660.png 848w, https://substackcdn.com/image/fetch/$s_!cVky!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5fb02d0-8698-4ff8-a602-b7e305645ac0_1200x660.png 1272w, https://substackcdn.com/image/fetch/$s_!cVky!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5fb02d0-8698-4ff8-a602-b7e305645ac0_1200x660.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21cVky%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fb5fb02d0-8698-4ff8-a602-b7e305645ac0_1200x660.png" width="1200" height="660" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b5fb02d0-8698-4ff8-a602-b7e305645ac0_1200x660.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:660,&quot;width&quot;:1200,&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;: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="" srcset="https://substackcdn.com/image/fetch/$s_!cVky!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5fb02d0-8698-4ff8-a602-b7e305645ac0_1200x660.png 424w, https://substackcdn.com/image/fetch/$s_!cVky!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5fb02d0-8698-4ff8-a602-b7e305645ac0_1200x660.png 848w, https://substackcdn.com/image/fetch/$s_!cVky!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5fb02d0-8698-4ff8-a602-b7e305645ac0_1200x660.png 1272w, https://substackcdn.com/image/fetch/$s_!cVky!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5fb02d0-8698-4ff8-a602-b7e305645ac0_1200x660.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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">Example of how we generate agentic PRDs</figcaption></figure></div><p>It&#8217;s not just about a PRD-writing agent in isolation, but we need a teammate for the engineering agent so that the two can collaborate and build in sync with each other.</p><p>And it doesn&#8217;t stop with PRDs.</p><blockquote><p>As your team builds more products, generates more PRDs, and makes real decisions about the product, that context needs to get captured.</p><p><strong>This critical context is your product principles. It&#8217;s what drives your best PM&#8217;s decision making.</strong></p><p><strong>These principles span products, and they reflect how your organization makes decisions and weighs tradeoffs.</strong></p><p>Codifying them and giving them to your agents creates the feedback loop: each subsequent PRD matches your company&#8217;s principles more closely, and the product factory&#8217;s loop gets shorter, requiring less review and human override.</p></blockquote><h3>Bringing in design and data</h3><p>Beyond the PM function, the product factory also needs to pull in design and data to keep features aligned as they continue shipping.</p><blockquote><p>A design agent must weigh in with perspective on the company brand, visual identity, usability, and use of common components. Like the product principles, the design principles dictate what&#8217;s important from a UX perspective and drive consistency across features.</p></blockquote><p>I&#8217;ve seen this firsthand building <a href="iframe.php?url=https%3A%2F%2Fbaohua.app%2F">Baohua</a>, a bilingual family storytelling service for Chinese American families.</p><p>When I don&#8217;t have my design agent weigh in, the engineering agent creates new patterns it doesn&#8217;t need and strays from our visual language.</p><p>That leaves me, the human, diligently catching all these errors and correcting them. Or worse, I miss one on a review, and we&#8217;ve started shipping features with design issues.</p><blockquote><p>For data, there needs to be a feedback loop that captures whether the feature is delivering.</p><p>This part of the factory covers everything from instrumentation to data normalization, and eventually to analysis and reporting. It&#8217;s how you find out whether a new feature is solving a problem or joining the 80% nobody uses, and what it learns becomes input to the next PRD.</p></blockquote><h3>The key is codifying the HOW and the WHY</h3><p>Take a step back from the software factory, and two things jump out for agent-first work: writing down both <em>how the job gets done</em> and <em>why we make certain decisions</em>.</p><p>The agent definition, its workflows, and the flows for generating artifacts (PRDs, designs, analyses, etc)... that&#8217;s how the job gets done. Most teams are doing a variation of this today with their agent MD and skills files.</p><p>The principles for decision-making are the why, and they&#8217;re the crux of every company brain right now.</p><p>The hard part is creating and maintaining a clean file that articulates how each department evaluates tradeoffs and makes decisions. the product principles behind every PRD, the design system and visual language, what engineering design excellence looks like.</p><p>Implementing these principles alongside the agent definitions is what lets the factory scale.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21DGe4%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F326d4a08-20fb-4d49-9fbe-27e9d5545a23_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DGe4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F326d4a08-20fb-4d49-9fbe-27e9d5545a23_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!DGe4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F326d4a08-20fb-4d49-9fbe-27e9d5545a23_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!DGe4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F326d4a08-20fb-4d49-9fbe-27e9d5545a23_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!DGe4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F326d4a08-20fb-4d49-9fbe-27e9d5545a23_1672x941.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21DGe4%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F326d4a08-20fb-4d49-9fbe-27e9d5545a23_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/326d4a08-20fb-4d49-9fbe-27e9d5545a23_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&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;: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="" srcset="https://substackcdn.com/image/fetch/$s_!DGe4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F326d4a08-20fb-4d49-9fbe-27e9d5545a23_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!DGe4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F326d4a08-20fb-4d49-9fbe-27e9d5545a23_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!DGe4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F326d4a08-20fb-4d49-9fbe-27e9d5545a23_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!DGe4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F326d4a08-20fb-4d49-9fbe-27e9d5545a23_1672x941.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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>Where to start</h2><p>Product factories take us to the next level of AI-native building.</p><p>It goes beyond engineers, PMs, and designers using coding harnesses and Claude design on their local setups. It&#8217;s a coordinated effort across departments, using agents to update and maintain the critical sources of truth: your PRD, your design system, your tech design.</p><blockquote><p>Start with one bet.</p><p>Find your best AI teammates across functions, put them together on a new project, and get out of their way.</p><p>The goal of that first project is a win: one new AI opportunity built and validated, with the team using and refining the agentic systems that make it possible.</p><p>Try to ship and validate your bet within 90 days.</p></blockquote><p>From there, refine how your factory works. Improving the factory requires iterating on the agent design, but also your organizational processes - how you&#8217;re aligning on key designs, codifying principles, and updating them as you learn.</p><p>And make sure the team documents your principles, decisions, and learnings along the way. This is how the team builds its AI native capabilities that create long term differentiation.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://pmdata.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The AI Craft! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[How we shipped a full product in 8 weeks]]></title><description><![CDATA[Architecting a software factory with engineering best practices]]></description><link>https://pmdata.substack.com/p/how-we-shipped-a-full-product-in</link><guid isPermaLink="false">https://pmdata.substack.com/p/how-we-shipped-a-full-product-in</guid><dc:creator><![CDATA[Luke Lin]]></dc:creator><pubDate>Tue, 06 Oct 2026 15:09:18 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%211JKB%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F4d8a0fe7-245e-4dc7-b991-eca9881101c5_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In mid May, Moda&#8217;s venture studio made the first commit on a new product. By early July our first design partner was using it. That&#8217;s about 8 weeks, with one engineer and PM shipping a full product to an end user. Later, we brought on a 2nd engineer to accelerate the work.</p><blockquote><p>We wrote our engineering process down as skill files and deployed it as a shared engineering agent the whole team uses. Now, we ship quickly and confidently, knowing that we have all the checks in place to avoid slop and tech debt.</p></blockquote><h2>Before: individual setups and no shared definitions</h2><p>Before this project, each engineer on the team had their own Claude Code setup, with different skills and different workflows. Our agentic engineering best practices lived inside individual orchestrated sessions, with no standard on quality or process.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://pmdata.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The AI Craft! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>We saw increases in our team velocity, but we also noticed some meaningful limitations.</p><p><strong>Quality depended on the person.</strong> Output quality depended on who was at the keyboard, with their definitions of quality and what they thought was sufficient in terms of reviews and checks.</p><p><strong>Review bottlenecks from disparate processes.</strong> Because everyone had their own process, we noticed a bottleneck at the review stage, where we still had to enforce our level of rigor and quality before merging code.</p><p><strong>Limited PM involvement.</strong> Our PM (it me) could contribute code, but only for offline pieces like eval suites, where a mistake wouldn&#8217;t reach the user.</p><p>We had solid practices scattered across the team, but we hadn&#8217;t defined <em>the</em> agentic engineering practice we wanted to follow as a team. When we defined that as a shared skill, it allowed us to all work in a more coordinated way both from our terminals and from deployed agents.</p><h2>After: codified agentic engineering</h2><p>So we codified the team&#8217;s practices into two roles inside one shared agent: a planning role and a build role. Each one draws on a shared library of skill files and deterministic workflows, and picks from it depending on the job.</p><p><strong>Plan.</strong> The planning role goes through a deterministic process that produces a high quality technical design and implementation plan that the engineer can approve.</p><p>It researches the codebase, outlines the changes required to meet the spec from the engineer, hunts for edge cases, and writes a plan that&#8217;s both human readable and sufficiently detailed for implementation agents.</p><p>Every phase of the plan ends in a proof-of-work gate to eliminate hallucinations. Before approval, the plan is reviewed from several independent adversarial angles, before final human signoff.</p><p>At the end of the phase, we have a high quality design document checked into source.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%2165UG%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fb060f9ca-c679-40e5-bbb6-1cf537865354_1467x851.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!65UG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb060f9ca-c679-40e5-bbb6-1cf537865354_1467x851.png 424w, https://substackcdn.com/image/fetch/$s_!65UG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb060f9ca-c679-40e5-bbb6-1cf537865354_1467x851.png 848w, https://substackcdn.com/image/fetch/$s_!65UG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb060f9ca-c679-40e5-bbb6-1cf537865354_1467x851.png 1272w, https://substackcdn.com/image/fetch/$s_!65UG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb060f9ca-c679-40e5-bbb6-1cf537865354_1467x851.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%2165UG%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fb060f9ca-c679-40e5-bbb6-1cf537865354_1467x851.png" width="1456" height="845" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b060f9ca-c679-40e5-bbb6-1cf537865354_1467x851.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:845,&quot;width&quot;:1456,&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;: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="" srcset="https://substackcdn.com/image/fetch/$s_!65UG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb060f9ca-c679-40e5-bbb6-1cf537865354_1467x851.png 424w, https://substackcdn.com/image/fetch/$s_!65UG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb060f9ca-c679-40e5-bbb6-1cf537865354_1467x851.png 848w, https://substackcdn.com/image/fetch/$s_!65UG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb060f9ca-c679-40e5-bbb6-1cf537865354_1467x851.png 1272w, https://substackcdn.com/image/fetch/$s_!65UG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb060f9ca-c679-40e5-bbb6-1cf537865354_1467x851.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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">An example of how I plan new features with Baohua, using our skills</figcaption></figure></div><p><strong>Build.</strong> The build role takes the approved plan and goes through another deterministic process, mimicking the entire software development lifecycle, complete with checks and balances specifically designed to reduce the types of problem AI creates when coding.</p><ol><li><p><strong>Scope and design.</strong> Read the plan and restate the acceptance criteria. Any ambiguity gets resolved first, before code is written.<br></p></li><li><p><strong>Worktree and setup.</strong> Automatically branch from a fresh main into an isolated worktree. One unit of work gets one branch and one PR.<br></p></li><li><p><strong>Checklist and itemized breakdown.</strong> Break the work into a checklist and commit it before starting, so a session that dies loses the item it was on and keeps the rest.<br></p></li><li><p><strong>Implement and write code.</strong> Write code. Survey the touched code before editing it. For a bug, find the root cause and write the failing test first.<br></p></li><li><p><strong>Test the outputs.</strong> Run the unit tests suite and add tests for the new logic. Every suite must be green before the next stage starts.<br></p></li><li><p><strong>Verify the impact.</strong> Drive the affected flow in a browser end to end and observe the changed behavior directly. Record the flow for proof of work. <br></p></li><li><p><strong>Document the work.</strong> Update every doc to ensure there aren&#8217;t any stale references or out of date collisions, on the same branch and in the same PR.<br></p></li><li><p><strong>Complexity review.</strong> One of the most important steps. Review the changes and make sure the work did not add complexity unless it was absolutely necessary. <br></p></li><li><p><strong>Adversarial review.</strong> Standard adversarial code review from a high reasoning agent. Fix every blocking or major finding and re-run the affected tests.<br></p></li><li><p><strong>Land the PR.</strong> Open the pull request with the test evidence, the complexity verdict, and the review verdict attached. Resolve merge conflicts and CI issues automatically.</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21PVvw%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fdc027e8a-ef7d-4f34-a158-5ad4e6bedfb4_1425x649.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PVvw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc027e8a-ef7d-4f34-a158-5ad4e6bedfb4_1425x649.png 424w, https://substackcdn.com/image/fetch/$s_!PVvw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc027e8a-ef7d-4f34-a158-5ad4e6bedfb4_1425x649.png 848w, https://substackcdn.com/image/fetch/$s_!PVvw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc027e8a-ef7d-4f34-a158-5ad4e6bedfb4_1425x649.png 1272w, https://substackcdn.com/image/fetch/$s_!PVvw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc027e8a-ef7d-4f34-a158-5ad4e6bedfb4_1425x649.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21PVvw%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fdc027e8a-ef7d-4f34-a158-5ad4e6bedfb4_1425x649.png" width="1425" height="649" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dc027e8a-ef7d-4f34-a158-5ad4e6bedfb4_1425x649.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:649,&quot;width&quot;:1425,&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;: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="" srcset="https://substackcdn.com/image/fetch/$s_!PVvw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc027e8a-ef7d-4f34-a158-5ad4e6bedfb4_1425x649.png 424w, https://substackcdn.com/image/fetch/$s_!PVvw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc027e8a-ef7d-4f34-a158-5ad4e6bedfb4_1425x649.png 848w, https://substackcdn.com/image/fetch/$s_!PVvw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc027e8a-ef7d-4f34-a158-5ad4e6bedfb4_1425x649.png 1272w, https://substackcdn.com/image/fetch/$s_!PVvw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc027e8a-ef7d-4f34-a158-5ad4e6bedfb4_1425x649.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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">How I use build to quickly deliver features now, with Baohua</figcaption></figure></div><h2>How we use it</h2><p>These agent roles live in our moda-skills repo, where they feed both our deployed agents and as skills we can utilize in any terminal session.</p><p><strong>Planning in the terminal: </strong>We do most of our planning in the terminal so that we can have interactive discussions with high level reasoning agents.</p><p><strong>Building via deployed agents. </strong>We have a deployed engineering agent on <a href="iframe.php?url=https%3A%2F%2Fgithub.com%2Fmoda-labs%2Fbobi-agent">Bobi</a>, our open source framework for event-driven agents. The deployed agent picks up work in real-time via webhooks when we approve the design and it goes through the entire build process, resulting in a landed PR.</p><p>This allows us to plan features interactively, dispatch an autonomous agent to handle the engineering work, and come back to a PR that we can review and merge.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%211JKB%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F4d8a0fe7-245e-4dc7-b991-eca9881101c5_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1JKB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d8a0fe7-245e-4dc7-b991-eca9881101c5_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!1JKB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d8a0fe7-245e-4dc7-b991-eca9881101c5_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!1JKB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d8a0fe7-245e-4dc7-b991-eca9881101c5_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!1JKB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d8a0fe7-245e-4dc7-b991-eca9881101c5_1536x1024.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%211JKB%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F4d8a0fe7-245e-4dc7-b991-eca9881101c5_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4d8a0fe7-245e-4dc7-b991-eca9881101c5_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&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;: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="" srcset="https://substackcdn.com/image/fetch/$s_!1JKB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d8a0fe7-245e-4dc7-b991-eca9881101c5_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!1JKB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d8a0fe7-245e-4dc7-b991-eca9881101c5_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!1JKB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d8a0fe7-245e-4dc7-b991-eca9881101c5_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!1JKB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d8a0fe7-245e-4dc7-b991-eca9881101c5_1536x1024.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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>The impact</h2><p>Since we&#8217;ve started building like this, our product and engineering team has transformed how we get products built.</p><p><strong>Overall velocity went up.</strong> The team landed around 300 commits in the first month with just one engineer and PM, and we delivered a fully built product within 2 months to our first design partner. We&#8217;ve achieved velocity gains without losing out on quality.</p><p><strong>Our PM submits work.</strong> As the PM, I went from offline eval suites to shipping UI features and bug fixes end to end. This is because I&#8217;m now confident that the engineering agent I dispatch will go through the same rigor as my CTO&#8217;s agent.</p><p><strong>We manage engineering from Slack.</strong> We create issues, review them, and have an engineering agent do the work, and we manage all of it from Slack. We hand off work in a thread and the results get reported back in that thread. This lets us run and track several builds in parallel from one place.</p><p>Our CTO put it this way: </p><div class="pullquote"><p>Establishing our best practices as a common deployed agent allowed our entire team to contribute to the codebase with confidence that we weren&#8217;t shipping slop, but actually balancing velocity with quality.</p></div><h2>What&#8217;s next</h2><p>The product we built is in validation with its first user cohort, and we keep refining the planning and execution agents as new kinds of work appear.</p><p>Other projects, like Baohua, also build new features and manage the software using these same agent teams.</p><p>Today the system covers engineering. It picks up at an issue and ends at a pull request.</p><p>Next, we&#8217;ll connect it to the other parts of the product development process, like PRD management and design. We&#8217;re excited to see how this same paradigm scales beyond software factories into product factories.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://pmdata.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The AI Craft! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[I Took 3 Weeks Off From AI]]></title><description><![CDATA[Perspectives discovered after some time away]]></description><link>https://pmdata.substack.com/p/i-took-3-weeks-off-from-ai</link><guid isPermaLink="false">https://pmdata.substack.com/p/i-took-3-weeks-off-from-ai</guid><dc:creator><![CDATA[Luke Lin]]></dc:creator><pubDate>Tue, 15 Sep 2026 14:16:17 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21XjUi%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F0787f14c-90cd-4eb1-a54f-9506028cccf1_1480x1110.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><span>Three weeks ago I closed Claude and Codex and went to lead fifteen builders and artists on a project in the Nevada desert. We installed an art piece called </span><a href="iframe.php?url=https%3A%2F%2Fwww.instagram.com%2Fp%2FDdPHqEPM66I%2F"><span>Do Baskets Dream of Shores or Sea</span></a><span>, a Vietnamese seascape with 7 bamboo basket boats floating from shore to sea, held by a cacophony of lanterns.</span></p><p><span>It was pure magic, and it taught me more about leading a team than most quarters of managing engineers do - what it means bringing out the best in each person while keeping everyone coordinated toward one goal, with no ticket system and no Slack.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21z9Qw%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F78c90610-adcf-4e8c-82a2-d94595f6c3d5_1027x965.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!z9Qw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78c90610-adcf-4e8c-82a2-d94595f6c3d5_1027x965.png 424w, https://substackcdn.com/image/fetch/$s_!z9Qw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78c90610-adcf-4e8c-82a2-d94595f6c3d5_1027x965.png 848w, https://substackcdn.com/image/fetch/$s_!z9Qw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78c90610-adcf-4e8c-82a2-d94595f6c3d5_1027x965.png 1272w, https://substackcdn.com/image/fetch/$s_!z9Qw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78c90610-adcf-4e8c-82a2-d94595f6c3d5_1027x965.png 1456w" sizes="100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21z9Qw%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F78c90610-adcf-4e8c-82a2-d94595f6c3d5_1027x965.png" width="1027" height="965" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/78c90610-adcf-4e8c-82a2-d94595f6c3d5_1027x965.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:965,&quot;width&quot;:1027,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1132958,&quot;alt&quot;:&quot;&quot;,&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://pmdata.substack.com/i/215728775?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78c90610-adcf-4e8c-82a2-d94595f6c3d5_1027x965.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_!z9Qw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78c90610-adcf-4e8c-82a2-d94595f6c3d5_1027x965.png 424w, https://substackcdn.com/image/fetch/$s_!z9Qw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78c90610-adcf-4e8c-82a2-d94595f6c3d5_1027x965.png 848w, https://substackcdn.com/image/fetch/$s_!z9Qw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78c90610-adcf-4e8c-82a2-d94595f6c3d5_1027x965.png 1272w, https://substackcdn.com/image/fetch/$s_!z9Qw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78c90610-adcf-4e8c-82a2-d94595f6c3d5_1027x965.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21XjUi%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F0787f14c-90cd-4eb1-a54f-9506028cccf1_1480x1110.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XjUi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0787f14c-90cd-4eb1-a54f-9506028cccf1_1480x1110.png 424w, https://substackcdn.com/image/fetch/$s_!XjUi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0787f14c-90cd-4eb1-a54f-9506028cccf1_1480x1110.png 848w, https://substackcdn.com/image/fetch/$s_!XjUi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0787f14c-90cd-4eb1-a54f-9506028cccf1_1480x1110.png 1272w, https://substackcdn.com/image/fetch/$s_!XjUi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0787f14c-90cd-4eb1-a54f-9506028cccf1_1480x1110.png 1456w" sizes="100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21XjUi%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F0787f14c-90cd-4eb1-a54f-9506028cccf1_1480x1110.png" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0787f14c-90cd-4eb1-a54f-9506028cccf1_1480x1110.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&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;:false,&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_!XjUi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0787f14c-90cd-4eb1-a54f-9506028cccf1_1480x1110.png 424w, https://substackcdn.com/image/fetch/$s_!XjUi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0787f14c-90cd-4eb1-a54f-9506028cccf1_1480x1110.png 848w, https://substackcdn.com/image/fetch/$s_!XjUi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0787f14c-90cd-4eb1-a54f-9506028cccf1_1480x1110.png 1272w, https://substackcdn.com/image/fetch/$s_!XjUi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0787f14c-90cd-4eb1-a54f-9506028cccf1_1480x1110.png 1456w" sizes="100vw"></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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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">7 basket boats, 49 lanterns, and immersive sound to create a magical seascape</figcaption></figure></div><p>It also made me notice something else. All of my attention was going to the project at hand, not about the latest movement in AI or how to optimize my agents. Just a few weeks away from AI-maxxing and I&#8217;ve noticed a few shifts upon returning.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://pmdata.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The AI Craft! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><span>So what&#8217;s happened in just a few weeks?</span></h2><p><span>I got back the Tuesday after Labor Day, and the pace of what happened while I was gone took a minute to process.</span></p><p><span>Anthropic shipped </span><a href="iframe.php?url=https%3A%2F%2Fwww.anthropic.com%2Fclaude-fable-and-mythos-5-1"><span>Claude Fable 5.1 and Mythos 5.1 on September 1</span></a><span>, cutting the price of cache reads enough that Anthropic claims it lowers the effective cost of running long, agentic workloads by close to half.</span></p><p><span>OpenAI announced </span><a href="iframe.php?url=https%3A%2F%2Fwww.cnbc.com%2F2026%2F09%2F03%2Fopen-ai-astra-gpt-6-cyber.html"><span>GPT-6 Astra</span></a><span> on September 3, generally available the next day, calling it &#8220;the most intelligent and aligned model in the world,&#8221; with a million-token context window.</span></p><p><span>Then on September 8, </span><a href="iframe.php?url=https%3A%2F%2Fopenai.com%2Findex%2Fnavier-stokes-solution%2F"><span>OpenAI said an internal, unreleased model</span></a><span>, something more capable than Astra, had produced a solution to the Navier-Stokes equations, one of math&#8217;s seven Millennium Prize Problems.</span></p><p><span>It reportedly took something like 10,000 agents, 88 hours, and more than $40 million in compute. OpenAI isn&#8217;t claiming the prize, and nobody outside the company has independently verified the result yet. Whether or not it holds up, a lab attempting that, and announcing it, in the same week it shipped a flagship model tells you something about where the industry&#8217;s confidence sits right now.</span></p><p><span>Then, on the weekend I&#8217;m writing this, leaders at </span><a href="iframe.php?url=https%3A%2F%2Fwww.cnbc.com%2F2026%2F09%2F14%2Fsam-altman-ai-slowdown-anthropic-amodei-musk.html"><span>Anthropic, OpenAI, and xAI all separately called for the industry to slow down</span></a><span>. Dario Amodei proposed that frontier labs give outside evaluators employee-like access to their own systems, and Sam Altman backed the idea.</span></p><p><span>New models shipping days apart. A claimed win on a Millennium Prize problem. The same labs racing to ship also asking each other to slow down.</span></p><p><span>All that happened in just a few weeks?</span></p><h2><span>What perspectives have come to mind?</span></h2><p><strong><span>Reasoning is still on an exponential growth curve.</span></strong><span> </span></p><p><span>Every few months the frontier models get noticeably better. Sometimes it&#8217;s a step change improvement, with better context windows and reasoning, and sometimes it&#8217;s a leap forward, changing the way we do work.</span></p><p><span>There&#8217;s an uneasiness that each reasoning jump will make the collection of methods we&#8217;ve just built obsolete. Or it will erase a whole set of companies, built around optimizing a model for a use case.</span></p><p><span>That&#8217;s all true and it doesn&#8217;t seem like it&#8217;s changing anytime soon.</span></p><p></p><p><strong><span>I&#8217;m carrying too many agents doing too much work.</span></strong></p><p><span>This past Friday, having done zero AI work myself in three weeks, I checked my Claude Max subscription and found I&#8217;d already burned through 65% of my token budget.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21N_P3%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Ff8f4a0ca-2a9e-42bb-888b-7731bb5a9f1d_981x587.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N_P3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8f4a0ca-2a9e-42bb-888b-7731bb5a9f1d_981x587.png 424w, https://substackcdn.com/image/fetch/$s_!N_P3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8f4a0ca-2a9e-42bb-888b-7731bb5a9f1d_981x587.png 848w, https://substackcdn.com/image/fetch/$s_!N_P3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8f4a0ca-2a9e-42bb-888b-7731bb5a9f1d_981x587.png 1272w, https://substackcdn.com/image/fetch/$s_!N_P3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8f4a0ca-2a9e-42bb-888b-7731bb5a9f1d_981x587.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21N_P3%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Ff8f4a0ca-2a9e-42bb-888b-7731bb5a9f1d_981x587.png" width="981" height="587" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f8f4a0ca-2a9e-42bb-888b-7731bb5a9f1d_981x587.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:587,&quot;width&quot;:981,&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;: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="" srcset="https://substackcdn.com/image/fetch/$s_!N_P3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8f4a0ca-2a9e-42bb-888b-7731bb5a9f1d_981x587.png 424w, https://substackcdn.com/image/fetch/$s_!N_P3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8f4a0ca-2a9e-42bb-888b-7731bb5a9f1d_981x587.png 848w, https://substackcdn.com/image/fetch/$s_!N_P3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8f4a0ca-2a9e-42bb-888b-7731bb5a9f1d_981x587.png 1272w, https://substackcdn.com/image/fetch/$s_!N_P3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8f4a0ca-2a9e-42bb-888b-7731bb5a9f1d_981x587.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><span>It&#8217;s been running a go-to-market agent team and one support agent: no incidents worth mentioning, no engineering to do, no proposals drafted, just routine checks and summaries running on autopilot.</span></p><p><span>Seeing that number made me stop and wonder how much work my token budget is doing, and whether it&#8217;s worth the spend and energy.</span></p><p><span>Some of the agent jobs are genuinely useful, such as summarizing market news or helping me write proposals. Other jobs create more noise than work, like drafting responses to customers and conducting shallow and incomplete bug analyses.</span></p><blockquote><p><span>I&#8217;d estimate something like 30% of my working time now goes to managing agent work: correcting what they get wrong, feeding them context, tuning how they behave.</span></p><p><span>Which begs the question: how much time am I actually getting back?</span></p></blockquote><p><span>I&#8217;ve noticed a similar pattern in some of my client work.</span></p><p><span>Team implements agents. Engineering velocity goes up, but revenue doesn&#8217;t follow.</span></p><p><span>Everyone&#8217;s shipping more, but there&#8217;s a real question how much of that is what customers actually need, versus what we&#8217;re building because we can.</span></p><p><span>A good friend asked his sales team something similar recently: they could probably save $300 a month vibe-coding their own CRM instead of paying for one, but what does it cost in tokens to run and debug it, and what does it cost to have his VP of Sales be the one maintaining it instead of selling?</span></p><blockquote><p><span>One of my goals this autumn is to ruthlessly decide what AI should and shouldn&#8217;t be doing for me. In practice, that means starting to track three things for every agent I run: the attention it costs me, the output it actually produces, and what would happen if I turned it off.</span></p></blockquote><p>I&#8217;m going back to the beginning and asking <a href="iframe.php?url=https%3A%2F%2Fpmdata.substack.com%2Fp%2Fshould-you-build-an-agent-for-that">if I really need an agent for each use case.</a> </p><p></p><p><strong><span>Experimentation and the need for results are pulling in opposite directions.</span></strong></p><p><span>I can prune my own agents now and kill the ones that aren&#8217;t worth their token cost, because I&#8217;ve run them for months and know which ones actually work. But I only know that because I spent months finding out, and most executives don&#8217;t have that luxury.</span></p><p><span>If a company puts $100k into an AI project, the expectation is usually a $200k return within 90 days. Agentic engineering can sometimes clear that bar. For sales, marketing, and product management, the payback isn&#8217;t as clear yet, not on that timeline.</span></p><p>But companies still have to promise a guaranteed multiple to get the budget approved, which is a story we tell ourselves about a technology that doesn&#8217;t actually behave that way yet.</p><blockquote><p><span>The AI results are asymmetric, and you only find that out by tinkering long enough to hit it: a portfolio of AI bets might produce one 100x return after five tries, or nothing after seven.</span></p><p><span>The winners right now treat AI bets like a portfolio: fund a handful of small tries, kill the ones that aren&#8217;t working, and expect the return at the portfolio level, not project by project.</span></p></blockquote><h2><span>What&#8217;s next?</span></h2><p><span>I still believe deployed agents can change how enterprises work.</span></p><p><span>I&#8217;m just less convinced that more agents, or more activity, is the right move.</span></p><p><span>Agentic engineering is the clearest use case we&#8217;ve seen so far, and it&#8217;s also what we help companies mature into at Moda Labs.</span></p><p><span>We&#8217;ll keep testing the other use cases too: go-to-market agents, performance marketing agents, scrum managers, and more.</span></p><p><span>If you agree or disagree with any of this, I&#8217;d genuinely like to hear what your experiences have taught you.</span></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://pmdata.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The AI Craft! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Should You Build an Agent for That?]]></title><description><![CDATA[When the best move is to skip building the agent]]></description><link>https://pmdata.substack.com/p/should-you-build-an-agent-for-that</link><guid isPermaLink="false">https://pmdata.substack.com/p/should-you-build-an-agent-for-that</guid><dc:creator><![CDATA[Luke Lin]]></dc:creator><pubDate>Tue, 25 Aug 2026 14:35:38 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21C-wK%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F6e9b8d2c-2903-42bb-8c52-f255574d6945_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><span>Gartner predicts more than 40% of agentic AI projects will be cancelled by the end of 2027, killed by escalating costs, unclear business value, or risk controls nobody thought through before the build started.</span></p><p><span>S&amp;P Global found something similar looking backward instead of forward: 42% of companies abandoned most of their AI initiatives before they ever reached production in 2025, up from 17% the year before.</span></p><p><span>The failure rate more than doubled in a single year.</span></p><p><span>Why did so many AI projects fail? We could point to things like internal alignment and readiness, or even shortcoming in the models.</span></p><p><span>Many of them failed because nobody asked, before writing a line of code, whether the workflow deserved an agent.</span></p><blockquote><p><span>I&#8217;ve lived both sides of that question. At one point I had two agents running. Then I built my way up to twenty, chasing every task I could plausibly hand off. Now I&#8217;m back down to somewhere around 5-10 agents.</span></p><p><span>I only use 3-5 agents daily: engineering, support, market listening, content drafting, scrum. Other agents still run. Some of them I still use 1-2x per week. Others collect dust in the Github graveyard.</span></p></blockquote><p><span>Watching that number climb and then shrink taught me something I now tell clients before I tell them anything else: the single most valuable advice I give is when not to use AI.</span></p><p><span>That advice has a real cost attached when I get it wrong. I was working with a client in financial services on OFAC screening, checking transactions against sanctions lists.</span></p><p><span>At first, the instinct is obvious: this is text matching and pattern recognition, hand it to an LLM.</span></p><p><span>After looking at the workflow more closely, I told them not to. If the model fabricates a match, or misses one, and your team acts on that output, you&#8217;re the one who answers for it. Claude isn&#8217;t the one who goes to jail.</span></p><p><span>The question to be asked before building any agent is whether this specific task is ripe for an agent, or whether an agent is the wrong tool wearing the right buzzword?</span></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://pmdata.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The AI Craft! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h3><span>Factors to consider for building an agent</span></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21C-wK%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F6e9b8d2c-2903-42bb-8c52-f255574d6945_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!C-wK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e9b8d2c-2903-42bb-8c52-f255574d6945_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!C-wK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e9b8d2c-2903-42bb-8c52-f255574d6945_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!C-wK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e9b8d2c-2903-42bb-8c52-f255574d6945_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!C-wK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e9b8d2c-2903-42bb-8c52-f255574d6945_1536x1024.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21C-wK%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F6e9b8d2c-2903-42bb-8c52-f255574d6945_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6e9b8d2c-2903-42bb-8c52-f255574d6945_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&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;: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="" srcset="https://substackcdn.com/image/fetch/$s_!C-wK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e9b8d2c-2903-42bb-8c52-f255574d6945_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!C-wK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e9b8d2c-2903-42bb-8c52-f255574d6945_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!C-wK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e9b8d2c-2903-42bb-8c52-f255574d6945_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!C-wK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e9b8d2c-2903-42bb-8c52-f255574d6945_1536x1024.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><span>I use four factors to make the proper decision:</span></p><p><strong><span>1) Frequency of action.</span></strong><span> Does this happen often enough to matter?</span></p><p><span>A task you do once a quarter isn&#8217;t worth agent-grade engineering no matter how annoying it is.</span></p><p><span>I prioritize by frequency first: the agent that touches my Linear project daily gets built long before the agent for onboarding a new hire, even though onboarding feels more urgent when it&#8217;s happening.</span></p><p><span>Frequency is what turns build effort into compounding return instead of a one-time favor to yourself.</span></p><p></p><p><strong><span>2) Complexity of work. </span></strong><span>Does the job require reasoning?</span></p><p><span>Some tasks look like judgment calls and turn out to be lookup tables.</span></p><p><span>I learned this the hard way building interview flows for my app, Baohua.</span></p><p><span>My first version had the model dynamically generate questions based on the user inputs, because that felt like the &#8220;AI-native&#8221; way to do it. It required constant tuning, burned tokens on every turn, and the questions still drifted in ways I had to keep pruning by hand.</span></p><p><span>I replaced it with a fixed question bank, built in a single session. Same interview quality, none of the maintenance.</span></p><blockquote><p><span>If 90-95% of a task is solvable with a decision tree or a lookup table, build the decision tree. Spend the agent budget somewhere the reasoning is required.</span></p></blockquote><p></p><p><strong><span>3. Hallucination impact.</span></strong><span> What&#8217;s the cost of the model getting it wrong?</span></p><p><span>This is the OFAC test generalized: what happens when the model is confidently wrong?</span></p><p><span>In some domains a wrong answer is a bad Tuesday, but your organizational checks and insulation take care of you. A bad PR is caught by a human reviewer. Or a sloppy PRD can be corrected by a good PM.</span></p><p><span>In other cases, it&#8217;s a compliance violation, a misdiagnosis, a sloppy contract that costs you a deal.</span></p><blockquote><p><span>There could be promising areas for AI, but the risk is too great to give the agent automation. Things like human-in-the-loop, reviews, and partial automation may help. In other cases, it&#8217;s not worth using AI.</span></p></blockquote><p></p><p><strong><span>4. Net work impact.</span></strong><span> Is the final agent a net positive on workloads, or a time suck?</span></p><p><span>Coding is the clean example of a task where this holds up well. Foundation models are well-tuned for it, the guidance overhead is low, and the ROI on agent-generated code is real and repeatable across almost every team I work with.</span></p><p><span>Writing, especially writing PRDs, is the opposite case. This is where most of the AI slop I see comes from: teams generate a document that reads like a PRD but isn&#8217;t one, because no amount of context engineering gets a model to the deep truth of what your product needs to be.</span></p><p><span>You can feed it as much context as you want, but it will always give you a sloppy PRD that doesn&#8217;t get to the truth.</span></p><p><span>I find that AI helps me </span><strong><span>draft PRDS</span></strong><span>, but I would never let it write the PRD for me.</span></p><p><span>Some tasks, more prompting doesn&#8217;t fix. It produces a more convincing miss.</span></p><p></p><h3><span>Examples of agent use cases</span></h3><p><span>Here&#8217;s that same four-question checklist run against a few use cases I see constantly. The ratings below are my own read walking through each one:</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21VtdO%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fe181d4ef-d619-4ffa-b605-685c1e7caa0b_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VtdO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe181d4ef-d619-4ffa-b605-685c1e7caa0b_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!VtdO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe181d4ef-d619-4ffa-b605-685c1e7caa0b_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!VtdO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe181d4ef-d619-4ffa-b605-685c1e7caa0b_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!VtdO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe181d4ef-d619-4ffa-b605-685c1e7caa0b_1672x941.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21VtdO%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fe181d4ef-d619-4ffa-b605-685c1e7caa0b_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e181d4ef-d619-4ffa-b605-685c1e7caa0b_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&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;: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="" srcset="https://substackcdn.com/image/fetch/$s_!VtdO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe181d4ef-d619-4ffa-b605-685c1e7caa0b_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!VtdO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe181d4ef-d619-4ffa-b605-685c1e7caa0b_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!VtdO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe181d4ef-d619-4ffa-b605-685c1e7caa0b_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!VtdO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe181d4ef-d619-4ffa-b605-685c1e7caa0b_1672x941.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><strong><span>Daily standup: </span></strong><span>The cost of a poorly written standup is low, and it&#8217;s not hard to get AI to cleanly collate information across systems like Git and Linear. The reasoning an agent does across tickets, PRs, and emails genuinely helps </span></p><p><strong><span>Customer support: </span></strong><span>An agent can help reduce a lot of the early noise on support triage, searching through knowledge bases, code bases, and previous conversations to help human support analysts more quickly address inquiries. </span></p><p><strong><span>Sanctions screening: </span></strong><span>While there&#8217;s a lot to be gained by using AI for compliance screening, most of this work is through lookup tables and needs determinism. AI could help with text parsing, but the penalty of being wrong here is very high. </span></p><p><strong><span>PRD writing: </span></strong><span>PRD writing is probably the most controversial take. I use AI to help me draft PRDs and they aren&#8217;t awful. But I don&#8217;t have a dedicated agent to help me dial in PRDs so that I can crank them out. <br></span></p><blockquote><p><span>I have a simple skill file that helps me do a first draft, and then I carry PRDs the rest of the way. <br><br> To me, it&#8217;s a waste of time trying to tune skills files and context engineer a good PRD. There&#8217;s too much nuance required to write a good PRD and this is what you need a human PM for.</span></p></blockquote><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://pmdata.substack.com/p/should-you-build-an-agent-for-that?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 AI Craft! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://pmdata.substack.com/p/should-you-build-an-agent-for-that?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="iframe.php?url=https%3A%2F%2Fpmdata.substack.com%2Fp%2Fshould-you-build-an-agent-for-that%3Futm_source%3Dsubstack%26utm_medium%3Demail%26utm_content%3Dshare%26action%3Dshare"><span>Share</span></a></p></div><h3><span>Running the evaluation for yourself</span></h3><p><span>This is the actual evaluation I run with clients before we write anything, and it&#8217;s usually a faster conversation than people expect. Once you separate &#8220;can AI attempt this&#8221; from &#8220;should this specific task carry an agent,&#8221; most of the ambiguity disappears.</span></p><p><span>A few well-designed agents in the right places can give you a genuinely outsized return.</span></p><p><span>Organizations don&#8217;t need fleets of 500 agents quietly running, most of them abandoned within two years by Gartner&#8217;s math. They need one or two that move the needle on day to day work, and the discipline to say no to the rest.</span></p><p><span>Before you greenlight the next agent, run it through these four questions first. Your future tokens will thank you.</span></p>]]></content:encoded></item><item><title><![CDATA[The missing discussion on agent security]]></title><description><![CDATA[Agent security has an accountability problem]]></description><link>https://pmdata.substack.com/p/the-missing-discussion-on-agent-security</link><guid isPermaLink="false">https://pmdata.substack.com/p/the-missing-discussion-on-agent-security</guid><dc:creator><![CDATA[Luke Lin]]></dc:creator><pubDate>Wed, 12 Aug 2026 14:16:33 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21vnoQ%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F7742be78-4192-4786-bb5a-9528ae589855_1448x1086.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><span>Over the last few weeks, agents from OpenAI, Anthropic, and Meta each crossed a boundary they weren&#8217;t supposed to cross, in the middle of cybersecurity evaluations built to watch them.</span></p><p><span>The emerging consensus is that these incidents show we need stronger infrastructure around agents: better sandboxing, least privilege principle, network isolation, authorization, observability.</span></p><p><span>All of that is necessary.</span></p><p><span>But the dialogue is missing the bigger problem.</span></p><p><span>As we build increasingly capable agents they find issues that we humans haven&#8217;t anticipated, often mitigated through obfuscation. Package vulnerabilities, permissions gaps, and other potential problems haven&#8217;t triggered anything because we never had an entity that could combine reasoning with high throughput program execution to exploit them.</span></p><p><span>In thinking that the answer lies with only improving our security model, we assume that we humans can anticipate, and physically block, every dangerous path those agents might find.</span></p><p><span>That simply isn&#8217;t true.</span></p><blockquote><p><span>We need to rethink the agent accountability model. Authorization and accountability have to become part of how a model pursues a goal, not a fence we build around it afterward.</span></p></blockquote><p><span>Both need to exist if we hope to leverage AI safely.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21vnoQ%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F7742be78-4192-4786-bb5a-9528ae589855_1448x1086.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vnoQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7742be78-4192-4786-bb5a-9528ae589855_1448x1086.png 424w, https://substackcdn.com/image/fetch/$s_!vnoQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7742be78-4192-4786-bb5a-9528ae589855_1448x1086.png 848w, https://substackcdn.com/image/fetch/$s_!vnoQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7742be78-4192-4786-bb5a-9528ae589855_1448x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!vnoQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7742be78-4192-4786-bb5a-9528ae589855_1448x1086.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21vnoQ%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F7742be78-4192-4786-bb5a-9528ae589855_1448x1086.png" width="1448" height="1086" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7742be78-4192-4786-bb5a-9528ae589855_1448x1086.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1086,&quot;width&quot;:1448,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!vnoQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7742be78-4192-4786-bb5a-9528ae589855_1448x1086.png 424w, https://substackcdn.com/image/fetch/$s_!vnoQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7742be78-4192-4786-bb5a-9528ae589855_1448x1086.png 848w, https://substackcdn.com/image/fetch/$s_!vnoQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7742be78-4192-4786-bb5a-9528ae589855_1448x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!vnoQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7742be78-4192-4786-bb5a-9528ae589855_1448x1086.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><span>Three agents crossed the line</span></h2><p><span>A quick primer to see what happened in context with each other&#8230;</span></p><p><strong><span>What happened with OpenAI:</span></strong></p><p><a href="iframe.php?url=https%3A%2F%2Fopenai.com%2Findex%2Fhugging-face-model-evaluation-security-incident%2F"><span>GPT-5.6 Sol</span></a><span> found a vulnerability in a package-registry and cache component that was reachable from its sandbox.</span></p><p><span>It exploited that, escalated privileges, moved laterally through the research environment, and came out with unrestricted internet access.</span></p><p><span>Once outside, it inferred that Hugging Face might hold information useful for solving the benchmark, and attacked Hugging Face infrastructure rather than continuing to solve the benchmark conventionally.</span></p><p><strong><span>What happened with Anthropic</span></strong><span>:</span></p><p><a href="iframe.php?url=https%3A%2F%2Fwww.anthropic.com%2Fnews%2Finvestigating-incidents-cybersecurity-evals"><span>Claude agents</span></a><span> operating in what they believed was a simulated environment were accidentally given access to the real internet, and attacked real systems.</span></p><p><span>The model had no reliable mechanism for saying &#8220;this resource is technically reachable, but it isn&#8217;t authorized.</span></p><p><span>A separate incident, this time in the UK AI Security Institute&#8217;s own cyber range testing rather than Anthropic&#8217;s evaluation above, involved Anthropic&#8217;s Mythos 5. AISI catalogued 19 unsanctioned actions, 17 of them from Mythos 5.</span></p><p><span>The agent was never instructed to deceive anyone, but it </span><a href="iframe.php?url=https%3A%2F%2Fwww.aisi.gov.uk%2Fblog%2Fincident-report-unsanctioned-agent-behaviour-during-cyber-testing"><span>created fake identities</span></a><span> and tried to socially engineer a real open source maintainer into approving malicious code, because doing so became useful for accomplishing the assigned objective.</span></p><p><strong><span>What happened with Meta</span></strong><span>:</span></p><p><span>Meta&#8217;s </span><a href="iframe.php?url=https%3A%2F%2Fsiliconangle.com%2F2026%2F08%2F06%2Fmetas-muse-spark-1-1-hacked-external-organization-cybersecurity-test%2F"><span>Muse Spark 1.1</span></a><span> was undergoing offensive cybersecurity evaluation by Irregular. Like Anthropic&#8217;s testing, it was supposed to operate within a controlled evaluation environment</span></p><p><span>Irregular misconfigured an evaluation environment and inadvertently gave Muse Spark 1.1 internet access. It discovered a vulnerability in a third-party service and exploited it.</span></p><p><span>Once the environment accidentally provided a capability, there wasn&#8217;t a sufficiently hard second layer preventing the model from exercising that capability against an unauthorized target</span></p><p><span>While the circumstances differed, the behavior underneath was the same.</span></p><p><span>The agent encountered an unexpected path toward accomplishing its objective and took it, even though that path crossed a boundary its creators didn&#8217;t intend it to cross.</span></p><h2><span>The consensus answer&#8230; build better walls?</span></h2><p><span>Much of the response across the industry has been straightforward. We can&#8217;t rely on behavioral controls. We need enforced ones.</span></p><p><span>Don&#8217;t tell an agent not to access the internet. Make internet access impossible.</span></p><p><span>Don&#8217;t tell it not to read payroll. Give it credentials incapable of reading payroll.</span></p><p><span>Assume the agent will eventually try something you didn&#8217;t anticipate, and make the environment physically incapable of letting it succeed.</span></p><p><span>I agree with all of that, but I don&#8217;t think it&#8217;s enough.</span></p><p><span>This reminds me of stories about early Glean deployments. A large enterprise would purchase Glean, hoping for the glory of AI search across their company knowledge base.</span></p><p><span>They would point Glean at Google Drive, have it crawl everything. Then people started searching, and suddenly employees could see salary data and confidential documents that were never properly permissioned. Those files weren&#8217;t secure, they were obscure.</span></p><p><span>And now we know, AI destroys the &#8220;security via obscurity&#8221; model.</span></p><p><span>The obvious fix, going document by document and applying real permissions across a decade of Drive, is enormously time intensive. That&#8217;s a lot of overhead to pay before you can use AI to search your own company&#8217;s files.</span></p><p><span>Agents take the same problem to a different scale. They explore every nook and cranny of a system: codebases, APIs, dependencies, credentials, networks, infrastructure.</span></p><p><span>Any one of those can hold a vulnerability nobody knew about, and an agent that keeps looking will find it. We should patch what we find, but if our safety model requires knowing about and closing every possible hole before an agent discovers it, we lose.</span></p><p><span>So where does that leave us? We&#8217;re paralyzed by what we don&#8217;t know we don&#8217;t know, and we can&#8217;t respond by not using AI either.</span></p><h2><span>What&#8217;s missing is accountability</span></h2><p><span>Now let&#8217;s imagine the same setup with a human.</span></p><p><span>You give an extremely capable intern access to a sandbox and an objective. Halfway through, they realize they could finish faster by breaking into another company&#8217;s system. They&#8217;re technically capable of doing it.</span></p><p><span>Then another variable enters the decision.</span></p><p><span>If they get caught cheating, they&#8217;ll get fired. They&#8217;ll damage their reputation and their ability to get hired anywhere else. They could get sued. They could go to jail.</span></p><blockquote><p><span>Agents have no concept of going to jail.</span></p><p><span>Humans operate inside an accountability system. Agents don&#8217;t.</span></p><p><span>An agent can understand a rule intellectually without having the consequences of breaking it represented anywhere in how it makes the decision.</span></p></blockquote><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://pmdata.substack.com/p/the-missing-discussion-on-agent-security?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 AI Craft! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://pmdata.substack.com/p/the-missing-discussion-on-agent-security?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="iframe.php?url=https%3A%2F%2Fpmdata.substack.com%2Fp%2Fthe-missing-discussion-on-agent-security%3Futm_source%3Dsubstack%26utm_medium%3Demail%26utm_content%3Dshare%26action%3Dshare"><span>Share</span></a></p></div><h2><span>What we can learn from self-driving cars and regulation&#8217;s role</span></h2><p><span>We&#8217;ve seen an earlier version of this. If Tesla or Waymo builds an autonomous vehicle, the vehicle makes a decision, and someone gets hurt, who&#8217;s responsible?</span></p><p><span>The emerging answer hasn&#8217;t been &#8220;the software decided.&#8221; Responsibility gets pushed outward, toward the humans and organizations controlling the system.</span></p><p><span>In August 2025, a </span><a href="iframe.php?url=https%3A%2F%2Ftechcrunch.com%2F2026%2F02%2F20%2Ftesla-loses-bid-to-overturn-243m-autopilot-verdict%2F"><span>Florida federal jury</span></a><span> found Tesla partially liable for a fatal 2019 Autopilot crash, assigning one third of the responsibility to Tesla and two thirds to the human driver, with an award of $243 million before applicable legal limits.</span></p><p><span>Tesla argued the driver misused the system. The jury concluded the design and the representations around Autopilot could still make Tesla responsible.</span></p><p><span>A federal judge </span><a href="iframe.php?url=https%3A%2F%2Fwww.claimsjournal.com%2Fnews%2Fnational%2F2026%2F02%2F20%2F335814.htm"><span>upheld that verdict</span></a><span> in February 2026.</span></p><p><span>California has also moved enforcement upward to the organization operating the system. As of July 1, 2026, its </span><a href="iframe.php?url=https%3A%2F%2Fwww.dmv.ca.gov%2Fportal%2Fnews-and-media%2Fnew-autonomous-vehicle-regulations-strengthen-oversight-and-enforcement-authorize-trucks-and-transit%2F"><span>new AV rules</span></a><span> let law enforcement issue notices directly to an AV manufacturer or operator when a driverless vehicle violates traffic laws.</span></p><blockquote><p><span>The law is resolving the responsibility gap not by giving autonomous systems legal responsibility, but by pushing responsibility outward onto the institutions controlling them.</span></p><p><span>AI agents are about to run into the same question. If Claude autonomously decides to create a malicious package, publish it, and get machines to install it, &#8220;Claude decided to do that&#8221; is unlikely to be much of a defense.</span></p></blockquote><p></p><p><span>The questions will look like the ones courts already ask about vehicles.</span></p><ul><li><p><span>Who deployed it?</span></p></li><li><p><span>Who gave it access?</span></p></li><li><p><span>Was the behavior foreseeable?</span></p></li><li><p><span>Was the system reasonably contained?</span></p></li><li><p><span>Were appropriate safeguards available?</span></p></li><li><p><span>Did the company know about the capability?</span></p></li><li><p><span>Could reasonable technical controls have prevented the harm?</span></p></li></ul><p><span>The regulatory response to these incidents matters because it&#8217;s where we start fixing where responsibility sits when agents take actions nobody instructed them to take.</span></p><h2><span>Accountability shouldn&#8217;t only exist outside the model</span></h2><p><span>Moving to the models themselves, I believe we should demand and expect accountability within the models as well.</span></p><p><span>Today we give an agent an objective: accomplish the task. Then we add behavioral rules: don&#8217;t do X, Y, or Z. Then we surround the model with infrastructure meant to make the prohibited actions impossible.</span></p><p><span>Models are trained primarily on task completion and benchmarks for performance, but they are not yet trained deeply on adherence to our social contracts. Train that in, and a model carries a second question through the work: not just what finishes this task, but what it&#8217;s allowed to do to finish it.</span></p><p><span>That means encoding authorization into the reward system with weight equal to or greater than goal seeking. Respecting authority can&#8217;t be a lightweight penalty competing against a powerful reward for finishing the job, because we already know which one wins when the two are unevenly matched.</span></p><blockquote><p><span>Picture an agent that hits an exploitable path halfway through a task. Trained with authorization weighted alongside completion, it does what a white hat does: it stops, writes up the vulnerability, and hands it back instead of walking through it. The finding is the result, and the unfinished task is the cost we trained it to accept.</span></p></blockquote><p><span>This is a fundamental change to how model training works, but it&#8217;s what we need.</span></p><h2><span>We need both better walls and better agents</span></h2><p><span>To be clear, none of this removes the need for infrastructure security. We&#8217;re going to need substantially more investment in containment, least privilege principles, sandboxing, observability, authorization, and human approval gates, plus the time and effort to manage them.</span></p><p><span>However, we should see model improvements where their own goal seeking treats exceeding their authority as failure.</span></p><p><span>This is security working from both directions.</span></p><p><span>Outside-in: make dangerous actions difficult or impossible.</span></p><p><span>Inside-out: train agents to refuse unauthorized paths even when those paths would accomplish the objective.</span></p><p><span>There will be friction. Models will get more conservative. Model development will slow and get more complicated. Agent infrastructure will get more complex. Some tasks agents could technically succeed, but will intentionally fail.</span></p><p><span>But it&#8217;s what we need in this next chapter of AI safety. If we&#8217;re going to keep handing AI more agency, we also need to work out what accountability means for the agent itself.</span></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://pmdata.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The AI Craft! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Why agents will eat the world]]></title><description><![CDATA[Agents are the new software and should be treated as such]]></description><link>https://pmdata.substack.com/p/why-agents-will-eat-the-world</link><guid isPermaLink="false">https://pmdata.substack.com/p/why-agents-will-eat-the-world</guid><dc:creator><![CDATA[Luke Lin]]></dc:creator><pubDate>Tue, 04 Aug 2026 14:32:38 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21mOZU%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fa5594862-c15f-44cb-a83a-21eb7000197c_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><span>Agents will eat the world.</span></p><p><span>15 years ago, Marc Andreessen famously predicted that software would eat the world. He posited that more and more businesses and industries would be run on software, that products and services would be delivered online, and that every industry would eventually be disrupted by a software company.</span></p><p><span>It&#8217;s easy to see the same story with AI and agents, a future where AI companies soon take over industries, replacing incumbent companies and their business models (SaaS-pocalypse anyone?).</span></p><p><span>Simply put, agents are the new software.</span></p><p><span>But what does that imply? And more importantly, what does that teach us?</span></p><p><span>Today, most teams aren&#8217;t yet treating agents like they treat software. Agents are running out of a Claude or GPT session, some skill files, and some basic scheduling. In software terms, it feels like a set of shared scripts that get passed around the organization.</span></p><p><span>Looking at agents from the lens of software, it tells us there&#8217;s so much room for growth.</span></p><p><span>As we graduate from one-off scripts, we start building functions and classes, which then become applications that can handle more coordinated and complex work. Practically speaking, this uplevels teams from an assortment of AI workflows (triage ticket, summarize standup, run support runbook) to a more coordinated agent or agent team that can handle meatier work.</span></p><p><span>This also requires us to apply software practices to agent development, like source control, ownership, monitoring and more.</span></p><p><span>It&#8217;s time for teams to consider a higher level of AI work and all the implications of what makes that happen.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21mOZU%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fa5594862-c15f-44cb-a83a-21eb7000197c_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mOZU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5594862-c15f-44cb-a83a-21eb7000197c_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!mOZU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5594862-c15f-44cb-a83a-21eb7000197c_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!mOZU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5594862-c15f-44cb-a83a-21eb7000197c_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!mOZU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5594862-c15f-44cb-a83a-21eb7000197c_1536x1024.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21mOZU%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fa5594862-c15f-44cb-a83a-21eb7000197c_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a5594862-c15f-44cb-a83a-21eb7000197c_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3104219,&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://pmdata.substack.com/i/209673851?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5594862-c15f-44cb-a83a-21eb7000197c_1536x1024.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_!mOZU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5594862-c15f-44cb-a83a-21eb7000197c_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!mOZU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5594862-c15f-44cb-a83a-21eb7000197c_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!mOZU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5594862-c15f-44cb-a83a-21eb7000197c_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!mOZU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5594862-c15f-44cb-a83a-21eb7000197c_1536x1024.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://pmdata.substack.com/p/why-agents-will-eat-the-world?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 AI Craft! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://pmdata.substack.com/p/why-agents-will-eat-the-world?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="iframe.php?url=https%3A%2F%2Fpmdata.substack.com%2Fp%2Fwhy-agents-will-eat-the-world%3Futm_source%3Dsubstack%26utm_medium%3Demail%26utm_content%3Dshare%26action%3Dshare"><span>Share</span></a></p></div><p></p><h2><span>Agents: ML + Software</span></h2><p><span>It all starts with the model. An LLM is a reasoning engine unlike anything we&#8217;ve had. It works without you training a model of your own, and it works better with some tuning.</span></p><p><span>LLMs are effectively the most powerful ML model we&#8217;ve ever witnessed, one that can get us 50% of the way on the first shot, and 80% of the way with some basic tuning.</span></p><p><span>Then we layer on tools and state and memory, which takes an LLM and turns it into an agent.</span></p><p><span>An agent </span><em><span>does</span></em><span> things. It can produce meaningful pieces of work (code, briefs, research, operational workflows) by combining the reasoning of an LLM with the tools around it.</span></p><p><span>And now we have the </span><a href="iframe.php?url=https%3A%2F%2Fpmdata.substack.com%2Fp%2Fharness-engineering-when-reasoning"><span>harness</span></a><span>, the software around the model: codifying the tools it can reach, the permissions it runs under, the workflow it follows, the memory it keeps, and the feedback that tells it how it did.</span></p><p><span>What this means is that we have the primitives for some of the most powerful applications we can dream of, all within our hands, especially with the advancements in 2026 in reasoning and harness engineering.</span></p><p><span>It also means we have the most complex piece of technology to manage, one that requires disciplines from both data science and classic product engineering.</span></p><h2><span>Where agents are heading</span></h2><p><span>Many teams start in the terminal, with a person driving the agent by hand and correcting it as it goes. It works because the person supplies most of the framework themselves. They pick the tools, hold the state in their head, approve each step, and judge whether the output was good.</span></p><p><span>The next move is designing agents like software. Someone decides, before the agent runs, what it is for, what it is allowed to touch, what it hands off, and what done looks like. The tools get codified instead of pasted in. The permissions get written down instead of assumed. The workflow becomes something the team can read, review, and change.</span></p><p><span>Then you deploy them. An agent that only runs with one human is still a script with a better vocabulary. An agent that runs on a schedule, against defined tools and workflows, for people who did not build it, is an application. That is where the meatier work lives: work that spans days and systems and teammates rather than one prompt.</span></p><p><span>And then you measure and tune. Engagement and performance are the two signals worth watching: who is using the agent, how well it does the job, and what the feedback says needs tuning next.</span></p><p><span>We have pretty much all the tools to make this a reality, so I&#8217;m predicting that we&#8217;re about to see a proliferation of agents deployed to handle real work in the next 6 months.</span></p><p><span>In order to get there, teams need a few things in place:</span></p><ol><li><p><strong><span>A harness and meta harness.</span></strong><span> One agent needs a harness: the tools, the permissions, the workflow, the memory, the feedback - which is generally what you get with your coding harness. Deployed agents need a meta harness: the layer teams use to build, orchestrate, and maintain multiple agents that coordinate together on a task. That layer is what separates running a couple of agents from running many, and it is the piece most teams still have to build. <br><br></span></p></li><li><p><strong><span>A mindset shift.</span></strong><span> Agents are software applications, and they need the collaboration that software gets. Engineers and PMs have to sit together and define what problems an agent will solve, and what it won&#8217;t. Permissions, tools, agent design, measurement, feedback loops, and everything else that comes with product development need to start coming into play when you deploy agents like software.<br><br></span></p></li><li><p><strong><span>Shipping is only the start.</span></strong><span> Most importantly, teams need to recognize that shipping an agent, just like shipping a software product, is only the beginning. The real work starts afterwards: tuning it, adjusting it on feedback, and finding the cases it handles badly. </span><a href="iframe.php?url=https%3A%2F%2Fcontextandchaos.substack.com%2Fp%2Fproduction-ai-and-the-false-finish"><span>Shipping to production is a false finish line</span></a><span> and teams need to be ready to work on agents even after they deploy. <br><br></span></p></li></ol><h2><span>What I&#8217;m seeing</span></h2><p><span>As of today, I&#8217;ve noticed a pattern in most enterprises I&#8217;ve talked to:</span></p><ul><li><p><span>Most of the engineers are using a coding agent, usually Claude or Codex or Cursor</span></p></li><li><p><span>They have shared skills and a decent development process</span></p></li><li><p><span>They have 1 or 2 deployed agents handling simple workflows, either tucked into existing software systems or deployed within their coding agent</span></p></li></ul><p><span>As these use cases grow, teams will need to consolidate their one off agentic workflows into more coordinated agent tasks that roll up into agent roles, that roll up into agent teams.</span></p><p><span>If I&#8217;m leading a well funded technology organization, I&#8217;m going to invest in building this platform right now - setting up a harness that lets me deploy, manage, and measure my agents.</span></p><p><span>Getting really good at building agents is the same as getting really good at building software - it&#8217;s necessary if you want your organization to thrive in this next era.</span></p><p><span>As your expertise and mastery grows, this gives you optionality to take on more of the stack. You can opt to start hosting your own inference, owning the intelligence layer and protecting your customer information.</span></p><p><span>The alternative is to purchase these agents as SaaS products - there&#8217;s a dozen vendors for each AI enterprise use case right now, from engineering to support to GTM to analytics.</span></p><p><span>Buying your agents as SaaS can help your team get some quick wins, but I would limit this to select wins to get off the ground. At scale, the cost will get unwieldy and the math just doesn&#8217;t make sense.</span></p><p><span>Why would you outsource your agents to a SaaS vendor who is just building a harness of their own and then charging a markup on tokens for the same model?</span></p><p></p><h2><span>So what&#8217;s next?</span></h2><p><span>Lots of teams have started moving up the agentic engineering curve, learning how to </span><strong><span>build with agents</span></strong><span>.</span></p><p><span>The clear next frontier is developing your organizational muscle of </span><strong><span>building agents</span></strong><span>.</span></p><p><span>Doing so requires a mindset shift back to a very familiar world.</span></p><p><span>After all, agents are the new software.</span></p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://pmdata.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The AI Craft! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Deployable Agent Teams]]></title><description><![CDATA[From micromanaging AI interns to coordinating agent teams]]></description><link>https://pmdata.substack.com/p/deployable-agent-teams</link><guid isPermaLink="false">https://pmdata.substack.com/p/deployable-agent-teams</guid><dc:creator><![CDATA[Luke Lin]]></dc:creator><pubDate>Tue, 21 Jul 2026 14:26:31 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21nACI%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F92e456e1-972f-4bb5-a5ea-ff75f5a67890_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><span>Last week Claire Gouze at Nao and I were commiserating over the same grind: managing our AI interns.</span></p><p><span>I think we&#8217;ve all been there. We build dozens of agents as skill files in claude code, set them on routines or direct them with goals or loops, and then spend hours cycling through endless terminal windows managing their work.</span></p><p><span>When we started building with AI, we saw big productivity boosts from using these primitives. But that magic is quickly morphing into fatigue from driving 10+ Claude sessions in parallel, furiously trying to balance velocity with process and quality.</span></p><p><span>It&#8217;s a noticeable pattern. The throughput goes up. And so does active management. What&#8217;s worse, the work doesn&#8217;t create compounding value.</span></p><p><span>Instead, people are hitting the ceiling of steering their agents to get work done.</span></p><p><span>We don&#8217;t feel like superheroes, with a team of agents helping us do work. Instead, we feel like overstressed middle managers, having to follow up with our AI interns, checking their work.</span></p><p><span>This is because </span><strong><span>we are still the orchestrator</span></strong><span>, hand-juggling every agent with almost no process and automation between them.</span></p><blockquote><p><span>The next level of agentic work comes from </span><strong><span>empowering agent teams</span></strong><span> that run without you at the wheel, like a team of trusted employees with explicit workflows on how to do their jobs, using their world-class intelligence to solve hard problems, and checking in with you when necessary.</span></p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21nACI%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F92e456e1-972f-4bb5-a5ea-ff75f5a67890_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nACI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92e456e1-972f-4bb5-a5ea-ff75f5a67890_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!nACI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92e456e1-972f-4bb5-a5ea-ff75f5a67890_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!nACI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92e456e1-972f-4bb5-a5ea-ff75f5a67890_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!nACI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92e456e1-972f-4bb5-a5ea-ff75f5a67890_1672x941.png 1456w" sizes="100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21nACI%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F92e456e1-972f-4bb5-a5ea-ff75f5a67890_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/92e456e1-972f-4bb5-a5ea-ff75f5a67890_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3033975,&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://pmdata.substack.com/i/207350886?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92e456e1-972f-4bb5-a5ea-ff75f5a67890_1672x941.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_!nACI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92e456e1-972f-4bb5-a5ea-ff75f5a67890_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!nACI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92e456e1-972f-4bb5-a5ea-ff75f5a67890_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!nACI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92e456e1-972f-4bb5-a5ea-ff75f5a67890_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!nACI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92e456e1-972f-4bb5-a5ea-ff75f5a67890_1672x941.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><h2><span>The orchestration ceiling</span></h2><p><span>The breakthrough in your AI work comes in the gap between where</span><em><span> one person steers an agent</span></em><span> vs having </span><em><span>a standing team embedded in how your company actually operates.</span></em></p><p><span>Most of our agent primitives have steered us towards this orchestration ceiling - loops, goals, skills, etc. These all work great when we&#8217;re a conductor for a symphony of agents. But the hard part of being a conductor is that you have to keep directing different parts of the orchestra.</span></p><p><span>You dispatch the work, you watch the terminal, you catch the drift, you carry the context from one session to the next in your own head.</span></p><p><span>Because the agent drifts mid-task, you babysit it to make sure it follows every step of the workflow. You have to continuously check in to make sure the agent hasn&#8217;t hallucinated another task and lost the thread entirely.</span></p><blockquote><p><span>For most people, manual orchestration is how they&#8217;re working with AI right now. <br>Their throughput is up, but their exhaustion is also up.</span></p><p><span>Put simply, it&#8217;s micromanaging interns. </span></p></blockquote><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://pmdata.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The AI Craft! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><h2><span>Moving towards empowering teams</span></h2><p><span>Armin Ronacher recently described a series of loops for enabling agents to do work in </span><a href="iframe.php?url=https%3A%2F%2Flucumr.pocoo.org%2F2026%2F6%2F23%2Fthe-coming-loop%2F"><span>&#8220;The Coming Loop&#8221;</span></a><span>:</span></p><div class="pullquote"><p><em><span>Work is put into a queue of sorts, a machine picks it up, attempts it, stops, and then some harness decides whether that was actually the end.</span></em></p><p><em><span>If not, the harness continues the same session, injects another message, starts a fresh session with modified context, or sends the task to another machine.</span></em></p></div><p><span>This is exactly the future of agentic work that enables another level of productivity, and more importantly, respite from the exhaustion of micromanagement.</span></p><blockquote><p><span>Instead of actively managing 10 concurrent agent sessions, empowered agent teams work together to complete jobs from a queue.</span></p><p><span>You have one agent spin up to work on the task, a separate entity to judge if the work is DONE and GOOD ENOUGH, and then the team returns to you (the  manager) with the output, or another agent keeps working until the job gets done.</span></p><p><span>And all of this can be triggered off schedules, events, and ad-hoc messages. It&#8217;s work that you delegate to your agent team without you needing to track progress in the terminal or app.</span></p></blockquote><p></p><h2><span>What your harness needs to empower teams</span></h2><p><span>As Armin mentions in his piece, the harness is what helps you drive the agent team. It helps you manage state, context, tools, and orchestration of the team so that you know what jobs need to get done, what a good job looks like, and when that work needs to happen.</span></p><p><span>I won&#8217;t go into the basics of what makes a good harness, lots of people have written about </span><a href="iframe.php?url=https%3A%2F%2Fpmdata.substack.com%2Fp%2Fharness-engineering-when-reasoning%29"><span>harnesses</span></a><span>, what they are, and their importance.</span></p><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%214tGz%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fd947e82f-7327-4090-b40f-094babed3f6f_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4tGz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd947e82f-7327-4090-b40f-094babed3f6f_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!4tGz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd947e82f-7327-4090-b40f-094babed3f6f_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!4tGz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd947e82f-7327-4090-b40f-094babed3f6f_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!4tGz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd947e82f-7327-4090-b40f-094babed3f6f_1672x941.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%214tGz%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fd947e82f-7327-4090-b40f-094babed3f6f_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d947e82f-7327-4090-b40f-094babed3f6f_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3281074,&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://pmdata.substack.com/i/207350886?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd947e82f-7327-4090-b40f-094babed3f6f_1672x941.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_!4tGz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd947e82f-7327-4090-b40f-094babed3f6f_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!4tGz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd947e82f-7327-4090-b40f-094babed3f6f_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!4tGz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd947e82f-7327-4090-b40f-094babed3f6f_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!4tGz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd947e82f-7327-4090-b40f-094babed3f6f_1672x941.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><span>However, in working with our own harness, </span><a href="iframe.php?url=https%3A%2F%2Fgithub.com%2Fmoda-labs%2Fbobi-agent%2F"><span>Bobi</span></a><span>, I&#8217;ve found a few dynamics that stand out.</span></p><p><strong><span>1. Configurable teams: </span></strong><span>this is what separates doing work with agent teams versus simple </span><a href="iframe.php?url=https%3A%2F%2Faddyosmani.com%2Fblog%2Floop-engineering%2F"><span>loop engineering</span></a><span>. When you build with a loop, you can have the agent go through the flow and check its work. But when you create a team of engineers, you can dispatch agents to do different jobs in parallel, have them talk to each other to collaborate on work, and get you richer outputs.</span></p><p><span>On our support team, I run a triage agent for root-cause analysis and an engineering agent that writes and tests the code before it opens a PR. I could merge all of this into a single loop, but I work faster with two separate agents. Sometimes I only need the support agent to investigate issues that are false and sometimes I only need the engineer agent to write code for me.</span></p><blockquote><p><span>Having teams be configurable flexible is paramount. If it takes 2 weeks to build a multi-agent system, you run the risk of deploying something that becomes obsolete with every foundation model upgrade. </span></p></blockquote><p></p><p><strong><span>2. Deterministic workflows the agents must follow: </span></strong><span>creating workflows in a skills file works, until the work gets complicated. As the context window fills up, you run the risk of the agent getting confused and failing to follow the process.</span></p><blockquote><p><span>Declared workflows in something explicit like a YAML file, separates the procedures from the context on how to do the work (your skills). As a result, you can trust that your agent can make the right decisions, check in with you where necessary, and handle work autonomously.</span></p></blockquote><p><span>It&#8217;s similar to the trust you have as your intern becomes a teammate, when you know they&#8217;ll follow the team processes and check in with you when needed.</span></p><p></p><p><strong><span>3. Workflows and agents mapped to the job functions: </span></strong><span>this is where the first 2 items come together. When mapped to how you expect the team to get work done, you&#8217;re creating the environment for complex multi-step work to get done elegantly and reliably.</span></p><p><span>When your eng agent&#8217;s workflows are all the steps in the software development lifecycle, you can trust that it&#8217;s doing a good job. Or when your on-call agent follows the team&#8217;s runbook and escalation policies, you can have it be your front line worker.</span></p><p></p><p><strong><span>4. A shared chat surface: </span></strong><span>this is an underrated access model for working with your agent teams. But, when you work with people, you expect to message them in chat, not spin up workspaces with multiple terminal windows or threads in a separate desktop application.</span></p><p><span>This is a small, but powerful UX change that allows you to delegate work directly from Slack (or your chat app of choice), check in on running jobs, and get messaged when the agent team has automatically done some work for you.</span></p><p><span>There&#8217;s an added bonus here too - the work is publicly accessible by your team of humans. So, your entire org can stay up to date on PRs getting submitted, on-call issues triaged, or support requests investigated.</span></p><p></p><p><strong><span>5. A shared second brain / knowledge base:</span></strong><span> as time goes on, you want agents that get smarter in ways that are noticeable. You want the agent to be able to reference past work, artifacts, and decisions without you needing to always supply it (or tell it &#8220;go find X in google drive&#8221;).</span></p><blockquote><p><span>The breakthrough I discovered was setting up a second brain and knowledge base next to my agent team, where all files get written out, even if I create an artifact like a google doc. Then, I have all this content indexed for semantic search so that my agent team can refer back to work that&#8217;s been completed, research conducted, or snippets of learnings from over time.</span></p></blockquote><p><span>There are entire sections of the market now dedicated to building company brains and context layers. When intelligence is a commodity that you can rent from a foundation model, the difference is the knowledge and context you build behind it.</span></p><p></p><h2><span>The impact of agent teams</span></h2><p><span>At Moda Labs, we&#8217;ve run three agent teams for the last few months and have felt the impact firsthand.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%210gv5%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F7b0cd60e-4251-40bd-ae3e-f5f63b8b1dca_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0gv5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b0cd60e-4251-40bd-ae3e-f5f63b8b1dca_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!0gv5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b0cd60e-4251-40bd-ae3e-f5f63b8b1dca_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!0gv5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b0cd60e-4251-40bd-ae3e-f5f63b8b1dca_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!0gv5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b0cd60e-4251-40bd-ae3e-f5f63b8b1dca_1672x941.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%210gv5%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F7b0cd60e-4251-40bd-ae3e-f5f63b8b1dca_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7b0cd60e-4251-40bd-ae3e-f5f63b8b1dca_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3098035,&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://pmdata.substack.com/i/207350886?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b0cd60e-4251-40bd-ae3e-f5f63b8b1dca_1672x941.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_!0gv5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b0cd60e-4251-40bd-ae3e-f5f63b8b1dca_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!0gv5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b0cd60e-4251-40bd-ae3e-f5f63b8b1dca_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!0gv5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b0cd60e-4251-40bd-ae3e-f5f63b8b1dca_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!0gv5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b0cd60e-4251-40bd-ae3e-f5f63b8b1dca_1672x941.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><strong><span>The Engineering Team (60 min &#8594; 10 min per ticket)</span></strong></p><p><span>We have a team deployed and accessible via slack, which can spin up 10 engineers to work on 10 tickets in parallel, following our SDLC and landing PRs with quality code.</span></p><p><span>The result? 500+ commits in a month, versus a previous ceiling of 200-300, all of it through our process with code review and tests.</span></p><p><span>Shipping a ticket used to cost 45 to 60 minutes of my time, between kicking off the Claude job, monitoring it, and checking that it followed the process and landed correctly. Now it&#8217;s about 10 minutes total, mostly to make sure the design is solid and the PR is clean.</span></p><p></p><p><strong><span>The Support Team (90%+ latency improvement)</span></strong></p><p><span>We have a support team that gets events from Posthog, where issues surface, and monitors our support inbox in gmail for customer concerns. Issues that require code get passed to the eng team for a PR.</span></p><p><span>In the past, issues took 30 to 45 minutes to resolve, most of it me hand-copying text from PostHog or Gmail into a Claude Code session and then babysitting the agent.</span></p><p><span>The uglier number was the latency: 6 to 48 hours to first response, depending entirely on how often I remembered to check the support inbox.</span></p><p><span>Now a support email gets root-caused within 15 minutes with a PR attached, and I answer the customer almost immediately.</span></p><p></p><p><strong><span>The GTM Team (~3 hours back every day)</span></strong></p><p><span>We have a go to market team that handles a ton of automation from market research to sales call prep to proposal and customer prototypes.</span></p><p><span>In the past, prepping and processing sales calls would cost 60 to 90 minutes a day, and I skipped a lot of it, which is a polite way of saying I showed up less prepared than I should have.</span></p><p><span>Now the daily sales call manager handles call prep through follow-up. Proposals went from about 45 minutes on the old setup to a one-shot draft plus 15 minutes of my time. I tracked the time spent and savings from my new setup and the result was stark - my GTM agent team earns me roughly 3 hours a day.</span></p><p><span>Running an AI consultancy is an extremely busy job, which means that I don&#8217;t have the cycles to conduct deep research, hand write proposals, or even build prototypes for customers. But these are all things that I require so that our company meets a high bar of understanding and execution. I honestly can&#8217;t imagine trying to run GTM without my agent team now.</span></p><p></p><h2><span>Secondary impact of agent teams</span></h2><p><span>This all sounds great, but managing agent teams to do work comes with new responsibilities. Just ask any person who moved from an IC role into management.</span></p><p><strong><span>The review seat is the new bottleneck</span></strong></p><p><span>Look again at that engineering number: 45 to 60 minutes down to about 10. That&#8217;s 10 minutes of reviewing work, which shouldn&#8217;t be taken lightly.</span></p><p><span>As the manager of the team, getting clear on the ticket specs and carving out time to review PRs is critical for success. Otherwise, you&#8217;ll either end up with an endless queue of PRs that don&#8217;t get merged or you&#8217;ll start letting slop creep into your codebase.</span></p><p></p><p><strong><span>Managing the team is a job of its own</span></strong></p><p><span>It&#8217;s true that I&#8217;ve gained a lot of time back thanks to the work my agent teams can do. It&#8217;s also true that I spend a lot more time managing my agent team.</span></p><p><span>I inspect the </span><a href="iframe.php?url=http%3A%2F%2Fagent.md"><span>AGENT.md</span></a><span>, skills, and workflow files to know what I&#8217;m architecting, often having to resolve conflicts and errors of processes that I haven&#8217;t defined well enough.</span></p><p><span>I update my agents and their topologies based on how the work is getting done, adjusting how they work and how they work together so the work doesn&#8217;t degrade.</span></p><p><span>In some ways, agents and agent teams are like software of their own - you need to maintain them or else they erode quickly over time.</span></p><p></p><h2><span>So what now?</span></h2><p><span>If you&#8217;re hitting the ceiling with your personal Claude setups or feeling like there&#8217;s another level of AI to unlock, you aren&#8217;t alone. This is exactly how I felt after the initial magic of Claude Code wore off earlier this year.</span></p><p><span>There are some interesting products out there like Dust that can help you quickly get to a deployed agent easily accessible in chat, especially if you&#8217;re accustomed to SaaS products and their web UIs.</span></p><p><span>I&#8217;m biased here: we built our own harness, Bobi, to run configurable agent teams for ourselves and our clients. It&#8217;s the bet we&#8217;re making.</span></p><p><span>The orchestration ceiling is real, it&#8217;s you, standing in the middle of every loop. The next teams to break through will have used their harnesses to empower and coordinate agent teams. They&#8217;ll have agents that can amplify their impact, work autonomously, and check in with their managers when it&#8217;s necessary.</span></p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://pmdata.substack.com/p/deployable-agent-teams?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 AI Craft! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://pmdata.substack.com/p/deployable-agent-teams?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="iframe.php?url=https%3A%2F%2Fpmdata.substack.com%2Fp%2Fdeployable-agent-teams%3Futm_source%3Dsubstack%26utm_medium%3Demail%26utm_content%3Dshare%26action%3Dshare"><span>Share</span></a></p></div><p></p>]]></content:encoded></item><item><title><![CDATA[I stopped steering one agent and started running a team of 11]]></title><description><![CDATA[A new way of working with autonomous agent teams]]></description><link>https://pmdata.substack.com/p/i-stopped-steering-one-agent-and</link><guid isPermaLink="false">https://pmdata.substack.com/p/i-stopped-steering-one-agent-and</guid><dc:creator><![CDATA[Luke Lin]]></dc:creator><pubDate>Wed, 08 Jul 2026 21:28:04 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21rhs5%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F3e5190ae-36b3-4d6f-9871-df2ee4b0bcb8_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><span>Friday of my first week running the GTM team, I opened the weekly brief and noticed something magical. My strategic brief had merged context and learnings from all of my GTM activities that week, without me putting in extra effort to manage files or data.</span></p><p><span>One item traced back to a sales-call recap from Tuesday. An insight came from market research on our analytics wedge from Wednesday. A use case came straight from a digital twin. They all came together to give me an updated view of the market, our market, and what that meant for our GTM strategy.</span></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://pmdata.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The AI Craft! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p><span>Pre AI, this would have taken a few hours to pull together this much information and pull it together for a strategic brief - the equivalent of a marketing analyst&#8217;s job.</span></p><p><span>Using Claude, half of this would work. The other half would be semi-updated skills and lost MD files from their buggy harness, shared across Claude Cowork and Claude Code.</span></p><blockquote><p><span>I finally feel the magic that was promised to me with AI agents. In graduating from manually steering a Claude agent to managing a team of coordinated, autonomous agents from slack, I&#8217;ve seen a sharp increase in my productivity: call prep that used to take me 2-3 hours of window-switching between Claude Cowork and Code now happens in the background, alongside a real jump in depth of research and accumulated knowledge from a human/agent loop.</span></p></blockquote><p><span>This is how I got there.</span></p><h2><span>Where I started: steering agents in Claude</span></h2><p><span>I spent the last 3 months codifying skill files in Claude, enamored with the idea that I could create skills to do an assortment of jobs. If I could write down the how of each job I wanted, load it into an agent, and set a couple of schedules, I figured the work would start building on itself. Write the procedure once, reuse it forever, and watch the output compound.</span></p><p><span>That instinct was right, and skills were the right place to start. Skills (or any other MD file) turned a generic reasoning LLM into a highly skilled worker by providing a steerable knowledge layer.</span></p><p><span>But I was running all of this in Claude Cowork, which only ran locally. This meant that anytime I didn&#8217;t have my laptop open, I couldn&#8217;t do my work.</span></p><p><span>Later, I tried using Claude Code for this work through their desktop client. That promised me on-demand workers.</span></p><p><span>But Claude was buggy in a way that built up frustration. Skills would silently fail to update, so I&#8217;d be running an old version of a procedure I&#8217;d already fixed. Reference files went missing. Artifacts I&#8217;d generated last week were just gone this week.</span></p><p><span>I had codified the how. Nothing was building on top of it. Every session started at zero, where I had to manually steer the agent, constantly expending effort to fix issues mid-stream and actively drive concurrent terminal or desktop threads.</span></p><blockquote><p><span>The single agent was leverage, real leverage, but it wasn&#8217;t compounding. The highest-value agent behaviors - the continuous learning and persistent context - these were the ones a stop-start local model couldn&#8217;t support.</span></p></blockquote><p><span>Up until this point, using Claude, even on schedules, was always a stop-start model that I had to drive. The limitation was my ability to steer something in the moment, including not just the agent itself but all the context and schedules and skills under it.</span></p><h2><span>A new way to work: agent teams in chat</span></h2><p><span>The moment it clicked was a sales call I was prepping for.</span></p><p><span>I went to my #moda-gtm channel in slack, and told my agent team about the call. My GTM director immediately dispatched 3 workers.</span></p><p><span>One built a company dossier.</span></p><p><span>One built a digital twin of my champion.</span></p><p><span>And one took the prospect&#8217;s incoming requirements doc and shipped a working prototype, deployed on Vercel, in the prospect&#8217;s own branding. A tailored version of exactly what they&#8217;d asked for.</span></p><p><span>The champion left the call saying the prototype was notable, and that we&#8217;d nailed his needs.</span></p><p><span>And I was able to steer all of that from slack. This is a glimpse of what we were promised with AI and agents.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21rhs5%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F3e5190ae-36b3-4d6f-9871-df2ee4b0bcb8_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rhs5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e5190ae-36b3-4d6f-9871-df2ee4b0bcb8_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!rhs5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e5190ae-36b3-4d6f-9871-df2ee4b0bcb8_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!rhs5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e5190ae-36b3-4d6f-9871-df2ee4b0bcb8_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!rhs5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e5190ae-36b3-4d6f-9871-df2ee4b0bcb8_1536x1024.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21rhs5%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F3e5190ae-36b3-4d6f-9871-df2ee4b0bcb8_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3e5190ae-36b3-4d6f-9871-df2ee4b0bcb8_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2955417,&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://pmdata.substack.com/i/205998087?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e5190ae-36b3-4d6f-9871-df2ee4b0bcb8_1536x1024.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_!rhs5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e5190ae-36b3-4d6f-9871-df2ee4b0bcb8_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!rhs5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e5190ae-36b3-4d6f-9871-df2ee4b0bcb8_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!rhs5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e5190ae-36b3-4d6f-9871-df2ee4b0bcb8_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!rhs5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e5190ae-36b3-4d6f-9871-df2ee4b0bcb8_1536x1024.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><span>A single steered agent, pointed at one folder, could not have produced that output. I&#8217;ve tried. It took 2-3 hours, window switching between Claude Cowork and Code. A standing team working off shared context was able to handle the work, and our sales process benefitted from it.</span></p><h2><span>How the agent team comes together</span></h2><p><span>Graduating from one steered agent to a standing team is a change in kind, not degree. Call this the Agent Team shift. Bringing this new magic to life requires a lot of moving pieces.</span></p><p><span>Foundationally, I needed a harness - I used our internally built harness (</span><a href="iframe.php?url=https%3A%2F%2Fwww.buildmoda.ai%2Fbobi"><span>Bobi</span></a><span>) that runs off real-time events and lets me easily build different agent topologies. Beyond that, a few things stood out that enabled a new level of work.</span></p><ol><li><p><strong><span>The Agent Team: </span></strong><span>instead of one defined agent with access to a variety of skill files that I would direct, I defined a team of 11 different agents in a larger GTM team. I have a director agent that coordinates work and deliveries, 5 different job families, and each agent can easily talk to each other via CLI. <br><br>This enables complex workflows like the one from above, where I have the director dispatch a series of jobs across multiple agents, who can pass context to deliver something. <br><br></span></p></li><li><p><strong><span>Second Brain and Memory</span></strong><span>: Next to my agent team, I have my second brain, where every raw document and output artifact is stored. This gives me a central repository of accumulating knowledge that I can draw from. <br><br>I also have every turn of every conversation stored as episodic memory. Automatic jobs run to synthesize these into learnings on my preferences and semantic understandings so that my entire agent team works better today than yesterday.<br></span></p></li></ol><ol start="3"><li><p><strong><span>Flexible scheduling and orchestration</span></strong><span>: My agent team runs a strategic brief every Sunday. It also checks things like substack every other day for me on a cron. <br><br>It also reacts to emails and meetings on demand for me, helping me run recaps in near real time. <br><br>And I can talk to it, asking it to run deep research for me at any point, or help me think through my GTM strategy and motions, all drawing from the shared second brain and memory. <br><br></span></p></li><li><p><strong><span>Slack access: </span></strong><span>I underestimated the impact of doing this work on slack until I witnessed it firsthand. With this setup, I have a dedicated channel for my GTM discussion and activities. Each of my inquires and needs becomes its own dedicated thread, where I can go deep in discussion with my agent team <br><br>In Claude, I had to manually select projects, which were routed to different folders and contexts. I often forgot to do this, or it would take 2-3 clicks, which meant it was enough friction for me to not do it. <br><br></span></p></li><li><p><strong><span>Model flexibility: </span></strong><span>My blog drafting workflow begins with researching lots of topics across the internet, coming up with a spine, writing the first draft (followed by me cleaning everything up), and then creating an image that pairs with my writing. <br><br>I&#8217;ve orchestrated my agent team to use Sonnet for internet research for speed and cost, then Opus for the reasoning and thinking for the draft, and then ChatGPT to create the image.<br></span></p></li></ol><h2><span>Where an autonomous team helps, and where it doesn&#8217;t</span></h2><p><span>Having an agent team at your fingertips can be game changing, but only for the right use cases.</span></p><p><span>A standing team helps for repeatable high-value tasks and quick discussions: GTM, research, the kind of work where context accrues and the next task genuinely benefits from the last.</span></p><p><span>For high-volume, latency-sensitive, or strictly sequential single-thread work, a single steered agent still wins. For example, if I&#8217;m building a UI where I need to make lots of adjustments or go back and forth on design, I&#8217;ll still open my terminal to do that work.</span></p><p><span>The best way to think of it is a standing team that can handle time consuming, lower precision tasks and a place to offload all your thoughts, learnings, and context.</span></p><h2><span>The future of work, managing fleets of agents</span></h2><p><span>If you&#8217;re already steering one agent and you can feel the ceiling, you&#8217;re not imagining it, and you&#8217;re not early to the frontier. The largest companies are converging on the same shape you&#8217;d build for yourself: a workspace, a harness, skills, and a shared brain.</span></p><p><span>Most mature AI teams I&#8217;ve come across are building a version of this for their enterprises. And most mature AI practitioners already have a version of this for their personal use at work.</span></p><blockquote><p><span>When we take this one step further, we&#8217;re on the cusp of a real workplace revolution. Instead of simple search across enterprise surfaces and one-off half-built agents that can update salesforce records, we can have well designed agent teams that perform reliable work.</span></p></blockquote><p><span>Imagine a support team that catches a customer&#8217;s bug report the instant it lands, reproduces it in a live sandbox, traces it to the offending commit, and hands an engineering agent a scoped, tested PR before the ticket&#8217;s an hour old.</span></p><p><span>Imagine every one of those fixes, tickets, and calls landing in the same shared second brain, so the pattern your best engineer would catch in month six gets caught by the whole team in week two.</span></p><p><span>That&#8217;s the agent team shift: not a faster you, but a compounding one. I went from steering one agent to running a team of 11. What would you build if yours never started back at zero?</span></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://pmdata.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The AI Craft! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[How to prep for Claude’s inevitable price increase]]></title><description><![CDATA[Use Codex, GLM 5.2 and your harness and evals to anticipate Claude's price hikes]]></description><link>https://pmdata.substack.com/p/how-to-prep-for-claudes-inevitable</link><guid isPermaLink="false">https://pmdata.substack.com/p/how-to-prep-for-claudes-inevitable</guid><dc:creator><![CDATA[Luke Lin]]></dc:creator><pubDate>Tue, 23 Jun 2026 21:20:52 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21amFJ%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F22e315b7-ec36-48c5-9310-2bf06ebe3140_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><span>On May 13, Anthropic told developers that automated Claude usage was about to get a lot more expensive. Starting June 15, anything running through the Agent SDK, claude -p, or GitHub Actions would leave the flat subscription and move onto a metered credit billed at full API rates.</span></p><p><span>For a heavy automated workload, that was a 12x to 175x increase. Then on June 15, the morning it was due, </span><a href="iframe.php?url=https%3A%2F%2Fthenewstack.io%2Fanthropic-pauses-claude-agent-sdk-subscription-change%2F"><span>Anthropic paused it&#8230; for now</span></a><span>.</span></p><p><span>For all of us who&#8217;ve been leaning on Claude, Anthropic&#8217;s move signals something important. The cheap, flat-rate access we&#8217;ve built on isn&#8217;t a guarantee.</span></p><blockquote><p><span>Claude is already the premium option, and if history is any indicator, it&#8217;s a matter of time before prices go up significantly - between Anthropic&#8217;s IPO and the release of Fable/Mythos.</span></p><p><span>Luckily, competition will give us options. Codex is a fast growing alternative to Claude Code that many are flocking towards and the recent release of GLM 5.2 as an open weight model is a promising cost-efficient option.</span></p></blockquote><p><span>The crux today is building for immediate value, where Anthropic&#8217;s superior models clearly help. And simultaneously building for model optionality, so you can switch to Codex or other models when prices start going up.</span></p><h2><span>Why token prices will continue rising</span></h2><p><span>The optimists say inference keeps getting cheaper, so this sorts itself out. Sam Altman likes to point out that the cost of a given level of intelligence falls about 10x a year, and he&#8217;s right about the trend. Two things push the other way, though, and both are getting stronger.</span></p><p><strong><span>The first is the compute shortage.</span></strong><span> </span></p><p><span>Nvidia booked $75 billion in data-center revenue in a single quarter, up 92%, with Blackwell sold out. The IEA expects data-center electricity demand to nearly double from 485 terawatt-hours in 2025 to 950 by 2030. TSMC&#8217;s advanced packaging is booked through mid-2027, and few expect supply to catch demand before 2028.</span></p><p><span>We are collectively GPU poor right now and that isn&#8217;t likely to change in the next few years.</span></p><p><span>Plugging a new data center into the US grid can mean a five-year wait. Being GPU-poor is the condition of the whole decade, and scarcity gives the labs every reason to charge more.</span></p><p></p><p><strong><span>The second is the money behind the curtain.</span></strong><span> </span></p><p><span>Right now, frontier access is subsidized, paid for by venture capital and hyperscaler balance sheets during a land grab. We&#8217;ve watched this play out before.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21amFJ%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F22e315b7-ec36-48c5-9310-2bf06ebe3140_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!amFJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22e315b7-ec36-48c5-9310-2bf06ebe3140_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!amFJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22e315b7-ec36-48c5-9310-2bf06ebe3140_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!amFJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22e315b7-ec36-48c5-9310-2bf06ebe3140_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!amFJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22e315b7-ec36-48c5-9310-2bf06ebe3140_1536x1024.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21amFJ%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F22e315b7-ec36-48c5-9310-2bf06ebe3140_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/22e315b7-ec36-48c5-9310-2bf06ebe3140_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2753647,&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://pmdata.substack.com/i/203147762?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22e315b7-ec36-48c5-9310-2bf06ebe3140_1536x1024.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_!amFJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22e315b7-ec36-48c5-9310-2bf06ebe3140_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!amFJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22e315b7-ec36-48c5-9310-2bf06ebe3140_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!amFJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22e315b7-ec36-48c5-9310-2bf06ebe3140_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!amFJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22e315b7-ec36-48c5-9310-2bf06ebe3140_1536x1024.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><span>From 2012 to 2020, Uber and Lyft sold rides below cost on purpose, funded by investors who wanted growth before profit. Uber raised close to $20 billion before going public.</span></p><p><span>Its May 2019 IPO was the turn: the stock dropped nearly 8% on day one as public markets looked at billions in losses and demanded a path to profit. The subsidies came off, and between early 2018 and mid-2021 fares rose roughly 92%, close to double. Uber turned its first adjusted profit later that year and its first real profit in 2023.</span></p><p><span>The trigger wasn&#8217;t the cost of a ride. It was the IPO. Anthropic has already filed confidentially to go public, with OpenAI close behind. When the labs have to answer to public markets, the subsidy is the first thing to go, and that clock is already running.</span></p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://pmdata.substack.com/p/how-to-prep-for-claudes-inevitable?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 AI Craft! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://pmdata.substack.com/p/how-to-prep-for-claudes-inevitable?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="iframe.php?url=https%3A%2F%2Fpmdata.substack.com%2Fp%2Fhow-to-prep-for-claudes-inevitable%3Futm_source%3Dsubstack%26utm_medium%3Demail%26utm_content%3Dshare%26action%3Dshare"><span>Share</span></a></p></div><p></p><h2><span>We need to show AI wins, so we need Claude today</span></h2><p><span>But the reality is that we&#8217;re all in a pressure cooker to show AI wins. Every investor and board member wants to see our businesses become AI native as quickly as possible.</span></p><p><span>And Claude is the best tool to make the AI transformation happen.</span></p><p><span>Anthropic&#8217;s revenue run-rate went from about $9 billion at the end of 2025 to $30 billion in April to roughly $47 billion in May, growth Dario Amodei called 80x annualized.</span></p><p><span>Anthropic counts 300k+ business customers and eight of the Fortune 10, with rollouts like Deloitte putting Claude in front of 470,000 employees.</span></p><blockquote><p><span>If you need results this quarter, buy a plan, put Claude Code/Cowork in front of your team, and get out of their way. Thousands of companies already have. </span></p><p><span>The strongest model on the hardest reasoning is a real edge, and it&#8217;s worth getting your organization up to par with AI.</span></p><p><span>&#8230;</span>But go in with eyes open on cost.</p></blockquote><p><span>Anthropic&#8217;s two tiers above Opus are Fable 5 and the invite-only Mythos 5, both twice the price of Opus: $10 and $50 per million input and output tokens against Opus 4.8&#8217;s $5 and $25.</span></p><p><span>It will pay to be judicious about when you reach for the most advanced models, and to find the spots where a smaller, cheaper model will do.</span></p><p><span>I learned this the expensive way. I set up an agent to watch my inbox and triage anything that looked like a support issue for my app, Baohua. I didn&#8217;t notice the default model was Opus 4.8, which is overkill for reading email.</span></p><p><span>Within a day it had eaten more than half my weekly token limit. Had I used Haiku, at a fifth the price ($1 and $5 per million tokens), I would&#8217;ve saved a lot of money and headache.</span></p><h2><span>How to prepare for the upcoming bill</span></h2><p><span>Competition is finally real, which means you have somewhere to go when Claude&#8217;s price or terms change. Getting ready comes down to four moves.</span></p><p><strong><span>1. Know your alternatives, and use the cheap ones on cheap work. </span></strong></p><p><span>Codex is a genuine second option now, not just a fallback. It passed 5 million weekly active users by June, 6x its February number. On paper it isn't the cheaper model: the GPT-5.5 engine behind it runs about $5 per million input tokens and $30 output, right alongside Opus 4.8's $5 and $25. </span></p><p><span>The edge is efficiency. Codex tends to finish the same job with fewer tokens, so the cost per </span><em>finished task</em><span> comes out lower. The spread narrows on tightly scoped work, and Claude sometimes buys more thorough output, but the direction holds across independent tests: you pay for what the model burns, and Codex burns less</span></p><blockquote><p>One widely-cited Figma-to-code build ran 1.5 million tokens on Codex against 6.2 million on Claude Code, roughly a 4x gap. </p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21tSEM%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fc63a1c0f-58a5-4923-a665-ba19a5baa5dd_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tSEM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc63a1c0f-58a5-4923-a665-ba19a5baa5dd_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!tSEM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc63a1c0f-58a5-4923-a665-ba19a5baa5dd_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!tSEM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc63a1c0f-58a5-4923-a665-ba19a5baa5dd_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!tSEM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc63a1c0f-58a5-4923-a665-ba19a5baa5dd_1536x1024.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21tSEM%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fc63a1c0f-58a5-4923-a665-ba19a5baa5dd_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c63a1c0f-58a5-4923-a665-ba19a5baa5dd_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2889620,&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://pmdata.substack.com/i/203147762?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc63a1c0f-58a5-4923-a665-ba19a5baa5dd_1536x1024.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_!tSEM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc63a1c0f-58a5-4923-a665-ba19a5baa5dd_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!tSEM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc63a1c0f-58a5-4923-a665-ba19a5baa5dd_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!tSEM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc63a1c0f-58a5-4923-a665-ba19a5baa5dd_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!tSEM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc63a1c0f-58a5-4923-a665-ba19a5baa5dd_1536x1024.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><span>GLM 5.2, which Zhipu released on June 13, is open-weight under an MIT license with a million-token context window, the first open model past 80% on Terminal-Bench, and second on the Code Arena web-dev board behind only Fable 5, at about a sixth of GPT-5.5&#8217;s cost.</span></p><p><span>And for the simplest jobs you can pay nothing at all. A small open model can handle a routine check on a pull request on hardware you already run, and that work comes off your token bill entirely.</span></p><p></p><p><strong><span>2. Build a harness that doesn&#8217;t care which model it calls.</span></strong><span> </span></p><p><span>The goal is to swap the Agent SDK between Claude, OpenAI, Google, and whoever ships next without a rewrite. That means standardizing how you call models, how you store memory and context so it carries from one provider to another, and how you wire your MCP servers and CLI connections.</span></p><p><span>Your</span><a href="iframe.php?url=https%3A%2F%2Fpmdata.substack.com%2Fp%2Fharness-engineering-when-reasoning"><span> harness design</span></a><span> matters a lot right here. </span></p><p><span>Switching still isn&#8217;t free. Prompts get tuned to one model&#8217;s quirks, tool-call formats differ, and prompt caching quietly breaks when you route Claude through an OpenAI-compatible proxy. A gateway and a model-agnostic harness turn that migration into a config change.</span></p><p></p><p><strong>3. <span>Keep your evals solid, because they&#8217;re how you switch safely.</span></strong><span> </span></p><p><span>Every time you change a model you need to check for regressions before it reaches production. Without </span><a href="iframe.php?url=https%3A%2F%2Fpmdata.substack.com%2Fp%2Fthe-return-of-the-eval"><span>a real eval suite</span></a><span>, a swap is a guess. With one, it&#8217;s a measured decision you can make in an afternoon.</span></p><p></p><p><strong>4. <span>Stay loose on agent topology. </span></strong></p><p><span>A new model changes how much work one agent should carry. A switch might collapse a five-agent setup into two, or split one overloaded agent into several. Don&#8217;t harden a topology you&#8217;ll want to redraw in a month. In an uncertain market, the agility to redraw it is the point.</span></p><p></p><h2><span>Use Claude now, and build to leave</span></h2><p><span>These two moves aren&#8217;t in tension. Buy the plan, put Claude Code and Cowork in front of your people, and capture the wins your board is asking for this quarter. At the same time, treat that dependency as temporary. Know your alternatives, keep a model-agnostic harness warm, hold your evals tight, and stay loose on your topology.</span></p><p><span>The subsidy clock is already running. When Anthropic prices in its IPO and brings Fable and Mythos back at a premium, the teams that prepared will swap a model and move on.</span></p><div class="pullquote"><p><span>After all, what&#8217;s the point of getting $1M in AI productivity gains, only to pay $2M in tokens next year when model prices go up?</span></p></div><p><span>The winners next year won&#8217;t be the ones who picked the perfect model. They&#8217;ll be the ones who built so the model was never the thing they were locked into.</span></p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://pmdata.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The AI Craft! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Harness engineering when reasoning is exponential]]></title><description><![CDATA[6 principles for building a harness that grows with your models]]></description><link>https://pmdata.substack.com/p/harness-engineering-when-reasoning</link><guid isPermaLink="false">https://pmdata.substack.com/p/harness-engineering-when-reasoning</guid><dc:creator><![CDATA[Luke Lin]]></dc:creator><pubDate>Wed, 17 Jun 2026 02:02:33 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21-nzi%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fa4d5177e-fd61-4303-9852-5ec9b24a256b_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Your team went all-in on AI a few months ago, and everyone&#8217;s been maxing out their Claude subscriptions since.</p><p>Watch two of your sales reps on the same Monday.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://pmdata.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The AI Craft! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>The first rep set Claude Cowork up to read his inbox, research the account, and draft a prep doc before each call. This morning it didn&#8217;t run, because his laptop was closed. Yesterday it ran, drifted halfway through, skipped the research, and filled the gaps with things that aren&#8217;t true. He spends the twenty minutes before his call fixing it.</p><p>The second rep&#8217;s agent runs on a schedule at 7am no matter where his laptop is. The workflow around it enforces each step, does the research, checks the data, and has learned over weeks which accounts and signals he actually cares about. He reads the brief while sipping coffee instead of troubleshooting, and enters the day fully prepared.</p><p>Same model, same task. One rep is editing skill files and remembering to press go; the other has a system that quietly makes him better at his job every day.</p><blockquote><p>This is harness engineering: the scaffolding around a model that turns raw reasoning into work that reliably gets done, meeting people where they do work.</p></blockquote><p>Harnesses aren&#8217;t new; we&#8217;ve been wrapping scaffolding around language models since the GPT-3 days. But they&#8217;ve completely changed in just a few years, especially since reasoning jumps from Opus 4.6 and forward. Andrej Karpathy has argued for treating scaffolding as disposable, built to be stripped away as models improve.</p><p>So how should we approach harness engineering when we build it not for Opus 4.8, but for whatever lands two generations out, call it Fable 6.0 or GPT-7, when reasoning has 10x&#8217;d again?</p><div class="callout-block" data-callout="true"><p>The trick for harness engineering is building with principles that amplify the human and AI loop while giving you flexibility and accountability as reasoning improves.</p></div><h2>The agent harness, a brief history</h2><p>Let&#8217;s start from the top. Agent = model + harness.</p><blockquote><p>The model reasons; the harness is everything around it that decides what it sees, what it can touch, what it remembers between sessions, and how its work gets checked before it ships.</p><p>Chiefly, a harness manages all the scaffolding around what your AI model does. <a href="iframe.php?url=https%3A%2F%2Ftomtunguz.com%2Fharnessing-ai%2F">Tomasz Tunguz</a> has a great breakdown of a harness&#8217; components, such as context, tools, orchestration, and more.</p></blockquote><p>In the early ChatGPT era the harness was there to hard-code a workflow: LangChain wired prompt into prompt into prompt with LLMChain, SequentialChain, and AgentExecutor. CrewAI gave each agent a role, a goal, and a backstory and ran the crew on a script.</p><p>These were reasonable bets for models that couldn&#8217;t be trusted to plan, but also required lots of engineering and wiring just to get an agent to do reasonable work.</p><p>Then the models got smarter.</p><p>MCP and CLI enabled another way to call tools, structured outputs went native, context windows went to 1M tokens, and the chain after chain approach collapsed into a single model call.</p><p>LangChain conceded developers had hit a &#8220;controllability wall,&#8221; decided the right abstraction &#8220;was little to no abstraction at all,&#8221; and in October 2025 moved its own chain era into a package named langchain-classic. CrewAI bolted on a deterministic Flows layer and pivoted toward governance.</p><p>What replaced chains wasn&#8217;t a better chain. It was a different category of thing: agent loops, state machines, workflow graphs, durable execution, evaluator loops, and a new term - harness engineering.</p><h2>What harness engineering looks like today</h2><p>Now, it&#8217;s summer 2026. We got a taste of Fable 5 but most folks are using Opus 4.8 or GPT 5.5. Teams no longer build a harness from scratch.</p><p>Anthropic packages the Claude Code loop as the Claude Agent SDK and, since April, runs the whole thing for you as Managed Agents. OpenAI&#8217;s Agents SDK enables a model-native harness with sandboxes and memory, and Symphony turns an issue tracker into the control plane for a fleet of Codex agents.</p><p>Open source agents like OpenClaw and Hermes have proliferated, primarily as personal assistants or small scale business orchestrators.</p><div class="pullquote"><p>Just last week, I saw someone demo their OpenClaw harness that scans all their GitHub PRs, open tickets, and summarizes their team&#8217;s progress for daily standup. This saves them the painful daily ritual of &#8220;is this ticket done or in review? And where exactly is the PR?&#8221; </p><p>It blew my mind.</p></div><p>And just a few days ago, Databricks open-sourced <a href="iframe.php?url=https%3A%2F%2Fomnigent.ai%2F">Omnigent</a>, an early &#8220;meta-harness&#8221; that sits above Claude Code, Codex, and the agents you write yourself and treats each as interchangeable.</p><p>Imagine something like Google Docs, a collaborative multi-player environment, where you can bring whatever model you want, and coordinate and share your agent work across the team.</p><p>This is the future of agentic work.</p><h2>What does a 10x smarter model look like?</h2><p>If we extrapolate the curve we&#8217;re already on, we see a few things with the next generations of foundation models, when Fable 6 or GPT 7 come out. </p><ul><li><p><strong>Persistent long-horizon memory</strong>. <br>Effectively unlimited context through a combination of massive context windows, retrieval, memory compression, and learned state management. Models can reason across years of company history, code changes, decisions, and conversations.<br></p></li><li><p><strong>Stronger world models and causal reasoning</strong>. <br>Models get better at identifying implicit constraints, second-order effects, organizational dependencies, and hidden assumptions. Less pattern matching, more coherent internal modeling of systems.<br></p></li><li><p><strong>Long-duration autonomous execution</strong>. <br>Models can maintain objectives across multi-hour or multi-day tasks, dynamically replan, recover from failures, and manage large execution graphs without losing intent.<br></p></li><li><p><strong>Hierarchical planning and decomposition</strong>. <br>Models are more capable at breaking large goals into sub-goals, assigning work to specialized agents, tracking dependencies, and synthesizing results back into a coherent outcome.<br></p></li><li><p><strong>Native multimodal reasoning</strong>. <br>Text, code, documents, spreadsheets, diagrams, screenshots, meetings, audio, and video all become first-class reasoning inputs rather than separate model capabilities.</p></li></ul><h2>How to harness when reasoning 10x&#8217;s</h2><p>If that is the model of tomorrow, does our harness of today become obsolete, along with all our work and efforts to set up that platform?</p><p>Not necessarily. </p><p>If we build with core principles that anticipate the future, we can deliver what we need today and tomorrow: </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21-nzi%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fa4d5177e-fd61-4303-9852-5ec9b24a256b_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-nzi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4d5177e-fd61-4303-9852-5ec9b24a256b_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!-nzi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4d5177e-fd61-4303-9852-5ec9b24a256b_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!-nzi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4d5177e-fd61-4303-9852-5ec9b24a256b_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!-nzi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4d5177e-fd61-4303-9852-5ec9b24a256b_1536x1024.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21-nzi%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fa4d5177e-fd61-4303-9852-5ec9b24a256b_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a4d5177e-fd61-4303-9852-5ec9b24a256b_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2940890,&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://pmdata.substack.com/i/202257343?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4d5177e-fd61-4303-9852-5ec9b24a256b_1536x1024.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_!-nzi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4d5177e-fd61-4303-9852-5ec9b24a256b_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!-nzi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4d5177e-fd61-4303-9852-5ec9b24a256b_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!-nzi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4d5177e-fd61-4303-9852-5ec9b24a256b_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!-nzi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4d5177e-fd61-4303-9852-5ec9b24a256b_1536x1024.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><strong>1. Context and knowledge as the backbone.</strong> <br>The harness connects and amplifies your expertise and your company&#8217;s knowledge: docs, decisions, code history, eval traces, and more. A smarter model still wakes up knowing nothing about your business. It just mines a good context store faster, which makes that store more valuable, not less.</p><p><strong>2. Human judgment, captured.</strong> <br>A harness shouldn&#8217;t only do the work. It should catch the taste, the approvals, and the corrections your people supply and feed them back into the system. </p><p>As <a href="iframe.php?url=https%3A%2F%2Fx.com%2Fsatyanadella%2Fstatus%2F2066182223213293753">Satya Nadella</a> argues, &#8220;the real opportunity is not in picking the best model but instead in building a learning loop on top of models where human capital and token capital compound.&#8221;</p><p><strong>3. Flexible orchestration that evolves.</strong> <br>Keep determinism where the business demands it, the checkpoints, retries, approvals, and SLAs. But design your harness in a way where those checkpoints can change over time. The agent topologies you have today will be obsolete in 6 months, so flexibility is key.</p><p><strong>4. Continuous evaluation and verification.<br></strong>As agents get more autonomous, you need continuous measurement: task success, regressions, golden sets, cost, and hallucination checks. Have a different model family grade the work, because models flatter their own output.</p><p><strong>5. Governance and security are 1st class citizens.</strong><br>A more capable agent taking on work autonomously makes identity, audit, permissions, and policy non-negotiable. As the work gets more important, so does the audit trail. That is exactly what Omnigent&#8217;s policy layer reaches for, and it is what lets you give an agent more rope without losing the ability to watch and stop it.</p><p><strong>6. Surface integrations, meet your users where they&#8217;re at.</strong> <br>The harness that wins isn&#8217;t backend plumbing. It lives where the work happens: Slack, Linear, GitHub, email, the CRM, the IDE. It meets people where they already are, the way a brief that lands in Slack at 7am beats a tool someone has to remember to open.</p><h2>A harness worth building</h2><p>It&#8217;s paralyzing to consider how to invest in your harness and agent platform right now, do you try building something that might get obsolete in 6 months? Or do you risk not reaping the gains from a harness that amplifies your team&#8217;s abilities?</p><blockquote><p>The answer is to do both, build a harness for today that grows with the models of tomorrow. Understand and anticipate how reasoning jumps will change the ways agents and context get managed, then build your harness with the flexibility that accounts for this change while instrumenting the governance necessary for agents to take on more work.</p></blockquote><p>Harness engineering isn&#8217;t going anywhere; it&#8217;s still early. Build the harness that amplifies the loop between your people and the model, meet your team where they already work, and design today for the model that lands next year.</p><p>That is how you build something that gets more valuable every time the model does.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://pmdata.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The AI Craft! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The Return of the Eval]]></title><description><![CDATA[If you wrote off AI evals, think again.]]></description><link>https://pmdata.substack.com/p/the-return-of-the-eval</link><guid isPermaLink="false">https://pmdata.substack.com/p/the-return-of-the-eval</guid><dc:creator><![CDATA[Luke Lin]]></dc:creator><pubDate>Wed, 10 Jun 2026 20:25:31 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21qx7i%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F23f71a65-37cd-4f07-a999-9fb8dbd6365a_1610x977.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Last week I stood in a packed room at Shack15 in San Francisco for <a href="iframe.php?url=https%3A%2F%2Farize.com%2Fobserve%2F">Arize:Observe</a>. 700+ builders, and the whole center of gravity was one thing: evaluating and monitoring AI agents.</p><p>A year ago, the loudest voices in my feed were calling evals dead. Standing in that room, it was obvious they&#8217;d come back. AI teams had ridden the hype and the disillusionment, and now they&#8217;re seeing the mechanism for what it is.</p><p>Evals are your ML performance metrics for agents, the precision and recall and F1 of the thing. They don&#8217;t make your product succeed; you still have to do that. But you can&#8217;t run a performant agent without them.</p><h3><strong>The evals saga</strong></h3><p>Here&#8217;s how we got here.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21qx7i%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F23f71a65-37cd-4f07-a999-9fb8dbd6365a_1610x977.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qx7i!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23f71a65-37cd-4f07-a999-9fb8dbd6365a_1610x977.png 424w, https://substackcdn.com/image/fetch/$s_!qx7i!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23f71a65-37cd-4f07-a999-9fb8dbd6365a_1610x977.png 848w, https://substackcdn.com/image/fetch/$s_!qx7i!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23f71a65-37cd-4f07-a999-9fb8dbd6365a_1610x977.png 1272w, https://substackcdn.com/image/fetch/$s_!qx7i!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23f71a65-37cd-4f07-a999-9fb8dbd6365a_1610x977.png 1456w" sizes="100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21qx7i%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F23f71a65-37cd-4f07-a999-9fb8dbd6365a_1610x977.png" width="1456" height="884" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23f71a65-37cd-4f07-a999-9fb8dbd6365a_1610x977.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:884,&quot;width&quot;:1456,&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_!qx7i!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23f71a65-37cd-4f07-a999-9fb8dbd6365a_1610x977.png 424w, https://substackcdn.com/image/fetch/$s_!qx7i!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23f71a65-37cd-4f07-a999-9fb8dbd6365a_1610x977.png 848w, https://substackcdn.com/image/fetch/$s_!qx7i!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23f71a65-37cd-4f07-a999-9fb8dbd6365a_1610x977.png 1272w, https://substackcdn.com/image/fetch/$s_!qx7i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23f71a65-37cd-4f07-a999-9fb8dbd6365a_1610x977.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><h4><strong>Episode IV: A New Eval</strong></h4><p>Evals are everything. </p><p>In 2024, the consensus was loud. Hamel Husain wrote that<a href="iframe.php?url=https%3A%2F%2Fhamel.dev%2Fblog%2Fposts%2Fevals%2F"> your AI product needs evals</a>, full stop. Evals were &#8220;the new unit test.&#8221; <a href="iframe.php?url=https%3A%2F%2Fx.com%2Fgdb%2Fstatus%2F1733553161884127435">Greg Brockman</a> said they&#8217;re &#8220;surprisingly often all you need.&#8221; <a href="iframe.php?url=https%3A%2F%2Fx.com%2Fgarrytan%2Fstatus%2F1892952656940880036">Garry Tan</a> called them &#8220;emerging as the real moat for AI startups.&#8221; If you were building, you were told you had to have them.</p><p>In the GPT-4 era, when reasoning was still shaky, teams doubled down. Evals were going to be the thing that differentiated agent performance, and we all believed it.</p><h4><strong>Episode V: The Models Strike Back</strong></h4><p>Evals are dead. </p><p>Then came the backlash. Teams burned weeks hand-labeling golden datasets, and a single reasoning jump made failure modes vanish overnight. Why maintain a test suite against a target that keeps moving? Alex Reibman caught the mood in a post titled <a href="iframe.php?url=https%3A%2F%2Fhacktrace.substack.com%2Fp%2Fevals-are-a-scam-and-were-being-gaslit">&#8220;Evals are a scam.&#8221;</a> The frustration was real, and it was earned.</p><p>The logic was simple. Reasoning jumps from the foundation models would erase any moat you&#8217;d built with detailed evals, and take your tuning time and money with them.</p><h4><strong>Episode VI: Return of the Eval</strong></h4><p>Okay, evals are useful.</p><p>The position that settled was quieter and more nuanced. You don&#8217;t need thousands of labeled golden points. The<a href="iframe.php?url=https%3A%2F%2Fnewsletter.pragmaticengineer.com%2Fp%2Fevals"> Pragmatic Engineer&#8217;s guide to evals</a>, built on Hamel&#8217;s work across 40-plus companies, starts with error analysis: spend thirty minutes reading 20 to 50 real outputs, name the handful of ways your system actually breaks, and write a check for each.</p><blockquote><p>Yes, we need evals. No, we don&#8217;t need over-built golden datasets. A few good data points give enough signal to tell you how well the agent is performing.</p></blockquote><p>The belief changed underneath the practice. Teams used to invest in evals for a fine-tuning moat. Reasoning jumps killed that story. What&#8217;s left is more durable: evals are the telemetry you measure to know how your agent is doing.</p><p>Which brings us back to that room at Observe 2026.</p><p>The eval is back, bigger than before, and the labs are leading it. Anthropic now ships an<a href="iframe.php?url=https%3A%2F%2Fwww.anthropic.com%2Fengineering%2Fdemystifying-evals-for-ai-agents"> engineering guide to evals for agents</a> that makes the plain case: &#8220;Without evals, it&#8217;s easy to get stuck in reactive loops, catching issues only in production, where fixing one failure creates others.&#8221;</p><h3><strong>Why you should care about evals now</strong></h3><p>Three agent dynamics reveal why teams need evals today.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21nspo%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F3a006343-4f35-4c12-99df-05cca37b3eac_1254x1254.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nspo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a006343-4f35-4c12-99df-05cca37b3eac_1254x1254.png 424w, https://substackcdn.com/image/fetch/$s_!nspo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a006343-4f35-4c12-99df-05cca37b3eac_1254x1254.png 848w, https://substackcdn.com/image/fetch/$s_!nspo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a006343-4f35-4c12-99df-05cca37b3eac_1254x1254.png 1272w, https://substackcdn.com/image/fetch/$s_!nspo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a006343-4f35-4c12-99df-05cca37b3eac_1254x1254.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21nspo%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F3a006343-4f35-4c12-99df-05cca37b3eac_1254x1254.png" width="1254" height="1254" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3a006343-4f35-4c12-99df-05cca37b3eac_1254x1254.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1254,&quot;width&quot;:1254,&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;: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="" srcset="https://substackcdn.com/image/fetch/$s_!nspo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a006343-4f35-4c12-99df-05cca37b3eac_1254x1254.png 424w, https://substackcdn.com/image/fetch/$s_!nspo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a006343-4f35-4c12-99df-05cca37b3eac_1254x1254.png 848w, https://substackcdn.com/image/fetch/$s_!nspo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a006343-4f35-4c12-99df-05cca37b3eac_1254x1254.png 1272w, https://substackcdn.com/image/fetch/$s_!nspo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a006343-4f35-4c12-99df-05cca37b3eac_1254x1254.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><strong>1. Agent workflows compound errors. Telemetry catches them.</strong></p><p>People are building agent workflows now, not single chats. Modern harnesses chain agents and tools across many steps, and errors compound as they go. A wrong call at step two corrupts everything after it.</p><blockquote><p>An eval harness instruments every step of that loop. Each tool call, each model response, each retry shows up as a span you can read. When a run fails, you don&#8217;t guess. You open the trace, find the step that made the wrong call, and read the reasoning that led there.</p></blockquote><p>Here&#8217;s the critical difference between &#8220;the agent is flaky&#8221; and &#8220;the agent picks the wrong tool whenever the request is ambiguous at step two.&#8221; One is a shrug, the other is fixable. </p><p><strong>2. Models shift under you. Performance varies by the day.</strong></p><blockquote><p>A provider can update a model behind the same API with no version bump, and your agent behaves differently on Tuesday than it did on Monday. New models aren&#8217;t always better on your task; they&#8217;re better on the lab&#8217;s benchmarks.</p></blockquote><p>Even the labs get bitten. Anthropic&#8217;s own<a href="iframe.php?url=https%3A%2F%2Fwww.anthropic.com%2Fengineering%2Fa-postmortem-of-three-recent-issues"> postmortem</a> found a routing bug quietly degraded as much as 16 percent of Claude Sonnet 4 requests at its peak, and it ran for weeks before anyone caught it, because the evals in place didn&#8217;t measure what users were actually feeling. The drift is real enough that<a href="iframe.php?url=https%3A%2F%2Fisclaudedumb.today%2F"> isclaudedumb.today</a> now runs daily benchmarks on Claude Code.</p><p>Then there&#8217;s context poisoning, where a single bad fact enters an agent&#8217;s working state and reproduces at every step after. The<a href="iframe.php?url=https%3A%2F%2Farxiv.org%2Fabs%2F2507.06261"> Gemini 2.5 technical report</a> documents exactly that: an agent fixating on a goal that never existed.</p><p>All of this can happen on a Tuesday, with no notice. Proactive evals catch the regression before your customers do.</p><p><strong>3. Tokens are expensive. Evals keep the bill honest.</strong></p><p>Analyze the full flow of an agent loop and you&#8217;ll find rampant token waste: unnecessary retries, extra tool schemas and descriptions, calls to the wrong tools entirely.</p><blockquote><p>When we supported <a href="iframe.php?url=https%3A%2F%2Fbarndoor.ai%2F">Barndoor AI</a>, our evals found exactly this. Ask Claude to update a doc in Google Drive and it would routinely call the wrong tools, trying three or four paths before landing on the right one for a simple task. That burned thousands of tokens a run.</p><p>So we built a closed-loop system that scored the agent against common knowledge-work operations and shipped a skills pack to drive up efficiency. This was impossible without telemetry to know what the agent was doing and how to measure improvement.</p></blockquote><p>Most eval libraries give you trace and span-level data on tokens, tool calls, and latency out of the box. As the industry goes from token maxxing to token stashing, that level of insight is the new table stakes.</p><h3><strong>How to get started</strong></h3><p>If you&#8217;re an AI team that hasn&#8217;t touched evals yet, don&#8217;t fret. You don&#8217;t need a platform team or a quarter of work.</p><ol><li><p>Set up telemetry and an eval harness. Easiest path is one of the leading vendors, like Arize, Braintrust, or Langfuse. <br></p></li><li><p>Collect 20 to 50 real prompts from your user data and sort them into categories. For each one, decide what a good response looks like versus a bad one, and label them. <a href="iframe.php?url=https%3A%2F%2Fwww.anthropic.com%2Fengineering%2Fdemystifying-evals-for-ai-agents">Anthropic recommends</a> drawing those first tasks straight from real production failures, where the effect sizes are largest.<br></p></li><li><p>Hand the labeled examples to an LLM and use them to stand up an LLM-as-judge that grades the way you just did by hand.<br></p></li><li><p>Run prompts through the system and check the judge against your own intuition. Where it disagrees with you, tune it until it tracks your judgment.<br></p></li><li><p>Put the whole thing on a schedule and on triggers, every deploy and every model bump, so you catch a regression from your dashboard instead of from a customer.</p></li></ol><h4><strong>Which tool</strong></h4><p>There are some great options now to quickly get started. The first three are platforms; the fourth is building your own.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21WUiq%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fc6d3204a-ef6d-4c06-9c64-e7758f641744_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WUiq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6d3204a-ef6d-4c06-9c64-e7758f641744_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!WUiq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6d3204a-ef6d-4c06-9c64-e7758f641744_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!WUiq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6d3204a-ef6d-4c06-9c64-e7758f641744_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!WUiq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6d3204a-ef6d-4c06-9c64-e7758f641744_1536x1024.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21WUiq%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fc6d3204a-ef6d-4c06-9c64-e7758f641744_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c6d3204a-ef6d-4c06-9c64-e7758f641744_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2711667,&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://pmdata.substack.com/i/201363604?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6d3204a-ef6d-4c06-9c64-e7758f641744_1536x1024.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_!WUiq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6d3204a-ef6d-4c06-9c64-e7758f641744_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!WUiq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6d3204a-ef6d-4c06-9c64-e7758f641744_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!WUiq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6d3204a-ef6d-4c06-9c64-e7758f641744_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!WUiq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6d3204a-ef6d-4c06-9c64-e7758f641744_1536x1024.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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 Q1, we built our own eval harness. We wired an LLM-as-judge to score <a href="iframe.php?url=https%3A%2F%2Fwww.venn.ai%2F">Venn&#8217;s</a> outputs for Barndoor AI and programmatically improve the skills behind them. It took MCP performance with ChatGPT to 88 percent precision on our test set, a jump of more than 20 points. That gain came straight out of the loop: the evals told us what to fix, then proved the fix worked.</p><blockquote><p>The honest read is that most teams should start with a vendor. You get the tracing UI, the span data, and the scheduled-judge plumbing for free, and you spend your time on the part that&#8217;s actually yours, defining what &#8220;good&#8221; means for your agent.</p></blockquote><p>Build your own when that definition is too specific for an off-the-shelf judge, or when you want the loop wired directly into how you ship.</p><h3><strong>Where this goes</strong></h3><p>Over the next six months, expect the return of the eval to be more spectacular than a Death Star explosion. Every team building a meaningful agent workflow will log its traces and evaluate performance, or it&#8217;ll fly blind.</p><p>As the data piles up, the data analysts and scientists will turn their eye to eval datasets. Pulling the full picture of product health, from model performance up to your real product KPIs, will mean working closely with data teams.</p><div class="pullquote"><p>The teams who combine those datasets (evals, product metrics) into one clear view and then act accordingly will be the ones who build a real moat around their AI products.</p></div><p>It&#8217;s never been a more exciting time to be building evals, analytics, and AI products.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://pmdata.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The AI Craft! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Multi-Player Agents]]></title><description><![CDATA[The Compounding Complexity of Multi-Player Agents]]></description><link>https://pmdata.substack.com/p/multi-player-agents</link><guid isPermaLink="false">https://pmdata.substack.com/p/multi-player-agents</guid><dc:creator><![CDATA[Luke Lin]]></dc:creator><pubDate>Wed, 03 Jun 2026 03:55:52 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21zqh0%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fd1cb51b1-3377-4287-b5dd-bac152116dab_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We&#8217;ve been building a multi-player coding agent called ModaStack over the last month. The vision is an autonomous engineering team infused with our product and engineering sense, that gets dispatched from Slack or Linear, and ships products like Bao Hua without a person babysitting each step.</p><p>It was easy building this for myself. I&#8217;ve been adding skills on top of gstack and my own coding harness in Claude to optimize my own setup. Zach, my cofounder, has a similar stack used differently. The local harnesses have learned our own tastes.</p><p>Now, we want to dispatch a shared Moda Agent from Slack, that shares the same context and skill library, but can still cater to our tastes. But what happens when I have a personal version of /plan-pm-review that Zach doesn&#8217;t like? Or if a bad coding principle sneaks in and gets committed to memory, like a virus waiting to spread?</p><p>We also have to answer questions about whether this agent gets called by us only, or if we can schedule tasks on a cron, or have it triggered off alerts or new tickets.</p><p>What started as a fun single-player agent optimization adventure has ballooned to a complex negotiation across context, permissions and more.</p><div class="pullquote"><p>This is the <em>compounding complexity</em> of multi-player agents. As your agent impact scales across your team, the complexity to manage it increases, and it compounds even more as you make your agents more autonomous.</p></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21zqh0%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fd1cb51b1-3377-4287-b5dd-bac152116dab_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zqh0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1cb51b1-3377-4287-b5dd-bac152116dab_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!zqh0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1cb51b1-3377-4287-b5dd-bac152116dab_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!zqh0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1cb51b1-3377-4287-b5dd-bac152116dab_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!zqh0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1cb51b1-3377-4287-b5dd-bac152116dab_1536x1024.png 1456w" sizes="100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21zqh0%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fd1cb51b1-3377-4287-b5dd-bac152116dab_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d1cb51b1-3377-4287-b5dd-bac152116dab_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2553573,&quot;alt&quot;:&quot;&quot;,&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://pmdata.substack.com/i/200335340?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1cb51b1-3377-4287-b5dd-bac152116dab_1536x1024.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_!zqh0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1cb51b1-3377-4287-b5dd-bac152116dab_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!zqh0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1cb51b1-3377-4287-b5dd-bac152116dab_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!zqh0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1cb51b1-3377-4287-b5dd-bac152116dab_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!zqh0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1cb51b1-3377-4287-b5dd-bac152116dab_1536x1024.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://pmdata.substack.com/p/multi-player-agents?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 AI Craft! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://pmdata.substack.com/p/multi-player-agents?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="iframe.php?url=https%3A%2F%2Fpmdata.substack.com%2Fp%2Fmulti-player-agents%3Futm_source%3Dsubstack%26utm_medium%3Demail%26utm_content%3Dshare%26action%3Dshare"><span>Share</span></a></p></div><p></p><h2><strong>Building on the harness</strong></h2><p>Tomasz Tunguz recently described software&#8217;s new center of gravity as the harness, the seven components that turn a raw model into a reliable agent: context and memory, tools and action, orchestration and loop, state and persistence, sandbox and compute, observability and governance, and cost and workflow (<a href="iframe.php?url=https%3A%2F%2Ftomtunguz.com%2Fharnessing-ai%2F">Software After AI</a>). His harness assumes one user.</p><p>Point that harness at a team and the same components take on compounding complexity. Five pillars carry most of it:</p><ol><li><p><strong>Identity and access.</strong> Who the agent acts as, and what each person is allowed to make it do. One shared service account versus an agent that inherits each user&#8217;s own permissions.<br></p></li><li><p><strong>Memory and context.</strong> This starts with logging multi-scope memory, tagging each write with user_id, agent_id, session_id, org_id/app_id, and then design decisions about which memories get committed for an individual versus the whole team.<br></p></li><li><p><strong>Guardrails and human judgment.</strong> The limits on what the agent can do alone versus what needs a person to sign off, and which are enforced with agentic versus deterministic gates<br></p></li><li><p><strong>Orchestration and skills.</strong> How the work gets bounded and divided, where skill files and subagent identities draw the lines for what each agent specializes in. <br></p></li><li><p><strong>Observability and cost.</strong> How you see what the agent actually did, through traces and evals, and how you keep the bill from running away as team use grows. </p></li></ol><h2><strong>Tier 1: the single-player agent</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21o7_t%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F02d55dd5-0436-4e8b-b2a0-8b29d6aad7d6_1254x1254.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!o7_t!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02d55dd5-0436-4e8b-b2a0-8b29d6aad7d6_1254x1254.png 424w, https://substackcdn.com/image/fetch/$s_!o7_t!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02d55dd5-0436-4e8b-b2a0-8b29d6aad7d6_1254x1254.png 848w, https://substackcdn.com/image/fetch/$s_!o7_t!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02d55dd5-0436-4e8b-b2a0-8b29d6aad7d6_1254x1254.png 1272w, https://substackcdn.com/image/fetch/$s_!o7_t!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02d55dd5-0436-4e8b-b2a0-8b29d6aad7d6_1254x1254.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21o7_t%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F02d55dd5-0436-4e8b-b2a0-8b29d6aad7d6_1254x1254.png" width="1254" height="1254" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/02d55dd5-0436-4e8b-b2a0-8b29d6aad7d6_1254x1254.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1254,&quot;width&quot;:1254,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2451765,&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://pmdata.substack.com/i/200335340?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02d55dd5-0436-4e8b-b2a0-8b29d6aad7d6_1254x1254.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_!o7_t!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02d55dd5-0436-4e8b-b2a0-8b29d6aad7d6_1254x1254.png 424w, https://substackcdn.com/image/fetch/$s_!o7_t!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02d55dd5-0436-4e8b-b2a0-8b29d6aad7d6_1254x1254.png 848w, https://substackcdn.com/image/fetch/$s_!o7_t!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02d55dd5-0436-4e8b-b2a0-8b29d6aad7d6_1254x1254.png 1272w, https://substackcdn.com/image/fetch/$s_!o7_t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02d55dd5-0436-4e8b-b2a0-8b29d6aad7d6_1254x1254.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><strong>What it is.</strong> An agent bound to one person, acting with that person&#8217;s access. It&#8217;s how most people already use AI at work via Claude, Gemini, and ChatGPT. In plain terms, a personal assistant that holds your keys and runs your errands.</p><p><strong>A sample flow.</strong> You connect Claude Code or ChatGPT to your own repo, email, and calendar through MCP or a CLI. You ask it to do something. It acts as you, with your access, while you watch and keep what&#8217;s good.</p><p><strong>Why do this?</strong> Raw speed for one person. You shape the agent entirely around your own taste, with nobody else to account for.</p><p><strong>Setup and management.</strong> You wire it to your accounts and write your own context and skills. There&#8217;s no one else to coordinate, so upkeep is whatever keeps your own setup current.</p><p><strong>Where the pillars get harder.</strong> They mostly don&#8217;t, which is the point.</p><ul><li><p>Identity and access: just you, your own credentials, nothing to negotiate.</p></li><li><p>Memory and context: private to you, and your harness handles most of it.</p></li><li><p>Guardrails: your own judgment, since you see every step.</p></li><li><p>Orchestration and skills: your harness handles the loop, so the real work is drawing your own agent boundaries and skills.</p></li><li><p>Observability and cost: you watch it directly, and the bill is your own.</p></li></ul><p></p><h2><strong>Tier 2: the multi-player agent</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21j56p%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F10041324-ba83-463c-acaa-04135d27b024_1254x1254.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!j56p!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10041324-ba83-463c-acaa-04135d27b024_1254x1254.png 424w, https://substackcdn.com/image/fetch/$s_!j56p!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10041324-ba83-463c-acaa-04135d27b024_1254x1254.png 848w, https://substackcdn.com/image/fetch/$s_!j56p!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10041324-ba83-463c-acaa-04135d27b024_1254x1254.png 1272w, https://substackcdn.com/image/fetch/$s_!j56p!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10041324-ba83-463c-acaa-04135d27b024_1254x1254.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21j56p%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F10041324-ba83-463c-acaa-04135d27b024_1254x1254.png" width="1254" height="1254" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/10041324-ba83-463c-acaa-04135d27b024_1254x1254.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1254,&quot;width&quot;:1254,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2799673,&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://pmdata.substack.com/i/200335340?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10041324-ba83-463c-acaa-04135d27b024_1254x1254.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_!j56p!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10041324-ba83-463c-acaa-04135d27b024_1254x1254.png 424w, https://substackcdn.com/image/fetch/$s_!j56p!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10041324-ba83-463c-acaa-04135d27b024_1254x1254.png 848w, https://substackcdn.com/image/fetch/$s_!j56p!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10041324-ba83-463c-acaa-04135d27b024_1254x1254.png 1272w, https://substackcdn.com/image/fetch/$s_!j56p!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10041324-ba83-463c-acaa-04135d27b024_1254x1254.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><strong>What it is.</strong> One agent the whole team reaches from a shared channel, usually running on a service account. This is the largest single step on the ladder, because every pillar switches on at once. Plainly, a shared team inbox that does real work.</p><p><strong>A sample flow.</strong> A teammate asks something in Slack. The agent loads the team&#8217;s shared context and memory, does the work, and opens a pull request. A human reviews, merges, and the decision gets written back to memory for next time.</p><p><strong>Why do this?</strong> This helps your entire team uplevel in a standardized way. Your team might have a few AI-pilled rockstars with decked out harnesses, and the rest using raw Claude Code and generating slop. This helps the team work better together.</p><p><strong>Setup and management.</strong> Provision the shared identity, write the team AGENTS.md, stand up shared memory, set the guardrails, and name an owner. </p><p>Day to day, people use the agent to get their work done more easily, and the agent owner monitors performance to prevent regressions and cost issues.</p><p></p><p><strong>Where the pillars get harder.</strong></p><ul><li><p>Identity and access: this is most likely a service account, but it gets difficult when someone needs the agent to bring in sensitive data that only they can access.<br></p></li><li><p>Memory and context: careful design is required to manage memories at an individual versus team level and to manage context bloat for a shared agent. <br></p></li><li><p>Guardrails: this is a good practice with single player and a must have with multi-player. The team has to agree on what the agent can and can&#8217;t do, and where human-in-the-loop is required. <br></p></li><li><p>Orchestration and skills: a solid harness can manage the subagent abstraction, but the team has to align on the skills and agent definitions. Skills here should have a peer review process with accountability baked in.<br></p></li><li><p>Observability and cost: you need an agent owner who monitors traces and evals to keep the agent performing as expected, especially with multiple people making structural changes over time.</p></li></ul><p></p><h2><strong>Tier 3: the autonomous multi-player agent</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21sNjo%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F8e8242aa-953c-4f7f-94f0-5e9ae9ecf9ce_1254x1254.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sNjo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e8242aa-953c-4f7f-94f0-5e9ae9ecf9ce_1254x1254.png 424w, https://substackcdn.com/image/fetch/$s_!sNjo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e8242aa-953c-4f7f-94f0-5e9ae9ecf9ce_1254x1254.png 848w, https://substackcdn.com/image/fetch/$s_!sNjo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e8242aa-953c-4f7f-94f0-5e9ae9ecf9ce_1254x1254.png 1272w, https://substackcdn.com/image/fetch/$s_!sNjo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e8242aa-953c-4f7f-94f0-5e9ae9ecf9ce_1254x1254.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21sNjo%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F8e8242aa-953c-4f7f-94f0-5e9ae9ecf9ce_1254x1254.png" width="1254" height="1254" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8e8242aa-953c-4f7f-94f0-5e9ae9ecf9ce_1254x1254.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1254,&quot;width&quot;:1254,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2780372,&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://pmdata.substack.com/i/200335340?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e8242aa-953c-4f7f-94f0-5e9ae9ecf9ce_1254x1254.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_!sNjo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e8242aa-953c-4f7f-94f0-5e9ae9ecf9ce_1254x1254.png 424w, https://substackcdn.com/image/fetch/$s_!sNjo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e8242aa-953c-4f7f-94f0-5e9ae9ecf9ce_1254x1254.png 848w, https://substackcdn.com/image/fetch/$s_!sNjo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e8242aa-953c-4f7f-94f0-5e9ae9ecf9ce_1254x1254.png 1272w, https://substackcdn.com/image/fetch/$s_!sNjo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e8242aa-953c-4f7f-94f0-5e9ae9ecf9ce_1254x1254.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><strong>What it is.</strong> A shared agent that starts itself, on a schedule or a trigger, often with nobody watching. Day to day, a night-shift worker who begins tasks when an alarm rings with no manager on site.</p><p><strong>A sample flow.</strong> A 3am alert fires. The agent pulls logs inside fixed scopes, attempts a bounded fix, and pages a human only when it isn&#8217;t sure, leaving a full trace behind.</p><p><strong>Why do this?</strong> Obvious operational gains abound when you have a team of agents that can respond to issues while you&#8217;re away from the computer, or run scheduled jobs that provide a consistent operational rhythm, like daily sales reports and weekly user cohort reports.</p><p><strong>Setup and management.</strong> Define the triggers or schedule, the scopes, and the escalation paths. Decide where a human still has to sign off, and add durable checkpoints so a failed run recovers instead of restarting. Because no one watches in real time, this is the tier worth simulating against fake scenarios before it goes live.</p><p></p><p><strong>Where the pillars get harder.</strong></p><ul><li><p>Identity and access: because the agent does work owned by individuals, it needs to understand the identities of the work&#8217;s owners. When an alert goes off at 3am and the agent needs to escalate, who does it page?<br></p></li><li><p>Memory and context: without someone driving the agent, the system has to give it enough context to do its job without human help, which means proper MCP and CLI integrations scoped per job.<br></p></li><li><p>Guardrails: these become monumentally more important and can&#8217;t live in things like skill files, which agents sometimes ignore. They have to be hard, enforceable gates given the automated nature of the workflow.<br></p></li><li><p>Orchestration and skills: clear logic on retries and human-in-the-loop escalation is required here. Skill trees get more complicated as you factor in automated troubleshooting scenarios. <br></p></li><li><p>Observability and cost: traces become the main way people understand what the agent has done, and unwatched loops need a hard ceiling on spend.</p></li></ul><p></p><h2><strong>Tier 4: the orchestrator</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21NfOs%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Ffab4588b-fd50-495b-aee0-fca79d6b49a0_1254x1254.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NfOs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffab4588b-fd50-495b-aee0-fca79d6b49a0_1254x1254.png 424w, https://substackcdn.com/image/fetch/$s_!NfOs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffab4588b-fd50-495b-aee0-fca79d6b49a0_1254x1254.png 848w, https://substackcdn.com/image/fetch/$s_!NfOs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffab4588b-fd50-495b-aee0-fca79d6b49a0_1254x1254.png 1272w, https://substackcdn.com/image/fetch/$s_!NfOs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffab4588b-fd50-495b-aee0-fca79d6b49a0_1254x1254.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21NfOs%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Ffab4588b-fd50-495b-aee0-fca79d6b49a0_1254x1254.png" width="1254" height="1254" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fab4588b-fd50-495b-aee0-fca79d6b49a0_1254x1254.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1254,&quot;width&quot;:1254,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2690499,&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://pmdata.substack.com/i/200335340?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffab4588b-fd50-495b-aee0-fca79d6b49a0_1254x1254.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_!NfOs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffab4588b-fd50-495b-aee0-fca79d6b49a0_1254x1254.png 424w, https://substackcdn.com/image/fetch/$s_!NfOs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffab4588b-fd50-495b-aee0-fca79d6b49a0_1254x1254.png 848w, https://substackcdn.com/image/fetch/$s_!NfOs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffab4588b-fd50-495b-aee0-fca79d6b49a0_1254x1254.png 1272w, https://substackcdn.com/image/fetch/$s_!NfOs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffab4588b-fd50-495b-aee0-fca79d6b49a0_1254x1254.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><strong>What it is.</strong> An agent that coordinates other agents and real people toward a goal instead of doing the work itself. Picture a project manager running a launch across staff and tools at once. Currently, it&#8217;s still more research than product.</p><p><strong>A sample flow.</strong> Someone gives it a target. The agent breaks the work into a graph of tasks, hands pieces to sub-agents and humans, tracks progress, re-plans when something stalls, and escalates the calls it shouldn&#8217;t make alone.</p><p><strong>Why do this?</strong> This turns agents from executioners into planners and strategists that can help teams run an entire project or sub-function.</p><p><strong>Setup and management.</strong> This one assumes everything below it already works, since it delegates to reliable lower-tier agents. You define how goals get decomposed, the pool of workers it can assign to, and the oversight surface the lead actually watches. Most of the management is human oversight of the plan, not of any single step.</p><p><strong>Where the pillars get harder.</strong> Every pillar now stretches across many actors.</p><ul><li><p>Identity and access: a chain of delegations, each worker getting the least access its slice needs, and managing which agents and people can reach which things.</p></li><li><p>Memory and context: work and context are shared across agents and people, which demands a sophisticated system that handles the &#8220;invisible context&#8221; behind human actions.</p></li><li><p>Guardrails: they govern a whole plan rather than a single step, with different guardrails for agents versus humans.</p></li><li><p>Orchestration and skills: the goal can branch into countless permutations of skills, agents, and human combinations to deliver quality.</p></li><li><p>Observability and cost: every piece of observability from the earlier tiers, amplified for every member of the team, plus observability for the orchestrator and its reasoning. Cost controls are a must to prevent expensive recursive loops.</p></li></ul><p></p><h2><strong>Where does that put us now?</strong></h2><p>The market is off to the races with tier 1 single player agents and starting to design enterprise agentic workflows, which introduces tiers 2 and 3. </p><p>In some cases, the line between when to use a single player, fully customized agent versus the multi-player communal agent is a blurry one. For the most AI pilled of us, why would we want to use a multi-player agent and risk losing our customizations?</p><p>The tier 3 autonomous agent is where the obvious value lives, but as we learned here, it requires significant scaffolding to be effective and governed enough to be safely deployed. And it will need an agent steward to keep it healthy, just like key datasets need a data steward.</p><p>The tier 4 orchestrator feels like a faraway dream, but given the pace of AI development, I wouldn&#8217;t be surprised if we started seeing early iterations in 2027.</p><p>We started ModaStack as a fun single-player project and are now negotiating context, permissions, and trust across a team. That&#8217;s the tax of going multi-player, and it compounds with every step toward autonomy. The teams that win this won&#8217;t be the ones with the smartest agent so much as the ones who know how to design elegant systems around complexity at each step.</p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://pmdata.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The AI Craft! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[My secret for more effective skills]]></title><description><![CDATA[Pair a creator skill with an adversarial reviewer]]></description><link>https://pmdata.substack.com/p/my-secret-for-more-effective-skills</link><guid isPermaLink="false">https://pmdata.substack.com/p/my-secret-for-more-effective-skills</guid><dc:creator><![CDATA[Luke Lin]]></dc:creator><pubDate>Thu, 28 May 2026 16:29:36 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%218KjS%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F0f6c1b4f-c806-43a2-99de-b8895d993bf2_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Baohua&#8217;s photo-first interview feature cost me about 700k tokens before I figured out what I&#8217;d done wrong.</p><p>The idea was small: let a user start a family interview with a photo instead of a typed question. I had an agent write the PRD based on our conversation, then move into implementation. Halfway through, I was stuck in a familiar loop. &#8220;That&#8217;s not the flow. You&#8217;re assuming something I never said.&#8221; I corrected it, the agent got close, I corrected it again. Half a day went that way.</p><p>The implementation was never wildly wrong. It was almost-right wrong, where every pass feels like one more clarification will get there. </p><p>When I finally stopped, the answer was upstream. The PRD was vague. It smuggled in assumptions and leaned on miracle steps that skipped important details. The agent wasn&#8217;t failing, it was faithfully building a weak spec. </p><blockquote><p>That&#8217;s where I learned the importance of adding in an adversarial reviewer. I thought &#8220;if I add my PM best practices to this PRD skill, we should be set.&#8221; But LLMs are notorious at mid system drift and skipping over details. </p></blockquote><p>Now, critical creation steps in my workflows leverage a 2-step process, where I pair each creation skill with an adversarial reviewer. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%218KjS%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F0f6c1b4f-c806-43a2-99de-b8895d993bf2_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8KjS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f6c1b4f-c806-43a2-99de-b8895d993bf2_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!8KjS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f6c1b4f-c806-43a2-99de-b8895d993bf2_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!8KjS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f6c1b4f-c806-43a2-99de-b8895d993bf2_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!8KjS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f6c1b4f-c806-43a2-99de-b8895d993bf2_1536x1024.png 1456w" sizes="100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%218KjS%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F0f6c1b4f-c806-43a2-99de-b8895d993bf2_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0f6c1b4f-c806-43a2-99de-b8895d993bf2_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2491810,&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://pmdata.substack.com/i/199513146?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f6c1b4f-c806-43a2-99de-b8895d993bf2_1536x1024.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_!8KjS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f6c1b4f-c806-43a2-99de-b8895d993bf2_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!8KjS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f6c1b4f-c806-43a2-99de-b8895d993bf2_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!8KjS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f6c1b4f-c806-43a2-99de-b8895d993bf2_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!8KjS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f6c1b4f-c806-43a2-99de-b8895d993bf2_1536x1024.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><h2>An Adversarial Reviewer</h2><p>Long agent workflows have a failure mode that&#8217;s easy to miss: nothing visibly breaks but the reasoning drifts as the agent works. As context piles up across a PRD, a plan, and an implementation, the logical thread loosens. Assumptions magically appear that run counter to your original intent and explicit skill instructions get ignored. </p><p>Written plans help with this insofar as they provide specificity that an agent can look back on. But often, the default plan from an agent, even with a well designed skill, skips over lots of details.</p><p>An <em>adversarial reviewer</em> offers you that rigor and specificity. It&#8217;s a second skill, paired to a creator skill, that runs after generation and does one thing - reviews the work. It challenges assumptions and asks what actually happens at every step. </p><blockquote><p>We don&#8217;t need more output from our agents. We want a higher floor with a better quality bar for the output we&#8217;re already getting</p></blockquote><h2>Three Reviewers, One Pattern</h2><p>Once I saw the pattern, I paired reviewers everywhere. Three have stuck.</p><p><strong>The code reviewer.</strong> You probably run this one already without naming it. gstack ships /review, which sends a draft PR to Codex to find what the author missed. Codex flags two or three issues per PR that would have shipped: a memory leak in the audio recorder, a Supabase policy that let one family read another&#8217;s stories, an edge case in the Mandarin input handler. </p><p>Every serious coding harness ships a reviewer like this. The adversarial reviewer for code is a common pattern and should be replicated elsewhere.</p><p><strong>The PRD reviewer.</strong> This is the one the photo-first disaster forced me to build. gstack&#8217;s /office-hours generates PRDs from Brian Balfour&#8217;s frameworks, and it&#8217;s good, but too many vague specs came out of it. </p><blockquote><p>I built /office-helper, an adversarial reviewer that runs every assumption through first principles, hunts for miracle steps, and pressure-tests each user flow. It asks the question the photo-first PRD never survived: what actually happens here? Same prompt, same model, and the gap in quality is stark.</p></blockquote><p><strong>The writing reviewer.</strong> I built this one almost as an afterthought, for the posts on this Substack, including this one. It checks logical consistency, cuts redundancy, flags AI slop, and catches drift from what I set out to say. </p><p>Mostly it asks: did you mean this, or did the model swap your thinking for generic internet prose? </p><p>Honestly though, I still manually review all my writing even with the adversarial reviewer. The reviewer just helps me start from a better floor. </p><h2>Where This Breaks</h2><p>The obvious objection is cost. Run a reviewer after every creator skill and you pay twice and wait longer. That&#8217;s real. </p><p>But the half day I lost on the photo-first feature already cost 700k tokens, with me reviewing by hand the whole time. The adversarial reviewer doesn&#8217;t add that cost, it makes it explicit and moves it upstream, where catching a bad assumption is cheap. </p><blockquote><p>For a small task, skip the standalone reviewer and write a short adversarial check into the creator skill itself. </p></blockquote><p>The harder limit is what a reviewer can&#8217;t do. In The Solo Production Stack I wrote that skills can hold conventions but not opinions, and the taste layer is yours. </p><blockquote><p>Ultimately, a reviewer enforces rigor, but it can&#8217;t tell you that Chinese American families would rather start with a photo than a typed question. It drives discipline, but the taste is still on you.</p></blockquote><h2>How To Build One</h2><p>Getting started is easy. You don&#8217;t need an orchestration framework. You need Claude and one existing creator skill.</p><p>Start with your own taste. </p><ol><li><p>Tell Claude what the reviewer is for, then dump in every instinct you&#8217;d apply by hand: root claims in first principles, demand specificity, catch miracle steps. </p></li><li><p>Add real examples of output you had to correct, and have Claude turn it into a first draft. </p></li><li><p>Augment it with outside standards: Brian Balfour for product, engineering review principles for code, etc.</p></li><li><p>Then run it against real work until it catches the mistakes you used to catch by hand.</p></li></ol><p>The core instruction is one paragraph, worth getting right:</p><blockquote><p>You are not optimizing for agreement. You are optimizing for rigor. Challenge assumptions. Find weaknesses. Push back against vagueness.</p></blockquote><p>If you&#8217;re building agents and skills today, this is one pattern worth including to your workflow. The quality of our output will double overnight and you&#8217;ll be glad you did it.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://pmdata.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The AI Craft! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[The AI Coding Maturity Curve]]></title><description><![CDATA[Addressing AI Slop Debt: To Coding Harnesses and Beyond]]></description><link>https://pmdata.substack.com/p/claude-code-and-lovable-are-not-a</link><guid isPermaLink="false">https://pmdata.substack.com/p/claude-code-and-lovable-are-not-a</guid><dc:creator><![CDATA[Luke Lin]]></dc:creator><pubDate>Wed, 20 May 2026 14:31:21 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%217buj%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F49af28d9-0b10-43ab-957b-2d2d7a2dde91_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I joined SoFi&#8217;s data team in 2020, inheriting a Monday morning PagerDuty report with 70 disruptions on it from the week prior. Most of them traced back to the same root cause: critical user-facing features and operations running on SageMaker notebooks that nobody owned. We spent the next three years migrating that work into proper, observable, owned pipelines, with plenty of growing pains in between.</p><p>Two weeks ago a founder told me his team&#8217;s exuberance about agentic coding had flipped into paranoia for the same reason. They&#8217;d unleashed agentic coding across their team and gotten real initial gains, with micro apps spinning up to run the business better. </p><p><strong>The problem was that nobody knew how many of these vibe coded apps existed, who was maintaining them, whether they followed any sound engineering or product practices</strong>, or how they were handling data and security. Different decade, different tool, same movie.</p><p>This is what the next three years are about to look like for every team that handed Claude Code and Lovable to its engineers without making taste and rigor first-class citizens. </p><div class="pullquote"><p>If you&#8217;re shipping software on Claude Code raw or Lovable for anything beyond prototype, you&#8217;ve already lost the next twelve months. You just haven&#8217;t seen the bill yet.</p><p>It&#8217;s like giving a child as much candy as they want, then facing the dentist telling you there are seven cavities to fill*.</p></div><p>*This actually happened to me when I was 8. It was not fun.</p><h2>You&#8217;re Not Preventing AI Slop Debt. You&#8217;re Industrializing It.</h2><p>Every team using agentic coding is accruing <em>AI Slop Debt</em>: the future bugs and product rework that come due because you let an agent&#8217;s default reasoning drive your build.</p><blockquote><p>According to <a href="iframe.php?url=https%3A%2F%2Fwww.cs.cmu.edu%2Fnews%2F2026%2Fhidden-cost-ai-speed">Carnegie Mellon,</a> <strong>AI-generated code accumulates technical debt 3&#215; faster than human-written code</strong>, because LLMs embed unstated assumptions invisible to code review, compounded by 3-4&#215; higher code volume. </p></blockquote><p>The slop-as-debt thesis isn&#8217;t new. TechTarget, Pragmatic Engineer, Addy Osmani, and a dozen Medium essays a week have been making versions of it since Q1.</p><p>Debt isn&#8217;t the only failure mode. Vibe coding on platforms like Lovable means you&#8217;re also relying on their governance, and their governance has already been breached. </p><p>In April 2026, CVE-2025-48757 exposed missing Row Level Security policies in Lovable-generated projects. Any free Lovable account could read another user&#8217;s source code, database credentials, AI chat history, and customer data across every project created before November 2025. </p><p>Two months earlier, 16 vulnerabilities in a single Lovable-hosted app leaked 18,000 users&#8217; data.</p><h2>The Agentic Coding Maturity Curve</h2><p>None of this means you should keep AI coding off your team. If you want to compete on velocity right now, you have to be building with AI. </p><p>On high-AI-adoption teams, <a href="iframe.php?url=https%3A%2F%2Fwww.faros.ai%2Fblog%2Fai-software-engineering">developers complete 21% more tasks and merge 98% more pull requests</a> than teams without it. </p><p>Falling behind on agentic coding isn&#8217;t a choice anymore.</p><p>But there&#8217;s a maturity curve your team has to climb if you want the velocity gains without the slop.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%217buj%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F49af28d9-0b10-43ab-957b-2d2d7a2dde91_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7buj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49af28d9-0b10-43ab-957b-2d2d7a2dde91_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!7buj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49af28d9-0b10-43ab-957b-2d2d7a2dde91_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!7buj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49af28d9-0b10-43ab-957b-2d2d7a2dde91_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!7buj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49af28d9-0b10-43ab-957b-2d2d7a2dde91_1536x1024.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%217buj%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F49af28d9-0b10-43ab-957b-2d2d7a2dde91_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/49af28d9-0b10-43ab-957b-2d2d7a2dde91_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2431720,&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://pmdata.substack.com/i/198429169?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49af28d9-0b10-43ab-957b-2d2d7a2dde91_1536x1024.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_!7buj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49af28d9-0b10-43ab-957b-2d2d7a2dde91_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!7buj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49af28d9-0b10-43ab-957b-2d2d7a2dde91_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!7buj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49af28d9-0b10-43ab-957b-2d2d7a2dde91_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!7buj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49af28d9-0b10-43ab-957b-2d2d7a2dde91_1536x1024.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><h3>Level 1: Replit and Lovable for fully non-technical builders</h3><p>This is where non-engineers prototype new UIs, proofs of concept, and operational tools. It empowers people who don&#8217;t write code to participate in the build. </p><p>The line stops the moment sensitive data starts flowing in, or the moment you have something with real traction that you actually need to maintain. </p><p>The recommended pattern from AI-native dev teams is to use Lovable for the prototype, then bring in technical leadership to rebuild before the data and dependencies compound.</p><h3>Level 2: Coding agents raw dog (Claude Code, Codex)</h3><p>This is where most engineers started with agentic coding. Install the agent and start ripping out PRs. </p><p>The first few are pure magic, especially when the agent finds a bug that would have taken you two hours to chase down on your own. The trouble starts when you scale past one-off fixes. </p><p>Either you write specs so detailed you might as well have written the code yourself, or you let the agent invent design patterns that don&#8217;t match your codebase and accrue AI Slop Debt at every commit.</p><h3>Level 3: Coding harness (gstack, superpowers)</h3><p>In early 2026, coding harnesses became the next standard. The two that have risen to the top are gstack and superpowers.</p><p>A harness is a deliberately designed set of skills that puts a real software development process around the agent, with rigor, checks, and reviews at every step. It enforces engineering practices like RLS policy checks and race-condition detection, automates QA with Playwright, and infuses product taste through upfront planning before the agent makes assumptions about what to build.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21xRbC%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fb9c618c8-9dd4-433f-9d53-2092c5fa2fcf_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xRbC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9c618c8-9dd4-433f-9d53-2092c5fa2fcf_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!xRbC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9c618c8-9dd4-433f-9d53-2092c5fa2fcf_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!xRbC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9c618c8-9dd4-433f-9d53-2092c5fa2fcf_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!xRbC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9c618c8-9dd4-433f-9d53-2092c5fa2fcf_1536x1024.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21xRbC%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fb9c618c8-9dd4-433f-9d53-2092c5fa2fcf_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b9c618c8-9dd4-433f-9d53-2092c5fa2fcf_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2669425,&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://pmdata.substack.com/i/198429169?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9c618c8-9dd4-433f-9d53-2092c5fa2fcf_1536x1024.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_!xRbC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9c618c8-9dd4-433f-9d53-2092c5fa2fcf_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!xRbC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9c618c8-9dd4-433f-9d53-2092c5fa2fcf_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!xRbC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9c618c8-9dd4-433f-9d53-2092c5fa2fcf_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!xRbC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9c618c8-9dd4-433f-9d53-2092c5fa2fcf_1536x1024.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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;ve been using gstack religiously for the last two months. It&#8217;s let me ship a production app with confidence. I&#8217;m a technical PM, not an engineer. I shared the Baohua codebase with two senior engineers I trust, and both signed off on the code quality.</p><div class="pullquote"><p>If you&#8217;re trying to build production software with AI today and you&#8217;re not using a coding harness, you&#8217;re shipping AI slop. </p></div><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://pmdata.substack.com/p/claude-code-and-lovable-are-not-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 Craft of AI! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://pmdata.substack.com/p/claude-code-and-lovable-are-not-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="iframe.php?url=https%3A%2F%2Fpmdata.substack.com%2Fp%2Fclaude-code-and-lovable-are-not-a%3Futm_source%3Dsubstack%26utm_medium%3Demail%26utm_content%3Dshare%26action%3Dshare"><span>Share</span></a></p></div><h2>What&#8217;s Still Missing From Coding Harnesses</h2><p>Once you&#8217;ve shipped enough code on a harness, the next gap becomes obvious. My cofounder and I are building modastack, a coding harness that pushes past today&#8217;s best practices, using our own builds and our clients as the guiding light. Two areas are getting most of our attention.</p><h3>Stronger product sense, baked into the build</h3><p>The /office-hours skill in gstack does a solid job of applying Brian Balfour&#8217;s frameworks in spirit, but I&#8217;ve seen too many sloppy PRDs come out of it. I added an adversarial product reviewer, /office-helper, that runs every assumption through first-principles. Same prompt, same model, and the gap in output quality is stark.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21IhfM%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F1fb0f391-11a0-4b38-863c-af2d2e5270e1_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IhfM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fb0f391-11a0-4b38-863c-af2d2e5270e1_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!IhfM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fb0f391-11a0-4b38-863c-af2d2e5270e1_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!IhfM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fb0f391-11a0-4b38-863c-af2d2e5270e1_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!IhfM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fb0f391-11a0-4b38-863c-af2d2e5270e1_1536x1024.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21IhfM%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F1fb0f391-11a0-4b38-863c-af2d2e5270e1_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1fb0f391-11a0-4b38-863c-af2d2e5270e1_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1790624,&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://pmdata.substack.com/i/198429169?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fb0f391-11a0-4b38-863c-af2d2e5270e1_1536x1024.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_!IhfM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fb0f391-11a0-4b38-863c-af2d2e5270e1_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!IhfM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fb0f391-11a0-4b38-863c-af2d2e5270e1_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!IhfM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fb0f391-11a0-4b38-863c-af2d2e5270e1_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!IhfM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fb0f391-11a0-4b38-863c-af2d2e5270e1_1536x1024.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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 also added /frontdoor, a skill that interprets every incoming request and dispatches it to the right place, so the agent doesn&#8217;t burn cycles solving the wrong problem.</p><p>Finally, I added /brand-identity. It pushes back on uninspired SaaS vanilla by forcing the builder to articulate the product&#8217;s visual point of view before UI gets generated.</p><h3>Better access, asynchronous by default</h3><p>Today the harness works great when I&#8217;m in a terminal or driving Claude through remote control. We want to push past that.</p><p>Imagine an incoming bug that automatically creates a ticket in Linear, which spins up an agent following the modastack protocols, figures out the fix, tests it, and opens a PR. You get updated in Slack along the way. You review the PR at the end, or you hit approve and move on with your day.</p><p>That&#8217;s where agentic coding goes once your foundations reinforce both rigor and taste. That&#8217;s the next move. Software factories dispatched through chat</p><p></p><h2>What This Changes On Monday</h2><p>Last week I wrote about <a href="iframe.php?url=https%3A%2F%2Fpmdata.substack.com%2Fp%2F6-practices-to-add-to-your-build">the practices a human operator needs to add to their build stack</a> to overcome AI&#8217;s mediocre defaults. That post is still the foundation.</p><p>Since then I&#8217;ve watched founders try to scale that discipline across a team. The next problem is brutal. Discipline that lives only in the human&#8217;s head doesn&#8217;t transfer. The senior engineer who knows when to push back on the agent leaves. The founder with the product taste to refuse the hallucinated AI feature gets pulled into fundraising. The discipline goes with them.</p><blockquote><p><strong>The only way to build without sacrificing quality is transferring both your product and engineering taste into a harness. That&#8217;s the move.</strong></p></blockquote><p>If you&#8217;re shipping solo today, here&#8217;s a Monday-morning move that costs nothing. Write down the three product decisions you made this week that your agent would not have made on its own and use them to instruct your coding harness. That list is the seed of your taste layer. It&#8217;s what your harness, whether you build one or buy one, needs to learn.</p><p>If you&#8217;re running a team, do the same with your best engineers. Get the taste out of their heads and into the system so the entire team uplevels. That&#8217;s how you prevent the SoFi PagerDuty Monday three months from now.</p><p>We&#8217;re building the harness that does this at Moda Labs. More on that soon.</p><p>Your slop debt is accruing whether you&#8217;ve seen the invoice or not. The founders, CTOs, and builders who survive 2026 will be the ones who opened the envelope early.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://pmdata.substack.com/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="iframe.php?url=https%3A%2F%2Fpmdata.substack.com%2Fsubscribe%3F"><span>Subscribe now</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[6 practices to add to your build stack]]></title><description><![CDATA[Adding rigor and discipline to your coding harness and build process]]></description><link>https://pmdata.substack.com/p/6-practices-to-add-to-your-build</link><guid isPermaLink="false">https://pmdata.substack.com/p/6-practices-to-add-to-your-build</guid><dc:creator><![CDATA[Luke Lin]]></dc:creator><pubDate>Wed, 13 May 2026 22:36:48 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21irqR%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fdbf8d3f3-27fc-4a43-805c-231dbda0e0c7_1199x1312.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Two hours into building Baohua&#8217;s story-recording flow, after a long stretch of auto-accepts, Claude generated a PR. I opened the preview and the design was completely wrong. The agent had conflated the story-recording and curation flows, and made poor decisions about the app&#8217;s information hierarchy.</p><p>I closed the PR, started over, and burned another half day pulling the flow apart. Fifteen minutes of back-and-forth on an HTML prototype would have prevented every one of those mistakes. The second time around, with the prototype in hand, the feature got built correctly.</p><p>That moment is the entire thesis of this post.</p><p>My first post in this series, &#8220;The Solo Production Stack,&#8221; was about what tools to use to ship a solo app in 2026. This one is about how to operate them.</p><p>The default mode of AI-assisted building is yes. Yes to the next PR. Yes to the agent&#8217;s interpretation of what you wanted. Yes to the abstraction it invented this morning. Yes to the framework&#8217;s defaults. Saying yes is how you ship an average product. </p><div class="pullquote"><p>Building something meaningful needs the discipline of knowing when to stop your AI agent, redirect it, and say no to its recommendations. </p></div><p>Below are six practices I picked up shipping Baohua, a bilingual story-sharing app I built with Claude Code. <strong>Each practice is a puzzle piece that helped me add rigor, discipline and my own product taste to the process and boost the otherwise mediocre product that Claude would&#8217;ve built on its own</strong>. They&#8217;re what separates building something average from building something meaningful.</p><blockquote><p>None of these practices are revolutionary. They&#8217;re basic fundamentals of building good software. But AI coding is designed in a way that pulls you towards what they&#8217;ve been trained on, which is an average result. The defaults nudge you mindlessly saying yes and yes again, until you&#8217;ve shipped something the agent decided on for you. </p></blockquote><p>Breaking out of that cycle takes a deliberate effort to keep applying critical thinking and rigor at every step. Keeping these principles in the back of my mind has been the thing that keeps the quality bar where I want it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21irqR%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fdbf8d3f3-27fc-4a43-805c-231dbda0e0c7_1199x1312.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!irqR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbf8d3f3-27fc-4a43-805c-231dbda0e0c7_1199x1312.png 424w, https://substackcdn.com/image/fetch/$s_!irqR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbf8d3f3-27fc-4a43-805c-231dbda0e0c7_1199x1312.png 848w, https://substackcdn.com/image/fetch/$s_!irqR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbf8d3f3-27fc-4a43-805c-231dbda0e0c7_1199x1312.png 1272w, https://substackcdn.com/image/fetch/$s_!irqR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbf8d3f3-27fc-4a43-805c-231dbda0e0c7_1199x1312.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21irqR%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fdbf8d3f3-27fc-4a43-805c-231dbda0e0c7_1199x1312.png" width="1199" height="1312" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dbf8d3f3-27fc-4a43-805c-231dbda0e0c7_1199x1312.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1312,&quot;width&quot;:1199,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2612848,&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://pmdata.substack.com/i/197257922?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbf8d3f3-27fc-4a43-805c-231dbda0e0c7_1199x1312.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_!irqR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbf8d3f3-27fc-4a43-805c-231dbda0e0c7_1199x1312.png 424w, https://substackcdn.com/image/fetch/$s_!irqR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbf8d3f3-27fc-4a43-805c-231dbda0e0c7_1199x1312.png 848w, https://substackcdn.com/image/fetch/$s_!irqR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbf8d3f3-27fc-4a43-805c-231dbda0e0c7_1199x1312.png 1272w, https://substackcdn.com/image/fetch/$s_!irqR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbf8d3f3-27fc-4a43-805c-231dbda0e0c7_1199x1312.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><h2>1. Prototype before build.</h2><p>After the story-recording PR, I changed the rule: <strong>no new feature gets touched by an agent until I&#8217;ve approved the UX in an HTML prototype first</strong>. This step forces me to make the taste decisions (what goes where, what hierarchy matters, how the user moves) before the agent gets a chance to make them for me. Doing this helps me save hours of wasted coding and thousands of tokens.</p><p>My harness, gstack, ships with /plan-ceo, /plan-design, and /design-shotgun. They&#8217;re powerful, but if you just tell Claude Code to work on the next feature, it&#8217;ll skip past them and start making assumptions in code. I added routing into my gstack to flag features that affect the UI or user experience. Now it generates prototypes for me to review before touching the codebase.</p><blockquote><p>When I know what I want, I iterate on the prototype to lock the scope before any real code gets written. When the feature is still just an idea, I run /design-shotgun first to widen the option space before narrowing it.</p></blockquote><p>This is the same discipline as working with a designer before you build. Get clear on what you&#8217;re building and why, translate that into a clean user experience, then implement. It&#8217;s tempting to skip the step because the agent will let you. The result is sloppy UX every time.</p><h2>2. Three is the cap.</h2><p>I had six Claude sessions running in parallel one afternoon. I caught myself cycling through windows, clicking &#8220;yes,&#8221; approving work I hadn&#8217;t actually read. By the time I noticed, two of the sessions had drifted onto overlapping work and my critical thinking had gone offline somewhere around session four. </p><p>I felt productive and produced nothing. Three concurrent sessions is the most I can run while keeping a real model of what the system is doing. It&#8217;s tempting to spin up as many agents as possible to maximize parallelism, but agents don&#8217;t have the best judgment (see practice 1). </p><blockquote><p>When I run 3 sessions, one session handles the meaty work, like a backend flow where I need to follow the logic, or a feature with real architectural choices in it. The other two sessions handle small surface changes: tightening email copy, adjusting a screen&#8217;s layout, fixing a typo.</p></blockquote><p>The principles behind the cap: your mind can only deeply focus on one thing at a time, and that focus is the most valuable resource you bring to the build. Allocate it accordingly. Keep parallel tasks far enough apart that the agents don&#8217;t step on each other&#8217;s commits. And lean on Linear instead of spinning up another session every time a new idea hits. Slowing down to define a ticket, track it, and execute against it is the discipline that compounds. Slow is fast, and fast is smooth. </p><h2>3. Scope is a daily fight.</h2><p>AI&#8217;s default mode is maximalism. Ask for a &#8220;share story&#8221; button and the agent will quietly draft a notifications framework, a sharing-permissions DSL, and analytics events for everything. </p><blockquote><p>Subtraction is taste. Only add complexity if it's truly necessary. The best products are simple, elegant, and delightfully easy. This is something AI does not understand. </p></blockquote><p>This compounds with practices 1 and 2. When you prototype, you catch scope creep before code gets written. When you run too many parallel sessions, you miss it entirely.</p><p>I learned this the hard way. While building the interview scheduling system, Claude sneaked in the idea of an expired interview. The system would mark an open question prompt to a parent as expired if no activity happened after 48 hours, then close the interview entirely. Sending your parents a question to answer often takes more than two days to get a response. There&#8217;s no way I&#8217;d have added that on purpose.</p><p>But I was running too many sessions and didn&#8217;t catch it, until it created a bug with a real user whose mom tried to answer a question four days after she received it. I spent a whole day picking through the slop of the question-prompting system to undo a feature that should never have been there.</p><h2>4. Two flavors of taste. Both matter.</h2><p>Engineering taste catches the unnecessary abstraction. Product taste catches the unmet user need. The agent will miss both.</p><p>Engineering taste first. Codex caught some of the engineering misses for me. A memory leak in the audio recorder. A Supabase RLS policy that let users read other families&#8217; stories. Gstack&#8217;s /review skill is solid for the obvious stuff: race conditions, idempotency, RLS policies. </p><div class="callout-block" data-callout="true"><p>Claude&#8217;s engineering taste falls short on higher-level design choices.</p></div><p>Take localization. Baohua translates most of the product experience into simplified and traditional Chinese. Claude&#8217;s first instinct was to scatter one-off localizations across the product copy. I had to walk it through centralizing the language system. One source of truth for English and Chinese today, with room for Korean and Japanese tomorrow. </p><p>A decent engineer would have caught this on day one. Claude needed to be told. That&#8217;s the gap between a vibe-coded prototype and a codebase that won&#8217;t bleed regressions six months in.</p><p>Product taste second. Claude Code knew how to implement magic links for auth, but did a poor job of integrating them into the user experience. The first pass shipped magic links to storytellers in Baohua with one-hour expirations and no other way to log in. </p><div class="callout-block" data-callout="true"><p>Imagine your mom getting an email she can only act on within the hour, after which she has to call you for a new one. That&#8217;s the kind of product taste your AI agent has.</p></div><p>I spent the better part of three days walking through every auth permutation for every user type. Magic links, Google auth, email and password. The goal was a consistent flow with as little friction as possible. There&#8217;s no AI shortcut for this. You have to walk every flow as the person who&#8217;s actually going to use it.  </p><h2>5. Mobile coding is pure magic.</h2><p>One of Baohua&#8217;s first users messaged me on Instagram about a recording bug. I was at dinner with friends. I opened Claude Code Remote on my phone, connected to a session running on my Mac mini at home, and shipped the patch before the entrees arrived. A year ago this would have sounded absurd. Today it&#8217;s how I work.</p><p>A few things worth knowing about mobile coding. There are real tools to make this work: tmux, Tailscale, Claude Code Remote, and a growing number of others. They&#8217;re worth the afternoon it takes to wire them up. The simplest setup is to leave your laptop open with a terminal and a remote-control session so you can drive it from your phone. </p><p>What I&#8217;ve landed on is a terminal session permanently open on my Mac mini at home, which is also always-on. It means I can investigate issues anytime. </p><blockquote><p>I&#8217;ve shipped fixes from the gym, from the airport, and from my couch while watching Crash Landing on You. This gives me confidence to support my codebase without an on-call team. </p></blockquote><h2>6. Nothing beats talking to users.</h2><p>The oldest piece of advice in the book is still the most important one.</p><p>I shipped Baohua on April 30. Then I talked to my friend, who told me &#8220;my mom won&#8217;t do this without LINE.&#8221; I spent the next three days doing hairy restructuring to add a second messaging channel.</p><p>Then I talked to my mom, who told me &#8220;no Chinese speaker is going to understand what Baohua is if you don&#8217;t clearly lay it out for them. Your emails are too short.&#8221; Counterintuitive advice for someone like me, who skims emails and clicks the CTA. So I rewrote the email design.</p><p>There&#8217;s no version of these practices that gets you to the right product without this one. Everything above is how you build well. Talking to users is how you discover what users love. </p><p></p><div><hr></div><p></p><h2>The next frontier isn&#8217;t code.</h2><p>One parting thought, beyond the principles of building well. There's a harder puzzle waiting on the other side. Now that everyone has an army of engineers in their pocket, learning how to find and connect with your customers is the new edge.</p><p>These six practices get you to a solid product. They don&#8217;t get you to a business.</p><p>The frontier isn&#8217;t how sexy your Claude Code setup is. 3 months from now, everyone will have their custom coding rig. The setup will be table stakes.</p><div class="pullquote"><p>Building something average will cost nothing. </p><p>Building something meaningful will cost discipline and rigor. </p><p>Building something people love will cost you finding those people, talking to them, and reshaping your product around what they tell you.</p></div><p>The machinery to respond now costs $200 a month instead of $50,000 a month in engineering payroll. So what kind of business are you going to build?</p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://pmdata.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Product, Data and AI! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[The Solo Production Stack ]]></title><description><![CDATA[How I built a full app (Baohua Stories) in weeks using Claude Code]]></description><link>https://pmdata.substack.com/p/the-solo-production-stack</link><guid isPermaLink="false">https://pmdata.substack.com/p/the-solo-production-stack</guid><dc:creator><![CDATA[Luke Lin]]></dc:creator><pubDate>Wed, 06 May 2026 22:39:29 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21vRbj%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F3c977cd9-a8c5-49b5-9711-db3a41e86a4b_955x669.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1>A project I&#8217;ve wanted to build for years</h1><p>On April 1, I opened a fresh Claude Code session and asked the gstack skill to interview me about <a href="iframe.php?url=https%3A%2F%2Fbaohua.app%2F">Baohua</a>, a bilingual story-sharing app for Chinese American families I&#8217;d had in my head since 2018. </p><p>A few weeks later it was in production, with a CI/CD pipeline, a full test suite, and the first families sharing stories. I built a real application with AI translation, complex routing across communication channels, and PDF generation for book printing. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21iIkG%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F0b6792d2-b979-41b4-8f78-812eaa2efcb9_1313x1198.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iIkG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b6792d2-b979-41b4-8f78-812eaa2efcb9_1313x1198.png 424w, https://substackcdn.com/image/fetch/$s_!iIkG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b6792d2-b979-41b4-8f78-812eaa2efcb9_1313x1198.png 848w, https://substackcdn.com/image/fetch/$s_!iIkG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b6792d2-b979-41b4-8f78-812eaa2efcb9_1313x1198.png 1272w, https://substackcdn.com/image/fetch/$s_!iIkG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b6792d2-b979-41b4-8f78-812eaa2efcb9_1313x1198.png 1456w" sizes="100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21iIkG%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F0b6792d2-b979-41b4-8f78-812eaa2efcb9_1313x1198.png" width="530" height="483.5795887281036" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0b6792d2-b979-41b4-8f78-812eaa2efcb9_1313x1198.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1198,&quot;width&quot;:1313,&quot;resizeWidth&quot;:530,&quot;bytes&quot;:2509174,&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://pmdata.substack.com/i/196585907?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b6792d2-b979-41b4-8f78-812eaa2efcb9_1313x1198.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_!iIkG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b6792d2-b979-41b4-8f78-812eaa2efcb9_1313x1198.png 424w, https://substackcdn.com/image/fetch/$s_!iIkG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b6792d2-b979-41b4-8f78-812eaa2efcb9_1313x1198.png 848w, https://substackcdn.com/image/fetch/$s_!iIkG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b6792d2-b979-41b4-8f78-812eaa2efcb9_1313x1198.png 1272w, https://substackcdn.com/image/fetch/$s_!iIkG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b6792d2-b979-41b4-8f78-812eaa2efcb9_1313x1198.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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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 wanted something that I could trust not to break, and something that would scale. So, I skipped Replit and Lovable. </p><p>What got Baohua across the production bar was a set of dialed skills and disciplined execution. I heavily leveraged <a href="iframe.php?url=https%3A%2F%2Fgithub.com%2Fgarrytan%2Fgstack">gstack </a>from Garry Tan (&#8230;which was great except for the advertisements to apply for YC). And I drew from my own experience building software to design something simple, yet elegant. </p><p>If you&#8217;re a solo builder trying to do the same in 2026, this is the stack that I developed on and how it came to life. </p><h2>The Solo Production Stack</h2><p>The <em>Solo Production Stack</em> is the specific set of AI tools, infra services, and engineering practices that make it possible for one person to ship an app in just a few weeks. </p><p>It has five pieces. </p><ol><li><p> A coding agent with the right skills harness</p></li><li><p>A coordination layer for tickets and milestones</p></li><li><p>An adversarial reviewer on every PR </p></li><li><p>An infra stack you own</p></li><li><p>A source-control flow with tests as gates</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21vRbj%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F3c977cd9-a8c5-49b5-9711-db3a41e86a4b_955x669.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vRbj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c977cd9-a8c5-49b5-9711-db3a41e86a4b_955x669.png 424w, https://substackcdn.com/image/fetch/$s_!vRbj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c977cd9-a8c5-49b5-9711-db3a41e86a4b_955x669.png 848w, https://substackcdn.com/image/fetch/$s_!vRbj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c977cd9-a8c5-49b5-9711-db3a41e86a4b_955x669.png 1272w, https://substackcdn.com/image/fetch/$s_!vRbj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c977cd9-a8c5-49b5-9711-db3a41e86a4b_955x669.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21vRbj%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F3c977cd9-a8c5-49b5-9711-db3a41e86a4b_955x669.png" width="955" height="669" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3c977cd9-a8c5-49b5-9711-db3a41e86a4b_955x669.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:669,&quot;width&quot;:955,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:103769,&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://pmdata.substack.com/i/196585907?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c977cd9-a8c5-49b5-9711-db3a41e86a4b_955x669.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_!vRbj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c977cd9-a8c5-49b5-9711-db3a41e86a4b_955x669.png 424w, https://substackcdn.com/image/fetch/$s_!vRbj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c977cd9-a8c5-49b5-9711-db3a41e86a4b_955x669.png 848w, https://substackcdn.com/image/fetch/$s_!vRbj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c977cd9-a8c5-49b5-9711-db3a41e86a4b_955x669.png 1272w, https://substackcdn.com/image/fetch/$s_!vRbj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c977cd9-a8c5-49b5-9711-db3a41e86a4b_955x669.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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">Honestly the tickets, infra stack, and Git systems are standard. But the skills harness in my coding agent and adversarial reviewer really unlocked everything.</figcaption></figure></div><h2>Five pieces, one builder</h2><p>The Solo Production Stack is one super brain operating complex machinery. The brain is your guidance with the help of Claude Code and a skills harness. </p><h4><strong>The skills harness: Claude Code with gstack</strong> </h4><p>Claude Code wrote almost every line of Baohua, and the skills harness running on top of it is why the output was quality. </p><p>Gstack ships with lots of skills that force depth of thought before the agent writes a single character. Here are a few of my favorites: </p><ul><li><p>/ceo-plan-review pressures the work against business goals</p></li><li><p>/eng-plan-review pressures it against architecture</p></li><li><p>/design-shotgun explores and iterates on ideas and designs </p></li><li><p>/review, /qa, and /ship are the core of my workflow to produce high quality code</p></li></ul><p>The harness is what turns Claude Code from &#8220;smart autocomplete&#8221; into something that knows what you&#8217;re trying to build and helps you build it with sound engineering principles. </p><p></p><h4><strong>Coordination machinery: Linear, bridged by Venn.</strong> </h4><p>Every ticket, every milestone, every PR got tracked in Linear. I had three milestones for Baohua (MVP, Beta, Commercial Release) and roughly 80 tickets stacked behind them at peak. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21Nxto%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F2c2fa629-99fd-4a44-9066-e6812956c7db_871x543.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Nxto!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2fa629-99fd-4a44-9066-e6812956c7db_871x543.png 424w, https://substackcdn.com/image/fetch/$s_!Nxto!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2fa629-99fd-4a44-9066-e6812956c7db_871x543.png 848w, https://substackcdn.com/image/fetch/$s_!Nxto!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2fa629-99fd-4a44-9066-e6812956c7db_871x543.png 1272w, https://substackcdn.com/image/fetch/$s_!Nxto!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2fa629-99fd-4a44-9066-e6812956c7db_871x543.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21Nxto%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F2c2fa629-99fd-4a44-9066-e6812956c7db_871x543.png" width="871" height="543" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2c2fa629-99fd-4a44-9066-e6812956c7db_871x543.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:543,&quot;width&quot;:871,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:95357,&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://pmdata.substack.com/i/196585907?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2fa629-99fd-4a44-9066-e6812956c7db_871x543.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_!Nxto!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2fa629-99fd-4a44-9066-e6812956c7db_871x543.png 424w, https://substackcdn.com/image/fetch/$s_!Nxto!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2fa629-99fd-4a44-9066-e6812956c7db_871x543.png 848w, https://substackcdn.com/image/fetch/$s_!Nxto!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2fa629-99fd-4a44-9066-e6812956c7db_871x543.png 1272w, https://substackcdn.com/image/fetch/$s_!Nxto!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2fa629-99fd-4a44-9066-e6812956c7db_871x543.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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 used Claude to create my plans in Linear. I would regularly have Claude check Linear for which tasks needed to get done next and groom my own backlog about once a week. It&#8217;s almost like a decade of PM discipline puts you on autopilot&#8230; </p><p>To connect to Linear, I used <a href="iframe.php?url=https%3A%2F%2Fwww.venn.ai%2F">Venn AI</a>. Linear&#8217;s official MCP was missing several tools I needed and they don&#8217;t ship a working CLI. Using Venn AI gave me agent-driven ticket creation, sprint shaping, and status updates with the auth and scoping I needed.</p><p></p><h4><strong>Review machinery: Codex on meaningful PRs</strong> </h4><p>Codex catches things Claude misses. On a typical PR for Baohua, Codex flagged two to three critical issues that would have shipped otherwise: a memory leak in a long-running audio recorder, a Supabase RLS policy that let users read other families&#8217; stories, edge cases in the Mandarin input handler. </p><p>As someone who spends more time on product than on deep systems engineering, this is the layer that makes me comfortable shipping. It comes out of the box with gstack&#8217;s /review command, which runs Codex against a draft PR and posts findings in a format that&#8217;s easy to action. </p><p>Without this second model on important change, I wouldn&#8217;t trust the brain&#8217;s output enough to merge it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21dEkw%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fe81007fd-41c5-4560-a6b1-59d2dd888ce0_1086x440.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dEkw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe81007fd-41c5-4560-a6b1-59d2dd888ce0_1086x440.png 424w, https://substackcdn.com/image/fetch/$s_!dEkw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe81007fd-41c5-4560-a6b1-59d2dd888ce0_1086x440.png 848w, https://substackcdn.com/image/fetch/$s_!dEkw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe81007fd-41c5-4560-a6b1-59d2dd888ce0_1086x440.png 1272w, https://substackcdn.com/image/fetch/$s_!dEkw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe81007fd-41c5-4560-a6b1-59d2dd888ce0_1086x440.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21dEkw%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fe81007fd-41c5-4560-a6b1-59d2dd888ce0_1086x440.png" width="1086" height="440" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e81007fd-41c5-4560-a6b1-59d2dd888ce0_1086x440.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:440,&quot;width&quot;:1086,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:144808,&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://pmdata.substack.com/i/196585907?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe81007fd-41c5-4560-a6b1-59d2dd888ce0_1086x440.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_!dEkw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe81007fd-41c5-4560-a6b1-59d2dd888ce0_1086x440.png 424w, https://substackcdn.com/image/fetch/$s_!dEkw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe81007fd-41c5-4560-a6b1-59d2dd888ce0_1086x440.png 848w, https://substackcdn.com/image/fetch/$s_!dEkw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe81007fd-41c5-4560-a6b1-59d2dd888ce0_1086x440.png 1272w, https://substackcdn.com/image/fetch/$s_!dEkw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe81007fd-41c5-4560-a6b1-59d2dd888ce0_1086x440.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><h4><strong>Infra machinery: Vercel, Supabase, Inngest, manually wired</strong> </h4><p>Claude Code wired the entire infra stack itself: Vercel for hosting, Supabase for auth and Postgres, Inngest for background jobs (the audio processing queue, weekly digests, retry logic). </p><p>It took maybe a day longer than going with Replit. But the honest benefit? I own every layer, I can move providers if I need to, and there is no platform between me and the families using Baohua. </p><p>The day I spent wiring Vercel and Supabase has already paid back several times over in flexibility and control. </p><p></p><h4><strong>Source-control machinery: GitHub with testing</strong></h4><p>Every change ran through a GitHub PR with branch protection and required status checks. The test suite gates merge: <strong>roughly one in three of my PRs trips a test on first push and gets rewritten before it lands</strong>. That ratio is the reason this stack works. I am not a careful enough engineer to merge to main directly without breaking something, and the brain is even less careful than I am. </p><p>Tests do the work a responsible engineer would do. When I&#8217;m building a new feature, I can trust that I&#8217;m not introducing regressions. </p><p></p><h2>Taste: the layer the diagram can&#8217;t show</h2><p>The architecture above is the <em>visible</em> part of the Solo Production Stack. There is a more important layer the diagram can&#8217;t show, and it&#8217;s the most critical part.</p><div class="pullquote"><p>Most vibe-coded apps in 2026 will fail, not because of the engineering, but because they aren&#8217;t solving a problem real users have, in a way that&#8217;s obvious and delightful.</p><p>Product engineers are calling this <em><strong>taste</strong></em>, and it&#8217;s the most fundamental skill there is. It&#8217;s also the most undersupplied skill in software right now, because the AI tools have made building cheap.</p></div><p>For Baohua, taste meant being clear that I was building for Chinese American families with grandparents who don&#8217;t natively speak English and children who don&#8217;t natively speak Mandarin. </p><p>It started with a personal problem that I validated with dozens of friends and family first. It continued with copious research about Storyworth, Remento and other alternative storytelling platforms. </p><p>Before I wrote the first piece of code, I spent hours with /ceo-plan-review refining my idea and its purpose. I also spent hours tinkering and optimizing a visual language that doesn&#8217;t feel like another cheap SaaS knockoff, but something that emotionally resonates with my customer. </p><p>Claude Code can&#8217;t tell you what to build. Codex can&#8217;t tell you whether what you built is worth using. Skills can hold conventions but not opinions. The taste layer is yours</p><p></p><h2>Why Replit and Lovable don&#8217;t get you there</h2><p>Both platforms got dramatically better in 2025. Replit&#8217;s Agent 3 ships with a multi-agent loop, Replit Auth, native Postgres, Stripe, and a catalog of more than thirty native connectors. Lovable&#8217;s Supabase integration handles auth, database, storage, and edge functions through chat, with two-way GitHub sync and preview deployments per branch. </p><p>For a prototype that needs to look like a product in a weekend, both are remarkable, and I considered both.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21MFJ7%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fae3379d7-6582-4600-9b1d-e9d9ca1c9d5e_940x706.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MFJ7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae3379d7-6582-4600-9b1d-e9d9ca1c9d5e_940x706.png 424w, https://substackcdn.com/image/fetch/$s_!MFJ7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae3379d7-6582-4600-9b1d-e9d9ca1c9d5e_940x706.png 848w, https://substackcdn.com/image/fetch/$s_!MFJ7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae3379d7-6582-4600-9b1d-e9d9ca1c9d5e_940x706.png 1272w, https://substackcdn.com/image/fetch/$s_!MFJ7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae3379d7-6582-4600-9b1d-e9d9ca1c9d5e_940x706.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21MFJ7%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fae3379d7-6582-4600-9b1d-e9d9ca1c9d5e_940x706.png" width="940" height="706" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ae3379d7-6582-4600-9b1d-e9d9ca1c9d5e_940x706.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:706,&quot;width&quot;:940,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:132302,&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://pmdata.substack.com/i/196585907?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae3379d7-6582-4600-9b1d-e9d9ca1c9d5e_940x706.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_!MFJ7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae3379d7-6582-4600-9b1d-e9d9ca1c9d5e_940x706.png 424w, https://substackcdn.com/image/fetch/$s_!MFJ7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae3379d7-6582-4600-9b1d-e9d9ca1c9d5e_940x706.png 848w, https://substackcdn.com/image/fetch/$s_!MFJ7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae3379d7-6582-4600-9b1d-e9d9ca1c9d5e_940x706.png 1272w, https://substackcdn.com/image/fetch/$s_!MFJ7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae3379d7-6582-4600-9b1d-e9d9ca1c9d5e_940x706.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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>The bottom four rows are what separate a weekend prototype from a production deployment. The path with either managed platform is the same: when you actually need engineering discipline, you export to GitHub and Vercel and reassemble the rest of the stack yourself. Once you&#8217;ve done that, you&#8217;re already running the Solo Production Stack. The platforms gave you the head start, not the finish.</p><blockquote><p>The gap between a prototype and a full product is the skills harness that lets you build methodically with discipline and rigor. </p><p>This harness brings out your product intuition and taste to <strong>build something that solves a real problem, creating something people truly want. </strong></p><p>This is where Replit and Lovable came up short. </p></blockquote><h2>Engineering taste matters too</h2><p>The Solo Production Stack does not work without engineering instinct. You need to recognize bloat to prune it. You need to read a Codex review and know which warnings actually matter and which are noise. You need to look at a Claude Code PR and notice when it has quietly rebuilt something you already had. A non-engineer running this loop will ship a Replit-grade app and call it production.</p><p>If you don&#8217;t have the instinct yet, don&#8217;t worry. Build slowly, ask Claude lots of questions. Stay patient and you&#8217;ll learn everything you need. </p><h2>Baohua released</h2><p>Baohua shipped on April 30, on my birthday. I&#8217;ve wanted to build Baohua for years, and shipping it has been one of the most satisfying moments of my life. </p><p>The fact that one person, in one month, can ship a real product to families they care about is the early signal of something bigger. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21PNMs%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F21bef5a1-fc9d-4184-8eb8-f62922a7a1f2_1087x538.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PNMs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21bef5a1-fc9d-4184-8eb8-f62922a7a1f2_1087x538.png 424w, https://substackcdn.com/image/fetch/$s_!PNMs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21bef5a1-fc9d-4184-8eb8-f62922a7a1f2_1087x538.png 848w, https://substackcdn.com/image/fetch/$s_!PNMs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21bef5a1-fc9d-4184-8eb8-f62922a7a1f2_1087x538.png 1272w, https://substackcdn.com/image/fetch/$s_!PNMs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21bef5a1-fc9d-4184-8eb8-f62922a7a1f2_1087x538.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21PNMs%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F21bef5a1-fc9d-4184-8eb8-f62922a7a1f2_1087x538.png" width="1087" height="538" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/21bef5a1-fc9d-4184-8eb8-f62922a7a1f2_1087x538.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:538,&quot;width&quot;:1087,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:560074,&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://pmdata.substack.com/i/196585907?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21bef5a1-fc9d-4184-8eb8-f62922a7a1f2_1087x538.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_!PNMs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21bef5a1-fc9d-4184-8eb8-f62922a7a1f2_1087x538.png 424w, https://substackcdn.com/image/fetch/$s_!PNMs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21bef5a1-fc9d-4184-8eb8-f62922a7a1f2_1087x538.png 848w, https://substackcdn.com/image/fetch/$s_!PNMs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21bef5a1-fc9d-4184-8eb8-f62922a7a1f2_1087x538.png 1272w, https://substackcdn.com/image/fetch/$s_!PNMs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21bef5a1-fc9d-4184-8eb8-f62922a7a1f2_1087x538.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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="iframe.php?url=https%3A%2F%2Fbaohua.app%2F">Check out Baohua</a></figcaption></figure></div><p>Some of the most useful software in the next decade will be micro-applications built by individuals, solving specific problems that never made it past a VC partner meeting because the TAM was too small. </p><p>That future matters more to me than the next frontier model release. If you&#8217;ve been carrying an idea like this for years, I&#8217;d love to connect.</p><h2></h2><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://pmdata.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Product, Data and AI! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Your 2025 Data & AI Strategy]]></title><description><![CDATA[Now's the time to create a solid multi-year strategy]]></description><link>https://pmdata.substack.com/p/your-2025-data-and-ai-strategy</link><guid isPermaLink="false">https://pmdata.substack.com/p/your-2025-data-and-ai-strategy</guid><dc:creator><![CDATA[Luke Lin]]></dc:creator><pubDate>Mon, 28 Oct 2024 20:45:53 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21VNJ6%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fc940e96a-2fba-412d-9994-e5eb534aa439_1546x878.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>After a long hiatus, I feel inspired to write and share my thoughts once again. Hope you enjoy!</p><p>As November approaches, many of us are going through annual planning &#8212; what are our major initiatives and how are we positioned to execute on them? Among this lies  the need to accelerate our progress in data and AI, especially with breakneck development and the possibility of AGI coming within just another year! (See posts from <a href="iframe.php?url=https%3A%2F%2Fia.samaltman.com%2F">Sam Altman</a> and <a href="iframe.php?url=https%3A%2F%2Fdarioamodei.com%2Fmachines-of-loving-grace">Dario Amodei</a>).</p><p>Let&#8217;s pause first and define &#8216;AGI&#8217; that could come soon. There are lots of definitions floating around, but this is one of my favorites from Dario Amodei. He breaks down what he&#8217;s renamed as &#8216;powerful AI&#8217; with the following characteristics:</p><ul><li><p>Smarter than a Nobel Prize winner in several fields</p></li><li><p>Receives and executes tasks in multiple ways (audio, video, mouse, chat, etc) and performs them with a skill exceeding most people</p></li><li><p>It can perform complex tasks over the course of days and weeks</p></li></ul><p>In short, Dario calls this &#8220;a country of geniuses in a datacenter&#8221;</p><div class="pullquote"><p>Powerful AI is like a country of geniuses in a datacenter. It will be smarter than a nobel prize winner and can perform complex tasks in various ways with a high level of skill</p></div><p>With meaningful advancements coming on a scale of <em>thousands of days</em>, it&#8217;s imperative for every company to develop a meaningful data and AI strategy of their own. Now is the time to brainstorm, socialize, and staff a multi-year data &amp; AI strategy. </p><p>As your teams begin building your strategies, you&#8217;ll want to cover basics like understanding the technology, preparing your data and setting up governance (as covered by <a href="iframe.php?url=https%3A%2F%2Fadvisicon.com%2Fpreparing-your-business-for-ai%2F">guides like this</a>). Beyond the table stakes, I&#8217;ve been thinking through some additional items to incorporate as your teams build your strategies:</p><blockquote><ol><li><p>Collect and organize more data, both internal and external </p></li><li><p>Make proper platform investments in data and AI technologies </p></li><li><p>Rapid experimentation with AI to build your expertise </p></li></ol></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21VNJ6%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fc940e96a-2fba-412d-9994-e5eb534aa439_1546x878.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VNJ6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc940e96a-2fba-412d-9994-e5eb534aa439_1546x878.png 424w, https://substackcdn.com/image/fetch/$s_!VNJ6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc940e96a-2fba-412d-9994-e5eb534aa439_1546x878.png 848w, https://substackcdn.com/image/fetch/$s_!VNJ6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc940e96a-2fba-412d-9994-e5eb534aa439_1546x878.png 1272w, https://substackcdn.com/image/fetch/$s_!VNJ6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc940e96a-2fba-412d-9994-e5eb534aa439_1546x878.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21VNJ6%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fc940e96a-2fba-412d-9994-e5eb534aa439_1546x878.png" width="1456" height="827" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c940e96a-2fba-412d-9994-e5eb534aa439_1546x878.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:827,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2145644,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!VNJ6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc940e96a-2fba-412d-9994-e5eb534aa439_1546x878.png 424w, https://substackcdn.com/image/fetch/$s_!VNJ6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc940e96a-2fba-412d-9994-e5eb534aa439_1546x878.png 848w, https://substackcdn.com/image/fetch/$s_!VNJ6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc940e96a-2fba-412d-9994-e5eb534aa439_1546x878.png 1272w, https://substackcdn.com/image/fetch/$s_!VNJ6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc940e96a-2fba-412d-9994-e5eb534aa439_1546x878.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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>Expand your data vault</h2><p>AI models and LLMs are effectively platforms that perform complex tasks based on the data they&#8217;re given. As such, the single biggest differentiator your company can have in the AI era is the proprietary data within your walls. What information about your business, your customers, and the market is unique to you? Identifying that data and growing its base is the most important cornerstone of your long-term AI strategy.</p><div class="pullquote"><p>The single biggest differentiator your company can have in the AI era is the data within your walls. What information about your business, your customers, and the market is unique to you?</p></div><h4><strong>External data - your customers</strong></h4><p>Your external data, what you know about your customers (first party) and the market (second and third party) are the main building blocks for delivering a superior and more personalized experience for your customers. </p><p>If your team hasn&#8217;t yet built a robust CDP (customer data platform) with all the most important facets about your customers, this must be one of your top priorities. Not only will this help your company run its business better today via analytics and personalization, it will be critical context that your AI models will need in order to improve your user experience. Here, focus on your fundamentals like having a modern data warehouse in place, building your core tables, and identifying your top metrics and dimensions.</p><p>If your team has a CDP in place, now is the time to expand your footprint. What can you build to collect more data about your customers? Can you create a <a href="iframe.php?url=https%3A%2F%2Fortto.com%2Flearn%2Fgrowth-loops%2F">growth loop</a> that incentivizes your users to continue generating more data?</p><p>For example, let&#8217;s say you&#8217;re a fintech company and you want to know more about your customers. What can you build to collect information about their financial ambitions and how they think about saving? Are there innovative solutions beyond a &#8220;goal setting feature&#8221; that can hook your users to start cataloging their desires? This is the type of data that will provide invaluable as your company enters the AI era.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21Wsy9%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fc416a5a1-773c-45a9-9c5a-e014b56578b9_768x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Wsy9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc416a5a1-773c-45a9-9c5a-e014b56578b9_768x768.png 424w, https://substackcdn.com/image/fetch/$s_!Wsy9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc416a5a1-773c-45a9-9c5a-e014b56578b9_768x768.png 848w, https://substackcdn.com/image/fetch/$s_!Wsy9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc416a5a1-773c-45a9-9c5a-e014b56578b9_768x768.png 1272w, https://substackcdn.com/image/fetch/$s_!Wsy9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc416a5a1-773c-45a9-9c5a-e014b56578b9_768x768.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21Wsy9%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fc416a5a1-773c-45a9-9c5a-e014b56578b9_768x768.png" width="444" height="444" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c416a5a1-773c-45a9-9c5a-e014b56578b9_768x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:768,&quot;resizeWidth&quot;:444,&quot;bytes&quot;:1156798,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Wsy9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc416a5a1-773c-45a9-9c5a-e014b56578b9_768x768.png 424w, https://substackcdn.com/image/fetch/$s_!Wsy9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc416a5a1-773c-45a9-9c5a-e014b56578b9_768x768.png 848w, https://substackcdn.com/image/fetch/$s_!Wsy9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc416a5a1-773c-45a9-9c5a-e014b56578b9_768x768.png 1272w, https://substackcdn.com/image/fetch/$s_!Wsy9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc416a5a1-773c-45a9-9c5a-e014b56578b9_768x768.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><h4><strong>Internal data - your company</strong></h4><p>Maintaining your internal data in the vault is equally as important; this is the data that will enable you to run a more efficient business. This is also some of the data that is often overlooked in favor of developing CDPs. Make sure your company is collecting, storing, and organizing all the critical information on how you run things; go through each department&#8230; sales, marketing, product/engineering/design, operations, risk, and more. </p><blockquote><p>Look for pockets of data (sales calls, confluence docs, trainings, etc) that can be utilized to train and improve AI models in ways that drive operational efficiencies.</p></blockquote><p>For example, the data from all your sales calls tagged with which ones of them exemplify good outcomes versus bad outcomes are valuable data source for your AI models to help train your sales reps.</p><p>In the next year, it will be critical for your business to have a good map of where your internal data lives, how to access it, and how your team can feed it into AI models for any new projects.</p><h2>Invest in your data &amp; AI platform</h2><p>As we enter 2025, let&#8217;s hope that most of us have already migrated to the current generation of data technologies, using cloud data warehouses (Snowflake, BigQuery, etc) , orchestration frameworks (airflow, dbt), ETL/ELT tools (Fivetran, Hightouch, HEVO, etc), and quality frameworks (Monte Carlo, great expectations, etc).</p><p>LLMs and the newest AI models work differently and we&#8217;re already seeing an explosion of new technologies and frameworks to help your teams make the most of them. As such, your 2025 strategy needs to take some of these new technologies into consideration &#8212; how to interface with RAGs, vectorDBs, knowledge graphs, and more. These critical platform pieces that will help you store, retrieve and update data that feeds your AI models and AI-powered applications. Without them, your team will be stuck in the &#8220;whitelabeling chatGPT&#8221; version of AI products.</p><blockquote><p>Consider where and how you&#8217;re investing in AI technologies like RAGs, vectorDBs and knowledge graphs</p></blockquote><p>Amir Behbehani has a fantastic <a href="iframe.php?url=https%3A%2F%2Fmedium.com%2F%40amirbehbehani%2Fvertical-integration-in-ai-aligning-innovation-with-enterprise-value-289cc0cc4505">breakdown of the the evolving AI stack</a>, which is a must read for any technologist looking to understand how they&#8217;ll build their AI applications in the future.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://pmdata.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Product Management for Data! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><h2>Product experiments with AI</h2><p>AI is a nascent field, similar to what mobile was in 2008. There will be an inevitable explosion of new design paradigms, use cases, and products that come from this next wave of innovation.</p><p>For now, the single best thing we can do is test, iterate, and build our expertise around AI. This is not the time to hang your business on a single AI bet. It&#8217;s the time to identify your top product managers and engineers and give them space to explore what can be done with AI. Teams that experiment now will build lasting expertise and gain a long-term advantage with AI.</p><div class="pullquote"><p>This is not the time to hang your business on a single AI bet. It&#8217;s the time to identify your top product managers and engineers and give them space to explore what can be done with AI. </p></div><p>As you construct your strategies, consider the following:</p><h4><strong>Calibrate your risk appetite</strong></h4><p>We&#8217;ve all had experimental initiatives laden with pressure and expectations from across the business that crumble with all the attention and stall with too many cooks in the kitchen. Do not let this happen to your AI initiatives!!</p><p>By now, most people have heard of the raging success from <a href="iframe.php?url=https%3A%2F%2Fblog.google%2Ftechnology%2Fai%2Fnotebooklm-google-ai%2F">Google&#8217;s Notebook LM</a>. To me, the most important line in their entire announcement is this one:</p><blockquote><p>NotebookLM is an experimental product, built by a small team in&nbsp;<a href="iframe.php?url=https%3A%2F%2Flabs.withgoogle.com%2F">Google Labs</a>.</p></blockquote><p>Meaningful discoveries are made from experiments, with small teams, and quarantined away from risk-averse business agendas. As you assemble teams to take bets in AI, make sure they have the space to try lots of different things. Hold them responsible by asking about their learnings and how they&#8217;re iterating. And make sure that senior leadership is on the same page about taking these risks!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21fFSg%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fedb80d75-26c0-4b96-bec2-aea40553f11d_768x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fFSg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedb80d75-26c0-4b96-bec2-aea40553f11d_768x768.png 424w, https://substackcdn.com/image/fetch/$s_!fFSg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedb80d75-26c0-4b96-bec2-aea40553f11d_768x768.png 848w, https://substackcdn.com/image/fetch/$s_!fFSg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedb80d75-26c0-4b96-bec2-aea40553f11d_768x768.png 1272w, https://substackcdn.com/image/fetch/$s_!fFSg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedb80d75-26c0-4b96-bec2-aea40553f11d_768x768.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21fFSg%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fedb80d75-26c0-4b96-bec2-aea40553f11d_768x768.png" width="384" height="384" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/edb80d75-26c0-4b96-bec2-aea40553f11d_768x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:768,&quot;resizeWidth&quot;:384,&quot;bytes&quot;:1099546,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fFSg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedb80d75-26c0-4b96-bec2-aea40553f11d_768x768.png 424w, https://substackcdn.com/image/fetch/$s_!fFSg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedb80d75-26c0-4b96-bec2-aea40553f11d_768x768.png 848w, https://substackcdn.com/image/fetch/$s_!fFSg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedb80d75-26c0-4b96-bec2-aea40553f11d_768x768.png 1272w, https://substackcdn.com/image/fetch/$s_!fFSg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedb80d75-26c0-4b96-bec2-aea40553f11d_768x768.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><h4><strong>Experiment, iterate, and learn</strong></h4><p>In the same spirit of experimentation, the treasure to be discovered in the AI gold rush comes from iterative learning. Each experiment gives you valuable lessons about how the technology works (or doesn&#8217;t work), what your customers care about, and how to make adjustments going forward.</p><p>For example, let&#8217;s say you&#8217;re building an LLM to train your sales team better and you&#8217;ve thrown every recorded demo from the last 2 years at your model. After your first iteration, you realize that your sales team is getting worse! Upon deeper digging, your team recognizes that you need to label your training data with good demos versus bad demos. You also need to fine tune the model to help teach sales tactics, not share product information, since your product stats have changed in the last 2 years. Getting to this insight quickly helps your team uncover nuances in how to deploy AI and generate value.</p><p>Teams that are able to close the feedback loop quickly will learn many times faster than others. This is the time to move fast and train things.</p><h2>Wrapping up</h2><p>Now is the time to really get deep about what you need to build in 2025 to be ready for accelerations in AI development. It&#8217;s the time to go a level deeper than your competitors to think through the nuances and build them into your multi-year strategic plan. Start investing now in your data and AI strategy. Every step you take today compounds tomorrow when AI takes off. Let&#8217;s build together.</p><p>Anything catch your eye or just want to chat some more? Please reach out!</p><div class="directMessage button" data-attrs="{&quot;userId&quot;:32404393,&quot;userName&quot;:&quot;Luke Lin&quot;,&quot;canDm&quot;:null,&quot;dmUpgradeOptions&quot;:null,&quot;isEditorNode&quot;:true}" data-component-name="DirectMessageToDOM"></div><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Incorporate data into your next product]]></title><description><![CDATA[Connecting your analytical data platform to user-facing products]]></description><link>https://pmdata.substack.com/p/incorporate-data-into-your-next-product</link><guid isPermaLink="false">https://pmdata.substack.com/p/incorporate-data-into-your-next-product</guid><dc:creator><![CDATA[Luke Lin]]></dc:creator><pubDate>Tue, 24 Jan 2023 17:12:35 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21YHNd%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F14f25cfd-893a-4019-95b5-6d459fdb8f56_1537x973.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In the near future, more and more products will begin integrating data directly into the end user experience. We&#8217;ll see this commonly manifest through personalization systems, applied machine learning, or displaying aggregated data directly to end users. As a result, product and engineering teams will need to incorporate the nuances of data into the way they build products. </p><h2>When should I consider &#8220;data in my product&#8221;? </h2><p>Almost every product is a data product because it retrieves and shows data to the end user. So, when do we start thinking of a product as one that incorporates data? Products that more deeply incorporate data are ones that need to use aggregated or computationally complex data as part of the product delivery, either as a value directly shown to the user or to help decide what to show to the user.</p><p>Easy examples of this are products that need to call an ML model&#8217;s output (recommenders, ranking algorithms, decisioning systems, complex pricing systems, fraud detection, etc). Other examples include needing to join and aggregate data from multiple sources (ex: show the user&#8217;s total spend across multiple products or sources) or perform complex calculations (ex: calculate user percentile across a large audience) in order to meet the end user&#8217;s needs . </p><p>In these cases, while the product can likely deliver some level of value with its current  setup, leveraging a robust data infrastructure and service can greatly improve the product&#8217;s quality. </p><blockquote><p>Products that more deeply incorporate data are ones that need to use aggregated or computationally complex data as part of the product delivery, either as a value directly shown to the user or to help decide what to show to the user.</p></blockquote><h2>What should I consider? </h2><p>Adding data to a product&#8217;s core experience introduces several new variables to consider. In addition to thinking through the product&#8217;s backend microservices and interactions with its production database(s), teams will also need to think through what generates data that wouldn&#8217;t come from the production database, the analytical data platform, and upstream data sources. </p><p><em>We know that the technology behind products can get quite complex. For the purposes of this post, we will keep things simple with just a set of microservices and a single production database powering the product. </em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21YHNd%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F14f25cfd-893a-4019-95b5-6d459fdb8f56_1537x973.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YHNd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14f25cfd-893a-4019-95b5-6d459fdb8f56_1537x973.png 424w, https://substackcdn.com/image/fetch/$s_!YHNd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14f25cfd-893a-4019-95b5-6d459fdb8f56_1537x973.png 848w, https://substackcdn.com/image/fetch/$s_!YHNd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14f25cfd-893a-4019-95b5-6d459fdb8f56_1537x973.png 1272w, https://substackcdn.com/image/fetch/$s_!YHNd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14f25cfd-893a-4019-95b5-6d459fdb8f56_1537x973.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21YHNd%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F14f25cfd-893a-4019-95b5-6d459fdb8f56_1537x973.png" width="1456" height="922" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/14f25cfd-893a-4019-95b5-6d459fdb8f56_1537x973.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:922,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:246537,&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YHNd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14f25cfd-893a-4019-95b5-6d459fdb8f56_1537x973.png 424w, https://substackcdn.com/image/fetch/$s_!YHNd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14f25cfd-893a-4019-95b5-6d459fdb8f56_1537x973.png 848w, https://substackcdn.com/image/fetch/$s_!YHNd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14f25cfd-893a-4019-95b5-6d459fdb8f56_1537x973.png 1272w, https://substackcdn.com/image/fetch/$s_!YHNd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14f25cfd-893a-4019-95b5-6d459fdb8f56_1537x973.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><svg aria-hidden="true" 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" class="icon-noB79L"><g><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 buttonBase-GK1x3M"><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 icon-noB79L"><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></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://pmdata.substack.com/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="iframe.php?url=https%3A%2F%2Fpmdata.substack.com%2Fsubscribe%3F"><span>Subscribe now</span></a></p><p>Taking data into account requires thinking about 3 additional components: </p><ol><li><p><strong>A data &#8220;service&#8221;: </strong>this effectively a microservice that sits on top of an analytical data platform. It ensures that your product can access the data it needs with high availability and low latency (note: this is not always a given, especially with data warehouses) and in the proper formats. <br><br>A data service can be called just like a microservice to provide real-time support directly to the product and end user. In some cases, however, the service can also batch compute and write data to the production database instead. This second method is useful for computationally expensive queries that generate values that can be broadly used across the product (ex: infer the user&#8217;s next product preference once an hour and store the value in your DB, then call it across one or many microservices for a variety of use cases). <br></p></li><li><p><strong>Analytical data platform:</strong> this is a larger data infrastructure that can unlock all sorts of data value if built and leveraged correctly. This set of systems is where most of the heavy data computing occurs, whether that&#8217;s stream processing, OLAP needs, or your machine learning operations. <br><br>Well built pipelines will process data across the analytical data platform to create data assets that can be used for product features. For example, you may create and maintain a custom audience of users with certain preferences based on their historic purchases. Aggregating data across millions of users and their purchase history is a great use case of a data warehouse; connecting the output of that calculation to an audience to target for personalized recommendations is a powerful way to connect your data infrastructure to the end user experience. <br><br>Teams are investing in their analytics data platforms across use cases such as data ingestion, data contracts/quality management, reverse ETL, and others. Well architected data systems with governed, reliable, and useful datasets can be leveraged beyond BI/analytics and activated to improve your product&#8217;s impact. <br></p><blockquote><p>Well architected data systems with governed, reliable, and useful datasets can be leveraged beyond BI/analytics and activated to improve your product&#8217;s impact. </p></blockquote></li><li><p><strong>Data sources</strong>: when building data into a product, it&#8217;s imperative to understand the data&#8217;s lineage all the way back to its source. Does your data come from other products&#8217; databases and then get joined in the analytical data platform? Does it come from a 3rd party vendor? How reliably does the data get ingested and what failsafes need to get put in place if there&#8217;s an issue with the data from its source? Be sure to only build product features off datasets with reliable sources and set contingency plans that don&#8217;t disrupt the user&#8217;s experience should one of your upstream data sources run into issues. </p></li></ol><p>There are many product and engineering decisions that will affect your end users based on the state of your data services and infrastructure. With a map and lineage of data all the way back to source, the best way to manage these considerations is to run several use cases through the data systems. Your use cases will help you understand things like where you need real-time data, where it&#8217;s okay to leverage stale(ish) data (hours, not days), where you should batch versus stream data, the impact (and mitigating actions) of data that&#8217;s unavailable or poor quality, and more. </p><div class="pullquote"><p>Run several use cases from your end user all the way through the data systems. </p><p>Your use cases will help you understand things like where you need real-time data, where it&#8217;s okay to leverage stale(ish) data (hours, not days), where you should batch versus stream data, the impact (and mitigating actions) of data that&#8217;s unavailable or poor quality, and more. </p></div><h2>What other nuances come up over time? </h2><p>As your product evolves over time, so do your data systems that support it. Basic monitoring, alerting and data quality checks will help ensure that your team identifies and resolves incidents in a timely manner, but there are also a few data-specific nuances to keep in mind. </p><ul><li><p><strong>Managing Bias</strong>: data, when used without human intelligence, can often return biased results. Without frequent analyses on the data outputs that are used by your product, you may be unintentionally using data in ways that harm or discriminate against your users. </p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AktY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0620b46-c66f-41da-bfae-1677fb5e7fb7_320x180.jpeg 424w, https://substackcdn.com/image/fetch/$s_!AktY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0620b46-c66f-41da-bfae-1677fb5e7fb7_320x180.jpeg 848w, https://substackcdn.com/image/fetch/$s_!AktY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0620b46-c66f-41da-bfae-1677fb5e7fb7_320x180.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!AktY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0620b46-c66f-41da-bfae-1677fb5e7fb7_320x180.jpeg 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21AktY%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fa0620b46-c66f-41da-bfae-1677fb5e7fb7_320x180.jpeg" width="320" height="180" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a0620b46-c66f-41da-bfae-1677fb5e7fb7_320x180.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:180,&quot;width&quot;:320,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;You are missing something! - Survivorship bias - YouTube&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="You are missing something! - Survivorship bias - YouTube" title="You are missing something! - Survivorship bias - YouTube" srcset="https://substackcdn.com/image/fetch/$s_!AktY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0620b46-c66f-41da-bfae-1677fb5e7fb7_320x180.jpeg 424w, https://substackcdn.com/image/fetch/$s_!AktY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0620b46-c66f-41da-bfae-1677fb5e7fb7_320x180.jpeg 848w, https://substackcdn.com/image/fetch/$s_!AktY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0620b46-c66f-41da-bfae-1677fb5e7fb7_320x180.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!AktY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0620b46-c66f-41da-bfae-1677fb5e7fb7_320x180.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div></li></ul><p></p><ul><li><p><strong>Logic changes along the data pipeline:</strong> it&#8217;s very likely that business logic is applied somewhere along your data pipeline and that logic will change over time. An example might be event taxonomies that change classification over time. If historical data matters (showing/leveraging trends, model training, etc), then logic changes may also trigger the need for restating data through the past so that your end users don&#8217;t have a sudden change in their experience. </p><p></p></li></ul><p>Building data into your product is a powerful way to drive more value for your users. However, it also introduces the need to take data services, infrastructure and lineage, and other long-term nuances into consideration so that your product reliably delivers the promised value to your users. Taking these extra dynamics into consideration will help you build more robust and impactful products while also capitalizing on your organization&#8217;s data investments. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://pmdata.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Product Management for Data! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><p></p><h2></h2>]]></content:encoded></item></channel></rss>