<?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 Adaptive Engineer]]></title><description><![CDATA[Welcome to "The Adaptive Engineer," a weekly newsletter that provides insights, guidance, and resources for software engineers and architects who want to improve their design skills and create more effective, efficient, and scalable systems.
]]></description><link>https://newsletter.adaptiveengineer.com</link><image><url>https://substackcdn.com/image/fetch/$s_!c_sk!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa76522ad-7641-4568-90b0-a3ef4b06523f_250x250.png</url><title>The Adaptive Engineer</title><link>https://newsletter.adaptiveengineer.com</link></image><generator>Substack</generator><lastBuildDate>Sun, 01 Nov 2026 01:01:14 GMT</lastBuildDate><atom:link href="https://newsletter.adaptiveengineer.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Zahiruddin Tavargere]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[theadaptiveengineer@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[theadaptiveengineer@substack.com]]></itunes:email><itunes:name><![CDATA[Zahiruddin Tavargere]]></itunes:name></itunes:owner><itunes:author><![CDATA[Zahiruddin Tavargere]]></itunes:author><googleplay:owner><![CDATA[theadaptiveengineer@substack.com]]></googleplay:owner><googleplay:email><![CDATA[theadaptiveengineer@substack.com]]></googleplay:email><googleplay:author><![CDATA[Zahiruddin Tavargere]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[How to et "Enterprise RAG Experience" Without the Enterprise Job]]></title><description><![CDATA[Open any AI engineer or Forward Deployed Engineer job post and you&#8217;ll see some version of the same line: &#8220;RAG experience on real enterprise data.&#8221;]]></description><link>https://newsletter.adaptiveengineer.com/p/how-to-et-enterprise-rag-experience</link><guid isPermaLink="false">https://newsletter.adaptiveengineer.com/p/how-to-et-enterprise-rag-experience</guid><dc:creator><![CDATA[Zahiruddin Tavargere]]></dc:creator><pubDate>Mon, 26 Oct 2026 06:57:30 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Dszt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F275f4816-315f-4a15-a1be-76c201133cca_1247x1112.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Open any AI engineer or Forward Deployed Engineer job post and you&#8217;ll see some version of the same line: <strong>&#8220;RAG experience on real enterprise data.&#8221;</strong></p><p>That leaves most people stuck. How do you get enterprise experience without already working at an enterprise?</p><p>This week&#8217;s answer is a dataset I keep coming back to, plus the lab I built around it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3OJl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F419d0a33-4e90-447e-873d-384675a0aaca_1456x816.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3OJl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F419d0a33-4e90-447e-873d-384675a0aaca_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!3OJl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F419d0a33-4e90-447e-873d-384675a0aaca_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!3OJl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F419d0a33-4e90-447e-873d-384675a0aaca_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!3OJl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F419d0a33-4e90-447e-873d-384675a0aaca_1456x816.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3OJl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F419d0a33-4e90-447e-873d-384675a0aaca_1456x816.png" width="1456" height="816" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/419d0a33-4e90-447e-873d-384675a0aaca_1456x816.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:816,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:522792,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.adaptiveengineer.com/i/222140733?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F419d0a33-4e90-447e-873d-384675a0aaca_1456x816.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_!3OJl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F419d0a33-4e90-447e-873d-384675a0aaca_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!3OJl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F419d0a33-4e90-447e-873d-384675a0aaca_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!3OJl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F419d0a33-4e90-447e-873d-384675a0aaca_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!3OJl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F419d0a33-4e90-447e-873d-384675a0aaca_1456x816.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><strong>Meet TechQA</strong></h2><p>TechQA is a <strong>free dataset of real IBM technical support questions</strong>, asked by real IBM customers. It isn&#8217;t synthetic and it isn&#8217;t tidy Wikipedia trivia.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://huggingface.co/datasets/PrimeQA/TechQA" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Dszt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F275f4816-315f-4a15-a1be-76c201133cca_1247x1112.png 424w, https://substackcdn.com/image/fetch/$s_!Dszt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F275f4816-315f-4a15-a1be-76c201133cca_1247x1112.png 848w, https://substackcdn.com/image/fetch/$s_!Dszt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F275f4816-315f-4a15-a1be-76c201133cca_1247x1112.png 1272w, https://substackcdn.com/image/fetch/$s_!Dszt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F275f4816-315f-4a15-a1be-76c201133cca_1247x1112.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Dszt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F275f4816-315f-4a15-a1be-76c201133cca_1247x1112.png" width="1247" height="1112" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/275f4816-315f-4a15-a1be-76c201133cca_1247x1112.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1112,&quot;width&quot;:1247,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:513338,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://huggingface.co/datasets/PrimeQA/TechQA&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.adaptiveengineer.com/i/222140733?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F275f4816-315f-4a15-a1be-76c201133cca_1247x1112.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_!Dszt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F275f4816-315f-4a15-a1be-76c201133cca_1247x1112.png 424w, https://substackcdn.com/image/fetch/$s_!Dszt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F275f4816-315f-4a15-a1be-76c201133cca_1247x1112.png 848w, https://substackcdn.com/image/fetch/$s_!Dszt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F275f4816-315f-4a15-a1be-76c201133cca_1247x1112.png 1272w, https://substackcdn.com/image/fetch/$s_!Dszt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F275f4816-315f-4a15-a1be-76c201133cca_1247x1112.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><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JyIK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdff96b13-c74c-4022-9a40-fc5c7c90ea8a_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JyIK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdff96b13-c74c-4022-9a40-fc5c7c90ea8a_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!JyIK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdff96b13-c74c-4022-9a40-fc5c7c90ea8a_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!JyIK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdff96b13-c74c-4022-9a40-fc5c7c90ea8a_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!JyIK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdff96b13-c74c-4022-9a40-fc5c7c90ea8a_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JyIK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdff96b13-c74c-4022-9a40-fc5c7c90ea8a_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dff96b13-c74c-4022-9a40-fc5c7c90ea8a_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;:1799018,&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;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.adaptiveengineer.com/i/222140733?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdff96b13-c74c-4022-9a40-fc5c7c90ea8a_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_!JyIK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdff96b13-c74c-4022-9a40-fc5c7c90ea8a_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!JyIK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdff96b13-c74c-4022-9a40-fc5c7c90ea8a_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!JyIK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdff96b13-c74c-4022-9a40-fc5c7c90ea8a_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!JyIK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdff96b13-c74c-4022-9a40-fc5c7c90ea8a_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><p></p><p>Every question comes with <strong>50 candidate documents</strong> (IBM &#8220;technotes&#8221;):</p><ul><li><p><strong>One</strong> is the right page.</p></li><li><p><strong>The other 49 are look-alikes</strong>: same product, same error codes, almost the same title.</p></li><li><p>And <strong>sometimes none of them are right</strong>.</p></li></ul><p>That last point is the important one. It&#8217;s exactly what a client&#8217;s knowledge base looks like: messy pages that all sound the same, and questions where the honest answer is <em>&#8220;I can&#8217;t find support for that.&#8221;</em></p><p>Learn to handle that and you&#8217;ve learned what clients actually pay for.</p><h2><strong>The lesson you can&#8217;t fake</strong></h2><p>Here&#8217;s what separates people who&#8217;ve <em>built</em> this from people who&#8217;ve <em>watched videos</em> about it.</p><p>TechQA tells you <strong>where each answer sits inside its source page</strong> (a start and end offset). So you can measure something most tutorials never check.</p><p>When I measured it, <strong>16% of answers start after character 2,000.</strong></p><p>Now look at what a lot of tutorials do:</p><pre><code>text = doc[:2000]   # &#8220;just keep the opening of each document&#8221;</code></pre><p>For that 16%, the answer is <strong>gone before search even begins</strong>. No retriever, re-ranker or prompt can recover text you&#8217;ve already thrown away.</p><p>You only learn this by measuring.</p><h2><strong>What you&#8217;ll build in the RAG Lab</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OXbB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57bc95f3-a26a-4c17-b7d3-29f0c54b1877_1200x675.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OXbB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57bc95f3-a26a-4c17-b7d3-29f0c54b1877_1200x675.webp 424w, https://substackcdn.com/image/fetch/$s_!OXbB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57bc95f3-a26a-4c17-b7d3-29f0c54b1877_1200x675.webp 848w, https://substackcdn.com/image/fetch/$s_!OXbB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57bc95f3-a26a-4c17-b7d3-29f0c54b1877_1200x675.webp 1272w, https://substackcdn.com/image/fetch/$s_!OXbB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57bc95f3-a26a-4c17-b7d3-29f0c54b1877_1200x675.webp 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!OXbB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57bc95f3-a26a-4c17-b7d3-29f0c54b1877_1200x675.webp" width="1200" height="675" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/57bc95f3-a26a-4c17-b7d3-29f0c54b1877_1200x675.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:675,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;The RAG Lab home page: a left sidebar listing the course modules and a main panel with the title, an intro, and cards for each level&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="The RAG Lab home page: a left sidebar listing the course modules and a main panel with the title, an intro, and cards for each level" title="The RAG Lab home page: a left sidebar listing the course modules and a main panel with the title, an intro, and cards for each level" srcset="https://substackcdn.com/image/fetch/$s_!OXbB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57bc95f3-a26a-4c17-b7d3-29f0c54b1877_1200x675.webp 424w, https://substackcdn.com/image/fetch/$s_!OXbB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57bc95f3-a26a-4c17-b7d3-29f0c54b1877_1200x675.webp 848w, https://substackcdn.com/image/fetch/$s_!OXbB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57bc95f3-a26a-4c17-b7d3-29f0c54b1877_1200x675.webp 1272w, https://substackcdn.com/image/fetch/$s_!OXbB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57bc95f3-a26a-4c17-b7d3-29f0c54b1877_1200x675.webp 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 lab takes you from raw data to a <strong>measured baseline</strong>:</p><ol><li><p><strong>Inspect the data</strong>: splits, answerable vs. unanswerable questions, candidate lists.</p></li><li><p><strong>Compare raw HTML with clean text</strong>: what does stripping actually change?</p></li><li><p><strong>Measure answer positions</strong>: where do answers live, and what does truncation cost you?</p></li><li><p><strong>Build a BM25 search</strong>: a simple, honest keyword baseline.</p></li></ol><p>On <strong>160 real questions</strong>, the BM25 baseline found:</p><ul><li><p><strong>the right page first 47% of the time</strong></p></li><li><p><strong>the right page in the top 5 63% of the time</strong></p></li></ul><p><strong>That&#8217;s your number to beat.</strong> Even better, the failures tell you what to fix next: <strong>the query, the documents, or the ranking</strong>.</p><p>That&#8217;s the exact workflow you&#8217;d walk an interviewer through: data first, then measurement, then a baseline, then targeted fixes.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.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 Adaptive Engineer! 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><strong>Real scale, on your laptop</strong></h2><p>You start with about <strong>28,500 documents</strong>, then move to the full library of <strong>802,000</strong>. That&#8217;s 28&#215; bigger.</p><p>At that size you hit the problems you&#8217;d normally only meet on the job: indexing time, memory, and whether your results still hold up as the data grows.</p><h2><strong>Try this before next week</strong></h2><p>Even if you never open the lab, try this one exercise on whatever RAG project you have:</p><blockquote><p><em><strong>Find out where your answers live.</strong> For a handful of questions you know the answers to, record the character position of the answer in its source document. Then check whether your chunking or truncation keeps it.</em></p></blockquote><p>If you find answers past your cut-off, you&#8217;ve just found a bug that no amount of prompt engineering will fix.</p><h2><strong>What&#8217;s next</strong></h2><p>This is <strong>Part 1 of a 3-part series on RAG for FDEs</strong>: retrieval, or finding the right source <em>before</em> you ask a model to answer.</p><p>You don&#8217;t need an enterprise job to build enterprise skills. You need the right dataset, honest measurement, and a system that knows when to say <em>&#8220;I can&#8217;t find support for that.&#8221;</em></p><div id="youtube2-74K4UN4M7cw" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;74K4UN4M7cw&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/74K4UN4M7cw?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Hit reply and tell me your BM25 numbers (or where your answers ended up living). I read every reply.</p><p>See you in Part 2, Zahir <em>The Adaptive Engineer</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share The Adaptive Engineer&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.adaptiveengineer.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share The Adaptive Engineer</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[What Is an Internal Forward Deployed Engineer?]]></title><description><![CDATA[I didn&#8217;t realize I was doing Forward Deployed Engineering until someone else gave it a name.]]></description><link>https://newsletter.adaptiveengineer.com/p/what-is-an-internal-forward-deployed</link><guid isPermaLink="false">https://newsletter.adaptiveengineer.com/p/what-is-an-internal-forward-deployed</guid><dc:creator><![CDATA[Zahiruddin Tavargere]]></dc:creator><pubDate>Mon, 12 Oct 2026 02:47:26 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/nDfvmEpxk14" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>I didn&#8217;t realize I was doing Forward Deployed Engineering until someone else gave it a name.</em></p><p>Like many engineers, I associated it with companies like OpenAI, Anthropic, or Palantir.</p><p>Engineers who work directly with customers, helping them solve complex technical problems and deploy AI into production.</p><p>Then it hit me.</p><p>I&#8217;ve been doing a version of this for over a year now.</p><p>Not for external customers.</p><p>For internal ones.</p><p>And I think this is one of the most exciting AI career paths that almost nobody is talking about.</p><div id="youtube2-nDfvmEpxk14" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;nDfvmEpxk14&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/nDfvmEpxk14?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div><hr></div><h3><strong>My customers aren&#8217;t outside the company.</strong></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Z0bu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc6dbed8-ab95-4397-9267-4b72fb26ddd7_1920x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Z0bu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc6dbed8-ab95-4397-9267-4b72fb26ddd7_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!Z0bu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc6dbed8-ab95-4397-9267-4b72fb26ddd7_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!Z0bu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc6dbed8-ab95-4397-9267-4b72fb26ddd7_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!Z0bu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc6dbed8-ab95-4397-9267-4b72fb26ddd7_1920x1080.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Z0bu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc6dbed8-ab95-4397-9267-4b72fb26ddd7_1920x1080.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bc6dbed8-ab95-4397-9267-4b72fb26ddd7_1920x1080.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_!Z0bu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc6dbed8-ab95-4397-9267-4b72fb26ddd7_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!Z0bu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc6dbed8-ab95-4397-9267-4b72fb26ddd7_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!Z0bu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc6dbed8-ab95-4397-9267-4b72fb26ddd7_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!Z0bu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc6dbed8-ab95-4397-9267-4b72fb26ddd7_1920x1080.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>They&#8217;re inside it.</p><p>I work in a central AI organization.</p><p>Across the company, different teams are trying to build AI.</p><ul><li><p>Marketing</p></li><li><p>Supply Chain</p></li><li><p>Customer Services</p></li><li><p>IT</p></li><li><p>E-commerce</p></li></ul><p>Every team has different goals.</p><p>Every team has different data.</p><p>Every team has different constraints.</p><p>But they&#8217;re all trying to build on the same AI platform.</p><p>My job isn&#8217;t to build every AI solution.</p><p>It&#8217;s to help teams build the <em>right</em> one.</p><p>Sometimes that means helping design an agent architecture.</p><p>Sometimes it&#8217;s deciding between RAG and fine-tuning.</p><p>Sometimes it&#8217;s defining evaluation metrics before anyone writes a line of code.</p><p>Sometimes it&#8217;s debugging why an AI agent works perfectly in a demo&#8212;but fails in production.</p><p>The technology changes every week.</p><p>The real job doesn&#8217;t.</p><p>Bridge AI capability with business value.</p><div><hr></div><h2><strong>Why companies need this role</strong></h2><p>Every large company eventually faces the same problem.</p><p>One team builds the AI platform.</p><p>Everyone else tries to use it.</p><p>In theory, that&#8217;s incredibly efficient.</p><p>In reality, application teams quickly discover problems the platform team never anticipated.</p><p>So they create workarounds.</p><p>They duplicate code.</p><p>They build custom orchestration.</p><p>They invent new evaluation methods.</p><p>Eventually, every team starts solving the same problems independently.</p><p>That&#8217;s expensive.</p><p>And it&#8217;s slow.</p><p>Companies need engineers who can move between both worlds.</p><p>People who understand the platform deeply...</p><p>but spend enough time with product teams to understand real business problems.</p><p>Every customer conversation becomes feedback for the platform.</p><p>Every production deployment improves the platform.</p><p>That&#8217;s what makes this role so valuable.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.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 Adaptive Engineer! 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><div><hr></div><h2><strong>How do you become one?</strong></h2><p>If this sounds like a role you&#8217;d enjoy, here are the five things I&#8217;d focus on.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rsFc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F660a1028-9ad9-4aa7-83f3-f9c4647840f4_1920x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rsFc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F660a1028-9ad9-4aa7-83f3-f9c4647840f4_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!rsFc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F660a1028-9ad9-4aa7-83f3-f9c4647840f4_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!rsFc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F660a1028-9ad9-4aa7-83f3-f9c4647840f4_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!rsFc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F660a1028-9ad9-4aa7-83f3-f9c4647840f4_1920x1080.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!rsFc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F660a1028-9ad9-4aa7-83f3-f9c4647840f4_1920x1080.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/660a1028-9ad9-4aa7-83f3-f9c4647840f4_1920x1080.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_!rsFc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F660a1028-9ad9-4aa7-83f3-f9c4647840f4_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!rsFc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F660a1028-9ad9-4aa7-83f3-f9c4647840f4_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!rsFc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F660a1028-9ad9-4aa7-83f3-f9c4647840f4_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!rsFc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F660a1028-9ad9-4aa7-83f3-f9c4647840f4_1920x1080.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><strong>1. Ship something real.</strong></h3><p>Don&#8217;t build demos.</p><p>Solve a real business problem.</p><p>Have real users.</p><p>Measure the outcome.</p><p>Nothing builds credibility faster than software people actually depend on.</p><div><hr></div><h3><strong>2. Learn to ask better questions.</strong></h3><p>When someone says:</p><blockquote><p>&#8220;We need an AI agent.&#8221;</p></blockquote><p>Pause.</p><p>Ask why.</p><p>Could automation solve it?</p><p>Could search solve it?</p><p>Would RAG work?</p><p>Do we really need fine-tuning?</p><p>Great AI engineers don&#8217;t start with models.</p><p>They start with the problem.</p><div><hr></div><h3><strong>3. Leave behind reusable knowledge.</strong></h3><p>When you help another team...</p><p>Don&#8217;t just solve today&#8217;s issue.</p><p>Leave behind:</p><ul><li><p>a reference architecture</p></li><li><p>a cookbook</p></li><li><p>sample code</p></li><li><p>evaluation criteria</p></li></ul><p>Your impact grows when the next team can solve similar problems without needing you.</p><div><hr></div><h3><strong>4. Teach instead of owning.</strong></h3><p>One trap I&#8217;ve seen repeatedly is becoming <em>the AI person.</em></p><p>Every project comes through you.</p><p>Every deployment depends on you.</p><p>Every prompt gets reviewed by you.</p><p>Congratulations.</p><p>You&#8217;ve become the bottleneck.</p><p>The goal isn&#8217;t to own AI.</p><p>The goal is to make everyone around you better at building it.</p><div><hr></div><h3><strong>5. Become a different kind of engineer.</strong></h3><p>This is probably the biggest lesson I&#8217;ve learned.</p><p>The technical skills are obvious.</p><p>You&#8217;ll work on:</p><ul><li><p>Agent architectures</p></li><li><p>Retrieval systems</p></li><li><p>Model selection</p></li><li><p>Tool integration</p></li><li><p>Evaluations</p></li><li><p>Production debugging</p></li><li><p>Observability</p></li><li><p>AI platform design</p></li></ul><p>But the soft skills are what really change your career.</p><p>You learn how to:</p><ul><li><p>Run discovery sessions.</p></li><li><p>Communicate with non-technical stakeholders.</p></li><li><p>Influence teams that don&#8217;t report to you.</p></li><li><p>Present trade-offs instead of opinions.</p></li><li><p>Build trust with customers.</p></li><li><p>Manage expectations.</p></li><li><p>Explain complex AI systems to executives.</p></li></ul><p>Those skills are difficult to learn if you spend your entire career inside one product team.</p><p>An internal FDE develops both.</p><p>You become a stronger engineer.</p><p>And a stronger business leader.</p><div><hr></div><h2><strong>Why I think this role matters</strong></h2><p>People often ask me:</p><blockquote><p>&#8220;What&#8217;s the most important skill to learn in the AI era?&#8221;</p></blockquote><p>They expect me to say:</p><ul><li><p>AI Agents</p></li><li><p>MCP</p></li><li><p>LangGraph</p></li><li><p>Fine-tuning</p></li></ul><p>Those are all important.</p><p>But my answer is different.</p><p><strong>Adaptability.</strong></p><p>Every customer is different.</p><p>Every business problem is different.</p><p>Every deployment teaches you something new.</p><p>That&#8217;s what this role forces you to become.</p><p>Not someone who knows every AI framework.</p><p>Someone who can apply AI to almost any business problem.</p><p>And I believe that&#8217;s going to be one of the most valuable engineering skills of the next decade.</p><div><hr></div><h3><strong>Final thought</strong></h3><p>If you&#8217;re already the person people come to when they&#8217;re trying to build AI...</p><p>If you&#8217;ve helped multiple teams adopt AI inside your organization...</p><p>If you&#8217;ve spent as much time understanding business problems as writing code...</p><p>You might already be doing this job.</p><p>You just haven&#8217;t given it a name yet.</p>]]></content:encoded></item><item><title><![CDATA[Why Muse Can't Plan My Career]]></title><description><![CDATA[I didn&#8217;t write my first real line of code until my early 30s]]></description><link>https://newsletter.adaptiveengineer.com/p/why-muse-cant-plan-my-career</link><guid isPermaLink="false">https://newsletter.adaptiveengineer.com/p/why-muse-cant-plan-my-career</guid><dc:creator><![CDATA[Zahiruddin Tavargere]]></dc:creator><pubDate>Sun, 04 Oct 2026 16:26:11 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/U9jA6XxgPkU" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I didn&#8217;t write my first real line of code until my early 30s</p><p>Before that, I was a journalist. Then I moved into operations. And for years, one thought sat at the back of my mind that I never said out loud:</p><p><em>I want to build things.</em></p><p>Today, I&#8217;m an architect. I design AI agent systems for a living.</p><p>That&#8217;s why one claim from Big Tech stopped me cold.</p><p>&#127909; <strong>Watch: Could AI Predict My Career?<br></strong></p><div id="youtube2-U9jA6XxgPkU" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;U9jA6XxgPkU&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/U9jA6XxgPkU?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div><hr></div><h3><strong>The race for your personal agent</strong></h3><p>Three of the biggest tech companies in the world are racing to build the AI that runs your life:</p><p>&#8594; <strong>xAI&#8217;s Grok Bot</strong> runs on its own cloud computer and learns a task by watching you do it once.</p><p>&#8594; <strong>Meta&#8217;s Muse</strong> hit #1 on the App Store within a week by cutting bills and chasing refunds.</p><p> &#8594; <strong>OpenAI&#8217;s Dots</strong> is OpenAI&#8217;s own play for the same job.</p><p>Meta&#8217;s Chief AI Officer, Alexandr Wang, goes furthest. In his essay <em>Why We&#8217;re Building Muse</em>, he describes an AI that works like a &#8220;second mind.&#8221; It figures out what you want, then makes it happen.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HdJR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F341c3d67-606e-4685-9f7f-c091914c1b2c_955x1500.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HdJR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F341c3d67-606e-4685-9f7f-c091914c1b2c_955x1500.png 424w, https://substackcdn.com/image/fetch/$s_!HdJR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F341c3d67-606e-4685-9f7f-c091914c1b2c_955x1500.png 848w, https://substackcdn.com/image/fetch/$s_!HdJR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F341c3d67-606e-4685-9f7f-c091914c1b2c_955x1500.png 1272w, https://substackcdn.com/image/fetch/$s_!HdJR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F341c3d67-606e-4685-9f7f-c091914c1b2c_955x1500.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!HdJR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F341c3d67-606e-4685-9f7f-c091914c1b2c_955x1500.png" width="955" height="1500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/341c3d67-606e-4685-9f7f-c091914c1b2c_955x1500.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1500,&quot;width&quot;:955,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Article content&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="Article content" title="Article content" srcset="https://substackcdn.com/image/fetch/$s_!HdJR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F341c3d67-606e-4685-9f7f-c091914c1b2c_955x1500.png 424w, https://substackcdn.com/image/fetch/$s_!HdJR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F341c3d67-606e-4685-9f7f-c091914c1b2c_955x1500.png 848w, https://substackcdn.com/image/fetch/$s_!HdJR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F341c3d67-606e-4685-9f7f-c091914c1b2c_955x1500.png 1272w, https://substackcdn.com/image/fetch/$s_!HdJR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F341c3d67-606e-4685-9f7f-c091914c1b2c_955x1500.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"></figcaption></figure></div><p>His line: <em>&#8220;Every unrealized want is a quiet tragedy of human potential.&#8221;</em></p><p>It&#8217;s a beautiful idea. I don&#8217;t think it could have worked for me.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.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 Adaptive Engineer! 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><div><hr></div><h3><strong>Where Wang is right</strong></h3><p>Dreams rarely die in one big failure. They die from a thousand paper cuts: the form you keep postponing, the email you never send, the call you push to tomorrow.</p><p>An agent that clears those is genuinely useful. That&#8217;s especially true for people without time, money or a mentor.</p><p>But his essay makes two different promises and blends them together.</p><div><hr></div><h3><strong>The intent ladder</strong></h3><p>Here&#8217;s the simplest way I know to see the gap. There are three levels of what you can ask an AI:</p><p><strong>Level 1: &#8220;Do this.&#8221;</strong> Cancel my unused subscriptions. The goal is clear and the result can be checked.</p><p><strong>Level 2: &#8220;Help me with this.&#8221;</strong> Help me save money. It takes several steps, but you can still measure it.</p><p><strong>Level 3: &#8220;Figure out what I want.&#8221;</strong> <em>&#8220;I feel like there&#8217;s something more I could be doing.&#8221;</em></p><p>Wang&#8217;s essay is about Level 3.</p><p>Now look at what Muse is actually being sold for: cable bills, insurance, refunds. Level 1 and Level 2.</p><p><strong>The essay talks about dreams. The product handles bills.</strong></p><div><hr></div><h3><strong>Why Level 3 is so hard</strong></h3><p>It isn&#8217;t a marketing gap. It&#8217;s a technical one, and there are three reasons.</p><p>I break all three down in the video. One of them is personal.</p><p>Imagine an AI had read everything about me in my early thirties: my articles, my emails, my searches. I tell it I want something different.</p><p>It would have suggested senior editor. Content strategy. A communications job at a tech company.</p><p>It would never have said <em>&#8220;learn to code at 35 and become an architect.&#8221;</em> Nothing in my data pointed there.</p><p><strong>AI guesses who you were. Not who you could become.</strong></p><p></p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.com/p/why-muse-cant-plan-my-career?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 Adaptive Engineer! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.com/p/why-muse-cant-plan-my-career?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.adaptiveengineer.com/p/why-muse-cant-plan-my-career?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.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 Adaptive Engineer! 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 Thought Jev vs Laya Would Be a Fair Fight. I Was Wrong.]]></title><description><![CDATA[For years, we&#8217;ve assumed that production AI systems need to call a hosted model every time they need to make a decision.]]></description><link>https://newsletter.adaptiveengineer.com/p/i-thought-jev-vs-laya-would-be-a</link><guid isPermaLink="false">https://newsletter.adaptiveengineer.com/p/i-thought-jev-vs-laya-would-be-a</guid><dc:creator><![CDATA[Zahiruddin Tavargere]]></dc:creator><pubDate>Mon, 28 Sep 2026 04:28:34 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/tcF85EyfNxY" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>For years, we&#8217;ve assumed that production AI systems need to call a hosted model every time they need to make a decision.</p><p>But what if they didn&#8217;t?</p><p>This week, I explored <strong>Laya</strong>, a new open-source decision model, to see whether it could handle the same enterprise workloads I previously tested with <strong>Jev</strong> - except this time, everything ran locally on my laptop.</p><p>No API key.</p><p>No hosted endpoint.</p><p>Just local inference.</p><div id="youtube2-tcF85EyfNxY" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;tcF85EyfNxY&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/tcF85EyfNxY?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div><hr></div><h2>Why I Wanted to Test Laya</h2><p>A few days after TypeSafe AI released Jev, an open-source alternative called <strong>Laya</strong> appeared on GitHub and quickly gained significant attention.</p><p>On paper, the idea is compelling.</p><p>Like Jev, Laya isn&#8217;t designed to generate paragraphs of text. It&#8217;s built to answer structured questions such as:</p><ul><li><p>Is this message toxic?</p></li><li><p>What sentiment does this review express?</p></li><li><p>Which category does this belong to?</p></li><li><p>Should this workflow continue?</p></li></ul><p>Instead of generating text and asking software to parse it, the model returns calibrated decisions that applications can consume directly.</p><p>The big difference?</p><p>Unlike Jev, <strong>Laya is completely open source</strong> and can run entirely on your own hardware.</p><p>That raised an obvious question.</p><p><strong>Can an open-source model deliver production-quality decision making without relying on the cloud?</strong></p><p>So I decided to find out.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.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 Adaptive Engineer! 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><div><hr></div><h2>Four Demos. Same Challenges.</h2><p>Rather than relying on benchmark numbers, I reran the exact same four demos from my previous Jev video.</p><h3>1&#65039;&#8419; Sentiment Analysis</h3><p>Could Laya classify product reviews accurately while running completely offline?</p><p>It did - and every prediction happened locally on my CPU.</p><div><hr></div><h3>2&#65039;&#8419; Chat Moderation</h3><p>Could it detect toxic prompts before they reached an LLM?</p><p>Yes, but with an interesting twist.</p><p>The detailed prompt that worked perfectly with Jev caused Laya to classify almost everything as unsafe - even a simple &#8220;Hi, how are you?&#8221;</p><p>Once I simplified the prompt to a single sentence, the results improved dramatically.</p><p>Sometimes, smaller models really do prefer simpler instructions.</p><div><hr></div><h3>3&#65039;&#8419; Sequential Decision Making</h3><p>Next came the maze-solving challenge.</p><p>The goal wasn&#8217;t just making one correct prediction - it was making the correct decision repeatedly until reaching the destination.</p><p>Most mazes worked well.</p><p>One didn&#8217;t.</p><p>Laya entered an infinite loop on a maze that Jev solved with ease.</p><p>It was a useful reminder that zero-shot reasoning remains one of Jev&#8217;s biggest strengths.</p><div><hr></div><h3>4&#65039;&#8419; Real-Time Video Moderation</h3><p>Finally, I tested a complete pipeline.</p><p>GPT-4o Mini handled OCR by reading handwritten text from a webcam.</p><p>Laya then classified that text locally as Safe, Toxic, or Prompt Injection.</p><p>The only cloud call left was OCR.</p><p>Every moderation decision happened on-device.</p><div><hr></div><h2>The Biggest Surprise Wasn&#8217;t Accuracy</h2><p>It was performance.</p><p>My first benchmark suggested Laya took roughly one second to classify a review.</p><p>That result was completely wrong.</p><p>I had accidentally benchmarked the model&#8217;s cold start instead of steady-state inference.</p><p>After warming up the model, reducing CPU thread oversubscription, and batching predictions together, inference became roughly <strong>10&#215; faster</strong>.</p><p>One review dropped to around <strong>32 ms</strong>.</p><p>Batching reduced that to roughly <strong>3.2 ms per review</strong> on my machine.</p><p>It was a great reminder that measuring AI systems correctly is just as important as choosing the right model.</p><div><hr></div><h2>My Biggest Takeaway</h2><p>I don&#8217;t think this is a story about <strong>Jev versus Laya</strong>.</p><p>I think it&#8217;s a story about choosing the right tool.</p><p>If you need strong zero-shot performance with minimal setup, Jev remains incredibly impressive.</p><p>If your data can&#8217;t leave your environment, you want complete deployment control, or you&#8217;re willing to fine-tune a model for your own workloads, Laya is an exciting open-source alternative.</p><p>Both represent a shift away from using large language models for every decision.</p><p>As AI agents become more autonomous, they&#8217;ll constantly need to answer questions like:</p><ul><li><p>Should I continue?</p></li><li><p>Which tool should I call?</p></li><li><p>Is this request safe?</p></li><li><p>Which workflow executes next?</p></li><li><p>Should I ask for human approval?</p></li></ul><p>Those aren&#8217;t generation problems.</p><p>They&#8217;re decision problems.</p><p>And it&#8217;s exciting to see both commercial and open-source models pushing this new category of AI forward.</p><div><hr></div><h2>Watch the Video</h2><p>In this week&#8217;s video, I rerun all four enterprise demos using Laya and compare the results directly against Jev - including where it excelled, where it struggled, and the benchmarking mistake I almost published before catching it.</p><p>I&#8217;d love to hear which direction you think enterprise AI is heading: hosted decision models, open-source alternatives, or perhaps a combination of both.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.com/p/i-thought-jev-vs-laya-would-be-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 Adaptive Engineer! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.com/p/i-thought-jev-vs-laya-would-be-a?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.adaptiveengineer.com/p/i-thought-jev-vs-laya-would-be-a?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><p></p>]]></content:encoded></item><item><title><![CDATA[Why I'm Paying Attention to JEV (And Why You Should Too)]]></title><description><![CDATA[What if the next breakthrough in AI isn&#8217;t another chatbot...]]></description><link>https://newsletter.adaptiveengineer.com/p/jev-the-ai-model-that-doesnt-chat</link><guid isPermaLink="false">https://newsletter.adaptiveengineer.com/p/jev-the-ai-model-that-doesnt-chat</guid><dc:creator><![CDATA[Zahiruddin Tavargere]]></dc:creator><pubDate>Sun, 20 Sep 2026 15:03:25 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!oCM8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7032dac-d217-4600-9dbc-d0cadfd53242_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oCM8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7032dac-d217-4600-9dbc-d0cadfd53242_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oCM8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7032dac-d217-4600-9dbc-d0cadfd53242_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!oCM8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7032dac-d217-4600-9dbc-d0cadfd53242_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!oCM8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7032dac-d217-4600-9dbc-d0cadfd53242_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!oCM8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7032dac-d217-4600-9dbc-d0cadfd53242_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oCM8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7032dac-d217-4600-9dbc-d0cadfd53242_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e7032dac-d217-4600-9dbc-d0cadfd53242_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;:1437777,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.adaptiveengineer.com/i/216591239?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7032dac-d217-4600-9dbc-d0cadfd53242_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_!oCM8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7032dac-d217-4600-9dbc-d0cadfd53242_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!oCM8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7032dac-d217-4600-9dbc-d0cadfd53242_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!oCM8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7032dac-d217-4600-9dbc-d0cadfd53242_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!oCM8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7032dac-d217-4600-9dbc-d0cadfd53242_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><blockquote><p><em>What if the next breakthrough in AI isn&#8217;t another chatbot... but a model that simply makes better decisions?</em></p></blockquote><p>Every week, another AI model launches promising to write better code, generate better text, or reason better.</p><p><strong>JEV takes a completely different approach.</strong></p><p>Instead of generating paragraphs, <strong>JEV is built to make decisions.</strong></p><p>It&#8217;s the first <strong>System One Model</strong> from TypeSafe AI&#8212;a new class of AI models designed to produce <strong>fast, structured, type-safe decisions</strong> that software can consume directly.</p><div><hr></div><h2>Why I&#8217;m Paying Attention to JEV</h2><p>One of the reasons JEV caught my attention isn&#8217;t just the technology&#8212;it&#8217;s <strong>who built it</strong>.</p><p>TypeSafe AI was founded by <strong>Diogo Almeida</strong>, a former OpenAI researcher who helped develop the <strong>Reinforcement Learning from Human Feedback (RLHF)</strong> methods that ultimately powered <strong>InstructGPT and ChatGPT</strong>.</p><p>After helping build conversational AI, he began asking a different question:</p><blockquote><p><strong>&#8220;If language models have become incredibly good at talking, why haven&#8217;t they become equally good at powering software?&#8221;</strong></p></blockquote><p>His conclusion was fascinating.</p><p><strong>RLHF optimized models for conversation.</strong></p><p>But enterprise software doesn&#8217;t need another chatbot.</p><p>It needs models that can make <strong>fast, reliable, calibrated decisions</strong>.</p><p>That realization led his team to spend two years building an entirely new category of AI called <strong>System One Models</strong>.</p><p>Instead of asking a model to generate text and hoping it follows instructions, JEV is trained to make structured decisions with confidence scores.</p><p>TypeSafe calls this new training paradigm <strong>Reinforcement Learning for Calibrated Decisions (RLCD)</strong>.</p><p>The difference is subtle&#8212;but significant.</p><p><strong>RLHF</strong></p><blockquote><p>Generate the response humans prefer.</p></blockquote><p><strong>RLCD</strong></p><blockquote><p>Return the correct decision&#8212;and tell me how confident you are.</p></blockquote><p>That&#8217;s a very different optimization objective.</p><p>And it shows.</p><div><hr></div><h2>Why This Matters</h2><p>Think about how most enterprise AI systems work today.</p><p>A customer message arrives.</p><p>We ask an LLM:</p><ul><li><p>Is this toxic?</p></li><li><p>Which support queue should receive it?</p></li><li><p>Is the customer frustrated?</p></li><li><p>Should the agent continue?</p></li><li><p>Which tool should execute next?</p></li></ul><p>The LLM generates text or JSON.</p><p>We parse it.</p><p>Validate it.</p><p>Retry when formatting breaks.</p><p>Hope it doesn&#8217;t hallucinate.</p><p><strong>JEV removes that entire layer.</strong></p><p>Instead of generating text, you define the possible outputs up front.</p><p>For example:</p><ul><li><p>Billing</p></li><li><p>Sales</p></li><li><p>Technical Support</p></li><li><p>Refund</p></li></ul><p>Or perhaps:</p><ul><li><p>Safe / Unsafe</p></li><li><p>Positive / Neutral / Negative</p></li><li><p>Continue / Stop</p></li></ul><p>JEV simply returns the decision&#8212;along with a calibrated confidence score.</p><p>No prompt engineering.</p><p>No parsing.</p><p>No &#8220;Please return valid JSON.&#8221;</p><p>Just a decision.</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.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 Adaptive Engineer! 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><div><hr></div><h2>So I Wanted to Test It</h2><p>Rather than talking about benchmarks, I wanted to see how JEV performs on problems AI engineers actually solve.</p><p>So I built <strong>four enterprise demos</strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2Lt6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97e82599-3350-40da-a6e5-d544bab3bf0a_3623x2005.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2Lt6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97e82599-3350-40da-a6e5-d544bab3bf0a_3623x2005.png 424w, https://substackcdn.com/image/fetch/$s_!2Lt6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97e82599-3350-40da-a6e5-d544bab3bf0a_3623x2005.png 848w, https://substackcdn.com/image/fetch/$s_!2Lt6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97e82599-3350-40da-a6e5-d544bab3bf0a_3623x2005.png 1272w, https://substackcdn.com/image/fetch/$s_!2Lt6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97e82599-3350-40da-a6e5-d544bab3bf0a_3623x2005.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!2Lt6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97e82599-3350-40da-a6e5-d544bab3bf0a_3623x2005.png" width="1456" height="806" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/97e82599-3350-40da-a6e5-d544bab3bf0a_3623x2005.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:806,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3110609,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.adaptiveengineer.com/i/216591239?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97e82599-3350-40da-a6e5-d544bab3bf0a_3623x2005.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_!2Lt6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97e82599-3350-40da-a6e5-d544bab3bf0a_3623x2005.png 424w, https://substackcdn.com/image/fetch/$s_!2Lt6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97e82599-3350-40da-a6e5-d544bab3bf0a_3623x2005.png 848w, https://substackcdn.com/image/fetch/$s_!2Lt6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97e82599-3350-40da-a6e5-d544bab3bf0a_3623x2005.png 1272w, https://substackcdn.com/image/fetch/$s_!2Lt6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97e82599-3350-40da-a6e5-d544bab3bf0a_3623x2005.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>1&#65039;&#8419; Sentiment Analysis</h3><p>Can JEV classify thousands of customer reviews accurately and consistently?</p><div><hr></div><h3>2&#65039;&#8419; Chat Moderation</h3><p>Can it stop unsafe prompts before they ever reach your LLM?</p><div><hr></div><h3>3&#65039;&#8419; Decision Making</h3><p>Can it repeatedly make the correct next decision while solving a constrained problem?</p><div><hr></div><h3>4&#65039;&#8419; Video Moderation</h3><p>Can it analyze OCR text extracted from live video and detect unsafe content in real time?</p><div><hr></div><p>These aren&#8217;t synthetic benchmark tasks.</p><p>They&#8217;re the kinds of decisions enterprise AI systems make every single day.</p><div><hr></div><h2>My Biggest Takeaway</h2><p>I don&#8217;t think JEV replaces GPT-5, Claude, or Gemini.</p><p>I think it replaces <strong>thousands of tiny classification prompts</strong> we&#8217;ve been asking those models to perform.</p><p>As AI agents become more autonomous, they&#8217;ll constantly need to answer questions like:</p><ul><li><p>Should I continue?</p></li><li><p>Which tool should I call?</p></li><li><p>Is this safe?</p></li><li><p>Which workflow should execute next?</p></li><li><p>Should I ask for human approval?</p></li></ul><p>Those aren&#8217;t generation problems.</p><p>They&#8217;re <strong>decision problems</strong>.</p><p>And that&#8217;s exactly what JEV was designed to solve.</p><div><hr></div><h2>Watch the Demos</h2><p>I put JEV through <strong>four real enterprise challenges</strong> to see whether this new approach actually delivers in practice.</p><div id="youtube2-QoOImcnxfus" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;QoOImcnxfus&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/QoOImcnxfus?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.com/p/jev-the-ai-model-that-doesnt-chat?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 Adaptive Engineer! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.com/p/jev-the-ai-model-that-doesnt-chat?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.adaptiveengineer.com/p/jev-the-ai-model-that-doesnt-chat?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[Why Modern MCP Clients Don’t Load Every Tool]]></title><description><![CDATA[If you&#8217;ve built an MCP client with dozens&#8212;or hundreds&#8212;of tools, you&#8217;ve probably run into the same question:]]></description><link>https://newsletter.adaptiveengineer.com/p/why-modern-mcp-clients-dont-load</link><guid isPermaLink="false">https://newsletter.adaptiveengineer.com/p/why-modern-mcp-clients-dont-load</guid><dc:creator><![CDATA[Zahiruddin Tavargere]]></dc:creator><pubDate>Tue, 15 Sep 2026 06:31:02 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/gIQW5RqK9jI" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you&#8217;ve built an MCP client with dozens&#8212;or hundreds&#8212;of tools, you&#8217;ve probably run into the same question:</p><blockquote><p><strong>How do you prevent the model from drowning in tool definitions?</strong></p></blockquote><p>The answer is <strong>Progressive Discovery</strong>.</p><div id="youtube2-gIQW5RqK9jI" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;gIQW5RqK9jI&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/gIQW5RqK9jI?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Instead of exposing every tool upfront, the client progressively reveals only the tools needed to solve the user&#8217;s request.</p><p>Let&#8217;s see how it works.</p><div><hr></div><h2>The Problem: Every Tool, Every Time</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wWhL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0adf572f-b6d8-442d-a1ec-a89526fa7038_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wWhL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0adf572f-b6d8-442d-a1ec-a89526fa7038_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!wWhL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0adf572f-b6d8-442d-a1ec-a89526fa7038_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!wWhL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0adf572f-b6d8-442d-a1ec-a89526fa7038_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!wWhL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0adf572f-b6d8-442d-a1ec-a89526fa7038_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wWhL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0adf572f-b6d8-442d-a1ec-a89526fa7038_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0adf572f-b6d8-442d-a1ec-a89526fa7038_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;:1411732,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.adaptiveengineer.com/i/215779625?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0adf572f-b6d8-442d-a1ec-a89526fa7038_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_!wWhL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0adf572f-b6d8-442d-a1ec-a89526fa7038_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!wWhL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0adf572f-b6d8-442d-a1ec-a89526fa7038_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!wWhL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0adf572f-b6d8-442d-a1ec-a89526fa7038_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!wWhL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0adf572f-b6d8-442d-a1ec-a89526fa7038_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><p>Imagine your MCP client is connected to Salesforce, GitHub, Slack, Google Drive, Stripe, Notion, and dozens of other services.</p><p>The traditional approach is straightforward:</p><ol><li><p>Load every tool schema.</p></li><li><p>Send them all to the LLM.</p></li><li><p>Let the model figure out which one to use.</p></li></ol><p>That means the model receives hundreds of tool definitions before it has even processed the user&#8217;s request.</p><p>A simple question like:</p><blockquote><p><em>&#8220;Update the Salesforce lead for Acme Corp.&#8221;</em></p></blockquote><p>still forces the model to inspect Slack tools, GitHub tools, Google Drive tools, Stripe tools, and everything else.</p><p>Most of those tools are irrelevant.</p><p>The result?</p><ul><li><p>Larger prompts</p></li><li><p>Higher token usage</p></li><li><p>Increased latency</p></li><li><p>More expensive requests</p></li><li><p>Harder tool selection</p></li></ul><p>The bigger your MCP ecosystem becomes, the worse this problem gets.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.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 Adaptive Engineer! 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><div><hr></div><h2>The Solution: Progressive Discovery</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!noce!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b279cc5-73fb-4393-be3d-eff0b32c23e0_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!noce!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b279cc5-73fb-4393-be3d-eff0b32c23e0_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!noce!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b279cc5-73fb-4393-be3d-eff0b32c23e0_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!noce!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b279cc5-73fb-4393-be3d-eff0b32c23e0_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!noce!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b279cc5-73fb-4393-be3d-eff0b32c23e0_1536x1024.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!noce!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b279cc5-73fb-4393-be3d-eff0b32c23e0_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3b279cc5-73fb-4393-be3d-eff0b32c23e0_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;:1560870,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.adaptiveengineer.com/i/215779625?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b279cc5-73fb-4393-be3d-eff0b32c23e0_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_!noce!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b279cc5-73fb-4393-be3d-eff0b32c23e0_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!noce!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b279cc5-73fb-4393-be3d-eff0b32c23e0_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!noce!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b279cc5-73fb-4393-be3d-eff0b32c23e0_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!noce!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b279cc5-73fb-4393-be3d-eff0b32c23e0_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>Instead of exposing hundreds of business tools, the client exposes only <strong>three discovery tools</strong>:</p><ul><li><p><strong>Search</strong> &#8211; Find relevant tools</p></li><li><p><strong>Inspect</strong> &#8211; Load a tool&#8217;s schema</p></li><li><p><strong>Call</strong> &#8211; Execute the selected tool</p></li></ul><p>The interaction becomes incremental.</p><p>The model first searches the available catalog:</p><blockquote><p>&#8220;Find tools related to Salesforce lead updates.&#8221;</p></blockquote><p>The client returns only matching tools.</p><p>The model then requests the schema for the one it wants to use.</p><p>Only that schema is loaded into context.</p><p>Finally, the model executes the tool.</p><p>Rather than loading 200 tool definitions upfront, the model learns about exactly one tool when it needs it.</p><div><hr></div><h2>Same Capability. Much Smaller Context.</h2><p>One of the biggest misconceptions is that Progressive Discovery reduces what the model can do.</p><p>It doesn&#8217;t.</p><p>The model still has access to every tool connected to the MCP client.</p><p>The difference is <strong>when</strong> those tools are introduced.</p><p>Instead of carrying hundreds of unused schemas inside the context window, the model only receives the definitions required for the current task.</p><p>This produces several practical benefits:</p><ul><li><p>Smaller prompts</p></li><li><p>Lower token consumption</p></li><li><p>Faster responses</p></li><li><p>Better tool selection</p></li><li><p>Support for much larger tool ecosystems</p></li></ul><p>The capability remains identical.</p><p>The context becomes dramatically smaller.</p><div><hr></div><h2>The Complete Agent Loop</h2><p>Here&#8217;s what actually happens during execution.</p><p><strong>1. Application starts</strong></p><p>The MCP client connects to its servers, downloads the available tool catalog, and caches it locally.</p><p>Nothing is sent to the model yet.</p><p><strong>2. User submits a request</strong></p><p>For example:</p><blockquote><p><em>&#8220;Update the Salesforce lead for Acme Corp.&#8221;</em></p></blockquote><p><strong>3. The harness prepares the prompt</strong></p><p>Instead of sending hundreds of business tools, it sends:</p><ul><li><p>The system prompt</p></li><li><p>The user request</p></li><li><p>Conversation history</p></li><li><p>The three discovery tools</p></li></ul><p><strong>4. The model searches</strong></p><p>Guided by the system prompt, the model decides it first needs to discover relevant tools.</p><p>It calls the <strong>Search</strong> tool.</p><p><strong>5. The harness executes the search</strong></p><p>The search runs against the MCP client&#8217;s cached catalog&#8212;not every external service.</p><p>The client returns only the relevant tools.</p><p><strong>6. The harness updates the context</strong></p><p>The next model request now includes only those relevant tool definitions.</p><p><strong>7. The model executes the tool</strong></p><p>With the schema available, the model selects the correct tool, the harness executes it, and the result is returned.</p><p><strong>8. The model generates the final response</strong></p><p>The user receives the answer.</p><p>The model never needed to inspect hundreds of unrelated tools.</p><div><hr></div><h2>The Key Idea</h2><p>Progressive Discovery doesn&#8217;t make the model less capable.</p><p>It simply ensures the model only learns about the capabilities it needs <strong>when it needs them</strong>.</p><p>That&#8217;s what allows modern MCP clients to scale from a handful of tools to hundreds&#8212;or even thousands&#8212;without overwhelming the model with unnecessary context.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share The Adaptive Engineer&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.adaptiveengineer.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share The Adaptive Engineer</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[What Picking the Wrong Model Taught Me About AI Architecture]]></title><description><![CDATA[I spent more time on one mistake than I expected.]]></description><link>https://newsletter.adaptiveengineer.com/p/what-picking-the-wrong-model-taught</link><guid isPermaLink="false">https://newsletter.adaptiveengineer.com/p/what-picking-the-wrong-model-taught</guid><dc:creator><![CDATA[Zahiruddin Tavargere]]></dc:creator><pubDate>Mon, 07 Sep 2026 17:59:11 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/kXodRcz75hA" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I spent more time on one mistake than I expected.</p><p>Not because it broke the application.</p><p>Because it exposed a pattern I keep seeing with AI systems.</p><p>I picked the wrong model.</p><div id="youtube2-kXodRcz75hA" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;kXodRcz75hA&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/kXodRcz75hA?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>On paper, the choice looked reasonable. The model was capable, documented, and seemed like it should fit the task. But once the audio started flowing through the system, the cracks appeared.</p><p>And that&#8217;s the trap.</p><p>We spend a lot of time comparing benchmark scores, context windows, and model rankings. Then we deploy a system and discover that the real question wasn&#8217;t &#8220;Which model is best?&#8221;</p><p>It was &#8220;Which model is best for this specific job?&#8221;</p><p>A model that&#8217;s excellent at conversation might be a poor choice for transcription.</p><p>A model that&#8217;s great at reasoning might be unnecessarily expensive for routing tasks. </p><p>A model that&#8217;s technically capable might introduce latency that makes a voice experience feel broken.</p><p>The lesson wasn&#8217;t about audio.</p><p>It was about architecture.</p><p>As AI builders, we&#8217;re gradually shifting from prompt engineers to system designers. The challenge is no longer getting a model to work.</p><p>The challenge is assembling the right collection of models, tools, and workflows for the outcome we want.</p><p>The best AI systems aren&#8217;t built around the smartest model.</p><p>They&#8217;re built around the right decisions.</p><p>In this week&#8217;s video, I walk through the mistake, why it happened, how I diagnosed it, and what changed once I selected the right model for the job.</p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.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 Adaptive Engineer! 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[Context Engineering: The Discipline Behind Agents That Don’t Forget]]></title><description><![CDATA[Why &#8220;just add more context&#8221; is the wrong fix - and the 9-stage pipeline that actually works.]]></description><link>https://newsletter.adaptiveengineer.com/p/context-engineering-the-discipline</link><guid isPermaLink="false">https://newsletter.adaptiveengineer.com/p/context-engineering-the-discipline</guid><dc:creator><![CDATA[Zahiruddin Tavargere]]></dc:creator><pubDate>Mon, 31 Aug 2026 06:51:32 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/otR780UphAE" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Why &#8220;just add more context&#8221; is the wrong fix - and the 9-stage pipeline that actually works.</em></p><div id="youtube2-otR780UphAE" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;otR780UphAE&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/otR780UphAE?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div><hr></div><p>Here&#8217;s a demo that should make you nervous about the agent you shipped last sprint.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.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 Adaptive Engineer! 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>Same tools. Same model. Same task. Call it once: &#8220;Please cancel my order #9999.&#8221;</p><p>It comes back - cancelled, confirmed.</p><p>Call it again, thirty seconds later, and ask what happened to that same order. It has no idea. Nothing was kept. </p><p>No memory, no persistence - just whatever fit inside that one call&#8217;s messages.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EmYj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6de0bd6-753b-4b74-9ad8-b678da58de80_2000x1125.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EmYj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6de0bd6-753b-4b74-9ad8-b678da58de80_2000x1125.png 424w, https://substackcdn.com/image/fetch/$s_!EmYj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6de0bd6-753b-4b74-9ad8-b678da58de80_2000x1125.png 848w, https://substackcdn.com/image/fetch/$s_!EmYj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6de0bd6-753b-4b74-9ad8-b678da58de80_2000x1125.png 1272w, https://substackcdn.com/image/fetch/$s_!EmYj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6de0bd6-753b-4b74-9ad8-b678da58de80_2000x1125.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!EmYj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6de0bd6-753b-4b74-9ad8-b678da58de80_2000x1125.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f6de0bd6-753b-4b74-9ad8-b678da58de80_2000x1125.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;:1215376,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.adaptiveengineer.com/i/213504691?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6de0bd6-753b-4b74-9ad8-b678da58de80_2000x1125.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_!EmYj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6de0bd6-753b-4b74-9ad8-b678da58de80_2000x1125.png 424w, https://substackcdn.com/image/fetch/$s_!EmYj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6de0bd6-753b-4b74-9ad8-b678da58de80_2000x1125.png 848w, https://substackcdn.com/image/fetch/$s_!EmYj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6de0bd6-753b-4b74-9ad8-b678da58de80_2000x1125.png 1272w, https://substackcdn.com/image/fetch/$s_!EmYj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6de0bd6-753b-4b74-9ad8-b678da58de80_2000x1125.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>That&#8217;s not a prompt problem. You could rewrite the wording a hundred ways and it wouldn&#8217;t matter, because the fact the model needed wasn&#8217;t in its context window when it answered. This is the gap <strong>context engineering</strong> exists to close.</p><h2><strong>Prompt Engineering vs. Context Engineering</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7snu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41028a94-3190-477a-a6ba-62f712662c0e_1920x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7snu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41028a94-3190-477a-a6ba-62f712662c0e_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!7snu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41028a94-3190-477a-a6ba-62f712662c0e_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!7snu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41028a94-3190-477a-a6ba-62f712662c0e_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!7snu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41028a94-3190-477a-a6ba-62f712662c0e_1920x1080.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!7snu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41028a94-3190-477a-a6ba-62f712662c0e_1920x1080.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/41028a94-3190-477a-a6ba-62f712662c0e_1920x1080.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;:332228,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.adaptiveengineer.com/i/213504691?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41028a94-3190-477a-a6ba-62f712662c0e_1920x1080.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_!7snu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41028a94-3190-477a-a6ba-62f712662c0e_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!7snu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41028a94-3190-477a-a6ba-62f712662c0e_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!7snu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41028a94-3190-477a-a6ba-62f712662c0e_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!7snu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41028a94-3190-477a-a6ba-62f712662c0e_1920x1080.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>The difference is one sentence: prompt engineering is wording. Context engineering is <em>what information reaches the model, in what order, and for how long.</em></p><p>You can write the perfect instruction - if the right fact isn&#8217;t sitting in the window when the model answers, the wording doesn&#8217;t matter.</p><h2><strong>Why More Context Isn&#8217;t the Fix</strong></h2><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!coCn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabba1d0a-1742-4ebe-a912-e06519d3c4be_1920x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!coCn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabba1d0a-1742-4ebe-a912-e06519d3c4be_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!coCn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabba1d0a-1742-4ebe-a912-e06519d3c4be_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!coCn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabba1d0a-1742-4ebe-a912-e06519d3c4be_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!coCn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabba1d0a-1742-4ebe-a912-e06519d3c4be_1920x1080.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!coCn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabba1d0a-1742-4ebe-a912-e06519d3c4be_1920x1080.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/abba1d0a-1742-4ebe-a912-e06519d3c4be_1920x1080.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;:519388,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.adaptiveengineer.com/i/213504691?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabba1d0a-1742-4ebe-a912-e06519d3c4be_1920x1080.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_!coCn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabba1d0a-1742-4ebe-a912-e06519d3c4be_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!coCn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabba1d0a-1742-4ebe-a912-e06519d3c4be_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!coCn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabba1d0a-1742-4ebe-a912-e06519d3c4be_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!coCn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabba1d0a-1742-4ebe-a912-e06519d3c4be_1920x1080.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 obvious instinct is to give the model a bigger window. It doesn&#8217;t work. Past a point, more context doesn&#8217;t make a model smarter it makes it slower to find the one fact that matters, and more likely to act on something stale or contradictory.</p><p>Four specific failure modes show up once you know to look for them in a trace:</p><ul><li><p><strong>Context poisoning</strong>: a wrong fact enters early, and the agent keeps reasoning from it</p></li><li><p><strong>Context distraction</strong>: accumulated history buries what actually matters right now</p></li><li><p><strong>Context confusion</strong>: irrelevant information competes for attention and the model picks wrong</p></li><li><p><strong>Context clash</strong>: two contradictory facts in the window and the agent gets stuck</p></li></ul><p>Every one of these is a <em>management</em> problem, not a model problem. The job isn&#8217;t to maximize what&#8217;s in context  it&#8217;s to curate it, every turn, for the life of the task.</p><h2><strong>The Pipeline</strong></h2><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GZLR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10e37921-c24d-42b9-8e37-feb02fbeb1d3_1920x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GZLR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10e37921-c24d-42b9-8e37-feb02fbeb1d3_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!GZLR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10e37921-c24d-42b9-8e37-feb02fbeb1d3_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!GZLR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10e37921-c24d-42b9-8e37-feb02fbeb1d3_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!GZLR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10e37921-c24d-42b9-8e37-feb02fbeb1d3_1920x1080.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!GZLR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10e37921-c24d-42b9-8e37-feb02fbeb1d3_1920x1080.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/10e37921-c24d-42b9-8e37-feb02fbeb1d3_1920x1080.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;:493910,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.adaptiveengineer.com/i/213504691?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10e37921-c24d-42b9-8e37-feb02fbeb1d3_1920x1080.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_!GZLR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10e37921-c24d-42b9-8e37-feb02fbeb1d3_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!GZLR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10e37921-c24d-42b9-8e37-feb02fbeb1d3_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!GZLR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10e37921-c24d-42b9-8e37-feb02fbeb1d3_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!GZLR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10e37921-c24d-42b9-8e37-feb02fbeb1d3_1920x1080.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>Here&#8217;s the actual architecture, and this is the important part it reruns <strong>before every single turn</strong>, not once at the start of the conversation.</p><p>Query augmentation &#8594; retrieval &#8594; working memory &#8594; long-term memory &#8594; compression &amp; budgeting &#8594; validation &#8594; assembly &#8594; the model call &#8594; tool output feeding straight back into working memory for the next turn.</p><p>One honest note: this build uses a scored keyword retriever over a small policy knowledge base, on purpose - the architecture is the point, not the search algorithm. Swap in a vector DB later and every other stage still works unchanged.</p><h2><strong>Query Augmentation: Clean the Input First</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8Dsi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8285f779-966f-4a02-b9fa-b03d70e8df83_1920x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8Dsi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8285f779-966f-4a02-b9fa-b03d70e8df83_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!8Dsi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8285f779-966f-4a02-b9fa-b03d70e8df83_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!8Dsi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8285f779-966f-4a02-b9fa-b03d70e8df83_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!8Dsi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8285f779-966f-4a02-b9fa-b03d70e8df83_1920x1080.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!8Dsi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8285f779-966f-4a02-b9fa-b03d70e8df83_1920x1080.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8285f779-966f-4a02-b9fa-b03d70e8df83_1920x1080.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;:321596,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.adaptiveengineer.com/i/213504691?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8285f779-966f-4a02-b9fa-b03d70e8df83_1920x1080.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_!8Dsi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8285f779-966f-4a02-b9fa-b03d70e8df83_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!8Dsi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8285f779-966f-4a02-b9fa-b03d70e8df83_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!8Dsi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8285f779-966f-4a02-b9fa-b03d70e8df83_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!8Dsi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8285f779-966f-4a02-b9fa-b03d70e8df83_1920x1080.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>Real users don&#8217;t type clean queries. <em>&#8220;can i get a refund on my order it hasnt shipped yet&#8221;</em> &#8212; no structure, buried intent. Send that straight to retrieval and you get weak matches, and now the model is reasoning from context you polluted at step one.</p><p>A small, fast model rewrites the message into a clean query and pulls out anything structured - like an order number - before retrieval ever runs. Cheap model, one job: turn mess into signal.</p><h2><strong>Retrieval: Chunking Is a Trade-off</strong></h2><p>Chunk too small and you get a sentence with no surrounding context to make sense of it. Chunk too large and you dilute the match - a query about damaged items pulls back a chunk that&#8217;s mostly about something else.</p><p>This build chunks on sentence boundaries - sized to stay precise without cutting a fact in half &#8212; then scores and ranks each chunk against the query.</p><h2><strong>Memory Is Two Different Jobs</strong></h2><p><strong>Working memory</strong> is scoped to the task in front of the agent right now: goals, facts, decisions, constraints, open questions. It exists for exactly one task, then it&#8217;s gone.</p><p><strong>Long-term memory</strong> is what survives past that - and it&#8217;s not &#8220;save everything.&#8221; There&#8217;s an explicit graduation policy.</p><p>Decisions and constraints get promoted, because they&#8217;re durable. Open questions carry forward as follow-ups. Raw facts and goals get dropped - they were scratch space for a task that&#8217;s now done.</p><h2><strong>The Loop Learns As It Acts</strong></h2><p>Context isn&#8217;t decided once at the start. Every tool call - checking an order, trying a cancellation &#8212; folds its result into working memory <em>before</em> the next turn&#8217;s context is even assembled.</p><p>And what goes back in isn&#8217;t the raw tool response. Payment details, internal IDs, anything the model doesn&#8217;t need - stripped before it ever reaches the context window. Extract the signal, not the payload.</p><h2><strong>The Guardrails on the Pipeline Itself</strong></h2><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hcvH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc3b18a3-5f7b-436c-89c1-a076d5c6a469_1920x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hcvH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc3b18a3-5f7b-436c-89c1-a076d5c6a469_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!hcvH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc3b18a3-5f7b-436c-89c1-a076d5c6a469_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!hcvH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc3b18a3-5f7b-436c-89c1-a076d5c6a469_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!hcvH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc3b18a3-5f7b-436c-89c1-a076d5c6a469_1920x1080.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!hcvH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc3b18a3-5f7b-436c-89c1-a076d5c6a469_1920x1080.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fc3b18a3-5f7b-436c-89c1-a076d5c6a469_1920x1080.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;:424042,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.adaptiveengineer.com/i/213504691?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc3b18a3-5f7b-436c-89c1-a076d5c6a469_1920x1080.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_!hcvH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc3b18a3-5f7b-436c-89c1-a076d5c6a469_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!hcvH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc3b18a3-5f7b-436c-89c1-a076d5c6a469_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!hcvH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc3b18a3-5f7b-436c-89c1-a076d5c6a469_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!hcvH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc3b18a3-5f7b-436c-89c1-a076d5c6a469_1920x1080.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>What stops this pipeline from just recreating the same bloated-context problem it started with? Three things.</p><ul><li><p><strong>Budgeting</strong>: every source gets a hard token cap. No source can quietly crowd out the others.</p></li><li><p><strong>Compression:</strong> over the cap, a source gets summarized down to what still matters. Hard truncation is a last resort, not a first move.</p></li><li><p><strong>Validation</strong>: three checks before anything reaches the model: Is it still fresh? Is it permitted for who&#8217;s asking (a customer never sees staff-only policy)? Does it contradict something already in the window?</p></li></ul><p>Two real documents from this build&#8217;s knowledge base get caught by validation live: a 2025 shipping notice that&#8217;s simply expired, and a staff-only escalation policy that&#8217;s the wrong role for the asker.</p><h2><strong>It All Comes Back to One Thing</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ijq9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd80cf7bf-ffd6-47af-9456-bbca88055a82_1920x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ijq9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd80cf7bf-ffd6-47af-9456-bbca88055a82_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!Ijq9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd80cf7bf-ffd6-47af-9456-bbca88055a82_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!Ijq9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd80cf7bf-ffd6-47af-9456-bbca88055a82_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!Ijq9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd80cf7bf-ffd6-47af-9456-bbca88055a82_1920x1080.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ijq9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd80cf7bf-ffd6-47af-9456-bbca88055a82_1920x1080.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d80cf7bf-ffd6-47af-9456-bbca88055a82_1920x1080.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;:267754,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.adaptiveengineer.com/i/213504691?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd80cf7bf-ffd6-47af-9456-bbca88055a82_1920x1080.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_!Ijq9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd80cf7bf-ffd6-47af-9456-bbca88055a82_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!Ijq9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd80cf7bf-ffd6-47af-9456-bbca88055a82_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!Ijq9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd80cf7bf-ffd6-47af-9456-bbca88055a82_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!Ijq9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd80cf7bf-ffd6-47af-9456-bbca88055a82_1920x1080.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>A context manager runs this entire sequence &#8212; augment, retrieve, load memory, budget, compress, validate - fresh, before every single call to the model. Not once per conversation. Every turn.</p><p>That&#8217;s the concept. Next up: opening the actual code and building it piece by piece, starting with the file that ties all of this together.</p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.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 Adaptive Engineer! 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[WebMCP vs MCP: Everything You Need to Know Before You Build]]></title><description><![CDATA[As powerful the Browser Use feature in ChatGPT and Claude is - it&#8217;s also the most impractical.]]></description><link>https://newsletter.adaptiveengineer.com/p/webmcp-vs-mcp-everything-you-need</link><guid isPermaLink="false">https://newsletter.adaptiveengineer.com/p/webmcp-vs-mcp-everything-you-need</guid><dc:creator><![CDATA[Zahiruddin Tavargere]]></dc:creator><pubDate>Mon, 24 Aug 2026 05:59:09 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/KSTBWopFkx8" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><span>As powerful the Browser Use feature in ChatGPT and Claude is - it&#8217;s also the most impractical.<br><br>I run out of tokens very quickly compared to some large coding tasks I use the agents for.<br><br>This is partly tied to the way these agents can access the webpages. They either take a screenshot of the pages and parse, or scrape the DOM and parse the full pages.<br><br>Either way they devour tokens.</span></p><p><span>That&#8217;s why I was curious to know more about WebMCP.</span></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.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 Adaptive Engineer! 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>And, it seems it might be the solution to the problem I stated above.</span></p><div><hr></div><p><strong>Full analysis in the video.</strong></p><div id="youtube2-KSTBWopFkx8" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;KSTBWopFkx8&quot;,&quot;startTime&quot;:&quot;11s&quot;,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/KSTBWopFkx8?start=11s&amp;rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div><hr></div><p><span>WebMCP lets a website register real, callable functions that an AI agent can invoke directly. No parsing, no reverse-engineering pixels.</span></p><p>If you want to enable WebMCP on your pages you need to simply add a method in your JS script or file. </p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;javascript&quot;,&quot;nodeId&quot;:&quot;5117bcad-7e2b-4195-b1fe-f5c47b41a9d3&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-javascript">await document.modelContext.registerTool({
  name: 'search_products',
  description: 'Search the site catalog by keyword',
  inputSchema: {
    type: 'object',
    properties: { query: { type: 'string' } },
    required: ['query'],
  },
  execute: async ({ query }) =&gt; {
    return await searchCatalog(query);
  },
});
</code></pre></div><p>Think of this as the tool decorator you add on the python functions.</p><p>Give it a name, description, input object and the execute function that &#8220;calls&#8221; the tool.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;javascript&quot;,&quot;nodeId&quot;:&quot;98b77860-9a1a-4e86-8001-a0f3b2bae4d1&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-javascript">document.modelContext.registerTool</code></pre></div><h3>The Implementation</h3><p>Lets say you have an ecommerce page that looked like this.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ovd1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6b144ad-4882-4f86-ac53-0943a4b3f8e4_1621x1042.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ovd1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6b144ad-4882-4f86-ac53-0943a4b3f8e4_1621x1042.png 424w, https://substackcdn.com/image/fetch/$s_!Ovd1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6b144ad-4882-4f86-ac53-0943a4b3f8e4_1621x1042.png 848w, https://substackcdn.com/image/fetch/$s_!Ovd1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6b144ad-4882-4f86-ac53-0943a4b3f8e4_1621x1042.png 1272w, https://substackcdn.com/image/fetch/$s_!Ovd1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6b144ad-4882-4f86-ac53-0943a4b3f8e4_1621x1042.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ovd1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6b144ad-4882-4f86-ac53-0943a4b3f8e4_1621x1042.png" width="1456" height="936" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a6b144ad-4882-4f86-ac53-0943a4b3f8e4_1621x1042.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:936,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:349349,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.adaptiveengineer.com/i/212503292?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6b144ad-4882-4f86-ac53-0943a4b3f8e4_1621x1042.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_!Ovd1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6b144ad-4882-4f86-ac53-0943a4b3f8e4_1621x1042.png 424w, https://substackcdn.com/image/fetch/$s_!Ovd1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6b144ad-4882-4f86-ac53-0943a4b3f8e4_1621x1042.png 848w, https://substackcdn.com/image/fetch/$s_!Ovd1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6b144ad-4882-4f86-ac53-0943a4b3f8e4_1621x1042.png 1272w, https://substackcdn.com/image/fetch/$s_!Ovd1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6b144ad-4882-4f86-ac53-0943a4b3f8e4_1621x1042.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>You can add all the operations on page as tools that you want the agents to use.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;65ea899d-3348-4de8-bcdd-ec09fb7e3b9b&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">async function registerWebMcpTools() {
  if (!('modelContext' in document)) {
    setStatus(false,
      'WebMCP not detected in this browser. Enable &lt;code&gt;chrome://flags/#enable-webmcp-testing&lt;/code&gt; ' +
      '(Chromium 146.0.7672.0+) and reload, or check developer.chrome.com/docs/ai/webmcp &#8212; this API is ' +
      'still an early preview and its enable-steps can change.'
    );
    return;
  }

  await document.modelContext.registerTool({
    name: 'search_products',
    description: 'Search the Comet Goods catalog by product name or keyword. Returns matching products with id, name, price, and description.',
    inputSchema: {
      type: 'object',
      properties: { query: { type: 'string', description: 'Keyword to search for, e.g. "headphones" or "lamp"' } },
      required: ['query'],
    },
    execute: async ({ query }) =&gt; {
      const results = searchProducts(query);
      logToolCall('search_products', { query }, { resultCount: results.length });
      return { results };
    },
  });

  await document.modelContext.registerTool({
    name: 'add_to_cart',
    description: 'Add a product to the shopping cart by its product id and quantity.',
    inputSchema: {
      type: 'object',
      properties: {
        productId: { type: 'string', description: 'The product id, e.g. "p1"' },
        quantity: { type: 'number', description: 'How many to add. Defaults to 1.' },
      },
      required: ['productId'],
    },
    execute: async ({ productId, quantity }) =&gt; {
      const result = addToCart(productId, quantity || 1);
      logToolCall('add_to_cart', { productId, quantity: quantity || 1 }, result);
      return result;
    },
  });

}

</code></pre></div><p>I couldn&#8217;t find a working WebMCP client to test so I wrote a custom one using Playwright.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;922a3b56-b72c-4320-837b-fd45a731f3e6&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">class WebMCPClient:
    def __init__(self, page: Page):
        self.page = page

    def list_tools(self) -&gt; list[dict]:
        print("-"*40)
        print("Listing registered WebMCP tools...")
        print("-"*40)
        tools = self.page.evaluate(
            """async () =&gt; {
                const tools = await document.modelContext.getTools();
                return tools.map(t =&gt; ({
                    name: t.name,
                    description: t.description,
                    inputSchema: JSON.parse(t.inputSchema),
                }));
            }"""
        )
        return tools

    def call_tool(self, name: str, arguments: dict) -&gt; dict:
        print("-"*40)
        print(f"Calling tool {name} with arguments: {arguments}")
        print("-"*40)
        raw = self.page.evaluate(
            """async ([toolName, argsJson]) =&gt; {
                const tools = await document.modelContext.getTools();
                const tool = tools.find(t =&gt; t.name === toolName);
                if (!tool) throw new Error(`No such tool: ${toolName}`);
                return await document.modelContext.executeTool(tool, argsJson);
            }""",
            [name, json.dumps(arguments)],
        )
        try:
            return json.loads(raw)
        except (TypeError, json.JSONDecodeError):
            return raw</code></pre></div><p>Below are some logs from the agent run.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;c9339f11-9d9d-4286-948b-05473b330931&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">Registered WebMCP tools:
----------------------------------------
Listing registered WebMCP tools...
----------------------------------------
  - add_to_cart: Add a product to the shopping cart by its product id and quantity.
  - checkout: Place an order for everything currently in the cart. This is a consequential action and will ask the user to confirm.
  - get_product_details: Get full details for a single product by id.
  - search_products: Search the Comet Goods catalog by product name or keyword. Returns matching products with id, name, price, and description.
  - view_cart: Get the current contents of the shopping cart, including line items and total price.

search_products('keyboard'):
----------------------------------------
Calling tool search_products with arguments: {'query': 'keyboard'}
----------------------------------------
  {'results': [{'id': 'p1', 'name': 'Orbit Mechanical Keyboard', 'price': 129, 'description': 'Hot-swappable switches, USB-C, tenkeyless.'}]}

add_to_cart(p1, 3):
----------------------------------------
Calling tool add_to_cart with arguments: {'productId': 'p1', 'quantity': 3}
----------------------------------------
  {'ok': True, 'message': 'Added 3 &#215; Orbit Mechanical Keyboard to cart', 'cartCount': 3}

get_product_details(p3):
----------------------------------------
Calling tool get_product_details with arguments: {'productId': 'p3'}
----------------------------------------
  {'id': 'p3', 'name': 'Nebula Noise-Cancelling Headphones', 'price': 189, 'description': '30-hour battery, adaptive ANC.'}</code></pre></div><h3>Where it stands currently</h3><p>It isn&#8217;t production-ready - and should not be used in production by you as well.</p><p>It has moved into a formal <a href="https://developer.chrome.com/docs/ai/webmcp">Origin Trial</a>.</p><h3>Key Takeaways</h3><ul><li><p>WebMCP lets a page register real, callable functions for AI Agents using <strong>document.modelContext.registerTool</strong></p></li><li><p>It&#8217;s not an implementation of Anthropics Model Context Protocol</p></li><li><p>It&#8217;s designed for a human-in-the-loop browser tab, not headless background </p></li><li><p>It&#8217;s early: a Chrome Origin Trial, and explicitly not production-ready yet</p></li></ul><p></p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.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 Adaptive Engineer! 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[DeepSeek Harness, NVIDIA's NOOA, and Why the Harness Is Everything (Not the Model)]]></title><description><![CDATA[Every few weeks a new model tops a leaderboard and the timeline loses its mind.Thanks for reading The Adaptive Engineer!]]></description><link>https://newsletter.adaptiveengineer.com/p/deepseek-harness-nvidias-nooa-and</link><guid isPermaLink="false">https://newsletter.adaptiveengineer.com/p/deepseek-harness-nvidias-nooa-and</guid><dc:creator><![CDATA[Zahiruddin Tavargere]]></dc:creator><pubDate>Mon, 17 Aug 2026 09:27:13 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!M8Mb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F791a5e42-80a1-45ce-879d-6fb6bbb302c4_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!M8Mb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F791a5e42-80a1-45ce-879d-6fb6bbb302c4_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!M8Mb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F791a5e42-80a1-45ce-879d-6fb6bbb302c4_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!M8Mb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F791a5e42-80a1-45ce-879d-6fb6bbb302c4_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!M8Mb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F791a5e42-80a1-45ce-879d-6fb6bbb302c4_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!M8Mb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F791a5e42-80a1-45ce-879d-6fb6bbb302c4_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!M8Mb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F791a5e42-80a1-45ce-879d-6fb6bbb302c4_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/791a5e42-80a1-45ce-879d-6fb6bbb302c4_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;:1848573,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.adaptiveengineer.com/i/211520866?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F791a5e42-80a1-45ce-879d-6fb6bbb302c4_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_!M8Mb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F791a5e42-80a1-45ce-879d-6fb6bbb302c4_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!M8Mb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F791a5e42-80a1-45ce-879d-6fb6bbb302c4_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!M8Mb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F791a5e42-80a1-45ce-879d-6fb6bbb302c4_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!M8Mb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F791a5e42-80a1-45ce-879d-6fb6bbb302c4_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><p>Every few weeks a new model tops a leaderboard and the timeline loses its mind.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.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 Adaptive Engineer! 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>But if you&#8217;ve actually shipped agents in production, you already know the uncomfortable truth: the model is rarely why your agent fails.</p><p>The <strong>harness</strong> - the loop, the tool-calling contract, the memory, the guardrails around the model is what separates something that works from something that hallucinates, loops, or quietly does the wrong thing.</p><p>This week gave us a perfect case study.</p><h3>DeepSeek's biggest launch of the week wasn't the model</h3><p>On August 13, DeepSeek shipped <strong>DeepSeek Harness v0.1</strong>, a developer preview, MIT-licensed, open-sourced the same day as its DeepSeek-V4-Pro model GA release.<br><br><a href="https://github.com/deepseek-ai/deepseek-harness">Repo: https://github.com/deepseek-ai/deepseek-harness </a></p><p>What&#8217;s notable is <em>what</em> they chose to open source alongside a flagship model launch: not another benchmark flex, but the scaffolding.</p><p>The core idea is &#8220;everything is a plugin&#8221; the inference layer, tool registry, session state, control loop, execution sandbox, even the web UI are all separately swappable pieces, built on what they call the Cordis meta-framework.</p><p>It&#8217;s DeepSeek&#8217;s answer to Claude Code: not a smarter model wrapped in a fixed harness, but a harness you can rebuild around any model.</p><p>The repo hit <strong>100K+ GitHub stars and 11K+ forks within 3 days</strong> &#8212; one of the fastest adoption curves a dev tool has seen this year. </p><div class="twitter-embed" data-attrs="{&quot;url&quot;:&quot;https://x.com/Hesamation/status/2088766395676848558&quot;,&quot;full_text&quot;:&quot;DeepSeek Harness is now the fastest growing GitHub repo, passing 100K stars in under 48 hours, even faster than OpenClaw.\n\nvery positive community reaction:\n&amp;gt; unusually well designed architecture with tools, session log, agent loop, subagents, all being replaceable plugins\n&amp;gt; UI &quot;,&quot;username&quot;:&quot;Hesamation&quot;,&quot;name&quot;:&quot;&#8463;&#949;sam&quot;,&quot;profile_image_url&quot;:&quot;https://pbs.substack.com/profile_images/1978647680357134336/ioMmfkXF_normal.jpg&quot;,&quot;date&quot;:&quot;2026-08-15T23:14:50.000Z&quot;,&quot;photos&quot;:[{&quot;img_url&quot;:&quot;https://pbs.substack.com/media/HPzJ90cWoAAfqdj.jpg&quot;,&quot;link_url&quot;:&quot;https://t.co/2jp8FardVm&quot;}],&quot;quoted_tweet&quot;:{},&quot;reply_count&quot;:54,&quot;retweet_count&quot;:155,&quot;like_count&quot;:2026,&quot;impression_count&quot;:110572,&quot;expanded_url&quot;:null,&quot;video_url&quot;:null,&quot;video_preview_media_key&quot;:null,&quot;belowTheFold&quot;:true}" data-component-name="Twitter2ToDOM"></div><p><strong>What people are saying about it specifically:</strong></p><div class="twitter-embed" data-attrs="{&quot;url&quot;:&quot;https://x.com/quxiaoyin/status/2088018489835651135&quot;,&quot;full_text&quot;:&quot;DeepSeek harness is very great. I gave it a pin and it&#8217;s very dev friendly. I can see lots of startups choosing DeepSeek harness as the underlying infrastructure&quot;,&quot;username&quot;:&quot;quxiaoyin&quot;,&quot;name&quot;:&quot;Xiaoyin Qu&quot;,&quot;profile_image_url&quot;:&quot;https://pbs.substack.com/profile_images/1683592007875436544/P0kykGvV_normal.jpg&quot;,&quot;date&quot;:&quot;2026-08-13T21:42:56.000Z&quot;,&quot;photos&quot;:[],&quot;quoted_tweet&quot;:{&quot;full_text&quot;:&quot;&#129513; DeepSeek Harness v0.1 is now available in Developer Preview!\n\n&#128313; We&#8217;re opening it up to developers building agent harnesses worldwide and open-sourcing the codebase in MIT license.\n&#128313; Powered by the Cordis meta-framework, DeepSeek Harness is an agent harness built around one&quot;,&quot;username&quot;:&quot;deepseek_ai&quot;,&quot;name&quot;:&quot;DeepSeek&quot;,&quot;profile_image_url&quot;:&quot;https://pbs.substack.com/profile_images/1717417613775757312/Uk1zNOj4_normal.jpg&quot;},&quot;reply_count&quot;:12,&quot;retweet_count&quot;:13,&quot;like_count&quot;:211,&quot;impression_count&quot;:14589,&quot;expanded_url&quot;:null,&quot;video_url&quot;:null,&quot;video_preview_media_key&quot;:null,&quot;belowTheFold&quot;:true}" data-component-name="Twitter2ToDOM"></div><p><br>Within 24 hours - the OSS community contributed 365 plugins</p><div class="twitter-embed" data-attrs="{&quot;url&quot;:&quot;https://x.com/Granite0x/status/2088354578584449411&quot;,&quot;full_text&quot;:&quot;&#129327; 365 plugins for a coding harness that's 24 hours old.\n\ndeepseek shipped dsh yesterday. the community didn't wait.\n\nthe awesome-list already has 365 plugins, 11 categories, 220 forks.\n\n100+ contributors. the org that maintains it didn't exist yesterday either.\n\n8 worth&quot;,&quot;username&quot;:&quot;Granite0x&quot;,&quot;name&quot;:&quot;Granite&quot;,&quot;profile_image_url&quot;:&quot;https://pbs.substack.com/profile_images/2081886870569410560/MKOCDvB1_normal.jpg&quot;,&quot;date&quot;:&quot;2026-08-14T19:58:25.000Z&quot;,&quot;photos&quot;:[{&quot;img_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!cIjX!,w_1028,c_limit,f_auto,q_auto:best,fl_progressive:steep/l_play_button_usfui2,w_88,e_colorize:0/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F__ss-rehost__tw-video-preview-13_2088352836258066433.jpg&quot;,&quot;link_url&quot;:&quot;https://t.co/JRa108Tkob&quot;}],&quot;quoted_tweet&quot;:{&quot;full_text&quot;:&quot;&quot;,&quot;username&quot;:&quot;Granite0x&quot;,&quot;name&quot;:&quot;Granite&quot;,&quot;profile_image_url&quot;:&quot;https://pbs.substack.com/profile_images/2081886870569410560/MKOCDvB1_normal.jpg&quot;},&quot;reply_count&quot;:4,&quot;retweet_count&quot;:1,&quot;like_count&quot;:19,&quot;impression_count&quot;:2124,&quot;expanded_url&quot;:null,&quot;video_url&quot;:&quot;https://video.twimg.com/amplify_video/2088352836258066433/vid/avc1/1432x720/N3iY5aRhMlQXR-oS.mp4&quot;,&quot;video_preview_media_key&quot;:&quot;13_2088352836258066433&quot;,&quot;belowTheFold&quot;:true}" data-component-name="Twitter2ToDOM"></div><p>Here&#8217;s what the creator of another famous harness &#8220;Pi&#8221; has to say</p><div class="twitter-embed" data-attrs="{&quot;url&quot;:&quot;https://x.com/mitsuhiko/status/2087973032102941122&quot;,&quot;full_text&quot;:&quot;NGL, I like what I'm seeing in the deepseek harness. Definitely makes me think a bit about how we're approaching the harness refactor in Pi.&quot;,&quot;username&quot;:&quot;mitsuhiko&quot;,&quot;name&quot;:&quot;Armin Ronacher &#8652;&quot;,&quot;profile_image_url&quot;:&quot;https://pbs.substack.com/profile_images/1905698833084174336/jcHMkWFA_normal.jpg&quot;,&quot;date&quot;:&quot;2026-08-13T18:42:18.000Z&quot;,&quot;photos&quot;:[],&quot;quoted_tweet&quot;:{},&quot;reply_count&quot;:39,&quot;retweet_count&quot;:30,&quot;like_count&quot;:834,&quot;impression_count&quot;:51009,&quot;expanded_url&quot;:null,&quot;video_url&quot;:null,&quot;video_preview_media_key&quot;:null,&quot;belowTheFold&quot;:true}" data-component-name="Twitter2ToDOM"></div><p><br><br>DeepSeek clearly read the room &#8212; they didn&#8217;t just ship a better model, they shipped the thing that lets <em>any</em> model perform better.</p><div><hr></div><h3>Why I went down the NVIDIA object-oriented agents rabbit hole</h3><p>This is exactly why I spent this week digging into <strong>NVIDIA&#8217;s NOOA (NVIDIA Object-oriented Agents)</strong> because it&#8217;s one of the more radical harness redesigns I&#8217;ve seen, and it&#8217;s not just theory.<br>NVIDIA&#8217;s own benchmarks show NOOA agents solving <em>more</em> problems on SWE-bench while using <strong>roughly half the tokens</strong> - same underlying model, no prompt compression tricks.</p><p>The core idea: stop inventing a new agent language.<br>Your agent is just a Python class. Methods become tools, docstrings become instructions, type hints become runtime-enforced rules  and you can leave a method body as just &#8220;<code>..."</code> and the framework writes and executes the implementation for you at runtime.</p><p>Three design choices do the heavy lifting:</p><ul><li><p><strong>Code as the action</strong> &#8212; instead of the model emitting JSON that gets parsed into a function call every single turn, the model just writes Python directly. No parse/translate loop repeating on every tool call.</p></li><li><p><strong>Pass by reference</strong> &#8212; instead of serializing a whole object (think: an entire spreadsheet) into the prompt as text, NOA hands the model a reference to the actual object and lets generated code operate on it. The prompt only carries a tiny preview.</p></li><li><p><strong>Typed I/O as guardrails</strong> &#8212; Pydantic-style validation gets enforced automatically, and the agent self-corrects against validation errors without you writing retry logic.</p></li></ul><p>In a live demo, a naive tool-calling loop burned 10,823 tokens across 10 LLM calls to check whether a shopping cart fit a budget; NOOA did the same task in 2 calls and ~7,194 tokens &#8212; a ~33% reduction, in line with NVIDIA&#8217;s own published numbers.</p><p>It&#8217;s still early &#8212; NVIDIA is upfront that this is research-stage, and letting a model generate and execute arbitrary code means you sandbox it, full stop, never run it against your primary filesystem. But as a glimpse of where harness design is heading &#8212; away from JSON tool-calling ceremony and toward &#8220;the agent is just... code&#8221; &#8212; it&#8217;s the most interesting thing I&#8217;ve read this month.</p><p>&#127909; Full walkthrough with live demos:<br></p><div id="youtube2-b-o5vcOAV9o" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;b-o5vcOAV9o&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/b-o5vcOAV9o?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p><strong>The thread connecting both stories this week:</strong> nobody&#8217;s winning by having the smartest model anymore.<br>DeepSeek and NVIDIA, in completely different ways, are both racing to build the best <em>scaffolding</em> around models that are all converging toward &#8220;good enough.&#8221;<br><br>That&#8217;s where the real engineering work and the real differentiation is happening now.</p><div><hr></div><h1>Build AI Agents by Building a Real Project</h1><p>Most LangChain tutorials teach APIs.</p><p>This one teaches <strong>AI engineering</strong>.</p><p>In this new video, we build <strong>Aria</strong>, an AI Executive Assistant, while learning LangChain the way production systems are actually built&#8212;one capability at a time.</p><p>You&#8217;ll hand-code tools, memory, agents, MCP, and more, so you don&#8217;t just know <em>how</em> to use AI agents&#8212;you understand <em>how they work</em> and <em>how to debug them</em>.</p><p>If you&#8217;re serious about becoming an AI Engineer, this is the series to follow.</p><p>&#127909; <strong>Watch the video and start building Aria today.</strong></p><div id="youtube2-xzRJOaqDMCg" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;xzRJOaqDMCg&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/xzRJOaqDMCg?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.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 Adaptive Engineer! 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 Model Isn't Dangerous. Your Harness Is.]]></title><description><![CDATA[Harness Engineer Series :: Layer 2 - Tools and Permissions]]></description><link>https://newsletter.adaptiveengineer.com/p/the-model-isnt-dangerous-your-harness</link><guid isPermaLink="false">https://newsletter.adaptiveengineer.com/p/the-model-isnt-dangerous-your-harness</guid><dc:creator><![CDATA[Zahiruddin Tavargere]]></dc:creator><pubDate>Sun, 09 Aug 2026 19:11:18 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/VKPZjNPkf7o" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div id="youtube2-VKPZjNPkf7o" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;VKPZjNPkf7o&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/VKPZjNPkf7o?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Pqve!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98542297-35e4-4d80-9441-a4e2c345fc1d_2232x866.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Pqve!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98542297-35e4-4d80-9441-a4e2c345fc1d_2232x866.png 424w, https://substackcdn.com/image/fetch/$s_!Pqve!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98542297-35e4-4d80-9441-a4e2c345fc1d_2232x866.png 848w, https://substackcdn.com/image/fetch/$s_!Pqve!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98542297-35e4-4d80-9441-a4e2c345fc1d_2232x866.png 1272w, https://substackcdn.com/image/fetch/$s_!Pqve!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98542297-35e4-4d80-9441-a4e2c345fc1d_2232x866.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Pqve!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98542297-35e4-4d80-9441-a4e2c345fc1d_2232x866.png" width="1456" height="565" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/98542297-35e4-4d80-9441-a4e2c345fc1d_2232x866.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:565,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Article content&quot;,&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="Article content" title="Article content" srcset="https://substackcdn.com/image/fetch/$s_!Pqve!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98542297-35e4-4d80-9441-a4e2c345fc1d_2232x866.png 424w, https://substackcdn.com/image/fetch/$s_!Pqve!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98542297-35e4-4d80-9441-a4e2c345fc1d_2232x866.png 848w, https://substackcdn.com/image/fetch/$s_!Pqve!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98542297-35e4-4d80-9441-a4e2c345fc1d_2232x866.png 1272w, https://substackcdn.com/image/fetch/$s_!Pqve!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98542297-35e4-4d80-9441-a4e2c345fc1d_2232x866.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>A developer agent burned<span> </span><strong>$12,000 in cloud costs overnight</strong>.</p><p>A coding agent deleted a startup&#8217;s<span> </span><strong>entire production database&#8212;including backups&#8212;in nine seconds.</strong></p><p>Another AI agent executed a stale terraform destroy command and wiped<span> </span><strong>two and a half years of production data.</strong></p><p>None of these failures were caused by hackers. None were caused by a &#8220;bad&#8221; LLM.</p><p>They happened because the agent had<span> </span><strong>too much permission and too little supervision.</strong></p><p>The real risk isn&#8217;t the model.</p><p>It&#8217;s the<span> </span><strong>harness</strong><span> </span>around it.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.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="https://newsletter.adaptiveengineer.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><h3><strong>A Tool Is Much More Than Code</strong></h3><p>Most people think of a tool as a Python function.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jXI3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff07171aa-a6cd-4924-af8b-f2d3d14c1b9d_2232x972.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jXI3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff07171aa-a6cd-4924-af8b-f2d3d14c1b9d_2232x972.png 424w, https://substackcdn.com/image/fetch/$s_!jXI3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff07171aa-a6cd-4924-af8b-f2d3d14c1b9d_2232x972.png 848w, https://substackcdn.com/image/fetch/$s_!jXI3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff07171aa-a6cd-4924-af8b-f2d3d14c1b9d_2232x972.png 1272w, https://substackcdn.com/image/fetch/$s_!jXI3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff07171aa-a6cd-4924-af8b-f2d3d14c1b9d_2232x972.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!jXI3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff07171aa-a6cd-4924-af8b-f2d3d14c1b9d_2232x972.png" width="1456" height="634" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f07171aa-a6cd-4924-af8b-f2d3d14c1b9d_2232x972.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:634,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Article content&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="Article content" title="Article content" srcset="https://substackcdn.com/image/fetch/$s_!jXI3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff07171aa-a6cd-4924-af8b-f2d3d14c1b9d_2232x972.png 424w, https://substackcdn.com/image/fetch/$s_!jXI3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff07171aa-a6cd-4924-af8b-f2d3d14c1b9d_2232x972.png 848w, https://substackcdn.com/image/fetch/$s_!jXI3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff07171aa-a6cd-4924-af8b-f2d3d14c1b9d_2232x972.png 1272w, https://substackcdn.com/image/fetch/$s_!jXI3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff07171aa-a6cd-4924-af8b-f2d3d14c1b9d_2232x972.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"></figcaption></figure></div><p>That&#8217;s implementationoduction systems care far more about the metadata around the tool.</p><p>Every tool should answer questions like:</p><ul><li><p>What is your name?</p></li><li><p>What do you do?</p></li><li><p>What inputs do you expect?</p></li><li><p>What permissions do you require?</p></li><li><p>Can you be retried?</p></li><li><p>Can you be cached?</p></li><li><p>How expensive are you?</p></li><li><p>What happens if you fail?</p></li><li><p>Should a human approve execution?</p></li></ul><p>The actual business logic is often the smallest part.</p><p>Everything around it exists so the harness can use the tool<span> </span><strong>safely.</strong></p><div><hr></div><h3><strong>Every Tool Needs a Lifecycle</strong></h3><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_!h0pj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a62c20d-9f25-49ff-965e-47330f89414f_2232x467.png 424w, https://substackcdn.com/image/fetch/$s_!h0pj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a62c20d-9f25-49ff-965e-47330f89414f_2232x467.png 848w, https://substackcdn.com/image/fetch/$s_!h0pj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a62c20d-9f25-49ff-965e-47330f89414f_2232x467.png 1272w, https://substackcdn.com/image/fetch/$s_!h0pj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a62c20d-9f25-49ff-965e-47330f89414f_2232x467.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!h0pj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a62c20d-9f25-49ff-965e-47330f89414f_2232x467.png" width="1456" height="305" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5a62c20d-9f25-49ff-965e-47330f89414f_2232x467.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:305,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Article content&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="Article content" title="Article content" srcset="https://substackcdn.com/image/fetch/$s_!h0pj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a62c20d-9f25-49ff-965e-47330f89414f_2232x467.png 424w, https://substackcdn.com/image/fetch/$s_!h0pj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a62c20d-9f25-49ff-965e-47330f89414f_2232x467.png 848w, https://substackcdn.com/image/fetch/$s_!h0pj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a62c20d-9f25-49ff-965e-47330f89414f_2232x467.png 1272w, https://substackcdn.com/image/fetch/$s_!h0pj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a62c20d-9f25-49ff-965e-47330f89414f_2232x467.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div><figcaption class="image-caption"></figcaption></figure></div><p>Production systems shouldn&#8217;t invoke tools directly.</p><p>Instead, every tool should move through a lifecycle:</p><ol><li><p><strong>Register</strong><span> </span>&#8211; Add the tool to the harness.</p></li><li><p><strong>Advertise</strong><span> </span>&#8211; Tell the LLM the tool exists.</p></li><li><p><strong>Select</strong><span> </span>&#8211; Let the model choose the tool.</p></li><li><p><strong>Validate</strong><span> </span>&#8211; Verify arguments and environment.</p></li><li><p><strong>Permission Check</strong><span> </span>&#8211; Confirm the user and agent are allowed to execute it.</p></li><li><p><strong>Execute</strong><span> </span>&#8211; Perform the action.</p></li><li><p><strong>Observe</strong><span> </span>&#8211; Capture success, failure, timeout, or partial completion.</p></li><li><p><strong>Normalize</strong><span> </span>&#8211; Convert outputs into a consistent format.</p></li><li><p><strong>Return to the Loop</strong><span> </span>&#8211; Feed results back to the reasoning engine.</p></li></ol><p>Notice something interesting.</p><p><strong>Only one stage actually touches the real world: Execute.</strong></p><p>Everything else is architecture designed to prevent mistakes before they happen.</p><div><hr></div><h3><strong>Guardrails Don&#8217;t Sit Outside the Lifecycle</strong></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lIFB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8cb3a19-74ab-4c19-a2e5-3c0cb55f4b04_1488x801.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lIFB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8cb3a19-74ab-4c19-a2e5-3c0cb55f4b04_1488x801.png 424w, https://substackcdn.com/image/fetch/$s_!lIFB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8cb3a19-74ab-4c19-a2e5-3c0cb55f4b04_1488x801.png 848w, https://substackcdn.com/image/fetch/$s_!lIFB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8cb3a19-74ab-4c19-a2e5-3c0cb55f4b04_1488x801.png 1272w, https://substackcdn.com/image/fetch/$s_!lIFB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8cb3a19-74ab-4c19-a2e5-3c0cb55f4b04_1488x801.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!lIFB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8cb3a19-74ab-4c19-a2e5-3c0cb55f4b04_1488x801.png" width="1456" height="784" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f8cb3a19-74ab-4c19-a2e5-3c0cb55f4b04_1488x801.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:784,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Article content&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="Article content" title="Article content" srcset="https://substackcdn.com/image/fetch/$s_!lIFB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8cb3a19-74ab-4c19-a2e5-3c0cb55f4b04_1488x801.png 424w, https://substackcdn.com/image/fetch/$s_!lIFB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8cb3a19-74ab-4c19-a2e5-3c0cb55f4b04_1488x801.png 848w, https://substackcdn.com/image/fetch/$s_!lIFB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8cb3a19-74ab-4c19-a2e5-3c0cb55f4b04_1488x801.png 1272w, https://substackcdn.com/image/fetch/$s_!lIFB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8cb3a19-74ab-4c19-a2e5-3c0cb55f4b04_1488x801.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"></figcaption></figure></div><p>Many people imagine guardrails as a separate security layer.</p><p>They&#8217;re not.</p><p>Guardrails belong<span> </span><strong>inside</strong><span> </span>the tool lifecycle.</p><p>Different stages require different protections:</p><ul><li><p><strong>Registration</strong><span> </span>&#8594; Should this tool even be exposed?</p></li><li><p><strong>Selection</strong><span> </span>&#8594; Is this the right tool for this request?</p></li><li><p><strong>Permissions</strong><span> </span>&#8594; Should this user execute it?</p></li><li><p><strong>Execution</strong><span> </span>&#8594; Does it require sandboxing, rate limits, or human approval?</p></li><li><p><strong>Response</strong><span> </span>&#8594; Does the output contain secrets, PII, or unsafe content?</p></li></ul><p>Good harnesses don&#8217;t rely on a single guardrail.</p><p>They place the<span> </span><strong>right guardrail at the right stage.</strong></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.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 Adaptive Engineer! 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><div><hr></div><h3><strong>Principles of Good Tool Design</strong></h3><p>Over time, a few patterns consistently emerge:</p><ul><li><p>One tool should do one job well.</p></li><li><p>Write descriptions for the model, not humans.</p></li><li><p>Use structured JSON inputs and outputs.</p></li><li><p>Never hide failures.</p></li><li><p>Make tools idempotent whenever possible.</p></li><li><p>Keep the number of exposed tools manageable.</p></li></ul><p>A surprising lesson?</p><p>After about<span> </span><strong>15 tools</strong>, adding more highly specialized tools often reduces selection accuracy.</p><p>Sometimes fewer, broader tools perform better because they consume less context and make better decisions.</p><div><hr></div><h3><strong>Production Starts Where Happy Paths End</strong></h3><p>A mature harness isn&#8217;t judged by whether a tool works.</p><p>It&#8217;s judged by what happens<span> </span><strong>when it doesn&#8217;t.</strong></p><p>Your harness should anticipate:</p><ul><li><p>Wrong tool selection</p></li><li><p>Invalid arguments</p></li><li><p>Hallucinated tools</p></li><li><p>Infinite retries</p></li><li><p>Slow APIs</p></li><li><p>Network failures</p></li><li><p>Permission denials</p></li><li><p>Malformed outputs</p></li><li><p>Timeouts</p></li><li><p>Duplicate executions</p></li><li><p>Partial success</p></li></ul><p>These aren&#8217;t edge cases.</p><p>They&#8217;re everyday production scenarios.</p><div><hr></div><h3><strong>Harness Engineering Is Everything Around the Tool</strong></h3><p>If you draw the architecture of an AI agent, the tool itself occupies surprisingly little space.</p><p>Almost everything else is harness:</p><ul><li><p>registering tools</p></li><li><p>advertising capabilities</p></li><li><p>validating requests</p></li><li><p>enforcing permissions</p></li><li><p>executing safely</p></li><li><p>observing failures</p></li><li><p>normalizing responses</p></li><li><p>feeding results back into the reasoning loop</p></li></ul><p>That&#8217;s why I say:</p><blockquote><p><strong>The model isn&#8217;t dangerous. The harness is.</strong></p></blockquote><p>The model can only act through the software architecture you build around it.</p><p>If that architecture is weak, the smartest model in the world will still make catastrophic mistakes.</p><div><hr></div><h3><strong>A Simple Exercise</strong></h3><p>Find the riskiest tool in your system.</p><p>Look for one containing words like<span> </span><strong>delete</strong>,<span> </span><strong>deploy</strong>, or<span> </span><strong>destroy</strong>.</p><p>Now walk it through each stage of the lifecycle.</p><p>If any stage is missing&#8212;validation, permissions, observability, normalization, or human approval&#8212;that&#8217;s your next engineering task.</p><p>Because production-grade AI isn&#8217;t about making the model smarter.</p><p>It&#8217;s about making the harness safer.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share The Adaptive Engineer&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.adaptiveengineer.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share The Adaptive Engineer</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Every AI Agent Runs This Loop (Most Engineers Don't Know It)]]></title><description><![CDATA[Harness Engineer Series :: Layer 1 - The Loop]]></description><link>https://newsletter.adaptiveengineer.com/p/every-ai-agent-runs-this-loop-most</link><guid isPermaLink="false">https://newsletter.adaptiveengineer.com/p/every-ai-agent-runs-this-loop-most</guid><dc:creator><![CDATA[Zahiruddin Tavargere]]></dc:creator><pubDate>Mon, 03 Aug 2026 05:12:37 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/-xEPoj5AfGU" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1>AI Agents = Model + Harness</h1><p><strong>Watch the full walkthrough:</strong></p><div id="youtube2--xEPoj5AfGU" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;-xEPoj5AfGU&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/-xEPoj5AfGU?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div><hr></div><p>For a long time, AI discussions revolved around one thing: <strong>the model</strong>.</p><p>GPTs. Claudes. Geminis, etc.</p><p>But if you&#8217;ve built even a single production-grade agent, you&#8217;ve probably realized something:</p><blockquote><p><strong>The model is only one part of the system.</strong></p></blockquote><p>Today, a much better definition is emerging:</p><blockquote><p><strong>Agent = Model + Harness</strong></p></blockquote><p>The model provides intelligence.</p><p>The <strong>harness</strong> makes that intelligence reliable.</p><p>And that&#8217;s where most of the engineering happens.</p><div><hr></div><h2>What is Harness Engineering?</h2><p>Harness Engineering is the software architecture surrounding an LLM that transforms it into a production-ready autonomous system.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TrTr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6ff48ac-a977-462b-8294-dd62537e1c78_2497x1307.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TrTr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6ff48ac-a977-462b-8294-dd62537e1c78_2497x1307.png 424w, https://substackcdn.com/image/fetch/$s_!TrTr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6ff48ac-a977-462b-8294-dd62537e1c78_2497x1307.png 848w, https://substackcdn.com/image/fetch/$s_!TrTr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6ff48ac-a977-462b-8294-dd62537e1c78_2497x1307.png 1272w, https://substackcdn.com/image/fetch/$s_!TrTr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6ff48ac-a977-462b-8294-dd62537e1c78_2497x1307.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!TrTr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6ff48ac-a977-462b-8294-dd62537e1c78_2497x1307.png" width="1456" height="762" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b6ff48ac-a977-462b-8294-dd62537e1c78_2497x1307.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:762,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:121814,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.adaptiveengineer.com/i/209583991?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6ff48ac-a977-462b-8294-dd62537e1c78_2497x1307.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_!TrTr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6ff48ac-a977-462b-8294-dd62537e1c78_2497x1307.png 424w, https://substackcdn.com/image/fetch/$s_!TrTr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6ff48ac-a977-462b-8294-dd62537e1c78_2497x1307.png 848w, https://substackcdn.com/image/fetch/$s_!TrTr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6ff48ac-a977-462b-8294-dd62537e1c78_2497x1307.png 1272w, https://substackcdn.com/image/fetch/$s_!TrTr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6ff48ac-a977-462b-8294-dd62537e1c78_2497x1307.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>Think about everything that exists <strong>outside</strong> the model:</p><ul><li><p>Prompts</p></li><li><p>Tool calling</p></li><li><p>Feedback loops</p></li><li><p>Memory</p></li><li><p>Context management</p></li><li><p>Human approval</p></li><li><p>Guardrails</p></li><li><p>Multi-agent orchestration</p></li></ul><p>All of these components work together to create an agent that can reason, act, recover, and complete tasks reliably.</p><p>The harness is what connects all these pieces.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.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 Adaptive Engineer! 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><div><hr></div><h1>Layer 1: The Loop</h1><p>I begin with what I believe is the most fundamental layer:</p><p><strong>The Loop.</strong></p><p>Its responsibilities are surprisingly simple:</p><ol><li><p>Call the model.</p></li><li><p>Evaluate the response.</p></li><li><p>If the task isn&#8217;t finished, call the model again.</p></li></ol><p>Repeat until the goal is complete.</p><p>Without a loop, an LLM performs exactly one inference:</p><p><strong>Input &#8594; Output</strong></p><p>That&#8217;s useful for chat.</p><p>It isn&#8217;t enough for autonomous agents.</p><div><hr></div><h2>The Anatomy of One Iteration</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dlZf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8743c3e7-901e-443b-82e9-d1bcfeedf1d1_2475x855.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dlZf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8743c3e7-901e-443b-82e9-d1bcfeedf1d1_2475x855.png 424w, https://substackcdn.com/image/fetch/$s_!dlZf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8743c3e7-901e-443b-82e9-d1bcfeedf1d1_2475x855.png 848w, https://substackcdn.com/image/fetch/$s_!dlZf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8743c3e7-901e-443b-82e9-d1bcfeedf1d1_2475x855.png 1272w, https://substackcdn.com/image/fetch/$s_!dlZf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8743c3e7-901e-443b-82e9-d1bcfeedf1d1_2475x855.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!dlZf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8743c3e7-901e-443b-82e9-d1bcfeedf1d1_2475x855.png" width="1456" height="503" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8743c3e7-901e-443b-82e9-d1bcfeedf1d1_2475x855.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:503,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:107693,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.adaptiveengineer.com/i/209583991?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8743c3e7-901e-443b-82e9-d1bcfeedf1d1_2475x855.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_!dlZf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8743c3e7-901e-443b-82e9-d1bcfeedf1d1_2475x855.png 424w, https://substackcdn.com/image/fetch/$s_!dlZf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8743c3e7-901e-443b-82e9-d1bcfeedf1d1_2475x855.png 848w, https://substackcdn.com/image/fetch/$s_!dlZf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8743c3e7-901e-443b-82e9-d1bcfeedf1d1_2475x855.png 1272w, https://substackcdn.com/image/fetch/$s_!dlZf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8743c3e7-901e-443b-82e9-d1bcfeedf1d1_2475x855.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></h2><p>Every iteration of an agent loop follows the same fundamental lifecycle.</p><h3>1. Assemble Context</h3><p>Before the model is called, the harness gathers everything the model needs:</p><ul><li><p>User request</p></li><li><p>Conversation history</p></li><li><p>Previous tool results</p></li><li><p>System prompt</p></li><li><p>Available tools</p></li></ul><p>This becomes the complete context for the next decision.</p><div><hr></div><h3>2. Invoke the Model</h3><p>The harness sends the assembled context to the LLM.</p><p>At this point, the model has only two real choices:</p><ul><li><p>Return a final answer.</p></li><li><p>Request one or more tool calls.</p></li></ul><p>Nothing else.</p><div><hr></div><h3>3. Observe the Response</h3><p>The harness inspects the model&#8217;s output.</p><p>If the response contains a tool call, it extracts:</p><ul><li><p>Tool name</p></li><li><p>Arguments</p></li><li><p>Metadata</p></li></ul><p>If it&#8217;s a normal response, it may already be time to terminate the loop.</p><div><hr></div><h3>4. Execute the Tool</h3><p>If the model requested a tool, the harness&#8212;not the model&#8212;executes it.</p><p>This could involve:</p><ul><li><p>Querying a database</p></li><li><p>Calling an API</p></li><li><p>Running code</p></li><li><p>Searching the web</p></li><li><p>Reading files</p></li></ul><p>The model never executes tools directly.</p><p>It only decides <strong>which tool should run</strong>.</p><div><hr></div><h3>5. Update the Context</h3><p>The tool result isn&#8217;t immediately returned to the user.</p><p>Instead, the harness appends it to the conversation history.</p><p>Now the model knows:</p><blockquote><p>&#8220;I asked for this information, and here&#8217;s what I received.&#8221;</p></blockquote><p>This allows the model to continue reasoning using fresh information.</p><div><hr></div><h3>6. Decide Whether to Continue</h3><p>Finally, the harness determines whether another iteration is needed.</p><p>If the model has everything it needs, it responds to the user.</p><p>Otherwise, the loop repeats.</p><div><hr></div><h2>Every Major Agent Uses the Same Pattern</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!C1np!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf35c887-4cd4-432c-a8f8-6b7f7c34a77e_2527x940.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!C1np!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf35c887-4cd4-432c-a8f8-6b7f7c34a77e_2527x940.png 424w, https://substackcdn.com/image/fetch/$s_!C1np!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf35c887-4cd4-432c-a8f8-6b7f7c34a77e_2527x940.png 848w, https://substackcdn.com/image/fetch/$s_!C1np!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf35c887-4cd4-432c-a8f8-6b7f7c34a77e_2527x940.png 1272w, https://substackcdn.com/image/fetch/$s_!C1np!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf35c887-4cd4-432c-a8f8-6b7f7c34a77e_2527x940.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!C1np!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf35c887-4cd4-432c-a8f8-6b7f7c34a77e_2527x940.png" width="1456" height="542" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cf35c887-4cd4-432c-a8f8-6b7f7c34a77e_2527x940.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:542,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:133572,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.adaptiveengineer.com/i/209583991?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf35c887-4cd4-432c-a8f8-6b7f7c34a77e_2527x940.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_!C1np!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf35c887-4cd4-432c-a8f8-6b7f7c34a77e_2527x940.png 424w, https://substackcdn.com/image/fetch/$s_!C1np!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf35c887-4cd4-432c-a8f8-6b7f7c34a77e_2527x940.png 848w, https://substackcdn.com/image/fetch/$s_!C1np!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf35c887-4cd4-432c-a8f8-6b7f7c34a77e_2527x940.png 1272w, https://substackcdn.com/image/fetch/$s_!C1np!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf35c887-4cd4-432c-a8f8-6b7f7c34a77e_2527x940.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>Whether it&#8217;s:</p><ul><li><p>Claude Code</p></li><li><p>Codex CLI</p></li><li><p>Hermes</p></li><li><p>OpenClaw</p></li><li><p>OpenAI Agents</p></li></ul><p>...they all implement essentially the same loop.</p><p>The details differ.</p><p>The architecture doesn&#8217;t.</p><p>At a high level, every loop looks like this:</p><ol><li><p>Assemble context.</p></li><li><p>Call the model.</p></li><li><p>Check whether it wants to use a tool.</p></li><li><p>Execute the tool if needed.</p></li><li><p>Add the result back into context.</p></li><li><p>Repeat until a stopping condition is reached.</p></li></ol><p>Once you understand this pattern, reading agent frameworks becomes dramatically easier.</p><div><hr></div><h2>Production Loops Need Guardrails</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-orq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa32c8ddc-b64a-4be5-ad8d-2f81ca49bb56_2510x1201.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-orq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa32c8ddc-b64a-4be5-ad8d-2f81ca49bb56_2510x1201.png 424w, https://substackcdn.com/image/fetch/$s_!-orq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa32c8ddc-b64a-4be5-ad8d-2f81ca49bb56_2510x1201.png 848w, https://substackcdn.com/image/fetch/$s_!-orq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa32c8ddc-b64a-4be5-ad8d-2f81ca49bb56_2510x1201.png 1272w, https://substackcdn.com/image/fetch/$s_!-orq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa32c8ddc-b64a-4be5-ad8d-2f81ca49bb56_2510x1201.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!-orq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa32c8ddc-b64a-4be5-ad8d-2f81ca49bb56_2510x1201.png" width="1456" height="697" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a32c8ddc-b64a-4be5-ad8d-2f81ca49bb56_2510x1201.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:697,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:118473,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.adaptiveengineer.com/i/209583991?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa32c8ddc-b64a-4be5-ad8d-2f81ca49bb56_2510x1201.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_!-orq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa32c8ddc-b64a-4be5-ad8d-2f81ca49bb56_2510x1201.png 424w, https://substackcdn.com/image/fetch/$s_!-orq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa32c8ddc-b64a-4be5-ad8d-2f81ca49bb56_2510x1201.png 848w, https://substackcdn.com/image/fetch/$s_!-orq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa32c8ddc-b64a-4be5-ad8d-2f81ca49bb56_2510x1201.png 1272w, https://substackcdn.com/image/fetch/$s_!-orq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa32c8ddc-b64a-4be5-ad8d-2f81ca49bb56_2510x1201.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>A production loop can&#8217;t simply run forever.</p><p>Reliable systems need explicit termination conditions.</p><p>Some of the most important ones include:</p><ul><li><p>Maximum iteration limits</p></li><li><p>Wall-clock timeouts</p></li><li><p>Goal completion checks</p></li><li><p>Repeated tool-call detection</p></li><li><p>Handling unrecoverable errors</p></li><li><p>Token budget limits</p></li></ul><p>These aren&#8217;t optional.</p><p>They&#8217;re what prevent runaway loops, excessive API costs, and unreliable agent behavior.</p><div><hr></div><h2>The Loop Leaves Behind State</h2><p>When a loop finishes, it doesn&#8217;t just return an answer.</p><p>It also leaves behind valuable execution state:</p><ul><li><p>Tool history</p></li><li><p>Context</p></li><li><p>Intermediate reasoning</p></li><li><p>Progress</p></li><li><p>Execution checkpoints</p></li></ul><p>That state becomes the foundation for durable execution, resumable agents, and human-in-the-loop workflows.</p><p>In other words:</p><p>A good loop doesn&#8217;t just solve problems.</p><p>It creates the foundation for every layer that comes after it.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.com/p/every-ai-agent-runs-this-loop-most?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 Adaptive Engineer! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.com/p/every-ai-agent-runs-this-loop-most?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.adaptiveengineer.com/p/every-ai-agent-runs-this-loop-most?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><div><hr></div><h1>The Bigger Picture</h1><p>This article is the first in a series on <strong>Harness Engineering</strong>.</p><p>We&#8217;ll progressively build the software architecture that surrounds modern LLMs:</p><ul><li><p>Layer 1 &#8212; Loops &#9989;</p></li><li><p>Layer 2 &#8212; Tools &amp; Permissions</p></li><li><p>Layer 3 &#8212; Context Engineering</p></li><li><p>Layer 4 &#8212; Durable Execution</p></li><li><p>Layer 5 &#8212; Multi-Agent Orchestration</p></li></ul><p>By the end of the series, you&#8217;ll understand not just how to use agent frameworks&#8212;but why they&#8217;re built the way they are.</p><p>If you&#8217;re serious about building production-grade AI agents, understanding the harness may be even more valuable than understanding the model itself.</p><div class="poll-embed" data-attrs="{&quot;id&quot;:912956}" data-component-name="PollToDOM"></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.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 Adaptive Engineer! 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 to Monitor Your Brand on ChatGPT & Perplexity — Full Tutorial]]></title><description><![CDATA[Why Your Brand Needs to Show Up on Answer Engines (and How to Monitor It)]]></description><link>https://newsletter.adaptiveengineer.com/p/how-to-monitor-your-brand-on-chatgpt</link><guid isPermaLink="false">https://newsletter.adaptiveengineer.com/p/how-to-monitor-your-brand-on-chatgpt</guid><dc:creator><![CDATA[Zahiruddin Tavargere]]></dc:creator><pubDate>Sat, 29 Nov 2025 15:33:16 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!RPg2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3ae5362-3961-42ba-98f0-4ee8c11a7ee9_2755x1497.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RPg2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3ae5362-3961-42ba-98f0-4ee8c11a7ee9_2755x1497.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RPg2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3ae5362-3961-42ba-98f0-4ee8c11a7ee9_2755x1497.png 424w, https://substackcdn.com/image/fetch/$s_!RPg2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3ae5362-3961-42ba-98f0-4ee8c11a7ee9_2755x1497.png 848w, https://substackcdn.com/image/fetch/$s_!RPg2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3ae5362-3961-42ba-98f0-4ee8c11a7ee9_2755x1497.png 1272w, https://substackcdn.com/image/fetch/$s_!RPg2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3ae5362-3961-42ba-98f0-4ee8c11a7ee9_2755x1497.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RPg2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3ae5362-3961-42ba-98f0-4ee8c11a7ee9_2755x1497.png" width="1456" height="791" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b3ae5362-3961-42ba-98f0-4ee8c11a7ee9_2755x1497.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:791,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:306456,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.adaptiveengineer.com/i/180233159?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3ae5362-3961-42ba-98f0-4ee8c11a7ee9_2755x1497.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_!RPg2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3ae5362-3961-42ba-98f0-4ee8c11a7ee9_2755x1497.png 424w, https://substackcdn.com/image/fetch/$s_!RPg2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3ae5362-3961-42ba-98f0-4ee8c11a7ee9_2755x1497.png 848w, https://substackcdn.com/image/fetch/$s_!RPg2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3ae5362-3961-42ba-98f0-4ee8c11a7ee9_2755x1497.png 1272w, https://substackcdn.com/image/fetch/$s_!RPg2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3ae5362-3961-42ba-98f0-4ee8c11a7ee9_2755x1497.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><strong>Why Your Brand Needs to Show Up on Answer Engines (and How to Monitor It)</strong></h2><p>Over the past twenty years, we&#8217;ve all been conditioned to think in <strong>search-first workflows</strong>.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.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 Adaptive Engineer! 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>You type a query into Google, skim ten blue links, and decide whom to trust.</p><p>That mental model is disappearing&#8212;quietly, but fast.</p><p>Today, more users are skipping the &#8220;search &#8594; compare &#8594; decide&#8221; loop entirely and going straight to <strong>answer engines</strong> like ChatGPT, Perplexity, and Claude. These systems don&#8217;t present links; they present conclusions.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.mckinsey.com/capabilities/growth-marketing-and-sales/our-insights/new-front-door-to-the-internet-winning-in-the-age-of-ai-search" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rMrJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf25e9ee-d8b0-4125-9b7b-4e71ce85ae4b_1280x1210.png 424w, https://substackcdn.com/image/fetch/$s_!rMrJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf25e9ee-d8b0-4125-9b7b-4e71ce85ae4b_1280x1210.png 848w, https://substackcdn.com/image/fetch/$s_!rMrJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf25e9ee-d8b0-4125-9b7b-4e71ce85ae4b_1280x1210.png 1272w, https://substackcdn.com/image/fetch/$s_!rMrJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf25e9ee-d8b0-4125-9b7b-4e71ce85ae4b_1280x1210.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rMrJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf25e9ee-d8b0-4125-9b7b-4e71ce85ae4b_1280x1210.png" width="1280" height="1210" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bf25e9ee-d8b0-4125-9b7b-4e71ce85ae4b_1280x1210.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1210,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:281258,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://www.mckinsey.com/capabilities/growth-marketing-and-sales/our-insights/new-front-door-to-the-internet-winning-in-the-age-of-ai-search&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.adaptiveengineer.com/i/180233159?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf25e9ee-d8b0-4125-9b7b-4e71ce85ae4b_1280x1210.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_!rMrJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf25e9ee-d8b0-4125-9b7b-4e71ce85ae4b_1280x1210.png 424w, https://substackcdn.com/image/fetch/$s_!rMrJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf25e9ee-d8b0-4125-9b7b-4e71ce85ae4b_1280x1210.png 848w, https://substackcdn.com/image/fetch/$s_!rMrJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf25e9ee-d8b0-4125-9b7b-4e71ce85ae4b_1280x1210.png 1272w, https://substackcdn.com/image/fetch/$s_!rMrJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf25e9ee-d8b0-4125-9b7b-4e71ce85ae4b_1280x1210.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><p>And that shift has enormous implications for brands.</p><h3><strong>The Rise of Answer-Led Discovery</strong></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mIm9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F833c0dec-b1b5-4fcf-8cb1-9f93aa9df285_1265x1395.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mIm9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F833c0dec-b1b5-4fcf-8cb1-9f93aa9df285_1265x1395.png 424w, https://substackcdn.com/image/fetch/$s_!mIm9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F833c0dec-b1b5-4fcf-8cb1-9f93aa9df285_1265x1395.png 848w, https://substackcdn.com/image/fetch/$s_!mIm9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F833c0dec-b1b5-4fcf-8cb1-9f93aa9df285_1265x1395.png 1272w, https://substackcdn.com/image/fetch/$s_!mIm9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F833c0dec-b1b5-4fcf-8cb1-9f93aa9df285_1265x1395.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!mIm9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F833c0dec-b1b5-4fcf-8cb1-9f93aa9df285_1265x1395.png" width="1265" height="1395" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/833c0dec-b1b5-4fcf-8cb1-9f93aa9df285_1265x1395.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1395,&quot;width&quot;:1265,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:218361,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.adaptiveengineer.com/i/180233159?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F833c0dec-b1b5-4fcf-8cb1-9f93aa9df285_1265x1395.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_!mIm9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F833c0dec-b1b5-4fcf-8cb1-9f93aa9df285_1265x1395.png 424w, https://substackcdn.com/image/fetch/$s_!mIm9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F833c0dec-b1b5-4fcf-8cb1-9f93aa9df285_1265x1395.png 848w, https://substackcdn.com/image/fetch/$s_!mIm9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F833c0dec-b1b5-4fcf-8cb1-9f93aa9df285_1265x1395.png 1272w, https://substackcdn.com/image/fetch/$s_!mIm9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F833c0dec-b1b5-4fcf-8cb1-9f93aa9df285_1265x1395.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>According to data from multiple generative-AI usage studies, nearly <strong>45&#8211;60% of new users now start with an AI assistant</strong> when exploring a product or service category for the first time. In fact, Perplexity itself claims a <strong>20&#8211;30% month-over-month rise</strong> in &#8220;shopping and services queries.&#8221;</p><p>That means the customer&#8217;s first impression is no longer shaped by your homepage or your Google ranking. It&#8217;s shaped by whatever an LLM decides to say about you.</p><p>If your brand shows up in that answer, fantastic&#8212;you&#8217;ve just inherited <em>pre-trained trust</em>.<br>If it doesn&#8217;t, you&#8217;ve silently lost a high-intent customer without ever knowing they existed.</p><h3><strong>A Simple Visual Thought Experiment</strong></h3><p>Imagine this scenario:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IDt7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0844fccf-6f94-4792-b0e3-de545a95b9de_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IDt7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0844fccf-6f94-4792-b0e3-de545a95b9de_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!IDt7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0844fccf-6f94-4792-b0e3-de545a95b9de_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!IDt7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0844fccf-6f94-4792-b0e3-de545a95b9de_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!IDt7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0844fccf-6f94-4792-b0e3-de545a95b9de_1536x1024.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!IDt7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0844fccf-6f94-4792-b0e3-de545a95b9de_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0844fccf-6f94-4792-b0e3-de545a95b9de_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;:&quot;https://www.rivalsee.com/images/blog/local-business-ai-seo-strategy.png&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="https://www.rivalsee.com/images/blog/local-business-ai-seo-strategy.png" title="https://www.rivalsee.com/images/blog/local-business-ai-seo-strategy.png" srcset="https://substackcdn.com/image/fetch/$s_!IDt7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0844fccf-6f94-4792-b0e3-de545a95b9de_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!IDt7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0844fccf-6f94-4792-b0e3-de545a95b9de_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!IDt7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0844fccf-6f94-4792-b0e3-de545a95b9de_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!IDt7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0844fccf-6f94-4792-b0e3-de545a95b9de_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>A user asks:</p><blockquote><p><em>&#8220;Who are the top curtain repair services near me?&#8221;</em></p></blockquote><p>The LLM responds confidently, naming three providers.<br>Your brand is either:</p><ul><li><p><strong>In the answer &#8594;</strong> instant credibility</p></li><li><p><strong>Not mentioned &#8594;</strong> invisible</p></li><li><p><strong>Misrepresented &#8594;</strong> losing trust without knowing why</p></li></ul><p>This is the new discovery funnel.<br>And right now, most brands aren&#8217;t even aware it exists.</p><h3><strong>Why Monitoring Your Brand on ChatGPT &amp; Perplexity Is No Longer Optional</strong></h3><p>Here&#8217;s the uncomfortable truth:<br>LLMs don&#8217;t pull answers from a single database&#8212;they synthesize information from various sources: review sites, listicles, Reddit threads, local directories, news mentions, and your own content (if it exists and is structured well enough to be recognized).</p><p>If they aren&#8217;t citing you, it&#8217;s usually because:</p><ul><li><p>Your content isn&#8217;t tuned for answer-engine style queries</p></li><li><p>Your competitors have better-structured or more recent content</p></li><li><p>Third-party sites describe your category better than you do</p></li><li><p>Your brand simply isn&#8217;t &#8220;on the radar&#8221; of the model yet</p></li></ul><p>In every case, the fix starts with <strong>monitoring</strong>.</p><h3><strong>What Monitoring Actually Gives You</strong></h3><p>By actively tracking your brand visibility across multiple queries, you begin to see:</p><ul><li><p><strong>How often ChatGPT or Perplexity cite you</strong></p></li><li><p><strong>Which sources they rely on</strong></p></li><li><p><strong>Which competitors consistently show up</strong></p></li><li><p><strong>What real customer queries in your category look like</strong></p></li><li><p><strong>Which themes or topics you&#8217;re missing in your content</strong></p></li></ul><h3><strong>In Today&#8217;s Episode</strong></h3><p>In the video, I&#8217;ll walk you through a <strong>LangGraph agent</strong> that:</p><ul><li><p>Scrapes your website</p></li><li><p>Identifies your domain, location, and service themes</p></li><li><p>Generates likely customer queries</p></li><li><p>Tests those queries against answer engines</p></li><li><p>Monitors citations, competitor presence, and content gaps</p></li></ul><p>So instead of guessing how answer engines perceive your brand, you&#8217;ll have a real-time dashboard telling you <strong>where you stand and how to improve</strong>.</p><div id="youtube2-5JMrLX9gFaI" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;5JMrLX9gFaI&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/5JMrLX9gFaI?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h3>Code</h3><p><a href="https://github.com/zahere-dev/agentexpert-labs/tree/main/business_use_cases/brand_monitoring">https://github.com/zahere-dev/agentexpert-labs/tree/main/business_use_cases/brand_monitoring</a></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.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 Adaptive Engineer! 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[This is The Powerful Pattern Behind Top AI Agents]]></title><description><![CDATA[Hey everyone!]]></description><link>https://newsletter.adaptiveengineer.com/p/this-is-the-powerful-pattern-behind</link><guid isPermaLink="false">https://newsletter.adaptiveengineer.com/p/this-is-the-powerful-pattern-behind</guid><dc:creator><![CDATA[Zahiruddin Tavargere]]></dc:creator><pubDate>Tue, 11 Nov 2025 11:13:58 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!E5Ww!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39c8aad1-c4e8-4b85-bcec-890b11df6ff1_1488x865.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!E5Ww!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39c8aad1-c4e8-4b85-bcec-890b11df6ff1_1488x865.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!E5Ww!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39c8aad1-c4e8-4b85-bcec-890b11df6ff1_1488x865.png 424w, https://substackcdn.com/image/fetch/$s_!E5Ww!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39c8aad1-c4e8-4b85-bcec-890b11df6ff1_1488x865.png 848w, https://substackcdn.com/image/fetch/$s_!E5Ww!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39c8aad1-c4e8-4b85-bcec-890b11df6ff1_1488x865.png 1272w, https://substackcdn.com/image/fetch/$s_!E5Ww!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39c8aad1-c4e8-4b85-bcec-890b11df6ff1_1488x865.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!E5Ww!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39c8aad1-c4e8-4b85-bcec-890b11df6ff1_1488x865.png" width="1456" height="846" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/39c8aad1-c4e8-4b85-bcec-890b11df6ff1_1488x865.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:846,&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_!E5Ww!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39c8aad1-c4e8-4b85-bcec-890b11df6ff1_1488x865.png 424w, https://substackcdn.com/image/fetch/$s_!E5Ww!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39c8aad1-c4e8-4b85-bcec-890b11df6ff1_1488x865.png 848w, https://substackcdn.com/image/fetch/$s_!E5Ww!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39c8aad1-c4e8-4b85-bcec-890b11df6ff1_1488x865.png 1272w, https://substackcdn.com/image/fetch/$s_!E5Ww!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39c8aad1-c4e8-4b85-bcec-890b11df6ff1_1488x865.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>Hey everyone!</p><p>Have you ever wondered how AI agents like Claude, Anthropic&#8217;s Computer Use agent, Gemini&#8217;s CLI tools, or LangChain agents handle complex tasks so effectively?</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.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 Adaptive Engineer! 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>There&#8217;s a powerful design pattern that all these top agents share - and today, I&#8217;m going to break it down for you.</p><p>It&#8217;s called <strong>write_todos</strong> or Todo Tool, and once you understand it, you&#8217;ll never build AI agents the same way again.</p><div><hr></div><p>Full walkthrough of the custom write_todo implementation in Customer Service Agent.</p><div id="youtube2-hlwxIIXZEbI" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;hlwxIIXZEbI&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/hlwxIIXZEbI?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xUz-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5f9654f-e6c4-427c-aa56-8081d642de99_2400x1342.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xUz-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5f9654f-e6c4-427c-aa56-8081d642de99_2400x1342.png 424w, https://substackcdn.com/image/fetch/$s_!xUz-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5f9654f-e6c4-427c-aa56-8081d642de99_2400x1342.png 848w, https://substackcdn.com/image/fetch/$s_!xUz-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5f9654f-e6c4-427c-aa56-8081d642de99_2400x1342.png 1272w, https://substackcdn.com/image/fetch/$s_!xUz-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5f9654f-e6c4-427c-aa56-8081d642de99_2400x1342.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!xUz-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5f9654f-e6c4-427c-aa56-8081d642de99_2400x1342.png" width="1456" height="814" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e5f9654f-e6c4-427c-aa56-8081d642de99_2400x1342.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:814,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:275467,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.adaptiveengineer.com/i/178582417?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5f9654f-e6c4-427c-aa56-8081d642de99_2400x1342.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_!xUz-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5f9654f-e6c4-427c-aa56-8081d642de99_2400x1342.png 424w, https://substackcdn.com/image/fetch/$s_!xUz-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5f9654f-e6c4-427c-aa56-8081d642de99_2400x1342.png 848w, https://substackcdn.com/image/fetch/$s_!xUz-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5f9654f-e6c4-427c-aa56-8081d642de99_2400x1342.png 1272w, https://substackcdn.com/image/fetch/$s_!xUz-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5f9654f-e6c4-427c-aa56-8081d642de99_2400x1342.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 many AI agents, write_todos is used to create and manage <strong>TODO lists</strong> that help the agent stay organized and focused during long or complex tasks.</p><p>For example, Claude Code uses a feature called <strong>plan mode</strong> to generate a structured list of steps before starting any work. This is done using a tool called <strong>TodoWrite</strong>, which is based on a special prompt.</p><p>Each TODO item includes:</p><ul><li><p>A short, clear description of the task</p></li><li><p>A status: <strong>pending</strong>, <strong>in progress</strong>, or <strong>completed</strong></p></li></ul><p>As tasks grow in size&#8212;sometimes involving 50 or more tool calls&#8212;it becomes harder for the agent to remember everything. This can lead to <strong>context rot</strong>, where the agent forgets earlier goals or drifts off-topic.</p><p>To prevent this, agents like <strong>Manus</strong> regularly rewrite and update their TODO lists. This helps them stay on track by constantly reminding themselves of their goals, reducing the risk of losing focus or deviating from the task.</p><p>There are 2 parts</p><p><strong>Phase 1: Planning</strong> The agent receives a complex task and uses an LLM to decompose it into smaller, actionable subtasks. Think of it like a project manager breaking down a big project.</p><p><strong>[Show example: &#8220;Handle customer complaint about delayed order&#8221;]</strong> The agent might plan:</p><ul><li><p>Todo 1: Search knowledge base for refund policy</p></li><li><p>Todo 2: Look up similar past tickets</p></li><li><p>Todo 3: Check shipping status</p></li><li><p>Todo 4: Draft response with options</p></li></ul><p><strong>Phase 2: Writing (The Critical Part)</strong> <strong>[Highlight this]</strong></p><p>Here&#8217;s the key difference: <strong>The agent writes these todos down</strong> - typically to a file, database, or persistent storage.</p><h2>Why use &#8216;write_todos&#8217;?</h2><h3>Reason #1: Transparency and Debuggability</h3><p>When your agent writes its plan to a file, you as a developer - or even the user - can see exactly what it&#8217;s planning to do BEFORE it does it.</p><h3>Reason #2: Fault Tolerance and Recovery</h3><p>Here&#8217;s where it gets really powerful. If your agent crashes halfway through a task, what happens?</p><p>Without write-todos: Everything is lost. Start over. With write-todos: Read the file, see what&#8217;s completed, continue where you left off.</p><h3>Reason #3: Human-in-the-Loop Workflows</h3><p>Sometimes you want human approval before execution. With write-todos:</p><ol><li><p>Agent creates plan and writes it</p></li><li><p>Human reviews and approves (or modifies)</p></li><li><p>Agent reads the (potentially modified) plan and executes</p></li></ol><h2>When to use &#8216;write_todos&#8217;?</h2><h3>Multi-step tasks (3+ steps) </h3><p>If your task naturally breaks down into multiple sequential or parallel steps, write-todos will help.</p><ul><li><p>Research and analysis</p></li><li><p>Customer support workflows</p></li><li><p>Data processing pipelines</p></li><li><p>Code generation and deployment</p></li><li><p>Content creation workflows</p></li></ul><h3><strong>Long-running operations (minutes to hours)</strong></h3><p>Anything that takes significant time benefits from fault tolerance and observability.</p><h3>High-stakes operations</h3><p>Financial transactions, data deletion, production deployments - anything where you want a review before action.</p><h3>Collaborative agent-human workflows</h3><p>When humans need to be in the loop at any</p><h2><strong>&#10060; Don&#8217;t use write-todos when:</strong></h2><p><strong>1. Simple, single-step tasks</strong> &#8220;What&#8217;s the weather?&#8221; - No need for todos.</p><p><strong>2. Real-time, low-latency requirements</strong> File I/O adds overhead. If you need sub-second responses, keep it in memory.</p><p><strong>3. Stateless, idempotent operations</strong> If the operation can be safely retried from scratch, the crash recovery benefit is less valuable.</p><h2>The ToDo Methods in our Agent</h2><p>Below is a simple implementation of the Todo tools for our Customer Service Agent.</p><p><a href="https://github.com/zahere-dev/agentexpert-labs/tree/main/core_concepts/todos">Full source code here.</a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!j4r1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c62d287-466b-4d78-89f8-371cc52b89a3_1327x1500.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!j4r1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c62d287-466b-4d78-89f8-371cc52b89a3_1327x1500.png 424w, https://substackcdn.com/image/fetch/$s_!j4r1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c62d287-466b-4d78-89f8-371cc52b89a3_1327x1500.png 848w, https://substackcdn.com/image/fetch/$s_!j4r1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c62d287-466b-4d78-89f8-371cc52b89a3_1327x1500.png 1272w, https://substackcdn.com/image/fetch/$s_!j4r1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c62d287-466b-4d78-89f8-371cc52b89a3_1327x1500.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!j4r1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c62d287-466b-4d78-89f8-371cc52b89a3_1327x1500.png" width="1327" height="1500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2c62d287-466b-4d78-89f8-371cc52b89a3_1327x1500.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1500,&quot;width&quot;:1327,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:221639,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.adaptiveengineer.com/i/178582417?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c62d287-466b-4d78-89f8-371cc52b89a3_1327x1500.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_!j4r1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c62d287-466b-4d78-89f8-371cc52b89a3_1327x1500.png 424w, https://substackcdn.com/image/fetch/$s_!j4r1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c62d287-466b-4d78-89f8-371cc52b89a3_1327x1500.png 848w, https://substackcdn.com/image/fetch/$s_!j4r1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c62d287-466b-4d78-89f8-371cc52b89a3_1327x1500.png 1272w, https://substackcdn.com/image/fetch/$s_!j4r1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c62d287-466b-4d78-89f8-371cc52b89a3_1327x1500.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 generated Todo file</p><p><code>{</code></p><p><code>  &#8220;created_at&#8221;: &#8220;2025-11-11T01:26:18.171559&#8221;,</code></p><p><code>&#8220;todos&#8221;: [</code></p><p><code>    {</code></p><p><code>&#8220;id&#8221;: 1,</code></p><p><code>&#8220;task&#8221;: &#8220;Search knowledge base for \&#8221;refund policy\&#8221; to understand the guidelines for processing refunds.&#8221;,</code></p><p><code>&#8220;status&#8221;: &#8220;completed&#8221;,</code></p><p><code>&#8220;result&#8221;: &#8220;No relevant article found in knowledge base.&#8221;</code></p><p><code>    },</code></p><p><code>    {</code></p><p><code>&#8220;id&#8221;: 2,</code></p><p><code>&#8220;task&#8221;: &#8220;Look up the customer&#8217;s order status in the system to determine if the product has shipped or if there are any delays.&#8221;,</code></p><p><code>&#8220;status&#8221;: &#8220;completed&#8221;,</code></p><p><code>&#8220;result&#8221;: &#8220;Found 2 similar past tickets:\n- Ticket TICKET-2024-089: Order delayed - carrier issue\n  Customer reported order stuck in transit for 8 days. Root cause: Holiday shipping backlog. Resolution: Expedited replacement sent, original order refu...\n  Resolved in: 2 days\n- Ticket TICKET-2024-112: Package not delivered after 10 days\n  Order placed 10 days ago, tracking shows &#8216;in transit&#8217; with no updates. Customer requested refund. Resolution: Refund processed, new order sent with ex...\n  Resolved in: 1 day\n&#8221;</code></p><p><code>    },</code></p><p><code>    {</code></p><p><code>&#8220;id&#8221;: 3,</code></p><p><code>&#8220;task&#8221;: &#8220;Check recent similar tickets or issues to see if other customers are experiencing similar delays with the same product.&#8221;,</code></p><p><code>&#8220;status&#8221;: &#8220;completed&#8221;,</code></p><p><code>&#8220;result&#8221;: &#8220;Found 2 similar past tickets:\n- Ticket TICKET-2024-089: Order delayed - carrier issue\n  Customer reported order stuck in transit for 8 days. Root cause: Holiday shipping backlog. Resolution: Expedited replacement sent, original order refu...\n  Resolved in: 2 days\n- Ticket TICKET-2024-112: Package not delivered after 10 days\n  Order placed 10 days ago, tracking shows &#8216;in transit&#8217; with no updates. Customer requested refund. Resolution: Refund processed, new order sent with ex...\n  Resolved in: 1 day\n&#8221;</code></p><p><code>    },</code></p><p><code>    {</code></p><p><code>&#8220;id&#8221;: 4,</code></p><p><code>&#8220;task&#8221;: &#8220;Review current refund processing times to inform the customer about how long it may take to receive their refund if approved.&#8221;,</code></p><p><code>&#8220;status&#8221;: &#8220;completed&#8221;,</code></p><p><code>&#8220;result&#8221;: &#8220;Completed: Review current refund processing times to inform the customer about how long it may take to receive their refund if approved.&#8221;</code></p><p><code>    }</code></p><p><code>  ]</code></p><p><code>}</code></p><p>I strongly recommend you go through the video or the code to full understand this pattern.</p><p>So there you have it - the write-todos pattern that powers some of the most sophisticated AI agents in production today.</p><p>To recap:</p><ul><li><p><strong>What it is:</strong> Externalize the agent&#8217;s plan by writing it to persistent storage</p></li><li><p><strong>Why use it:</strong> Transparency, fault tolerance, human-in-the-loop, better planning, and testability</p></li><li><p><strong>When to use it:</strong> Multi-step tasks, long-running operations, high-stakes work, collaborative workflows</p><p></p></li></ul><p>The complete code for this example is in the description below. I encourage you to:</p><ol><li><p>Clone it and run it yourself</p></li><li><p>Modify it to handle different support scenarios</p></li><li><p>Try adding a &#8220;human approval&#8221; step before execution</p></li><li><p>Build your own agent using this pattern</p></li></ol><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.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 Adaptive Engineer! 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've Been Teaching MCP Wrong for 6 Months!]]></title><description><![CDATA[The Wake-Up Call]]></description><link>https://newsletter.adaptiveengineer.com/p/ive-been-teaching-mcp-wrong-for-6</link><guid isPermaLink="false">https://newsletter.adaptiveengineer.com/p/ive-been-teaching-mcp-wrong-for-6</guid><dc:creator><![CDATA[Zahiruddin Tavargere]]></dc:creator><pubDate>Mon, 20 Oct 2025 15:35:06 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/19rH1GiJxUU" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>The Wake-Up Call</h2><p>Alright. So at work, I&#8217;ve been consulting a few teams to design MCP servers.</p><p>I have a solution in prod and some teams were interested to learn from my experience. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.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 Adaptive Engineer! 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>All my experiments on my blog, YouTube channel, and the solution at work were based on SSE&#8212;meaning the transport layer of my MCP servers was Server-Sent Events.</p><p>However, recently when one of the devs I was consulting told me that they read SSE transport was deprecated and only STDIO and Streamable HTTP were the only choices, I strongly denied such updates and told them there&#8217;s no way I would miss such an update.</p><p>They shared the link with me and I just couldn&#8217;t believe I had missed that update. An update that had come in late March 2025.</p><p>I felt embarrassed as I was recommending SSE transport for all our projects.</p><p>Luckily, the change to streamable_http wasn&#8217;t big and we could easily get on with the changes.</p><p>But I realized <strong>staying current with rapidly evolving AI protocols isn&#8217;t optional&#8212;it&#8217;s critical</strong>.</p><p>Missing a single protocol update can mean building on deprecated foundations, giving outdated advice, and potentially creating scalability issues that won&#8217;t surface until production load hits.</p><p>I know I&#8217;m a bit late here&#8212;but let&#8217;s understand why SSE was deprecated and learn how to build MCP servers with Streamable HTTP transport.</p><div><hr></div><h2>Why SSE Was Deprecated</h2><p>The SSE (Server-Sent Events) transport was part of the original MCP specification, but it had fundamental architectural problems that became apparent at scale:</p><h3>1. <strong>Two-Endpoint Architecture</strong></h3><p>SSE required maintaining <strong>two separate endpoints</strong>:</p><ul><li><p>GET <code>/sse</code> for server-to-client streaming</p></li><li><p>POST <code>/messages</code> for client-to-server requests</p></li></ul><p>This split architecture created complexity in connection management and made deployment harder.</p><h3>2. <strong>Connection Limit Hell</strong></h3><p>SSE connections are <strong>long-lived HTTP connections</strong>. Under load, servers quickly hit OS-level file descriptor limits (~1024 on most systems). Performance testing showed:</p><ul><li><p>1000+ concurrent TCP connections with SSE</p></li><li><p>Execution times 4x slower than Streamable HTTP</p></li><li><p>Success rates dropping sharply after ~1024 concurrent users</p></li></ul><h3>3. <strong>No Resumability</strong></h3><p>If an SSE connection dropped, there was no way to resume from where you left off. The entire operation had to restart.</p><h3>4. <strong>One-Way Communication</strong></h3><p>SSE only supports server-to-client streaming. Client-to-server communication required separate HTTP POST requests, creating an asymmetric architecture.</p><h3>5. <strong>Cloud Deployment Nightmare</strong></h3><p>Long-lived connections don&#8217;t play well with:</p><ul><li><p>Serverless functions (AWS Lambda, Cloud Run)</p></li><li><p>Load balancers with connection timeouts</p></li><li><p>Auto-scaling infrastructure</p></li><li><p>Container orchestration platforms</p></li></ul><div><hr></div><h2>Enter Streamable HTTP</h2><p><strong>Streamable HTTP</strong> was introduced in protocol version 2025-03-26 and addresses all of SSE&#8217;s limitations. Here&#8217;s what makes it better:</p><h3>Single Endpoint Architecture</h3><p>Everything goes through <strong>one endpoint</strong>: <code>/mcp</code></p><h3>Connection Reuse</h3><p>Instead of 1000 concurrent SSE connections, Streamable HTTP reuses TCP connections, keeping the count to just ~50 even under high load.</p><h3>Flexible Response Format</h3><p>The server chooses the response type based on the operation:</p><ul><li><p><strong>Quick operations</strong> &#8594; Instant JSON response</p></li><li><p><strong>Long operations</strong> &#8594; SSE stream with progress updates</p></li></ul><h3>Stateless Mode</h3><p>Perfect for cloud deployments&#8212;no session state to maintain, works beautifully with serverless and auto-scaling.</p><div><hr></div><h2>Migration from SSE to Streamable HTTP</h2><p>The migration is surprisingly simple:</p><h3>Python</h3><pre><code><code># Old (SSE)
mcp.run(transport=&#8221;sse&#8221;)

# New (Streamable HTTP)
mcp.run(transport=&#8221;streamable-http&#8221;)
</code></code></pre><h3>Client Code</h3><pre><code><code># Old
from mcp.client.sse import sse_client
async with sse_client(url) as (read, write):
    # ...

# New
from mcp.client.streamable_http import streamablehttp_client
async with streamablehttp_client(url) as (read, write, _):
    # ...
</code></code></pre><p>That&#8217;s it. The tool definitions, resources, and prompts remain unchanged.</p><div><hr></div><h2>Key Takeaways</h2><ol><li><p><strong>SSE is deprecated</strong> since protocol 2025-03-26 (March 26, 2025)</p></li><li><p><strong>Streamable HTTP is the standard</strong> for production deployments</p></li><li><p><strong>Migration is straightforward</strong> - mostly just changing transport configuration</p></li><li><p><strong>Performance is significantly better</strong> - 4x faster with better scalability</p></li><li><p><strong>Cloud-friendly</strong> - Works seamlessly with serverless and auto-scaling</p></li></ol><div><hr></div><h2>Here&#8217;s the video of the week</h2><div id="youtube2-19rH1GiJxUU" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;19rH1GiJxUU&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/19rH1GiJxUU?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.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 Adaptive Engineer! 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[Stop Writing Alt Tags Manually: I Built an AI Solution That Does It in Minutes]]></title><description><![CDATA[Hey everyone,]]></description><link>https://newsletter.adaptiveengineer.com/p/stop-writing-alt-tags-manually-i</link><guid isPermaLink="false">https://newsletter.adaptiveengineer.com/p/stop-writing-alt-tags-manually-i</guid><dc:creator><![CDATA[Zahiruddin Tavargere]]></dc:creator><pubDate>Sun, 12 Oct 2025 20:11:05 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/VXhh2FdIsdE" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey everyone,</p><p>If you manage a website (or several), you know the pain of alt tags.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.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 Adaptive Engineer! 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>They&#8217;re essential for accessibility and SEO, but writing hundreds of them manually? </p><p>Soul-crushing work.</p><p>And let&#8217;s be honest: when we DO write them, half the time they end up as generic descriptions like &#8220;image-123.jpg&#8221; that help exactly no one.</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_!QwIG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f1c8661-c403-4686-98be-0181ec2191f5_1739x291.png 424w, https://substackcdn.com/image/fetch/$s_!QwIG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f1c8661-c403-4686-98be-0181ec2191f5_1739x291.png 848w, https://substackcdn.com/image/fetch/$s_!QwIG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f1c8661-c403-4686-98be-0181ec2191f5_1739x291.png 1272w, https://substackcdn.com/image/fetch/$s_!QwIG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f1c8661-c403-4686-98be-0181ec2191f5_1739x291.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QwIG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f1c8661-c403-4686-98be-0181ec2191f5_1739x291.png" width="1456" height="244" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5f1c8661-c403-4686-98be-0181ec2191f5_1739x291.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:244,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:107350,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.adaptiveengineer.com/i/175980221?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f1c8661-c403-4686-98be-0181ec2191f5_1739x291.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_!QwIG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f1c8661-c403-4686-98be-0181ec2191f5_1739x291.png 424w, https://substackcdn.com/image/fetch/$s_!QwIG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f1c8661-c403-4686-98be-0181ec2191f5_1739x291.png 848w, https://substackcdn.com/image/fetch/$s_!QwIG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f1c8661-c403-4686-98be-0181ec2191f5_1739x291.png 1272w, https://substackcdn.com/image/fetch/$s_!QwIG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f1c8661-c403-4686-98be-0181ec2191f5_1739x291.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></div></figure></div><h2>How It Actually Works</h2><p>The workflow is surprisingly elegant. You feed it any URL, and it:</p><ol><li><p><strong>Scrapes the page</strong> and finds every image missing an alt tag</p></li><li><p><strong>Extracts rich context</strong> &#8211; page titles, nearby text, headings, captions, everything around that image</p></li><li><p><strong>Sends both the image URL and context to GPT-4o-mini</strong> &#8211; this is key: the AI actually LOOKS at the image while understanding where it appears on the page</p></li><li><p><strong>Generates perfect alt tags</strong> following Google&#8217;s accessibility guidelines</p></li><li><p><strong>Stores everything in a database</strong> ready for your CMS</p></li></ol><p>The magic is in the context. Most alt tag generators just describe what they see. This workflow understands PURPOSE. A photo of a laptop gets described differently on a tech news site versus an e-commerce product page versus a workspace inspiration blog.</p><h2>Who This Is For</h2><p>This is perfect if you&#8217;re:</p><ul><li><p>A developer managing multiple client sites</p></li><li><p>An SEO specialist optimizing for image search</p></li><li><p>A content manager drowning in accessibility backlog</p></li><li><p>An agency that needs to scale accessibility services</p></li><li><p>Anyone who cares about making the web more accessible</p></li></ul><h2>The Technical Bits</h2><p>Don&#8217;t worry if you&#8217;re not an n8n expert &#8211; I walk through every single node in detail. You&#8217;ll learn:</p><ul><li><p>How to scrape websites properly</p></li><li><p>JavaScript for HTML parsing (regex-based, no external libraries)</p></li><li><p>How to structure prompts for vision AI</p></li><li><p>Loop automation techniques</p></li><li><p>Database integration basics</p></li></ul><p>Even if you&#8217;ve never used n8n before, you&#8217;ll have a working automation by the end.</p><h2>Watch It Here</h2><div id="youtube2-VXhh2FdIsdE" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;VXhh2FdIsdE&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/VXhh2FdIsdE?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.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 Adaptive Engineer! 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[My Journey with n8n: Why This No-Code Automation Tool Blew Me Away]]></title><description><![CDATA[For the past few months, I&#8217;ve been watching a lot of YouTube videos about how n8n is one of the hottest no-code agentic solutions.]]></description><link>https://newsletter.adaptiveengineer.com/p/my-journey-with-n8n-why-this-no-code</link><guid isPermaLink="false">https://newsletter.adaptiveengineer.com/p/my-journey-with-n8n-why-this-no-code</guid><dc:creator><![CDATA[Zahiruddin Tavargere]]></dc:creator><pubDate>Mon, 29 Sep 2025 00:36:32 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/skV5MLs1j7w" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>For the past few months, I&#8217;ve been watching a lot of YouTube videos about how n8n is one of the hottest no-code agentic solutions.</p><p>Today, I decided to take it for a spin.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.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 Adaptive Engineer! 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>Here&#8217;s my experience.</p><p>n8n is everything the &#8220;influencers&#8221; claim it to be.</p><p>It&#8217;s intuitive, powerful, and packed with over 400 integrations, a drag-and-drop interface, and custom code options that make complex automations feel effortless.</p><p>From the ease of setting it up on my 12-year-old Mac Mini to developing a solution in just 30 minutes (thanks to its impressive documentation), I must say, I&#8217;m a fan</p><p>As someone who spent a decade building enterprise automation, I can see how n8n solves so many process-related challenges, like streamlining data flows and reducing manual errors.</p><h2>Is it RPA?</h2><p>Tools like Power Automate, Automation Anywhere, UiPath, and others do similar things&#8212;but deploying and scaling them at an enterprise level requires dedicated teams, hefty infrastructure, and ongoing vendor support.</p><p>In contrast, n8n stands out as open-source and self-hostable, with no vendor lock-in or per-bot licensing fees.</p><p>It&#8217;s API-focused for seamless app integrations rather than UI-based bot mimicry, making it lighter, more flexible, and cost-effective for modern workflows without sacrificing power.</p><h2>So what did I build with this?</h2><div id="youtube2-skV5MLs1j7w" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;skV5MLs1j7w&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/skV5MLs1j7w?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>A production-ready n8n workflow that automatically analyzes thousands of customer reviews using AI and generates actionable business insights, such as sentiment trends, key pain points, and improvement recommendations.</p><h2>My verdict</h2><p>n8n is a game-changer for efficient, scalable automation. It&#8217;s developer-friendly yet accessible to non-coders, and its community-driven updates keep it evolving. If you&#8217;re tired of bloated tools, give n8n a try&#8212;you won&#8217;t regret it.</p><h2>Why should you learn it?</h2><p>In today&#8217;s fast-paced digital world, automation skills are essential for boosting productivity and staying competitive.</p><p>n8n empowers you to connect disparate tools&#8212;like APIs, databases, and AI services&#8212;without deep coding expertise, saving hours on repetitive tasks.</p><p>It&#8217;s future-proof: as no-code/low-code platforms rise, mastering n8n opens doors to freelance gigs, startup roles, or internal efficiencies at big companies.</p><p>Plus, its active open-source community means constant improvements, free resources, and real-world applications in marketing, data analysis, e-commerce, and more. </p><p>Whether you&#8217;re a solo entrepreneur automating lead gen or a team lead optimizing operations, learning n8n builds versatile problem-solving skills that pay off immediately and scale with your career.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.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 Adaptive Engineer! 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 Build an Agent Driven Content Audit System with LangGraph]]></title><description><![CDATA[How to Build an Agent-Driven Content Audit System with LangGraph]]></description><link>https://newsletter.adaptiveengineer.com/p/how-to-build-an-agent-driven-content</link><guid isPermaLink="false">https://newsletter.adaptiveengineer.com/p/how-to-build-an-agent-driven-content</guid><dc:creator><![CDATA[Zahiruddin Tavargere]]></dc:creator><pubDate>Mon, 22 Sep 2025 18:47:29 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ij_C!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6ad1c5b-8892-4011-b361-ad7844836781_1600x1016.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Are unnoticed flaws in your digital assets silently eroding your B2B revenue?</p><p>Your websites, landing pages, and digital content are critical revenue drivers.</p><p>But when mismanaged, they leak profits.</p><p>As content scales, manual audits fall short, inviting brand inconsistency and compliance risks.</p><p>Discover how AI Agents can streamline content audits across thousands of pages.</p><h2>The Agent-Driven Content Audit System</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ij_C!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6ad1c5b-8892-4011-b361-ad7844836781_1600x1016.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ij_C!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6ad1c5b-8892-4011-b361-ad7844836781_1600x1016.png 424w, https://substackcdn.com/image/fetch/$s_!ij_C!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6ad1c5b-8892-4011-b361-ad7844836781_1600x1016.png 848w, https://substackcdn.com/image/fetch/$s_!ij_C!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6ad1c5b-8892-4011-b361-ad7844836781_1600x1016.png 1272w, https://substackcdn.com/image/fetch/$s_!ij_C!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6ad1c5b-8892-4011-b361-ad7844836781_1600x1016.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ij_C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6ad1c5b-8892-4011-b361-ad7844836781_1600x1016.png" width="1456" height="925" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c6ad1c5b-8892-4011-b361-ad7844836781_1600x1016.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:925,&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_!ij_C!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6ad1c5b-8892-4011-b361-ad7844836781_1600x1016.png 424w, https://substackcdn.com/image/fetch/$s_!ij_C!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6ad1c5b-8892-4011-b361-ad7844836781_1600x1016.png 848w, https://substackcdn.com/image/fetch/$s_!ij_C!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6ad1c5b-8892-4011-b361-ad7844836781_1600x1016.png 1272w, https://substackcdn.com/image/fetch/$s_!ij_C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6ad1c5b-8892-4011-b361-ad7844836781_1600x1016.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>Let me walk you through the high-level design.</p><p>The first step is content ingestion&#8212;gathering all URLs and asset metadata from various sources like crawler lists, CSVs, or CMS integrations. This ensures complete, real-time coverage across your content footprint.</p><p>Next, the orchestrator prioritizes assets using AI and historical data, focusing audits on high-impact pages first. This guarantees critical content gets the right attention every time.</p><p>Multiple audit engines then run in parallel: checking readability, SEO, accessibility, compliance, and post-launch monitoring. They use both third-party tools and custom code for thorough reviews.</p><p>All results feed into secure databases that connect content to revenue and risk metrics. Finally, the prioritization engine turns data into business impact scores, triggering automated tickets and alerts so stakeholders can make fast, informed decisions.</p><p>I&#8217;ve done full walk-through of the code in this video.</p><div id="youtube2-0pt4fNAVWnM" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;0pt4fNAVWnM&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/0pt4fNAVWnM?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.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 Adaptive Engineer! 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[Mastering the Routing Pattern: 4 Essential Techniques for Building Intelligent AI Agents]]></title><description><![CDATA[The Four Pillars of Intelligent Routing]]></description><link>https://newsletter.adaptiveengineer.com/p/mastering-the-routing-pattern-4-essential</link><guid isPermaLink="false">https://newsletter.adaptiveengineer.com/p/mastering-the-routing-pattern-4-essential</guid><dc:creator><![CDATA[Zahiruddin Tavargere]]></dc:creator><pubDate>Sun, 07 Sep 2025 18:29:18 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/2Gz0T6JS4B8" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div id="youtube2-2Gz0T6JS4B8" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;2Gz0T6JS4B8&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/2Gz0T6JS4B8?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2></h2><h2>The Four Pillars of Intelligent Routing</h2><p>After analyzing hundreds of production agent systems, four distinct routing approaches have emerged as the foundation of modern agentic architectures. Each represents a different trade-off between accuracy, speed, cost, and implementation complexity.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LoCE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfe6a6b6-af44-4337-b3b4-ab7f7d8c8e5c_1828x1754.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LoCE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfe6a6b6-af44-4337-b3b4-ab7f7d8c8e5c_1828x1754.png 424w, https://substackcdn.com/image/fetch/$s_!LoCE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfe6a6b6-af44-4337-b3b4-ab7f7d8c8e5c_1828x1754.png 848w, https://substackcdn.com/image/fetch/$s_!LoCE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfe6a6b6-af44-4337-b3b4-ab7f7d8c8e5c_1828x1754.png 1272w, https://substackcdn.com/image/fetch/$s_!LoCE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfe6a6b6-af44-4337-b3b4-ab7f7d8c8e5c_1828x1754.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LoCE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfe6a6b6-af44-4337-b3b4-ab7f7d8c8e5c_1828x1754.png" width="1456" height="1397" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cfe6a6b6-af44-4337-b3b4-ab7f7d8c8e5c_1828x1754.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1397,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:796229,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.adaptiveengineer.com/i/173019923?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfe6a6b6-af44-4337-b3b4-ab7f7d8c8e5c_1828x1754.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_!LoCE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfe6a6b6-af44-4337-b3b4-ab7f7d8c8e5c_1828x1754.png 424w, https://substackcdn.com/image/fetch/$s_!LoCE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfe6a6b6-af44-4337-b3b4-ab7f7d8c8e5c_1828x1754.png 848w, https://substackcdn.com/image/fetch/$s_!LoCE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfe6a6b6-af44-4337-b3b4-ab7f7d8c8e5c_1828x1754.png 1272w, https://substackcdn.com/image/fetch/$s_!LoCE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfe6a6b6-af44-4337-b3b4-ab7f7d8c8e5c_1828x1754.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><h3>1. LLM-Based Routing: The Universal Translator</h3><p>LLM-based routing leverages the same language understanding capabilities that make modern AI so impressive. Instead of trying to predict every possible user intent, you simply ask the language model to analyze the input and make the routing decision.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.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 Adaptive Engineer! 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><strong>The core mechanism</strong> is elegantly simple: present the LLM with the user's input and a carefully crafted prompt that defines your routing categories. The LLM analyzes the semantic meaning, context, and intent, then outputs a structured decision about where to route the request.</p><p><strong>Where it shines:</strong></p><ul><li><p><strong>Handling ambiguous inputs</strong> that don't fit neat patterns</p></li><li><p><strong>Understanding complex, multi-part requests</strong> that span multiple categories</p></li><li><p><strong>Adapting to new types of queries</strong> without retraining or rule updates</p></li><li><p><strong>Processing context-dependent routing</strong> that considers conversation history</p></li></ul><p><strong>The architectural trade-off:</strong> Maximum flexibility comes at the cost of latency and API expenses. Each routing decision requires a full LLM inference, which can add 1-3 seconds and $0.001-0.01 per request. For high-throughput systems, these costs compound quickly.</p><p><strong>Production pattern:</strong> Many sophisticated systems use LLM routing as a fallback for edge cases or as the primary router for high-value, low-volume interactions where accuracy matters more than speed.</p><h3>2. Embedding-Based Routing: The Semantic Compass</h3><p>Embedding-based routing transforms the routing problem into a mathematical similarity search. By converting both user inputs and routing destinations into high-dimensional vectors, the system can make routing decisions based on semantic similarity rather than surface-level pattern matching.</p><p><strong>The mechanism</strong> involves pre-computing embeddings for each possible route (or representative examples of each route), then computing the embedding for each incoming request and finding the closest match using cosine similarity or other distance metrics.</p><p><strong>Where it excels:</strong></p><ul><li><p><strong>Semantic understanding</strong> that goes beyond keyword matching</p></li><li><p><strong>Multi-language support</strong> since embeddings capture meaning across languages</p></li><li><p><strong>Consistent performance</strong> with sub-second routing decisions</p></li><li><p><strong>Handling synonyms and paraphrasing</strong> naturally</p></li></ul><p><strong>The sweet spot:</strong> Embedding routing offers the best balance of semantic understanding and computational efficiency for most production systems. Once the embeddings are computed, routing decisions happen in milliseconds with no API calls.</p><p><strong>Implementation insight:</strong> The quality of your route embeddings determines everything. Spend time crafting comprehensive descriptions of each route's purpose and scope&#8212;these become the foundation for accurate similarity matching.</p><h3>3. Rule-Based Routing: The Deterministic Workhorse</h3><p>Rule-based routing might seem primitive compared to AI-powered alternatives, but it remains the backbone of many production systems for good reason. Using predefined patterns, keyword matching, and logical conditions, rule-based routing provides predictable, lightning-fast decisions.</p><p><strong>The approach</strong> relies on explicit logic: if the input contains certain keywords, matches specific patterns, or triggers particular conditions, route to the designated handler. Complex decision trees can be built by combining multiple rules and conditions.</p><p><strong>Where it dominates:</strong></p><ul><li><p><strong>High-throughput systems</strong> where microsecond response times matter</p></li><li><p><strong>Compliance-sensitive applications</strong> requiring auditable, deterministic routing</p></li><li><p><strong>Well-defined use cases</strong> with predictable input patterns</p></li><li><p><strong>Resource-constrained environments</strong> with minimal computational overhead</p></li></ul><p><strong>The reliability factor:</strong> Rule-based routing never has an "off day." It makes identical decisions for identical inputs, making it perfect for systems that require absolute consistency and predictability.</p><p><strong>Modern evolution:</strong> Today's rule-based systems often incorporate regular expressions, fuzzy matching, and hierarchical decision trees, making them far more sophisticated than simple keyword matching.</p><h3>4. ML Model-Based Routing: The Learning Specialist</h3><p>Machine learning model-based routing represents a middle ground between the flexibility of LLM routing and the efficiency of rule-based systems. A specialized classification model is trained on labeled examples of correct routing decisions, creating a dedicated routing function optimized for your specific use case.</p><p><strong>The core difference</strong> from LLM routing is crucial: instead of using a general-purpose language model prompted to make routing decisions, you train a discriminative model specifically for routing. The routing logic becomes encoded in the model's learned weights rather than expressed through prompts.</p><p><strong>Where it excels:</strong></p><ul><li><p><strong>Domain-specific accuracy</strong> that improves with more training data</p></li><li><p><strong>Cost-effective operation</strong> with no ongoing API expenses</p></li><li><p><strong>Fast inference</strong> comparable to rule-based systems</p></li><li><p><strong>Continuous improvement</strong> through retraining on new examples</p></li></ul><p><strong>The training advantage:</strong> Unlike embeddings, which rely on general-purpose representations, ML routing models learn patterns specific to your application. They can discover subtle correlations between input features and routing decisions that human-designed rules might miss.</p><p><strong>Implementation strategy:</strong> The most effective ML routing implementations combine traditional ML features (TF-IDF, n-grams) with modern embedding representations, creating hybrid models that capture both statistical and semantic patterns.</p><div><hr></div><h3>code: <a href="https://github.com/zahere-dev/agentexpert-labs/tree/main/core_concepts/routing">https://github.com/zahere-dev/agentexpert-labs</a></h3><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.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 Adaptive Engineer! 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 Add OAuth2 Authentication to Your MCP SSE Server | Step-by-step Tutorial]]></title><description><![CDATA[Video Authentication Flow]]></description><link>https://newsletter.adaptiveengineer.com/p/how-to-add-oauth2-authentication</link><guid isPermaLink="false">https://newsletter.adaptiveengineer.com/p/how-to-add-oauth2-authentication</guid><dc:creator><![CDATA[Zahiruddin Tavargere]]></dc:creator><pubDate>Sun, 31 Aug 2025 03:10:10 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/9sGAslxJ4xs" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>Video</h2><div id="youtube2-9sGAslxJ4xs" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;9sGAslxJ4xs&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/9sGAslxJ4xs?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2>Authentication Flow</h2><p>Before looking at the code, let&#8217;s see how the authentication flow works:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uG2K!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F116fcdb4-27e8-4ca3-8aa6-54ab45e3d991_2050x1325.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uG2K!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F116fcdb4-27e8-4ca3-8aa6-54ab45e3d991_2050x1325.png 424w, https://substackcdn.com/image/fetch/$s_!uG2K!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F116fcdb4-27e8-4ca3-8aa6-54ab45e3d991_2050x1325.png 848w, https://substackcdn.com/image/fetch/$s_!uG2K!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F116fcdb4-27e8-4ca3-8aa6-54ab45e3d991_2050x1325.png 1272w, https://substackcdn.com/image/fetch/$s_!uG2K!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F116fcdb4-27e8-4ca3-8aa6-54ab45e3d991_2050x1325.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uG2K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F116fcdb4-27e8-4ca3-8aa6-54ab45e3d991_2050x1325.png" width="1456" height="941" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/116fcdb4-27e8-4ca3-8aa6-54ab45e3d991_2050x1325.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:941,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:210489,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.adaptiveengineer.com/i/172377466?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F116fcdb4-27e8-4ca3-8aa6-54ab45e3d991_2050x1325.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_!uG2K!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F116fcdb4-27e8-4ca3-8aa6-54ab45e3d991_2050x1325.png 424w, https://substackcdn.com/image/fetch/$s_!uG2K!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F116fcdb4-27e8-4ca3-8aa6-54ab45e3d991_2050x1325.png 848w, https://substackcdn.com/image/fetch/$s_!uG2K!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F116fcdb4-27e8-4ca3-8aa6-54ab45e3d991_2050x1325.png 1272w, https://substackcdn.com/image/fetch/$s_!uG2K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F116fcdb4-27e8-4ca3-8aa6-54ab45e3d991_2050x1325.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><strong>Key points from the flow</strong>:</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.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 Adaptive Engineer! 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><ul><li><p>Clients log in via <strong>Auth0</strong> and receive a <strong>JWT access token</strong>.</p></li><li><p>The server uses Auth0&#8217;s <strong>JWKS (JSON Web Key Set)</strong> to validate token signatures.</p></li><li><p>Requests without a valid token are rejected with <strong>401 Unauthorized</strong>.</p></li></ul><h2>Create Auth0 Service (Or any other OAuth provider)</h2><ul><li><p>**We are using Auth0 as it is free**</p></li><li><p>Use your github/google account to signup to Auth0 service</p></li><li><p>Create a Machine-to-Machine app and generate your domain, client id and secret.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YZrj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67383888-8c7b-43e3-abf5-6748e05174f2_910x620.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YZrj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67383888-8c7b-43e3-abf5-6748e05174f2_910x620.png 424w, https://substackcdn.com/image/fetch/$s_!YZrj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67383888-8c7b-43e3-abf5-6748e05174f2_910x620.png 848w, https://substackcdn.com/image/fetch/$s_!YZrj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67383888-8c7b-43e3-abf5-6748e05174f2_910x620.png 1272w, https://substackcdn.com/image/fetch/$s_!YZrj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67383888-8c7b-43e3-abf5-6748e05174f2_910x620.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!YZrj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67383888-8c7b-43e3-abf5-6748e05174f2_910x620.png" width="910" height="620" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/67383888-8c7b-43e3-abf5-6748e05174f2_910x620.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:620,&quot;width&quot;:910,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:40539,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.adaptiveengineer.com/i/172377466?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67383888-8c7b-43e3-abf5-6748e05174f2_910x620.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_!YZrj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67383888-8c7b-43e3-abf5-6748e05174f2_910x620.png 424w, https://substackcdn.com/image/fetch/$s_!YZrj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67383888-8c7b-43e3-abf5-6748e05174f2_910x620.png 848w, https://substackcdn.com/image/fetch/$s_!YZrj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67383888-8c7b-43e3-abf5-6748e05174f2_910x620.png 1272w, https://substackcdn.com/image/fetch/$s_!YZrj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67383888-8c7b-43e3-abf5-6748e05174f2_910x620.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>Imports and Setup</h2><pre><code>import datetime
import os
from zoneinfo import ZoneInfo
from fastapi import Depends, FastAPI, HTTPException, status, Request
from fastapi.responses import JSONResponse
from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials
import jwt
import requests
from jwt.algorithms import RSAAlgorithm
from starlette.applications import Starlette
from starlette.routing import Route, Mount
import logging

from mcp.server.fastmcp import FastMCP
from mcp.server.sse import SseServerTransport
from dotenv import load_dotenv

load_dotenv()
</code></pre><ul><li><p><strong>FastAPI / Starlette</strong>: Provide the ASGI framework and request/response tools.</p></li><li><p><strong>jwt &amp; RSAAlgorithm</strong>: For decoding and verifying <strong>JWTs signed with RS256</strong>.</p></li><li><p><strong>HTTPBearer</strong>: A security utility to parse <code>Authorization: Bearer &lt;token&gt;</code> headers.</p></li><li><p><strong>dotenv</strong>: Loads environment variables (e.g., API keys).</p></li><li><p><strong>logging</strong>: For server-side logging.</p></li><li><p><strong>MCP modules</strong>: <code>FastMCP</code> and <code>SseServerTransport</code> enable MCP over SSE.</p></li></ul><h2>Auth0 Configuration</h2><pre><code>
AUTH0_DOMAIN = "zahere-dev.us.auth0.com"
API_AUDIENCE = "https://zahere-dev.us.auth0.com/api/v2/"
ALGORITHMS = ["RS256"]

# Set up logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger("mcp-server")

# Fetch JWKS keys once at startup
jwks_url = f"https://{AUTH0_DOMAIN}/.well-known/jwks.json"
jwks = requests.get(jwks_url, verify=False).json()
</code></pre><ul><li><p><strong>AUTH0_DOMAIN</strong>: Your Auth0 tenant domain.</p></li><li><p><strong>API_AUDIENCE</strong>: The intended audience claim of the JWT (ensures tokens are meant for your API).</p></li><li><p><strong>ALGORITHMS</strong>: We only accept <code>RS256</code> (RSA signature with SHA-256).</p></li><li><p><strong>JWKS Fetch</strong>: At startup, the server downloads Auth0&#8217;s <strong>public signing keys</strong>. These are later used to validate incoming tokens.</p></li></ul><h2>JWT Verification Logic</h2><pre><code># Auth setup
security = HTTPBearer()

def verify_jwt(token: str):
    try:
        header = jwt.get_unverified_header(token)
        kid = header["kid"]

        # Find matching JWK
        key = next((k for k in jwks["keys"] if k["kid"] == kid), None)
        if not key:
            raise HTTPException(status_code=401, detail="Invalid auth key")

        public_key = RSAAlgorithm.from_jwk(key)

        payload = jwt.decode(
            token,
            public_key,
            algorithms=ALGORITHMS,
            audience=API_AUDIENCE,
            issuer=f"https://{AUTH0_DOMAIN}/"
        )
        return payload
    except Exception as e:
        logger.error(f"JWT validation error: {str(e)}")
        raise HTTPException(status_code=401, detail="Invalid or expired token")
</code></pre><ul><li><p><strong>Extract header &amp; KID</strong>: Each JWT contains a <code>kid</code> (key ID). This tells us which public key was used to sign it.</p></li><li><p><strong>Find JWK</strong>: Match the <code>kid</code> against Auth0&#8217;s JWKS set.</p></li><li><p><strong>RSAAlgorithm.from_jwk</strong>: Convert the JWK to a usable RSA public key.</p></li><li><p><strong>jwt.decode</strong>: Validate the token signature, audience, issuer, and expiry.</p></li><li><p>If anything fails, raise a <strong>401 Unauthorized</strong> error.</p></li></ul><h2>MCP Server &amp; Tools (Minimal)</h2><pre><code># ======================
# MCP Server Setup
# ======================
mcp = FastMCP(name="Weather and Time SSE Server")

@mcp.tool()
def TimeTool(input_timezone: str = None):
    current_time = datetime.datetime.now()
    if input_timezone:
        current_time = current_time.astimezone(ZoneInfo(input_timezone))
    return f"The current time is {current_time}."

transport = SseServerTransport("/messages/")

@mcp.tool()
def weather_tool(location: str):
    api_key = os.getenv("OPENWEATHERMAP_API_KEY")
    url = f"http://api.openweathermap.org/data/2.5/weather?q={location}&amp;appid={api_key}&amp;units=metric"
    response = requests.get(url)
    data = response.json()
    if data.get("cod") == 200:
        temp = data["main"]["temp"]
        description = data["weather"][0]["description"]
        return f"The weather in {location} is {description} with {temp}&#176;C."
    return f"Couldn't fetch weather for {location}."
</code></pre><ul><li><p>A simple implementation of the MCP server tools</p></li></ul><h2>FastAPI App &amp; Endpoints</h2><pre><code>app = FastAPI()

@app.get("/sse")
async def handle_sse(request: Request):
    auth_hdr = request.headers.get("authorization")
    token = None
    if auth_hdr and auth_hdr.lower().startswith("bearer "):
        token = auth_hdr.split(" ", 1)[1]
    else:
        token = request.query_params.get("access_token")

    if not token:
        raise HTTPException(status_code=401, detail="Missing token")

    verify_jwt(token)

    async with transport.connect_sse(request.scope, request.receive, request._send) as (in_stream, out_stream):
        await mcp._mcp_server.run(in_stream, out_stream, mcp._mcp_server.create_initialization_options())

</code></pre><ul><li><p>Supports <strong>two auth methods</strong>:</p><ol><li><p>Standard <code>Authorization: Bearer &lt;token&gt;</code> header.</p></li><li><p>Query parameter <code>?access_token=...</code> (useful for browser <code>EventSource</code>).</p></li></ol></li><li><p>Token is verified, then SSE connection is established.</p></li></ul><h2>Protecting the ASGI Transport</h2><pre><code>def auth_asgi_wrapper(asgi_app):
    async def app(scope, receive, send):
        if scope["type"] == "http":
            headers = {k.decode().lower(): v.decode() for k, v in scope.get("headers", [])}
            auth_hdr = headers.get("authorization")
            if not auth_hdr or not auth_hdr.lower().startswith("bearer "):
                resp = JSONResponse({"detail": "Not authenticated"}, status_code=401)
                await resp(scope, receive, send)
                return
            token = auth_hdr.split(" ", 1)[1]
            try:
                verify_jwt(token)
            except HTTPException as he:
                resp = JSONResponse({"detail": he.detail}, status_code=he.status_code)
                await resp(scope, receive, send)
                return
            except Exception:
                resp = JSONResponse({"detail": "Invalid or expired token"}, status_code=401)
                await resp(scope, receive, send)
                return
        await asgi_app(scope, receive, send)
    return app
</code></pre><ul><li><p>This wrapper protects the <code>/messages/</code> endpoint. It intercepts requests, checks for a Bearer token, and validates it before passing control to the MCP transport.</p></li></ul><h2>Mount Messages Route</h2><pre><code>app.mount("/messages/", auth_asgi_wrapper(transport.handle_post_message))
</code></pre><ul><li><p>This makes sure POST requests to <code>/messages/</code> are also protected by our wrapper</p></li></ul><h2>Run the Server</h2><pre><code>if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8100)
</code></pre><h2>The Client</h2><p>**Below is only part of the client code**. Full code is available in repo.</p><pre><code>def get_token():
    import http.client

    conn = http.client.HTTPSConnection(os.getenv("AUTH0_DOMAIN"))
    
    payload = {"client_id":os.getenv("CLIENT_ID"), "client_secret":os.getenv("CLIENT_SECRET"),"audience":os.getenv("AUTH_AUDIENCE"),"grant_type":"client_credentials"}

    headers = { 'content-type': "application/json" }

    conn.request("POST", "/oauth/token", json.dumps(payload), headers)

    res = conn.getresponse()
    data = json.loads(res.read())
    return data["access_token"]


async def main(queries: list[str]):
    sse_url = "http://localhost:8100/sse"
    logger.info(f"Generating Bearer token for authentication")
    auth_token = get_token()
    #auth_token = "12124234"
    logger.info(f"Token generated {auth_token[:20]} ")
    headers = {"Authorization": f"Bearer {auth_token}"}    
    try:
        logger.info("Connecting to MCP Server with token")
        # 1) Open SSE &#8594; yields (in_stream, out_stream)
        async with sse_client(url=sse_url, headers=headers) as (in_stream, out_stream):
            # 2) Create an MCP session over those streams
            logger.info("Connected to MCP Server")
            async with ClientSession(in_stream, out_stream) as session:
                
                # 3) Initialize
                info = await session.initialize()
                logger.info(f"Connected to {info.serverInfo.name} v{info.serverInfo.version}")

                # 4) List tools
                tools = (await session.list_tools())
                logger.info(tools)            
                
                ### Run the queries
                
                for query in queries:                
                
                    prompt = get_prompt_to_identify_tool_and_arguements(query,tools)
                    logger.info(f"Printing Prompt \n {prompt}")
                    
                    response = llm_client(prompt)
                    print(response)
                    
                    tool_call = json.loads(response)
                                
                    result = await session.call_tool(tool_call["tool"], arguments=tool_call["arguments"])
                    logger.success(f"User query: {query}, Tool Response: {result.content[0].text}")
    except httpx.HTTPStatusError as http_e:
        logger.exception(f"HTTP Error: {http_e}")
    except Exception as e:
        logger.exception(f"Error: {e}")
            

if __name__ == "__main__":
    queries = ["What is the time in Bengaluru?", "What is the weather like right now in Dubai?"]    
    asyncio.run(main(queries))
</code></pre><ul><li><p>Use the client_id and secret to connect with Auth0 and request for access token</p></li><li><p>Send the token to the MCP Server as a header with &#8220;Authorization&#8221; key.</p></li><li><p>If connection is established, you will see the message below, else 401 Unauthorized error</p></li></ul><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_!jKOK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26ebc1ed-86d7-4347-9531-d5d9a1b02260_2745x67.png 424w, https://substackcdn.com/image/fetch/$s_!jKOK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26ebc1ed-86d7-4347-9531-d5d9a1b02260_2745x67.png 848w, https://substackcdn.com/image/fetch/$s_!jKOK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26ebc1ed-86d7-4347-9531-d5d9a1b02260_2745x67.png 1272w, https://substackcdn.com/image/fetch/$s_!jKOK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26ebc1ed-86d7-4347-9531-d5d9a1b02260_2745x67.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!jKOK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26ebc1ed-86d7-4347-9531-d5d9a1b02260_2745x67.png" width="1456" height="36" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/26ebc1ed-86d7-4347-9531-d5d9a1b02260_2745x67.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:36,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:19950,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.adaptiveengineer.com/i/172377466?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26ebc1ed-86d7-4347-9531-d5d9a1b02260_2745x67.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_!jKOK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26ebc1ed-86d7-4347-9531-d5d9a1b02260_2745x67.png 424w, https://substackcdn.com/image/fetch/$s_!jKOK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26ebc1ed-86d7-4347-9531-d5d9a1b02260_2745x67.png 848w, https://substackcdn.com/image/fetch/$s_!jKOK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26ebc1ed-86d7-4347-9531-d5d9a1b02260_2745x67.png 1272w, https://substackcdn.com/image/fetch/$s_!jKOK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26ebc1ed-86d7-4347-9531-d5d9a1b02260_2745x67.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.adaptiveengineer.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 Adaptive Engineer! 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></channel></rss>