<?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[zerofuturetech's newsletter]]></title><description><![CDATA[AI tutorials, AI products, AI education]]></description><link>https://zerofuturetech.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!c7a8!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71f360bf-c1d1-4a57-8294-72efb33c2771_1024x1024.png</url><title>zerofuturetech&apos;s newsletter</title><link>https://zerofuturetech.substack.com</link></image><generator>Substack</generator><lastBuildDate>Wed, 04 Nov 2026 22:38:13 GMT</lastBuildDate><atom:link href="iframe.php?url=https%3A%2F%2Fzerofuturetech.substack.com%2Ffeed" rel="self" type="application/rss+xml"/><copyright><![CDATA[zerofuturetech零点未来]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[zerofuturetech@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[zerofuturetech@substack.com]]></itunes:email><itunes:name><![CDATA[zerofuturetech]]></itunes:name></itunes:owner><itunes:author><![CDATA[zerofuturetech]]></itunes:author><googleplay:owner><![CDATA[zerofuturetech@substack.com]]></googleplay:owner><googleplay:email><![CDATA[zerofuturetech@substack.com]]></googleplay:email><googleplay:author><![CDATA[zerofuturetech]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[What Is an Ontology? Reading One File, Line by Line, Through a Coffee Shop]]></title><description><![CDATA[Most enterprise agents fail because they don&#8217;t know the business, not because the model is weak. Here is the small ontology.ttl I wrote for a fictional coffee chain: 5 classes, 4 relations, 2 key prop]]></description><link>https://zerofuturetech.substack.com/p/what-is-an-ontology-reading-one-file</link><guid isPermaLink="false">https://zerofuturetech.substack.com/p/what-is-an-ontology-reading-one-file</guid><dc:creator><![CDATA[zerofuturetech]]></dc:creator><pubDate>Sun, 01 Nov 2026 12:02:41 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F228d3c95-4664-4691-9e4e-14ed10732903_1440x1080.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to my newsletter. Here is <em>ZeroFutureTech</em>&#12290;I will share what I learned, researched and did in AI-related domain. Welcome to follow my <a href="iframe.php?url=https%3A%2F%2Fx.com%2Fjingwangtalk">X</a>.</p><p>Associated with this newsletter, I posted my video on Youtube (Note it is Chinese). Welcome to watch it: </p>
      <p>
          <a href="iframe.php?url=https%3A%2F%2Fzerofuturetech.substack.com%2Fp%2Fwhat-is-an-ontology-reading-one-file">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[What FDE Means at OpenAI: Make Yourself Obsolete]]></title><description><![CDATA[OpenAI's forward-deployed engineers aim to raise the floor so the next customer does not need an FDE team for the same class of problem&#8212;outcome first, then repeatable, then closing the gaps models can]]></description><link>https://zerofuturetech.substack.com/p/what-fde-means-at-openai-make-yourself</link><guid isPermaLink="false">https://zerofuturetech.substack.com/p/what-fde-means-at-openai-make-yourself</guid><dc:creator><![CDATA[zerofuturetech]]></dc:creator><pubDate>Sun, 25 Oct 2026 12:03:45 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf9cf33b-2972-403c-97f7-26c53c0a895c_1200x630.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to my newsletter. Here is <em>ZeroFutureTech</em>&#12290;I will share what I learned, researched and did in AI-related domain. Welcome to follow my <a href="iframe.php?url=https%3A%2F%2Fx.com%2Fjingwangtalk">X</a>.</p><p>Associated with this newsletter, I posted my video on Youtube (Note it is Chinese). Welcome to watch it: </p>
      <p>
          <a href="iframe.php?url=https%3A%2F%2Fzerofuturetech.substack.com%2Fp%2Fwhat-fde-means-at-openai-make-yourself">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Why Your AI Agent Keeps Getting Company Questions Wrong: One Discount Question, Five Approaches]]></title><description><![CDATA[Same documents, same five questions, run through LLM-only, RAG, Graph RAG, Context Graph, and Ontology. The scores went 0, 0, 0, 4, 5. How each one failed is the more useful part.]]></description><link>https://zerofuturetech.substack.com/p/why-your-ai-agent-keeps-getting-company</link><guid isPermaLink="false">https://zerofuturetech.substack.com/p/why-your-ai-agent-keeps-getting-company</guid><dc:creator><![CDATA[zerofuturetech]]></dc:creator><pubDate>Sun, 18 Oct 2026 12:31:10 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F875efe43-0a44-4523-894f-8f40bc67d840_2000x1500.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to my newsletter. Here is <em>ZeroFutureTech</em>&#12290;I will share what I learned, researched and did in AI-related domain. Welcome to follow my <a href="iframe.php?url=https%3A%2F%2Fx.com%2Fjingwangtalk">X</a>.</p><p>Associated with this newsletter, I posted my video on Youtube (Note it is Chinese). Welcome to watch it: </p>
      <p>
          <a href="iframe.php?url=https%3A%2F%2Fzerofuturetech.substack.com%2Fp%2Fwhy-your-ai-agent-keeps-getting-company">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[AI Doesn’t Need to Write an Essay Every Time: Jev, Laya, and LLMs]]></title><description><![CDATA[When software needs one judgment, why ask a model to write a paragraph first?]]></description><link>https://zerofuturetech.substack.com/p/ai-doesnt-need-to-write-an-essay</link><guid isPermaLink="false">https://zerofuturetech.substack.com/p/ai-doesnt-need-to-write-an-essay</guid><dc:creator><![CDATA[zerofuturetech]]></dc:creator><pubDate>Sun, 27 Sep 2026 12:01:47 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21gCmw%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F62d4aaa6-f0fc-47a5-b806-2dc51b415aa0_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="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21gCmw%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F62d4aaa6-f0fc-47a5-b806-2dc51b415aa0_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gCmw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62d4aaa6-f0fc-47a5-b806-2dc51b415aa0_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!gCmw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62d4aaa6-f0fc-47a5-b806-2dc51b415aa0_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!gCmw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62d4aaa6-f0fc-47a5-b806-2dc51b415aa0_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!gCmw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62d4aaa6-f0fc-47a5-b806-2dc51b415aa0_1672x941.png 1456w" sizes="100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21gCmw%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F62d4aaa6-f0fc-47a5-b806-2dc51b415aa0_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/62d4aaa6-f0fc-47a5-b806-2dc51b415aa0_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;:886963,&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://zerofuturetech.substack.com/i/217629212?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62d4aaa6-f0fc-47a5-b806-2dc51b415aa0_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_!gCmw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62d4aaa6-f0fc-47a5-b806-2dc51b415aa0_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!gCmw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62d4aaa6-f0fc-47a5-b806-2dc51b415aa0_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!gCmw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62d4aaa6-f0fc-47a5-b806-2dc51b415aa0_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!gCmw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62d4aaa6-f0fc-47a5-b806-2dc51b415aa0_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>Welcome to my newsletter. Here is <em>ZeroFutureTech</em>&#12290;I will share what I learned, researched and did in AI-related domain. Welcome to follow my <a href="iframe.php?url=https%3A%2F%2Fx.com%2Fjingwangtalk">X</a>.</p><p>Associated with this newsletter, I posted my video on Youtube (Note it is Chinese). Welcome to watch it.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://zerofuturetech.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">zerofuturetech's newsletter is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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 id="youtube2-AgB74ywupwU" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;AgB74ywupwU&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="iframe.php?url=https%3A%2F%2Fwww.youtube-nocookie.com%2Fembed%2FAgB74ywupwU%3Frel%3D0%26amp%3Bautoplay%3D0%26amp%3Bshowinfo%3D0%26amp%3Benablejsapi%3D0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>We have learned to think of AI as a chat partner that writes, explains, and answers questions. But many software workflows do not need a polished response. They need a decision: Which team owns this email? Is the customer asking for a refund? Should this alert be escalated now? In many cases, the decision model can make that first call, then hand selected cases to a conventional LLM when a written explanation or reply is actually needed.</p><p>Jev and Laya explore a different interface. Define the question and its allowed answers first; then have the model return a judgment the application can use directly. The appeal is not simply that the answer is shorter. It is that software can use the result to route the work immediately&#8212;and call a generative model only for the cases that need language, explanation, or broader reasoning.</p><p>That does not make conventional large language models (LLMs) obsolete. Writing, explanation, open-ended questions, and multi-step reasoning remain generative models&#8217; strengths. The more useful question is: does every AI call in an application need a model that can write an essay?</p><h2><strong>Start with what the application receives</strong></h2><p>A conventional LLM usually starts with text and a prompt, predicts the next token one step at a time, and produces a string. You can ask for JSON:</p><pre><code><code>{"team": "billing", "urgent": true}</code></code></pre><p>The application still has work to do: parse the JSON, check that fields are present, confirm <code>team</code> is allowed, and decide whether the semantic judgment is trustworthy. Even valid JSON can contain a wrong value. Function calling or JSON mode can improve the output format; they do not automatically eliminate mistakes in meaning.</p><p>A typed decision model takes a state&#8212;the context needed to make a judgment&#8212;and questions whose answer spaces are defined in advance. A department might be limited to <code>billing</code>, <code>technical</code>, and <code>sales</code>; urgency might be scored as &#8220;can wait,&#8221; &#8220;this week,&#8221; or &#8220;today.&#8221; The model returns a typed result such as Choice, Score, or Noul, which the application can pass into its next rule.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21PEWX%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F00f0c5aa-fc4a-407c-aeaa-a37a4526b3e0_1600x900.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PEWX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00f0c5aa-fc4a-407c-aeaa-a37a4526b3e0_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!PEWX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00f0c5aa-fc4a-407c-aeaa-a37a4526b3e0_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!PEWX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00f0c5aa-fc4a-407c-aeaa-a37a4526b3e0_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!PEWX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00f0c5aa-fc4a-407c-aeaa-a37a4526b3e0_1600x900.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21PEWX%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F00f0c5aa-fc4a-407c-aeaa-a37a4526b3e0_1600x900.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/00f0c5aa-fc4a-407c-aeaa-a37a4526b3e0_1600x900.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;:145214,&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://zerofuturetech.substack.com/i/217629212?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00f0c5aa-fc4a-407c-aeaa-a37a4526b3e0_1600x900.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_!PEWX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00f0c5aa-fc4a-407c-aeaa-a37a4526b3e0_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!PEWX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00f0c5aa-fc4a-407c-aeaa-a37a4526b3e0_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!PEWX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00f0c5aa-fc4a-407c-aeaa-a37a4526b3e0_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!PEWX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00f0c5aa-fc4a-407c-aeaa-a37a4526b3e0_1600x900.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 key difference in the diagram is not which model is &#8220;smarter.&#8221; It is which output contract fits the job. A conventional LLM has a broad answer space: it can explain, expand, and handle questions nobody anticipated. The trade-off is that the application must parse the text and check its content. Typed decisions narrow the answer space, making results easier for software to consume. The trade-off is that they are not designed for free-form writing or open-ended exploration.</p><p>TaskNatural fitWhyWrite a reply, explain a policy, summarize a long documentGenerative LLMThe output needs natural language, not just one labelRoute, score, or classify within a fixed setJev / Laya and similar typed modelsThe software needs explicit fields and candidate valuesScreen first, explain laterA combinationA decision model filters; a generative model handles the few complex cases</p><h3><strong>A useful pattern: decide first, generate second</strong></h3><p>A support system can first ask a typed model to identify the intent, urgency, and relevant team. Straightforward cases go to the right queue. If the customer needs a tailored explanation, or if the issue depends on several policy details, the application can pass the relevant context to a conventional LLM to draft a reply. Uncertain or high-impact cases can go to a person instead.</p><p>This is a routing pattern, not a promise that every combined system will be cheaper or faster. The benefit depends on how many cases can be resolved at the decision stage, how often the larger model is still called, and the cost of human review. Measure the whole workflow, including both model calls and review time.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21M4Uo%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F51661490-e713-4f16-adf9-81da7ca4a51d_1600x900.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!M4Uo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51661490-e713-4f16-adf9-81da7ca4a51d_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!M4Uo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51661490-e713-4f16-adf9-81da7ca4a51d_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!M4Uo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51661490-e713-4f16-adf9-81da7ca4a51d_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!M4Uo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51661490-e713-4f16-adf9-81da7ca4a51d_1600x900.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21M4Uo%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F51661490-e713-4f16-adf9-81da7ca4a51d_1600x900.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/51661490-e713-4f16-adf9-81da7ca4a51d_1600x900.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;:155128,&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://zerofuturetech.substack.com/i/217629212?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51661490-e713-4f16-adf9-81da7ca4a51d_1600x900.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_!M4Uo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51661490-e713-4f16-adf9-81da7ca4a51d_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!M4Uo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51661490-e713-4f16-adf9-81da7ca4a51d_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!M4Uo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51661490-e713-4f16-adf9-81da7ca4a51d_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!M4Uo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51661490-e713-4f16-adf9-81da7ca4a51d_1600x900.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><strong>What do Choice, Score, and Noul mean?</strong></h2><p>The names sound specialized, but they map to familiar business questions:</p><ul><li><p><strong>Choice</strong> picks from a defined set. For example, should a ticket go to billing, technical support, or sales?</p></li><li><p><strong>Score</strong> rates something on a defined scale. For example, is the customer calm, frustrated, or very angry?</p></li><li><p><strong>Noul</strong> estimates the probability that a statement is true. For example, &#8220;Did the customer request a refund?&#8221;</p></li></ul><p>One request can include several independent questions about the same state. The application does not need to ask the model to write a long answer, then extract intent, sentiment, and risk from it. But &#8220;several questions can be asked together&#8221; is different from &#8220;the model reasons from each answer into the next.&#8221; The research summary says Laya handles multiple questions in one forward pass. That does not mean every model uses the same mechanism, or that well-written questions guarantee correct answers.</p><h2><strong>Inside Laya: how text becomes a typed answer</strong></h2><p>Laya&#8217;s public model card describes a ModernBERT-large encoder and a decision head. It helps to picture these as a pipeline from context to candidate answers:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21HH1t%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F898dc076-1faa-4a2a-9910-3221ef5a8c9b_1600x900.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HH1t!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F898dc076-1faa-4a2a-9910-3221ef5a8c9b_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!HH1t!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F898dc076-1faa-4a2a-9910-3221ef5a8c9b_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!HH1t!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F898dc076-1faa-4a2a-9910-3221ef5a8c9b_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!HH1t!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F898dc076-1faa-4a2a-9910-3221ef5a8c9b_1600x900.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21HH1t%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F898dc076-1faa-4a2a-9910-3221ef5a8c9b_1600x900.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/898dc076-1faa-4a2a-9910-3221ef5a8c9b_1600x900.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;:138461,&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://zerofuturetech.substack.com/i/217629212?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F898dc076-1faa-4a2a-9910-3221ef5a8c9b_1600x900.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_!HH1t!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F898dc076-1faa-4a2a-9910-3221ef5a8c9b_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!HH1t!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F898dc076-1faa-4a2a-9910-3221ef5a8c9b_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!HH1t!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F898dc076-1faa-4a2a-9910-3221ef5a8c9b_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!HH1t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F898dc076-1faa-4a2a-9910-3221ef5a8c9b_1600x900.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. The input is a state plus a question definition</strong></h3><p>A state can be an email, support ticket, or business record in JSON. Context quality matters as much as the question: if the model sees only &#8220;refund this&#8221; but not the transaction, relevant policy, or earlier messages, it has little basis for a useful judgment. Missing context is not something a decision head can guess reliably. The developer also defines what each question asks, which answers are allowed, and what a score scale means. The candidate set is part of the business interface. If a ticket could be about billing, technical support, sales, or something else, leaving out &#8220;other&#8221; for convenience silently excludes a real possibility.</p><h3><strong>2. ModernBERT encodes the context</strong></h3><p>BERT-style encoders read context in both directions: when processing a word, they can use the words before and after it. Given &#8220;I don&#8217;t want a refund; I just want to know why I was charged again,&#8221; a model can consider both the negation and the explanation, rather than treating one keyword as the whole conclusion. The encoder compresses the text into contextual representations for the decision head.</p><p>This differs from the main path in a common autoregressive generator, which predicts the next token and continues until it has produced a string. Laya&#8217;s model card describes a non-autoregressive decision model; it does not need to generate free-form text token by token. This is a description of architecture and output format, not a claim that every BERT model is automatically more accurate or faster.</p><h3><strong>3. The decision head scores the allowed answers</strong></h3><p>The decision head uses the encoded representation to score the allowed answers for each question. For &#8220;Which team owns this?&#8221; it can compare <code>billing</code>, <code>technical</code>, and <code>sales</code>. For &#8220;Did the customer request a refund?&#8221; the answer space might be yes and no. The summary says Laya can handle multiple questions in one forward pass, which can put a set of related judgments into one model call.</p><h3><strong>4. Softmax turns scores into a probability distribution</strong></h3><p>For a multiple-choice question, the candidate scores can be converted by softmax into probabilities that sum to one. That normalization is a mathematical step; it does not by itself make the probabilities calibrated. A score of 0.7 describes the model&#8217;s relative assessment of the options. It does not automatically mean the model will be right 70% of the time on your company&#8217;s data. Calibration requires a separate check against labeled examples.</p><p>The application then decides what happens: automatically route a high-confidence, low-risk ticket; ask a follow-up or send it to a person if the signal is uncertain; and check transaction records, policies, and permissions before any action involving refunds, payments, or access changes.</p><h2><strong>Jev and Laya: similar goals, different deployment paths</strong></h2><p>Both systems make decisions for defined questions, and both publicly refer to RLCD (Reinforcement Learning for Calibrated Decisions). The practical distinction a team encounters first is how each model is delivered:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21sPUj%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F1889ae68-2887-41ed-839d-c2bfa344776f_1392x618.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sPUj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1889ae68-2887-41ed-839d-c2bfa344776f_1392x618.png 424w, https://substackcdn.com/image/fetch/$s_!sPUj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1889ae68-2887-41ed-839d-c2bfa344776f_1392x618.png 848w, https://substackcdn.com/image/fetch/$s_!sPUj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1889ae68-2887-41ed-839d-c2bfa344776f_1392x618.png 1272w, https://substackcdn.com/image/fetch/$s_!sPUj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1889ae68-2887-41ed-839d-c2bfa344776f_1392x618.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21sPUj%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F1889ae68-2887-41ed-839d-c2bfa344776f_1392x618.png" width="1392" height="618" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1889ae68-2887-41ed-839d-c2bfa344776f_1392x618.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:618,&quot;width&quot;:1392,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:137491,&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://zerofuturetech.substack.com/i/217629212?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F202c79ba-2dce-4431-9e78-e2e5a8157386_1392x742.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_!sPUj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1889ae68-2887-41ed-839d-c2bfa344776f_1392x618.png 424w, https://substackcdn.com/image/fetch/$s_!sPUj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1889ae68-2887-41ed-839d-c2bfa344776f_1392x618.png 848w, https://substackcdn.com/image/fetch/$s_!sPUj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1889ae68-2887-41ed-839d-c2bfa344776f_1392x618.png 1272w, https://substackcdn.com/image/fetch/$s_!sPUj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1889ae68-2887-41ed-839d-c2bfa344776f_1392x618.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 distinction is not &#8220;Jev has RLCD and Laya does not.&#8221; Nor should we infer identical internals just because both can produce several decisions. TypeSafe&#8217;s public description mentions a parallel sampler for Jev; Laya&#8217;s model card describes non-autoregressive processing of multiple questions in one forward pass. The available research summary does not establish that the two use the same sampling or computation mechanism.</p><h2><strong>RLCD tells us the target, not the complete training recipe</strong></h2><p>TypeSafe describes RLCD as training for decisions with calibrated probabilities, rather than optimizing for text that people prefer to read. Calibration can be explained this way: across a large group of predictions assigned confidence around 0.8, roughly 80% should be correct over time.</p><p>That is not quite the same as saying &#8220;this particular answer with a score of 0.8 has an 80% chance of being right.&#8221; An individual prediction can be wrong. Calibration can also change with the customer population, language, workflow, or candidate options. Probability is a measurable signal, not a product guarantee.</p><p>The research summary also notes that public materials do not disclose a complete, reproducible RLCD recipe: details such as the exact reward function, training data, feedback sources, policy-optimization algorithm, and calibration loss are not specified. We can explain the stated training objective; we should not present undisclosed mechanics as established fact.</p><h2><strong>Put it into a duplicate-charge ticket</strong></h2><p>A customer writes: &#8220;I was charged twice. Refund the extra payment today or I&#8217;m cancelling my subscription.&#8221; The application can use the message and account context as its state, then define four questions:</p><ol><li><p>Which team owns the issue? Options: billing, technical, sales, other.</p></li><li><p>Did the customer request a refund? Yes, no, or unclear.</p></li><li><p>How urgent is it? Rate it as can wait, this week, or today.</p></li><li><p>Is there a cancellation or churn risk? Yes or no.</p></li></ol><p>The program&#8212;not the model&#8212;then applies the business rules. If billing is the strongest department prediction and urgency is high, move the ticket up the queue. If the refund request is unclear, ask the customer to confirm. If the model is uncertain, route it to a person. Even a clear &#8220;yes&#8221; to the refund question still requires checking the transaction, refund policy, and approval permissions.</p><p>A team might use a top-choice probability above 0.5 as an initial review rule for a three-way routing decision: below that, none of the options is a strong enough signal, so a person checks it. Treat 0.5 as an example to test, not a universal threshold. The right cutoff depends on the model&#8217;s calibration, the available options, and the cost of sending a case to the wrong place. A high-stakes action may need a much stricter policy&#8212;or no automatic execution at all.</p><p>That is the boundary of typed decisions: they help software read useful signals from language. They do not own authority or replace verifiable business facts.</p><h2><strong>How to evaluate whether the probabilities and accuracy are useful</strong></h2><p>Start with a set of historical records and have people label the right outcomes. Keep question wording and candidate options fixed. Record the answer, every candidate probability, latency, and any failure or fallback. Then measure at least:</p><ul><li><p><strong>Classification accuracy:</strong> overall and by category. Frequent categories should not hide errors in a less common but important one.</p></li><li><p><strong>Calibration:</strong> group predictions by confidence range and compare the average probability with the actual accuracy in each group.</p></li><li><p><strong>Human-review rate:</strong> after low-confidence cases are escalated, is the remaining workload manageable?</p></li><li><p><strong>Cost of errors:</strong> what does a missed urgent complaint, a misrouted ticket, or an incorrect refund cost?</p></li><li><p><strong>Workflow impact:</strong> did latency, handling cost, backlog, or customer wait time actually improve?</p></li></ul><p>Set thresholds according to the cost of errors. Ticket routing may tolerate a lower bar than a money movement. Decisions involving funds, compliance, or permissions deserve additional checks. At first, use the model to recommend rather than execute. Expand automation only after historical evaluation and live monitoring support it.</p><h2><strong>What my small routing experiment did&#8212;and did not&#8212;show</strong></h2><p>I built a simple script to explore model routing: given a task, choose which model from a candidate list should handle it. I tried three kinds of work&#8212;writing a newsletter, designing a TypeSafe introduction page, and designing a complex multi-agent system&#8212;and compared the Jev API, DeepSeek-Flash through an API, and Laya running locally. I looked at elapsed time, repeatability for the same input and candidate set, and what changed when I changed the candidate list. I did not measure whether the selected model produced the best work.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21c6BO%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F1a2843f8-8862-4412-a5f4-ffeb3bcf10aa_1600x900.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!c6BO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a2843f8-8862-4412-a5f4-ffeb3bcf10aa_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!c6BO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a2843f8-8862-4412-a5f4-ffeb3bcf10aa_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!c6BO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a2843f8-8862-4412-a5f4-ffeb3bcf10aa_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!c6BO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a2843f8-8862-4412-a5f4-ffeb3bcf10aa_1600x900.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21c6BO%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F1a2843f8-8862-4412-a5f4-ffeb3bcf10aa_1600x900.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1a2843f8-8862-4412-a5f4-ffeb3bcf10aa_1600x900.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;:157931,&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://zerofuturetech.substack.com/i/217629212?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a2843f8-8862-4412-a5f4-ffeb3bcf10aa_1600x900.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_!c6BO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a2843f8-8862-4412-a5f4-ffeb3bcf10aa_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!c6BO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a2843f8-8862-4412-a5f4-ffeb3bcf10aa_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!c6BO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a2843f8-8862-4412-a5f4-ffeb3bcf10aa_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!c6BO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a2843f8-8862-4412-a5f4-ffeb3bcf10aa_1600x900.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>Across those three tasks, average elapsed time was about 0.537 seconds for Jev and 4.621 seconds for DeepSeek-Flash. Laya&#8217;s warm local calls averaged about 0.225 seconds; its first call, including model loading, took about 6.453 seconds. Those figures describe this setup, not a general speed ranking. API latency varies with network and server conditions, and a warm local call is not comparable to a cold start.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21k6IJ%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F9279fab3-55c2-4a4c-bbe0-5d96f46da92d_1600x600.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!k6IJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9279fab3-55c2-4a4c-bbe0-5d96f46da92d_1600x600.png 424w, https://substackcdn.com/image/fetch/$s_!k6IJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9279fab3-55c2-4a4c-bbe0-5d96f46da92d_1600x600.png 848w, https://substackcdn.com/image/fetch/$s_!k6IJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9279fab3-55c2-4a4c-bbe0-5d96f46da92d_1600x600.png 1272w, https://substackcdn.com/image/fetch/$s_!k6IJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9279fab3-55c2-4a4c-bbe0-5d96f46da92d_1600x600.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21k6IJ%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F9279fab3-55c2-4a4c-bbe0-5d96f46da92d_1600x600.png" width="1456" height="546" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9279fab3-55c2-4a4c-bbe0-5d96f46da92d_1600x600.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:546,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:116892,&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://zerofuturetech.substack.com/i/217629212?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9279fab3-55c2-4a4c-bbe0-5d96f46da92d_1600x600.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_!k6IJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9279fab3-55c2-4a4c-bbe0-5d96f46da92d_1600x600.png 424w, https://substackcdn.com/image/fetch/$s_!k6IJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9279fab3-55c2-4a4c-bbe0-5d96f46da92d_1600x600.png 848w, https://substackcdn.com/image/fetch/$s_!k6IJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9279fab3-55c2-4a4c-bbe0-5d96f46da92d_1600x600.png 1272w, https://substackcdn.com/image/fetch/$s_!k6IJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9279fab3-55c2-4a4c-bbe0-5d96f46da92d_1600x600.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I then fixed one task&#8212;designing a TypeSafe introduction page&#8212;and ran three rounds for each of three candidate lists containing seven, six, and five models. With each list held constant, Jev picked the same model in all three rounds for all three lists (nine of nine calls). Laya did the same. DeepSeek-Flash matched the repeated choice in eight of nine calls, with one different choice in the five-model list. In this small run, Jev and Laya were more repeatable within a fixed candidate set.</p><p>But repeatability is not the same as invariance to the options. When I changed which models were available, Jev and Laya each selected two different models across the three lists; DeepSeek-Flash selected three. Removing one candidate or adding another changes the choice environment and can change the decision. Three repeats per list are far too few to establish long-term reliability.</p><p>Here is the selection pattern for the fixed webpage-design task. Each entry summarizes three consecutive runs; the one arrow marks the only within-list variation:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21kljA%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Febe56721-08fa-445c-906f-120d1aa05765_1392x500.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kljA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febe56721-08fa-445c-906f-120d1aa05765_1392x500.png 424w, https://substackcdn.com/image/fetch/$s_!kljA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febe56721-08fa-445c-906f-120d1aa05765_1392x500.png 848w, https://substackcdn.com/image/fetch/$s_!kljA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febe56721-08fa-445c-906f-120d1aa05765_1392x500.png 1272w, https://substackcdn.com/image/fetch/$s_!kljA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febe56721-08fa-445c-906f-120d1aa05765_1392x500.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21kljA%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Febe56721-08fa-445c-906f-120d1aa05765_1392x500.png" width="1392" height="500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ebe56721-08fa-445c-906f-120d1aa05765_1392x500.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:1392,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:83152,&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://zerofuturetech.substack.com/i/217629212?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff389203f-2a35-4df1-a45b-f75483eb69b2_1392x546.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_!kljA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febe56721-08fa-445c-906f-120d1aa05765_1392x500.png 424w, https://substackcdn.com/image/fetch/$s_!kljA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febe56721-08fa-445c-906f-120d1aa05765_1392x500.png 848w, https://substackcdn.com/image/fetch/$s_!kljA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febe56721-08fa-445c-906f-120d1aa05765_1392x500.png 1272w, https://substackcdn.com/image/fetch/$s_!kljA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febe56721-08fa-445c-906f-120d1aa05765_1392x500.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 names are the model choices returned by the script, not a human evaluation of which model was actually best. In this small experiment, Jev and Laya repeated their choice within each fixed list, then changed their choice when the list changed. That is useful evidence about repeatability and candidate sensitivity; it is not evidence of routing accuracy.</p><p>The experiment did not record prices, a ground-truth &#8220;right&#8221; model, full probability distributions, or downstream task quality. So it cannot tell us which router is most accurate, capable, or cost-effective. A useful follow-up would preserve every raw selection and probability, track the candidate set and fallback events, and have people rate the work produced by the selected model. Only then could latency be weighed against quality and cost.</p><h2><strong>Choosing the interface for the task&#8212;and validating it with real data</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21AbYv%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fb6b5f0f6-47cd-4f5d-8bb8-7216e65aa496_1600x900.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AbYv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6b5f0f6-47cd-4f5d-8bb8-7216e65aa496_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!AbYv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6b5f0f6-47cd-4f5d-8bb8-7216e65aa496_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!AbYv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6b5f0f6-47cd-4f5d-8bb8-7216e65aa496_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!AbYv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6b5f0f6-47cd-4f5d-8bb8-7216e65aa496_1600x900.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21AbYv%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fb6b5f0f6-47cd-4f5d-8bb8-7216e65aa496_1600x900.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b6b5f0f6-47cd-4f5d-8bb8-7216e65aa496_1600x900.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;:106350,&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://zerofuturetech.substack.com/i/217629212?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6b5f0f6-47cd-4f5d-8bb8-7216e65aa496_1600x900.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_!AbYv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6b5f0f6-47cd-4f5d-8bb8-7216e65aa496_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!AbYv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6b5f0f6-47cd-4f5d-8bb8-7216e65aa496_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!AbYv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6b5f0f6-47cd-4f5d-8bb8-7216e65aa496_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!AbYv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6b5f0f6-47cd-4f5d-8bb8-7216e65aa496_1600x900.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>Jev and Laya make model calls into explicit decision interfaces: give the model a state and questions, and it chooses from a set of candidate answers. Jev is closer to a hosted API; Laya&#8217;s open weights make local deployment and task-specific adaptation more accessible. Conventional LLMs remain a better fit when a task calls for long-form text, explanation, writing, or open-ended reasoning.</p><p>Karpathy&#8217;s comment can be read as a product question: if many software systems need only one good-enough judgment, would a team trade some open-ended generative ability for lower latency and shorter outputs? The answer depends on the real workflow, not just the model page.</p><p>When the task is frequent, the answer space is clearly defined, and errors can be reviewed or rolled back, typed decisions are worth considering. Support-intent routing, retrieval relevance, invoice triage, and alert prioritization all fit that profile.</p><p>For work that requires explaining complex policies, synthesizing evidence across multiple steps, or writing a tactful response, a generative LLM remains a more natural fit. Many systems can combine them: use Jev or Laya to screen a large volume quickly, then send a smaller number of complex or low-confidence cases to a stronger generative model or a person.</p><p>Conventional LLMs are good at making things clear in language; Jev and Laya are designed to give software a predefined judgment it can consume directly. A constrained output shape does not guarantee a correct answer. Measure decision quality in your own workflow and against your own cost of errors.</p><h3><strong>References</strong></h3><ul><li><p><a href="iframe.php?url=https%3A%2F%2Ftypesafe.ai%2Fblog%2Fintroducing-system-one-models-and-jev">TypeSafe: Introducing System One Models &amp; Jev</a></p></li><li><p><a href="iframe.php?url=https%3A%2F%2Fhuggingface.co%2Fconvaiinnovations%2Flaya">Laya model card on Hugging Face</a></p></li><li><p><a href="iframe.php?url=https%3A%2F%2Fx.com%2Fkarpathy%2Fstatus%2F2102124533729955960">Andrej Karpathy on X</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://zerofuturetech.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">zerofuturetech's newsletter is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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[OpenAI’s Agents API Is the Codex Harness Becoming a Product]]></title><description><![CDATA[Subtitle: The API is not primarily a new way to call a model. It is a managed runtime for long-running agents: context, tools, subagents, and a choice of execution environment.]]></description><link>https://zerofuturetech.substack.com/p/openais-agents-api-is-the-codex-harness</link><guid isPermaLink="false">https://zerofuturetech.substack.com/p/openais-agents-api-is-the-codex-harness</guid><dc:creator><![CDATA[zerofuturetech]]></dc:creator><pubDate>Tue, 15 Sep 2026 12:04:14 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe47f1626-5c05-4dbe-9f13-d1b8fe7a8a3e_2000x1500.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to my newsletter. Here is <em>ZeroFutureTech</em>&#12290;I will share what I learned, researched and did in AI-related domain. Welcome to follow my <a href="iframe.php?url=https%3A%2F%2Fx.com%2Fjingwangtalk">X</a>.</p><p>Associated with this newsletter, I posted my video on Youtube (Note it is Chinese). Welcome to watch it.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://zerofuturetech.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">zerofuturetech's newsletter is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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 id="youtube2-LKQCfZs_0bM" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;LKQCfZs_0bM&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="iframe.php?url=https%3A%2F%2Fwww.youtube-nocookie.com%2Fembed%2FLKQCfZs_0bM%3Frel%3D0%26amp%3Bautoplay%3D0%26amp%3Bshowinfo%3D0%26amp%3Benablejsapi%3D0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Most teams can build an agent demo in an afternoon. The model gets a prompt, calls a few tools, and returns something plausible.</p><p>Production is where the easy story ends.</p><p>An agent that investigates an outage, works through a codebase, or processes a queue for hours has to carry state forward. It has to find the right tool among a large internal catalog, recover after partial failure, keep credentials and files in the right environment, and avoid asking a model to do work that ordinary code could perform more cheaply and reliably.</p><p>That collection of concerns is the <strong>agent harness</strong>. OpenAI&#8217;s new <a href="iframe.php?url=https%3A%2F%2Fopenai.com%2Findex%2Fintroducing-the-agents-api%2F">Agents API</a> puts that harness&#8212;the one behind Codex&#8212;behind a managed API.</p><p>The important shift is simple: OpenAI is no longer just offering the engine. It is offering more of the vehicle.</p><h2><strong>What the Agents API actually provides</strong></h2><p>The basic API shape is deliberately compact. A developer specifies a task, model, tools, knowledge resources, and an execution environment. OpenAI operates the loop that coordinates model calls, tool use, context, and subagents.</p><p>That does not make application design disappear. It moves a particular layer of it. Instead of every team independently maintaining prompt loops, tool-selection glue, context summaries, and orchestration code, they can start with an evolving managed harness.</p><p>This is why &#8220;another API&#8221; is the wrong mental model. A model API gives you inference. The Agents API gives you a runtime for an agent that can continue working across a complex task.</p><p>The distinction matters because a capable model is necessary but insufficient. A model can reason about a deployment failure. A working agent also needs access to logs, metrics, files, a safe place to run code, a record of what it has already checked, and a way to divide independent work without losing the thread.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21ldjf%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F3a2935a7-c816-49e7-8890-413f741dcf17_557x313.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ldjf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a2935a7-c816-49e7-8890-413f741dcf17_557x313.png 424w, https://substackcdn.com/image/fetch/$s_!ldjf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a2935a7-c816-49e7-8890-413f741dcf17_557x313.png 848w, https://substackcdn.com/image/fetch/$s_!ldjf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a2935a7-c816-49e7-8890-413f741dcf17_557x313.png 1272w, https://substackcdn.com/image/fetch/$s_!ldjf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a2935a7-c816-49e7-8890-413f741dcf17_557x313.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21ldjf%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F3a2935a7-c816-49e7-8890-413f741dcf17_557x313.png" width="557" height="313" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3a2935a7-c816-49e7-8890-413f741dcf17_557x313.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:313,&quot;width&quot;:557,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:169658,&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://zerofuturetech.substack.com/i/215677815?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a2935a7-c816-49e7-8890-413f741dcf17_557x313.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_!ldjf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a2935a7-c816-49e7-8890-413f741dcf17_557x313.png 424w, https://substackcdn.com/image/fetch/$s_!ldjf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a2935a7-c816-49e7-8890-413f741dcf17_557x313.png 848w, https://substackcdn.com/image/fetch/$s_!ldjf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a2935a7-c816-49e7-8890-413f741dcf17_557x313.png 1272w, https://substackcdn.com/image/fetch/$s_!ldjf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a2935a7-c816-49e7-8890-413f741dcf17_557x313.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><strong>The three layers worth separating</strong></h2><p>It helps to draw a sharp line between three things that are often thrown together under the word &#8220;agent.&#8221;</p><p>LayerJobExample responsibilityModelReasoning and generationDecide which hypothesis best explains an incidentHarnessCoordination and continuityMaintain context, select tools, delegate work, retrySandboxExecutionRun code, store files, install packages, access compute</p><p>OpenAI hosts the harness. Developers can choose where the agent executes: OpenAI-hosted sandboxes, their own infrastructure, or supported ecosystem providers. The separation is more than architectural neatness.</p><p>For an enterprise, it can mean keeping data locality, network controls, secrets, and execution policy inside its own boundary while delegating the general-purpose mechanics of agent coordination. The harness handles how work proceeds; the environment determines where work is allowed to happen.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21jx1e%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F28e18028-c66a-4230-997d-b759c85fa5e0_557x313.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jx1e!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28e18028-c66a-4230-997d-b759c85fa5e0_557x313.png 424w, https://substackcdn.com/image/fetch/$s_!jx1e!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28e18028-c66a-4230-997d-b759c85fa5e0_557x313.png 848w, https://substackcdn.com/image/fetch/$s_!jx1e!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28e18028-c66a-4230-997d-b759c85fa5e0_557x313.png 1272w, https://substackcdn.com/image/fetch/$s_!jx1e!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28e18028-c66a-4230-997d-b759c85fa5e0_557x313.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21jx1e%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F28e18028-c66a-4230-997d-b759c85fa5e0_557x313.png" width="557" height="313" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/28e18028-c66a-4230-997d-b759c85fa5e0_557x313.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:313,&quot;width&quot;:557,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:161296,&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://zerofuturetech.substack.com/i/215677815?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28e18028-c66a-4230-997d-b759c85fa5e0_557x313.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_!jx1e!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28e18028-c66a-4230-997d-b759c85fa5e0_557x313.png 424w, https://substackcdn.com/image/fetch/$s_!jx1e!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28e18028-c66a-4230-997d-b759c85fa5e0_557x313.png 848w, https://substackcdn.com/image/fetch/$s_!jx1e!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28e18028-c66a-4230-997d-b759c85fa5e0_557x313.png 1272w, https://substackcdn.com/image/fetch/$s_!jx1e!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28e18028-c66a-4230-997d-b759c85fa5e0_557x313.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><strong>Long-running agents need context management, not a longer prompt</strong></h2><p>Context is the first place a real agent system becomes messy.</p><p>As a session investigates, reads files, calls tools, writes outputs, and revises its plan, its working history grows. Eventually it approaches the model&#8217;s context limit. At that point the system has to decide what to retain, what to summarize, and how to restore the important state on the other side of a context window.</p><p>Teams have built their own summary and checkpoint systems for this problem for years. The Agents API introduces <strong>context compaction</strong>: it automatically compresses earlier context as a session nears the limit, preserving information needed to continue.</p><p>That does not remove the need for good state design. Critical business facts, approvals, and durable artifacts should still live in systems of record, not only in a generated summary. But it makes a common piece of long-running-agent plumbing a platform concern rather than a bespoke project in every codebase.</p><p>The practical outcome is important: an agent can span multiple context windows without the application author hand-rolling compaction logic before they can even test the workflow.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21HYv2%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F17dfd068-eb78-43eb-a859-52a8f08e3b1f_558x314.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HYv2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17dfd068-eb78-43eb-a859-52a8f08e3b1f_558x314.png 424w, https://substackcdn.com/image/fetch/$s_!HYv2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17dfd068-eb78-43eb-a859-52a8f08e3b1f_558x314.png 848w, https://substackcdn.com/image/fetch/$s_!HYv2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17dfd068-eb78-43eb-a859-52a8f08e3b1f_558x314.png 1272w, https://substackcdn.com/image/fetch/$s_!HYv2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17dfd068-eb78-43eb-a859-52a8f08e3b1f_558x314.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21HYv2%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F17dfd068-eb78-43eb-a859-52a8f08e3b1f_558x314.png" width="558" height="314" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/17dfd068-eb78-43eb-a859-52a8f08e3b1f_558x314.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:314,&quot;width&quot;:558,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:162401,&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://zerofuturetech.substack.com/i/215677815?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17dfd068-eb78-43eb-a859-52a8f08e3b1f_558x314.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_!HYv2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17dfd068-eb78-43eb-a859-52a8f08e3b1f_558x314.png 424w, https://substackcdn.com/image/fetch/$s_!HYv2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17dfd068-eb78-43eb-a859-52a8f08e3b1f_558x314.png 848w, https://substackcdn.com/image/fetch/$s_!HYv2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17dfd068-eb78-43eb-a859-52a8f08e3b1f_558x314.png 1272w, https://substackcdn.com/image/fetch/$s_!HYv2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17dfd068-eb78-43eb-a859-52a8f08e3b1f_558x314.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><strong>Tool search is a response to the enterprise tool catalog</strong></h2><p>Tool calling was never the whole problem. Tool discovery is.</p><p>An agent with five tools can see every schema in its context. An enterprise agent may face hundreds or thousands of actions distributed across ERP, CRM, observability, finance, knowledge systems, and MCP servers. Stuffing every definition into the prompt wastes tokens, makes selection noisier, and reduces the useful room left for the task itself.</p><p><strong>Tool search</strong> loads relevant tool definitions only when they are needed. For a spike in 5xx errors, the agent might surface log search, deployment history, and metrics tools first&#8212;not the entire company catalog.</p><p>This changes the design question from &#8220;Can our agent call tools?&#8221; to &#8220;Can it find the right safe tool, with the right scope, at the moment it needs it?&#8221; That is a much more useful question for enterprise AI.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21hI8o%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F86d4eb66-9d02-4cea-9a3a-4e5f64aee0df_557x313.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hI8o!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86d4eb66-9d02-4cea-9a3a-4e5f64aee0df_557x313.png 424w, https://substackcdn.com/image/fetch/$s_!hI8o!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86d4eb66-9d02-4cea-9a3a-4e5f64aee0df_557x313.png 848w, https://substackcdn.com/image/fetch/$s_!hI8o!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86d4eb66-9d02-4cea-9a3a-4e5f64aee0df_557x313.png 1272w, https://substackcdn.com/image/fetch/$s_!hI8o!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86d4eb66-9d02-4cea-9a3a-4e5f64aee0df_557x313.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21hI8o%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F86d4eb66-9d02-4cea-9a3a-4e5f64aee0df_557x313.png" width="557" height="313" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/86d4eb66-9d02-4cea-9a3a-4e5f64aee0df_557x313.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:313,&quot;width&quot;:557,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:146104,&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://zerofuturetech.substack.com/i/215677815?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86d4eb66-9d02-4cea-9a3a-4e5f64aee0df_557x313.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_!hI8o!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86d4eb66-9d02-4cea-9a3a-4e5f64aee0df_557x313.png 424w, https://substackcdn.com/image/fetch/$s_!hI8o!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86d4eb66-9d02-4cea-9a3a-4e5f64aee0df_557x313.png 848w, https://substackcdn.com/image/fetch/$s_!hI8o!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86d4eb66-9d02-4cea-9a3a-4e5f64aee0df_557x313.png 1272w, https://substackcdn.com/image/fetch/$s_!hI8o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86d4eb66-9d02-4cea-9a3a-4e5f64aee0df_557x313.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><strong>Use code for data movement; reserve the model for judgment</strong></h2><p>The second efficiency lever is <strong>programmatic tool calling</strong>. Rather than forcing a model through a serial pattern&#8212;reason, call a tool, reason again, call another tool&#8212;the agent can call tools in parallel, chain related operations, and filter or combine results in code before returning the useful subset to the model.</p><p>Consider 100,000 log lines. Asking a model to inspect all of them is a poor system design. Filter by time window, group error signatures, correlate them with deployments, and return the twenty anomalies that deserve interpretation. The model then does the work it is good at: weighing competing explanations and proposing a next move.</p><p>The operating rule is straightforward:</p><ul><li><p>Let the model make judgments and trade-offs.</p></li><li><p>Let code filter, calculate, aggregate, and move data.</p></li><li><p>Let deterministic tools execute governed business actions.</p></li></ul><p>Besides cost and latency, this division makes systems easier to inspect. A human can understand a query, a filter, and an approval policy far more easily than an opaque chain of model turns.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21mKPI%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F7234ab41-dfa2-47f3-889a-fa44e716cb6e_557x313.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mKPI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7234ab41-dfa2-47f3-889a-fa44e716cb6e_557x313.png 424w, https://substackcdn.com/image/fetch/$s_!mKPI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7234ab41-dfa2-47f3-889a-fa44e716cb6e_557x313.png 848w, https://substackcdn.com/image/fetch/$s_!mKPI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7234ab41-dfa2-47f3-889a-fa44e716cb6e_557x313.png 1272w, https://substackcdn.com/image/fetch/$s_!mKPI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7234ab41-dfa2-47f3-889a-fa44e716cb6e_557x313.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21mKPI%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F7234ab41-dfa2-47f3-889a-fa44e716cb6e_557x313.png" width="557" height="313" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7234ab41-dfa2-47f3-889a-fa44e716cb6e_557x313.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:313,&quot;width&quot;:557,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:164083,&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://zerofuturetech.substack.com/i/215677815?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7234ab41-dfa2-47f3-889a-fa44e716cb6e_557x313.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_!mKPI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7234ab41-dfa2-47f3-889a-fa44e716cb6e_557x313.png 424w, https://substackcdn.com/image/fetch/$s_!mKPI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7234ab41-dfa2-47f3-889a-fa44e716cb6e_557x313.png 848w, https://substackcdn.com/image/fetch/$s_!mKPI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7234ab41-dfa2-47f3-889a-fa44e716cb6e_557x313.png 1272w, https://substackcdn.com/image/fetch/$s_!mKPI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7234ab41-dfa2-47f3-889a-fa44e716cb6e_557x313.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><strong>Subagents are becoming a runtime primitive</strong></h2><p>The API also provides native multi-agent support. A primary agent can split an incident investigation into independent tracks: one agent checks recent deployments, another examines error logs, and a third investigates dependencies. Each keeps its own context; the primary agent brings the evidence together.</p><p>Frameworks such as LangGraph and AutoGen made this style of orchestration familiar. The significance here is not that every workflow should now use a swarm. Splitting work creates coordination overhead, and poorly scoped subagents can multiply confusion. The point is that subagent coordination is moving from framework-level assembly toward a managed runtime feature.</p><p>Use it when tasks are genuinely separable, results can be checked, and the fan-out has a clear budget. Do not use it as decoration.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21ruAQ%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F6af01a9a-e1b6-4339-81d2-536086a1cd04_558x314.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ruAQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6af01a9a-e1b6-4339-81d2-536086a1cd04_558x314.png 424w, https://substackcdn.com/image/fetch/$s_!ruAQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6af01a9a-e1b6-4339-81d2-536086a1cd04_558x314.png 848w, https://substackcdn.com/image/fetch/$s_!ruAQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6af01a9a-e1b6-4339-81d2-536086a1cd04_558x314.png 1272w, https://substackcdn.com/image/fetch/$s_!ruAQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6af01a9a-e1b6-4339-81d2-536086a1cd04_558x314.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21ruAQ%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F6af01a9a-e1b6-4339-81d2-536086a1cd04_558x314.png" width="558" height="314" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6af01a9a-e1b6-4339-81d2-536086a1cd04_558x314.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:314,&quot;width&quot;:558,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:154148,&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://zerofuturetech.substack.com/i/215677815?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6af01a9a-e1b6-4339-81d2-536086a1cd04_558x314.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_!ruAQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6af01a9a-e1b6-4339-81d2-536086a1cd04_558x314.png 424w, https://substackcdn.com/image/fetch/$s_!ruAQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6af01a9a-e1b6-4339-81d2-536086a1cd04_558x314.png 848w, https://substackcdn.com/image/fetch/$s_!ruAQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6af01a9a-e1b6-4339-81d2-536086a1cd04_558x314.png 1272w, https://substackcdn.com/image/fetch/$s_!ruAQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6af01a9a-e1b6-4339-81d2-536086a1cd04_558x314.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><strong>Does this make agent frameworks obsolete?</strong></h2><p>No. It does, however, move the boundary of what is worth building yourself.</p><p>Generic agent infrastructure is steadily becoming part of model platforms: tool calling, web and file search, computer use, context management, long-running sessions, tool discovery, subagent orchestration, and sandbox integration. The return on recreating every one of those primitives will shrink for many teams.</p><p>The work that remains stubbornly application-specific is more consequential:</p><ul><li><p>the business objects and vocabulary the agent must understand;</p></li><li><p>the quality, ownership, and freshness of the data it can use;</p></li><li><p>the actions it may take and the permissions around them;</p></li><li><p>approval gates, audit trails, evaluation, and recovery paths;</p></li><li><p>the product experience for the person who has to trust the result.</p></li></ul><p>That is where durable differentiation lives. Not in having a more elaborate loop around a model, but in encoding a company&#8217;s real operating context well enough that the agent can act safely within it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21csri%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fc6205f2c-9806-4af2-b80c-c2a9d82a1251_557x313.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!csri!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6205f2c-9806-4af2-b80c-c2a9d82a1251_557x313.png 424w, https://substackcdn.com/image/fetch/$s_!csri!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6205f2c-9806-4af2-b80c-c2a9d82a1251_557x313.png 848w, https://substackcdn.com/image/fetch/$s_!csri!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6205f2c-9806-4af2-b80c-c2a9d82a1251_557x313.png 1272w, https://substackcdn.com/image/fetch/$s_!csri!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6205f2c-9806-4af2-b80c-c2a9d82a1251_557x313.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21csri%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fc6205f2c-9806-4af2-b80c-c2a9d82a1251_557x313.png" width="557" height="313" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c6205f2c-9806-4af2-b80c-c2a9d82a1251_557x313.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:313,&quot;width&quot;:557,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:185995,&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://zerofuturetech.substack.com/i/215677815?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6205f2c-9806-4af2-b80c-c2a9d82a1251_557x313.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_!csri!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6205f2c-9806-4af2-b80c-c2a9d82a1251_557x313.png 424w, https://substackcdn.com/image/fetch/$s_!csri!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6205f2c-9806-4af2-b80c-c2a9d82a1251_557x313.png 848w, https://substackcdn.com/image/fetch/$s_!csri!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6205f2c-9806-4af2-b80c-c2a9d82a1251_557x313.png 1272w, https://substackcdn.com/image/fetch/$s_!csri!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6205f2c-9806-4af2-b80c-c2a9d82a1251_557x313.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><strong>The architectural question to ask now</strong></h2><p>If you are evaluating the Agents API, start with three questions.</p><p>First: is your workflow long, tool-heavy, or parallel enough to benefit from a managed harness? A short, deterministic workflow may still be better as ordinary software plus a single model call.</p><p>Second: are your tools ready for agent use? A tool catalog needs clear descriptions, narrow permissions, useful error responses, and an explicit approval model. Exposing an internal API is not the same as making it agent-ready.</p><p>Third: what remains uniquely yours after the runtime is managed? The answer should be your data, business semantics, policies, and user experience&#8212;not merely a custom orchestration diagram.</p><p>OpenAI&#8217;s Agents API is currently in public beta. Its deeper signal is already visible: the harness behind an agent is becoming infrastructure. Models remain the engine, but the harness is what keeps the vehicle on the road for the next hundred miles. The destination&#8212;and the guardrails&#8212;are still the application&#8217;s job.</p><div><hr></div><p><strong>Key terms:</strong> OpenAI Agents API, Codex harness, agent harness, long-running agents, context compaction, tool search, programmatic tool calling, multi-agent systems, subagents, sandbox, MCP, enterprise AI agents.</p><p><strong>Sources and further reading:</strong> <a href="iframe.php?url=https%3A%2F%2Fopenai.com%2Findex%2Fintroducing-the-agents-api%2F">OpenAI: Introducing the Agents API</a> &#183; <a href="iframe.php?url=https%3A%2F%2Fdevelopers.openai.com%2Fapi%2Fdocs%2Fguides%2Fagents">Agents API documentation</a> &#183; <a href="iframe.php?url=https%3A%2F%2Fgithub.com%2Fopenai%2Fcodex">Codex harness source code</a></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://zerofuturetech.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">zerofuturetech's newsletter is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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[Anthropic’s 2026 Threat Report: Why Agent Trajectories Are Becoming an AI Security Asset]]></title><description><![CDATA[What illicit distillation means for the flow of prompts, code, reasoning traces, and enterprise data]]></description><link>https://zerofuturetech.substack.com/p/anthropics-2026-threat-report-why</link><guid isPermaLink="false">https://zerofuturetech.substack.com/p/anthropics-2026-threat-report-why</guid><dc:creator><![CDATA[zerofuturetech]]></dc:creator><pubDate>Sun, 13 Sep 2026 12:03:25 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F248c0315-131d-4ab9-841c-d13583d7adaa_2000x1500.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to my newsletter. Here is <em>ZeroFutureTech</em>&#12290;I will share what I learned, researched and did in AI-related domain. Welcome to follow my <a href="iframe.php?url=https%3A%2F%2Fx.com%2Fjingwangtalk">X</a>.</p><p>Associated with this newsletter, I posted my video on Youtube (Note it is Chinese). Welcome to watch it.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://zerofuturetech.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">zerofuturetech's newsletter is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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 id="youtube2-DR4xrrEkBek" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;DR4xrrEkBek&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="iframe.php?url=https%3A%2F%2Fwww.youtube-nocookie.com%2Fembed%2FDR4xrrEkBek%3Frel%3D0%26amp%3Bautoplay%3D0%26amp%3Bshowinfo%3D0%26amp%3Benablejsapi%3D0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>If your team is moving from AI chat to coding agents, research agents, or business automation, the question is no longer just whether an AI system can finish the task. The more important question is: <strong>where do the prompts, code, tool calls, and execution traces created along the way actually go?</strong></p><p>In its September 2026 report, <em>Detecting and countering misuse of AI</em>, Anthropic uses <em>illicit distillation</em> to describe the large-scale, unauthorized, and covert extraction of frontier-model capabilities. The report&#8217;s company-specific attributions and figures are Anthropic&#8217;s allegations and investigation findings; they are not admissions by the named companies or independently verified conclusions. Still, the broader shift is clear: valuable AI assets now extend beyond model weights and training corpora to model behavior and full agent trajectories.</p><h2><strong>The short answer</strong></h2><p><strong>AI security must increasingly protect model behavior, agent trajectories, and user data moving through routing, integration, and reseller layers&#8212;not model weights alone.</strong></p><p>An agent trajectory is the full record of task completion: reading code, choosing tools, editing files, running tests, observing failures, and iterating. The final answer is the outcome. The trajectory is the reusable training and evaluation asset.</p><h2><strong>What does the Anthropic report cover?</strong></h2><p>This is not a report about distillation alone. Anthropic says its September 2026 report brings together cases it identified and disrupted between December 2025 and August 2026 across seven harm areas: cyber operations, influence operations, surveillance, scams and fraud, biological misuse, conventional-weapons development, and illicit distillation.</p><p>The shared theme is the shift from AI as an assistant that offers advice to AI as an agent that can run a task chain. In a conventional copilot interaction, a user asks a question and receives an answer. In an agentic interaction, the user supplies an objective and the system can break down work, call tools, inspect results, revise a plan after failure, and continue.</p><p>That capability increase does not automatically create harm, but it changes the unit of risk. Instead of evaluating one response, teams may need to evaluate a continuously running workflow that can access tools and data and adapt its behavior over time.</p><p>Anthropic notes that the cases it publishes are not intended as typical usage; they are examples of notable or novel activity it observed. The company says it responded to policy-violating activity by banning associated accounts, strengthening monitoring and detection, and, where appropriate, sharing intelligence with industry partners and authorities.</p><h2><strong>Why process data is more valuable than an answer</strong></h2><p>Conventional Q&amp;A data captures a prompt and a response. A coding agent captures the path between them: how it understood the repository, narrowed the problem, chose an action, ran validation, and recovered from error.</p><p>Data typeWhat it capturesValue for training agentsFinal answerThe conclusionLimited; no execution pathReasoning and code stepsWhy a decision was madeHigher; reveals decision patternsFull agent trajectoryHow a complex task was completedHighest; teaches tool use, retries, and verification</p><p>That distinction is the practical core of the report&#8217;s illicit-distillation discussion. The risk is not necessarily a single copied answer. It can be the systematic collection of large volumes of structured capability traces.</p><h2><strong>What risk patterns does the report describe?</strong></h2><p>Anthropic&#8217;s report describes several patterns that should not be collapsed into one issue:</p><ol><li><p><strong>Large-scale capability extraction.</strong> High-volume queries collect reasoning, software-engineering, or complex-agent outputs for later training or evaluation.</p></li><li><p><strong>Request forwarding.</strong> A user may believe they are interacting with one service while the request is routed to another model, creating notice, authorization, and retention concerns.</p></li><li><p><strong>Replay of real sessions.</strong> Real user conversations or coding sessions may be sent to another model for rewriting, scoring, or answer generation, then reused as training material.</p></li><li><p><strong>Agent and reseller chains.</strong> An intermediary can retain high-value human-plus-model interactions and potentially use or distribute them elsewhere.</p></li></ol><p>The first pattern centers on model capability and intellectual-property concerns. The others also raise privacy, confidential-data, supply-chain transparency, and compliance questions.</p><h2><strong>What does an agent trajectory actually contain?</strong></h2><p>Many teams classify the data they send to a model but overlook the execution process itself. In practice, a high-quality agent trajectory can assemble scattered details into a much richer picture of the business:</p><pre><code><code>Task objective &#8594; initial prompt &#8594; retrieved documents or code &#8594; tool-call parameters
&#8594; intermediate reasoning and decisions &#8594; file changes &#8594; tests and errors &#8594; remediation &#8594; final output
</code></code></pre><p>That chain can contain access tokens, directory structure, dependency versions, customer names, business rules, internal URLs, and diagnostic logs. Each fragment may look harmless on its own. Together, they can expose the shape of an entire project.</p><p>Agent observability therefore cannot stop at &#8220;did the task succeed?&#8221; It also needs to answer: what data entered the context, what actions left the controlled environment, and who can access the trajectory again?</p><h2><strong>What should an enterprise do now?</strong></h2><p>Do not wait for a perfect AI data-flow diagram. Start with a focused service inventory.</p><h3><strong>1. Map data movement for every AI service</strong></h3><p>For each model, agent, plugin, and API gateway, document four fields:</p><pre><code><code>Input: prompts, attachments, code, logs, database queries
Processing: model provider, agent framework, tool calls, third-party plugins
Storage: retention period; training, evaluation, or human-review use
Output: answers, code patches, execution logs, agent trajectories</code></code></pre><p>If a team cannot answer whether a code sample crosses a third-party routing layer, it does not yet understand its practical AI boundary.</p><h3><strong>2. Treat agent trajectories as sensitive assets</strong></h3><p>Apply least privilege to agents. Limit accessible repositories, databases, and SaaS tools; isolate secrets and production permissions from task context; and retain auditable tool-call logs. Most importantly, distinguish between recording data for debugging and retaining it indefinitely for training.</p><h3><strong>3. Ask procurement questions that can be verified</strong></h3><p>Do not stop at model quality. Put these questions into vendor reviews and data-processing agreements:</p><ul><li><p>Are prompts, attachments, code, and tool-call logs retained? For how long?</p></li><li><p>Can they be used for training, quality evaluation, or human review? What are the defaults and opt-out controls?</p></li><li><p>Is there model routing, a third-party agent, a reseller, or cross-border processing?</p></li><li><p>Are users clearly notified when a service invokes another model?</p></li><li><p>Are audit logs, regional storage, deletion, and no-training controls available?</p></li></ul><h3><strong>4. Establish a minimum viable agent-governance flow</strong></h3><p>You do not need to begin with a 100-page AI policy. Start by requiring every production agent to pass four gates:</p><ol><li><p><strong>Data classification.</strong> Identify whether it can access source code, personal data, financial information, credentials, or regulated records.</p></li><li><p><strong>Permission boundaries.</strong> Default to read-only access. Treat write actions, email delivery, command execution, and production changes as separately authorized operations.</p></li><li><p><strong>Vendor transparency.</strong> Record the primary model, fallback model, routing provider, plugins, and storage region&#8212;not just the product name.</p></li><li><p><strong>Logging and exit.</strong> Retain the audit data you need, while defining trajectory retention, deletion, and no-training controls.</p></li></ol><p>The goal is not to prevent teams from using agents. It is to make the points where risk enters&#8212;and where it can be cut off&#8212;visible before usage scales.</p><h2><strong>The Real-World Difference</strong></h2><p>AI security used to look like model access control: who can call a model, and who can download its weights.</p><p>It increasingly looks like behavior and data-supply-chain management: who can observe a task process, store an agent trajectory, forward a request to another model, or reuse those records for training.</p><p>For teams using AI to write code, process internal documents, or connect business systems, a full trajectory can reveal much more of the real workflow than a standalone chat response.</p><h2>FAQ</h2><h2><strong>What is illicit distillation?</strong></h2><p>In Anthropic&#8217;s report, it refers to unauthorized, large-scale, covert extraction of another model&#8217;s capabilities for training or improving a separate system. It differs from ordinary model distillation because the relevant questions are authorization, scale, concealment, and the kind of capability being extracted.</p><h2><strong>Why are coding-agent traces particularly sensitive?</strong></h2><p>They can include repository structure, error output, test results, tool calls, and remediation strategies. That makes them both sensitive enterprise context and unusually valuable process data for training agents.</p><h2><strong>What should an individual user remember?</strong></h2><p>Before sharing code, internal documents, or business data with an AI service, ask: <strong>Who am I actually interacting with? Can my data be forwarded? What is retained, and what may be used for training?</strong></p><h2><strong>What&#8217;s Next</strong></h2><p>The next AI competition will not be only about larger models and more GPUs. It will also be about access to high-quality reasoning data, coding trajectories, and agent interactions under legitimate governance. For users, the practical first step is simple: include agent trajectories in existing data classification, access-control, and vendor-review processes.</p><p><em>Primary source: Anthropic, <a href="iframe.php?url=https%3A%2F%2Fwww.anthropic.com%2Fthreat-intelligence-report-september-2026">&#8220;Detecting and countering misuse of AI: September 2026&#8221;</a>. Company-specific claims and traffic figures in this article are reported as Anthropic&#8217;s investigation findings and allegations, not as independently established facts.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://zerofuturetech.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">zerofuturetech's newsletter is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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[Function, Workflow, or Agent? How Enterprises Actually Choose]]></title><description><![CDATA[A practical field guide for decision-makers and engineers &#8212; told through a travel-expense form, unpacking semantic uncertainty, path uncertainty, and the risk constraint]]></description><link>https://zerofuturetech.substack.com/p/function-workflow-or-agent-how-enterprises</link><guid isPermaLink="false">https://zerofuturetech.substack.com/p/function-workflow-or-agent-how-enterprises</guid><dc:creator><![CDATA[zerofuturetech]]></dc:creator><pubDate>Tue, 08 Sep 2026 12:02:19 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b5d6f7c-e254-4c4d-b1d4-8c4c981057ba_2000x1500.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to my newsletter. Here is <em>ZeroFutureTech</em>&#12290;I will share what I learned, researched and did in AI-related domain. Welcome to follow my <a href="iframe.php?url=https%3A%2F%2Fx.com%2Fjingwangtalk">X</a>.</p><p>Associated with this newsletter, I posted my video on Youtube (Note it is Chinese). Welcome to watch it.</p><div id="youtube2-MxfyKezBwI0" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;MxfyKezBwI0&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="iframe.php?url=https%3A%2F%2Fwww.youtube-nocookie.com%2Fembed%2FMxfyKezBwI0%3Frel%3D0%26amp%3Bautoplay%3D0%26amp%3Bshowinfo%3D0%26amp%3Benablejsapi%3D0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><blockquote><p>A practical field guide for decision-makers and engineers &#8212; told through a travel-expense form, unpacking semantic uncertainty, path uncertainty, and the risk constraint, and why the bigger the consequences, the smaller the autonomy.</p></blockquote><p>Let&#8217;s lead with the answer, then unpack why.</p><p><em><strong>If the rules are clear, use a Function. If the semantics are fuzzy but the path is fixed, use a single LLM call or a Workflow. If the path is unknowable, use an Agent. The bigger the consequences, the smaller the autonomy.</strong></em></p><p>That line is one of the few things OpenAI, Anthropic, Google Cloud, and Microsoft actually agree on in their public engineering guides &#8212; and it&#8217;s the first thing I see teams get wrong in practice. Almost every &#8220;can we just use an Agent?&#8221; question is asked the wrong way from the start.</p><h2><strong>One expense form, three answers</strong></h2><p>Walk into a real office for a second.</p><p>Finance gets a WeChat message from a colleague:</p><blockquote><p>&#8220;Last week I went to Beijing to see a client. Flights were &#165;2,300, the hotel was three nights at &#165;2,700, plus two taxi receipts. I&#8217;m missing one hotel invoice. Can I file it first?&#8221;</p></blockquote><p>One sentence. Nothing special. Almost every finance team has seen something exactly like it.</p><p>Now ask yourself one serious question &#8212; <strong>if you hand this to a system, who actually decides at each step?</strong> &#8212; and you&#8217;ll see that this single form lays out the core decision every AI project has to make, in miniature.</p><p>It needs three completely different kinds of capability:</p><ul><li><p><strong>The parts that must be computed</strong>: a three-night cap, how much is over the limit, whether a missing invoice blocks payment. These are rules &#8212; fixed answers, done by code.</p></li><li><p><strong>The parts that follow a fixed path</strong>: read the receipt &#8594; pull the date and amount &#8594; check tax ID and budget &#8594; route the anomaly &#8594; generate the explanation. The steps are defined; the model only handles the &#8220;understanding&#8221; in the middle.</p></li><li><p><strong>The part that has to investigate on its own</strong>: if someone changes route mid-trip, gets double-charged, and only has a verbal approval, the fixed path breaks &#8212; and only then does something that decides its next step come into play.</p></li></ul><p>This one form uses all three. So don&#8217;t rush to a conclusion. Let&#8217;s peel it apart layer by layer.</p><h2><strong>Don&#8217;t start with &#8220;can we use an Agent?&#8221; &#8212; selection is really about control</strong></h2><div class="paywall-jump" data-component-name="PaywallToDOM"></div><p>The question most people open with is: <em>can my business use an Agent?</em></p><p>That&#8217;s the wrong question, and it&#8217;s asked too early. The real question is: <strong>which step needs model judgment, and which step must stay controlled by code, by the permission system, and by a person?</strong></p><p>That&#8217;s really a re-allocation of control. You&#8217;re deciding who chooses the path in each step &#8212; a hard-coded rule, a predefined flow, or the model itself.</p><p>And these three aren&#8217;t a &#8220;pick one.&#8221; They stack:</p><ul><li><p><strong>Function</strong> sits at the bottom as the reliable base &#8212; deterministic, testable, cheap.</p></li><li><p><strong>Workflow</strong> controls the main flow on top of it &#8212; code decides the route, the model handles local semantics.</p></li><li><p><strong>Agent</strong> takes over a small slice only where it genuinely needs to improvise &#8212; inside a boundary you draw.</p></li></ul><p>Once you see it that way, that core judgment follows naturally.</p><h2><strong>Judging uncertainty: two axes, one hard line</strong></h2><p>So how do you actually judge &#8220;uncertainty&#8221;? Two axes, plus one line you never cross.</p><p><strong>Axis one: semantic uncertainty.</strong> Does your input contain something that needs <em>understanding</em>? Natural language, images, documents, exception notes, the kind of fuzzy phrasing that needs context? Traditional rules struggle with these. &#8220;Can I file it first?&#8221; is a textbook example.</p><p><strong>Axis two: path uncertainty.</strong> At run time, do you actually know what steps, tools, sources, and retries you&#8217;ll need? If you can list them, the path is fixed. If you can&#8217;t, it isn&#8217;t.</p><p>Put them on a grid:</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_!hW3M!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3a6366b-5d9a-4c47-973e-42547975ca51_1392x262.png 424w, https://substackcdn.com/image/fetch/$s_!hW3M!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3a6366b-5d9a-4c47-973e-42547975ca51_1392x262.png 848w, https://substackcdn.com/image/fetch/$s_!hW3M!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3a6366b-5d9a-4c47-973e-42547975ca51_1392x262.png 1272w, https://substackcdn.com/image/fetch/$s_!hW3M!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3a6366b-5d9a-4c47-973e-42547975ca51_1392x262.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21hW3M%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fd3a6366b-5d9a-4c47-973e-42547975ca51_1392x262.png" width="1392" height="262" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d3a6366b-5d9a-4c47-973e-42547975ca51_1392x262.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:262,&quot;width&quot;:1392,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:43005,&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://zerofuturetech.substack.com/i/214531748?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09e55e07-98a0-4b72-86c9-681836b12d5b_1392x390.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_!hW3M!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3a6366b-5d9a-4c47-973e-42547975ca51_1392x262.png 424w, https://substackcdn.com/image/fetch/$s_!hW3M!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3a6366b-5d9a-4c47-973e-42547975ca51_1392x262.png 848w, https://substackcdn.com/image/fetch/$s_!hW3M!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3a6366b-5d9a-4c47-973e-42547975ca51_1392x262.png 1272w, https://substackcdn.com/image/fetch/$s_!hW3M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3a6366b-5d9a-4c47-973e-42547975ca51_1392x262.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><p><strong>The hard line is risk.</strong> How bad is it if this is wrong, and how easy is it to catch? Microsoft scores tasks on repeatability, impact, error detectability, and time sensitivity; NIST demands you set risk tolerance and human oversight explicitly. The principle is basic: low impact, easy to catch &#8212; automate freely. High impact, irreversible, hard to spot &#8212; keep a person in the loop.</p><p>One line worth writing down: <strong>an Agent&#8217;s autonomy ceiling should never exceed the system&#8217;s ability to verify its result and limit its damage.</strong></p><h2><strong>Four terms, one pass</strong></h2><p>These four words have crisp boundaries once you pin down a single question: <strong>who decides the path?</strong></p><p><strong>Function &#8212; the reliable capability unit.</strong> A deterministic function, API, or traditional software service. Clear inputs, outputs, and error semantics; same input, same output, every time. Amount math, permission checks, data mapping, state-machine transitions, threshold decisions, DB transactions, compliance rules &#8212; all of it lives here. It&#8217;s the dependable floor of the system.</p><p>One nuance worth separating: <strong>Function isn&#8217;t Function calling.</strong> Function is the deterministic code you write. Function calling is just the interface that lets a model invoke that code. The same function can be called by a normal program, or used as a Workflow node, or exposed as an Agent tool.</p><p><strong>Single LLM call &#8212; the layer people forget.</strong> Intent classification, entity extraction, summarization, text normalization, structured JSON generation. Most of these need exactly one constrained call, plus Schema validation and a fallback. Anthropic is blunt: many apps are fine with one call, retrieval, and a few context examples &#8212; don&#8217;t bolt on an Agent just so it &#8220;looks complete.&#8221;</p><p><strong>Workflow &#8212; code defines the main path.</strong> Anthropic&#8217;s definition is crisp: a Workflow orchestrates LLMs and tools along predefined code paths; an Agent has the LLM dynamically control process and tool use. Workflows can include fixed sequences, limited routing, parallelism, deterministic loops, human approval, retries, and compensation transactions. Google adds the nuance: as long as the model isn&#8217;t deciding the overall path, it&#8217;s still predefined orchestration &#8212; even if it contains many &#8220;Agent nodes.&#8221;</p><p><strong>Agent &#8212; the model gets runtime control.</strong> The point isn&#8217;t &#8220;it calls tools&#8221; or &#8220;it has many steps.&#8221; It&#8217;s that the model picks the next step, uses tools, adjusts its plan from intermediate results, and decides when it&#8217;s done or when to hand off to a human.</p><p>One correction worth making, because it&#8217;s a genuinely common misconception: <strong>task decomposition is not the same as an Agent.</strong> The orchestrator-workers pattern decomposes tasks dynamically too &#8212; but engineers can still constrain its outer loop tightly. The real question is: <strong>how much scope, how much time, how many tools, and how much consequence does the model actually hold?</strong></p><h2><strong>The five-step decision: turn selection into a process</strong></h2><p>Don&#8217;t treat this as a chart on a wall. It&#8217;s a sequence &#8212; start simple, escalate only when the simple option fails.</p><ol><li><p><strong>Can it be written as a maintainable rule or algorithm?</strong> If yes, prefer Function.</p></li><li><p><strong>Is it a single semantic transformation?</strong> Just classification, extraction, summarization, generation &#8212; use one constrained LLM call with structured output and validation.</p></li><li><p><strong>Can you list the steps, branches, and error handling at design time?</strong> If yes, use a Workflow.</p></li><li><p><strong>Can you really not know the next step ahead of time?</strong> Only when subtasks, sources, or tools depend on intermediate results do you bring in a bounded Agent.</p></li><li><p><strong>Does risk allow autonomous execution?</strong> High impact, irreversible, hard to spot &#8212; reduce autonomy and add human approval.</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21VKDK%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fe8bd6576-8340-40eb-9299-1833fe89d50c_1760x1220.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VKDK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8bd6576-8340-40eb-9299-1833fe89d50c_1760x1220.png 424w, https://substackcdn.com/image/fetch/$s_!VKDK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8bd6576-8340-40eb-9299-1833fe89d50c_1760x1220.png 848w, https://substackcdn.com/image/fetch/$s_!VKDK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8bd6576-8340-40eb-9299-1833fe89d50c_1760x1220.png 1272w, https://substackcdn.com/image/fetch/$s_!VKDK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8bd6576-8340-40eb-9299-1833fe89d50c_1760x1220.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21VKDK%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fe8bd6576-8340-40eb-9299-1833fe89d50c_1760x1220.png" width="1456" height="1009" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e8bd6576-8340-40eb-9299-1833fe89d50c_1760x1220.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1009,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:173409,&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://zerofuturetech.substack.com/i/214531748?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8bd6576-8340-40eb-9299-1833fe89d50c_1760x1220.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_!VKDK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8bd6576-8340-40eb-9299-1833fe89d50c_1760x1220.png 424w, https://substackcdn.com/image/fetch/$s_!VKDK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8bd6576-8340-40eb-9299-1833fe89d50c_1760x1220.png 848w, https://substackcdn.com/image/fetch/$s_!VKDK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8bd6576-8340-40eb-9299-1833fe89d50c_1760x1220.png 1272w, https://substackcdn.com/image/fetch/$s_!VKDK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8bd6576-8340-40eb-9299-1833fe89d50c_1760x1220.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><em>Selection routing diagram: start at the upper-left question and follow the &#8220;can it be a rule &#8594; does it need one LLM read &#8594; can you list the steps &#8594; is the next step enumerable &#8594; does risk allow autonomy&#8221; path to an answer.</em></p><p>You can also lay this out as a decision matrix. Seven dimensions &#8212; input semantics, business rules, execution path, tool choice, testing approach, cost/latency, primary risk &#8212; line them up and it&#8217;s obvious: <strong>Function is cheapest and most stable; Agent is most flexible, most expensive, and riskiest.</strong> The further right you go, the more control shifts to the model, and the higher the cost and risk.</p><h2><strong>Five levels of maturity: L0 to L4</strong></h2><p>If you want a coordinate for &#8220;where are we right now,&#8221; this is the scale. Treat it as a measure of complexity and control, not a ladder of &#8220;higher is better.&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21Q_-M%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F63d0aaed-5566-4dce-8cc2-b7532de59b15_1800x860.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Q_-M!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63d0aaed-5566-4dce-8cc2-b7532de59b15_1800x860.png 424w, https://substackcdn.com/image/fetch/$s_!Q_-M!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63d0aaed-5566-4dce-8cc2-b7532de59b15_1800x860.png 848w, https://substackcdn.com/image/fetch/$s_!Q_-M!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63d0aaed-5566-4dce-8cc2-b7532de59b15_1800x860.png 1272w, https://substackcdn.com/image/fetch/$s_!Q_-M!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63d0aaed-5566-4dce-8cc2-b7532de59b15_1800x860.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21Q_-M%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F63d0aaed-5566-4dce-8cc2-b7532de59b15_1800x860.png" width="1456" height="696" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/63d0aaed-5566-4dce-8cc2-b7532de59b15_1800x860.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:696,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:81224,&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://zerofuturetech.substack.com/i/214531748?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63d0aaed-5566-4dce-8cc2-b7532de59b15_1800x860.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_!Q_-M!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63d0aaed-5566-4dce-8cc2-b7532de59b15_1800x860.png 424w, https://substackcdn.com/image/fetch/$s_!Q_-M!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63d0aaed-5566-4dce-8cc2-b7532de59b15_1800x860.png 848w, https://substackcdn.com/image/fetch/$s_!Q_-M!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63d0aaed-5566-4dce-8cc2-b7532de59b15_1800x860.png 1272w, https://substackcdn.com/image/fetch/$s_!Q_-M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63d0aaed-5566-4dce-8cc2-b7532de59b15_1800x860.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><em>Five-level staircase: L0 deterministic Function &#8594; L1 single LLM capability &#8594; L2 LLM Workflow &#8594; L3 bounded Agent &#8594; L4 autonomous Agent.</em></p><ul><li><p><strong>L0 &#183; Deterministic Function</strong>: rules, algorithms, transactions, permissions. The reliable floor for any project.</p></li><li><p><strong>L1 &#183; LLM Capability</strong>: classification, extraction, summarization, generation &#8212; with structured output, validation, fallback.</p></li><li><p><strong>L2 &#183; LLM Workflow</strong>: a multi-step flow with fixed or limited branching. <strong>The default for most enterprise projects.</strong></p></li><li><p><strong>L3 &#183; Bounded Agent in Workflow</strong>: dynamic planning within a limited toolset and budget. For complex exceptions and exploration.</p></li><li><p><strong>L4 &#183; Autonomous Agent</strong>: end-to-end continuous autonomy. Only for low-risk, reversible, strongly-verifiable scenarios.</p></li></ul><p>Note that L0 through L3 <strong>coexist in one system</strong> &#8212; Function carries the base, Workflow drives the main line, Agent handles the few genuinely un-enumerable spots. The default policy is <strong>Code first &#8594; one LLM call &#8594; Workflow &#8594; bounded Agent &#8594; autonomous Agent</strong>, and you only escalate when the lower layer truly can&#8217;t hit your eval bar. For most teams, getting L2 right is already enough.</p><div><hr></div><h2><strong>The China reality: why most projects start with the Workflow</strong></h2><p>This framework looks clean on a whiteboard. Put it inside a Chinese enterprise and the first blockers aren&#8217;t usually &#8220;is the AI smart enough&#8221; &#8212; they&#8217;re three very unglamorous things: <strong>systems that don&#8217;t talk to each other, processes that aren&#8217;t connected, and data that doesn&#8217;t agree on definitions.</strong></p><p>The state-owned-asset regulator (SASAC) flags data standards, metadata, master data, business-scenario modeling, and process coordination. The MIIT&#8217;s SME policy prioritizes critical business systems, cross-system integration, light investment, short cycle times, and measurable ROI &#8212; not building a highly autonomous Agent on day one.</p><p>So the highest-value path for most projects is: <strong>use Function to lock down amounts, permissions, state, and compliance rules; use Workflow to embed model capability into the existing ERP, OA, CRM, MES, and WMS systems, and keep human approval where it belongs.</strong></p><p>Different companies land in different places:</p><ul><li><p><strong>SMBs / single department</strong>: L0&#8211;L2. Get one high-frequency loop closed; keep integration and ops costs down.</p></li><li><p><strong>Large groups / shared services</strong>: L2-first, some L3. Standardize identity, master data, permissions, and cross-system ownership first.</p></li><li><p><strong>Manufacturing / energy / logistics</strong>: Function + Workflow. Connect ERP, MES, WMS, EAM; separate the main flow from exception investigation.</p></li><li><p><strong>Finance / healthcare / highly regulated</strong>: Function + Workflow + human. Evidence, rule versions, audit trails, and high-impact approval take priority over autonomy.</p></li></ul><p>Before you touch a keyboard, four constraints have to be settled. <strong>Data</strong> &#8212; master data, quality, and owners; low-quality data doesn&#8217;t become reliable just because you attached an Agent. <strong>Systems</strong> &#8212; do they have stable APIs, event mechanisms, and auditable write paths? If not, integrate first. <strong>Organization</strong> &#8212; bring in the executors, approvers, security team, finance and legal owners; don&#8217;t just transcribe the SOP. <strong>Governance</strong> &#8212; set the boundaries on data scope, model output, tool permissions, human handoff, and final accountability (GB/T 36073-2025 folds these into data-capability assessment).</p><h2><strong>Breaking down the form: three capabilities, each doing its own job</strong></h2><p>Enough theory. Drop it back onto that expense form and see it run.</p><p><strong>Computation and rules go to the Function.</strong> Look up the hotel standard for a Beijing P7 employee. Compute the three-night cap, the overage, and the reimbursable amount. Decide whether a missing invoice blocks payment. Check the trip request, budget, duplicate invoices, and tax fields. Then generate the accounting entry and execute the payment transaction. You can literally see the functions:</p><p>FunctionExample inputExample result<code>calculate_hotel_limit</code>Beijing / P7 / 3 nightsCap &#165;2,400<code>calculate_reimbursable</code>Actual &#165;2,700 / Cap &#165;2,400Reimburse &#165;2,400; overage &#165;300<code>check_invoice_required</code>Hotel / &#165;2,700Invoice required</p><p><strong>The normal claim runs through the Workflow.</strong> Most claims are &#8220;unstructured input, but the steps are clear&#8221;:</p><ol><li><p>Material recognition &#8212; LLM identifies the receipt, itinerary, and the employee&#8217;s note;</p></li><li><p>Field extraction &#8212; LLM outputs date, amount, merchant, and expense type under Schema constraints;</p></li><li><p>Rule validation &#8212; Function checks tax ID, duplicate receipts, budget, and travel policy;</p></li><li><p>Anomaly routing &#8212; code sends missing-invoice, over-limit, and no-request cases down fixed branches;</p></li><li><p>Explanation &amp; approval &#8212; LLM generates the explanation from rule results, escalates to a human when needed.</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21U_9n%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fd7f377b3-10e8-448c-818b-c03af3876b23_1800x500.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!U_9n!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7f377b3-10e8-448c-818b-c03af3876b23_1800x500.png 424w, https://substackcdn.com/image/fetch/$s_!U_9n!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7f377b3-10e8-448c-818b-c03af3876b23_1800x500.png 848w, https://substackcdn.com/image/fetch/$s_!U_9n!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7f377b3-10e8-448c-818b-c03af3876b23_1800x500.png 1272w, https://substackcdn.com/image/fetch/$s_!U_9n!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7f377b3-10e8-448c-818b-c03af3876b23_1800x500.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21U_9n%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fd7f377b3-10e8-448c-818b-c03af3876b23_1800x500.png" width="1456" height="404" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d7f377b3-10e8-448c-818b-c03af3876b23_1800x500.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:404,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:70378,&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://zerofuturetech.substack.com/i/214531748?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7f377b3-10e8-448c-818b-c03af3876b23_1800x500.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_!U_9n!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7f377b3-10e8-448c-818b-c03af3876b23_1800x500.png 424w, https://substackcdn.com/image/fetch/$s_!U_9n!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7f377b3-10e8-448c-818b-c03af3876b23_1800x500.png 848w, https://substackcdn.com/image/fetch/$s_!U_9n!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7f377b3-10e8-448c-818b-c03af3876b23_1800x500.png 1272w, https://substackcdn.com/image/fetch/$s_!U_9n!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7f377b3-10e8-448c-818b-c03af3876b23_1800x500.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><em>Reimbursement pipeline: read materials &#8594; extract fields &#8594; validate rules &#8594; route anomalies (normal &#8594; explain &amp; approve; anomaly &#8594; human approval).</em></p><p>Here&#8217;s what it tells the employee:</p><blockquote><p>&#8220;Your hotel actually cost &#165;2,700. Under the P7 Beijing standard of &#165;800/night and a three-night cap of &#165;2,400, your reimbursable ceiling is &#165;2,400. Because a valid invoice is missing, this can&#8217;t go to payment yet &#8212; you can supply the invoice or submit an exception request.&#8221;</p></blockquote><p>Note this: the wording can be polished by an LLM, but the <strong>facts must come from the policy version, the employee&#8217;s grade, the city standard, nights stayed, actual amount, material status, and approval rules.</strong> The credibility comes from the evidence chain, not from the model narrating its reasoning.</p><p><strong>A real anomaly is where the Agent earns its place.</strong> Say the employee rerouted from Beijing to Tianjin mid-trip: the hotel order was canceled and rebooked, the corporate card was charged twice and refunded once, the invoice amount doesn&#8217;t match the final payment, and the itinerary change only exists as a verbal approval in WeChat. A fixed Workflow can&#8217;t enumerate every investigation path for that.</p><p>So you hand a <strong>bounded Agent</strong> a clear objective: determine whether there&#8217;s a duplicate payment and what approval evidence is still missing. With tools and rounds limited, it works through:</p><ol><li><p>Pull the original request &#8212; it only approved <strong>Beijing</strong>;</p></li><li><p>Search approved itinerary changes in the time window &#8212; find the <strong>direct manager&#8217;s OK to go to Tianjin</strong>;</p></li><li><p>Cross-check the order, charges, and refund &#8212; confirm the <strong>original order was refunded</strong>;</p></li><li><p>Compare invoice, net order amount, and net card spend &#8212; <strong>rule out a duplicate claim</strong>;</p></li><li><p>Find the Tianjin trip lacks a <strong>formal change form</strong> &#8212; request it and hand off to finance for review.</p></li></ol><p>Notice what it did not do. It <strong>gathered evidence; it never decided the outcome itself.</strong> The final architecture looks like this:</p><p>StageControlling entityWhat it doesEntry &amp; authorizationFunction / IAMVerify identity and data scopeAnomaly investigationBounded AgentPlan dynamically; limit tools, permissions, rounds, budgetAmount &amp; rulesFunctionRecompute amount, policy, and tax resultsApprovalHumanHandle exceptions and high-impact judgmentPaymentFunctionExecute a controlled, auditable transaction</p><h2><strong>Letting an Agent run: draw the boundary first</strong></h2><p>Once the model gets runtime control, it stops being a component and becomes a subject with permissions. Three things to police.</p><p><strong>First, least privilege.</strong> OWASP groups &#8220;too much functionality, too much privilege, too much autonomy&#8221; under <strong>Excessive Agency</strong>, and advises exposing the smallest toolset and permissions a task requires, doing real authorization checks downstream, and requiring human approval for high-impact actions. An Agent can read a bounded set of orders and policies, build an investigation plan, suggest next steps, prepare a structured payment request, and log failures for a human. It must not change policy, expand its own permissions, waive a missing invoice, approve its own conclusion, pay an employee directly, or delete audit logs.</p><p><strong>Second, don&#8217;t trust its &#8220;reasoning.&#8221;</strong> The NeurIPS 2023 paper <em>Language Models Don&#8217;t Always Say What They Think</em> showed that a CoT explanation can look plausible while failing to disclose the bias that actually drove the answer &#8212; increasing trust without guaranteeing fidelity. In an enterprise, the reliable explanation comes from <strong>input evidence, rule hits, tool calls, policy versions, the approver, and the final business state.</strong></p><p><strong>Third, grade it like an exam.</strong> Don&#8217;t just accept &#8220;it says it&#8217;s done&#8221; &#8212; check that the business end-state is actually right. Anthropic recommends combining code, model, and human scoring, and separating &#8220;the Agent claimed completion&#8221; from &#8220;the environment reached the target state.&#8221; Coverage should include: task success rate and final state; tool choice and prohibited calls; policy adherence and override rate; human handoff and recovery rates; P50/P95 latency and token cost; and regressions across model, prompt, tool, and policy versions.</p><h2><strong>Before you start: run this checklist</strong></h2><p>Go through this before you ship. If any line is unclear, <strong>hold off on Agent autonomy.</strong></p><ul><li><p><strong>Business</strong>: is there a concrete task, an owner, a baseline, and quantifiable benefit?</p></li><li><p><strong>Rules</strong>: which decisions must be code, and which genuinely need model semantics?</p></li><li><p><strong>Path</strong>: what can you predefine, and what&#8217;s truly un-enumerable?</p></li><li><p><strong>Verification</strong>: can you mechanically verify the end state? If not, who owns the human judgment?</p></li><li><p><strong>Risk</strong>: what&#8217;s the error impact, detectability, reversibility, and approval window?</p></li><li><p><strong>Permissions</strong>: does the Agent have only the minimum tools, permissions, and data scope?</p></li><li><p><strong>Control</strong>: is there a max rounds, timeout, budget, retry, and kill switch?</p></li><li><p><strong>Eval</strong>: is there a gold set, repeated trials, and a regression gate?</p></li><li><p><strong>Run</strong>: are model, prompt, tool, policy version, and full traces recorded?</p></li><li><p><strong>Handoff</strong>: can the client team operate, extend, and troubleshoot it on their own?</p></li></ul><p><strong>Go / No-Go:</strong> if business value, risk tolerance, result verification, or ownership is still unclear, pause. Collect data with human-in-the-loop or a Workflow first, then decide whether to raise autonomy. Once the checklist passes, you can let it run &#8212; but first frame it inside <strong>permissions, budget, eval, and human oversight.</strong></p><h2><strong>Hand control to the layer that needs it least</strong></h2><p>Let&#8217;s close it.</p><p>The framework is stable:</p><ul><li><p><strong>Function&#65306;Deterministic inputs/outputs, explicit rules and algorithms</strong> </p></li><li><p>Single LLM call or LLM Workflow&#65306;<strong>Need to understand unstructured semantics, but the flow is known</strong> ;</p></li><li><p><strong>Agent&#65306;Only when the next step, tools, and subtasks depend on intermediate results</strong> </p></li></ul><p>And keep three negations in mind. <strong>Extracting one fact doesn&#8217;t require a whole pipeline.</strong> <strong>Being conversational doesn&#8217;t make it reliable</strong> &#8212; enterprise-grade explainability rests on evidence, rules, traces, and approval records, not self-narration. <strong>An Agent isn&#8217;t the default executor for payment or high-risk decisions.</strong></p><p>For teams in real production systems, the pragmatic move is to <strong>go deep on L2 Workflow</strong>: lock rules into Functions, connect existing systems and the human accountability chain, and build eval on real run data. Only the few exceptions that truly can&#8217;t be enumerated &#8212; where tools and permissions are stable and results are verifiable &#8212; warrant upgrading to a bounded L3 Agent.</p><p>One line to hang it all on: <strong>hand control to the layer that needs it least.</strong> Where a rule works, don&#8217;t use model judgment. Where you can pre-orchestrate, don&#8217;t let the model improvise. And where consequences belong to a person, don&#8217;t hand them to a machine.</p><p></p><p><em>References: </em></p><ul><li><p><em>OpenAI, &#8220;A practical guide to building agents&#8221;; </em></p></li><li><p><em>Anthropic, &#8220;Building effective agents&#8221;; </em></p></li><li><p><em>Google Cloud Architecture Center, &#8220;Choose a design pattern for your agentic AI system&#8221;; </em></p></li><li><p><em>Microsoft, &#8220;Decide when Copilot or an agent is the right tool for your work&#8221;; NIST AI Risk Management Framework Core; </em></p></li><li><p><em>OWASP LLM06:2025 Excessive Agency; Turpin et al., NeurIPS 2023, &#8220;Language Models Don&#8217;t Always Say What They Think&#8221;; SASAC / MIIT digital-transformation policies; GB/T 36073-2025.</em></p></li></ul>]]></content:encoded></item><item><title><![CDATA[Knowledge Graph vs Ontology vs Context Graph vs Code Graph vs Graph Engineering: What’s the Difference? (The 5 Graphs Behind AI Agents)]]></title><description><![CDATA[The first four answer what the system knows; the last one answers how the system acts. A plain-language, code-rich guide with comparison tables and cited 2026 sources &#8212; for engineers, product managers]]></description><link>https://zerofuturetech.substack.com/p/knowledge-graph-vs-ontology-vs-context</link><guid isPermaLink="false">https://zerofuturetech.substack.com/p/knowledge-graph-vs-ontology-vs-context</guid><dc:creator><![CDATA[zerofuturetech]]></dc:creator><pubDate>Sun, 23 Aug 2026 12:03:15 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe552c886-3227-40b4-b52c-f9a1d2cb99b5_2000x1500.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><span>Welcome to my newsletter. Here is </span><em>ZeroFutureTech</em><span>&#12290;I will share what I learned, researched and did in AI-related domain. Welcome to follow my </span><a href="iframe.php?url=https%3A%2F%2Fx.com%2Fjingwangtalk">X</a><span>.</span></p><p>Associated with this newsletter, I posted my video on Youtube (Note it is Chinese). Welcome to watch it.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://zerofuturetech.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">zerofuturetech's newsletter is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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 id="youtube2-5sPFpKT3LIk" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;5sPFpKT3LIk&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="iframe.php?url=https%3A%2F%2Fwww.youtube-nocookie.com%2Fembed%2F5sPFpKT3LIk%3Frel%3D0%26amp%3Bautoplay%3D0%26amp%3Bshowinfo%3D0%26amp%3Benablejsapi%3D0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><blockquote><p>If you follow AI agent news at all, you&#8217;ve been hit by these five words on repeat: <strong>Ontology, Knowledge Graph, Context Graph, Code Graph, and Graph Engineering</strong>. They all contain &#8220;graph,&#8221; so they sound like one family. They&#8217;re not. Here&#8217;s the insight that makes everything click: the first four answer <strong>what the system knows</strong>; the last one answers <strong>how the system acts</strong>. Here&#8217;s the whole picture, one diagram at a time &#8212; plus a few opinions after I read through the source material and two papers.</p></blockquote><h2><strong>The Core Conclusion First: What It Knows vs. How It Acts</strong></h2><p>Five terms, two buckets:</p><p>CategoryIncludesAnswers&#129504; Knowledge layer &#183; describes the worldOntology, Knowledge Graph, Context Graph, Code GraphWhat the system <strong>knows</strong>&#9889; Execution layer &#183; describes operationGraph EngineeringHow the system <strong>acts</strong></p><p>One line to remember: <strong>what it knows decides whether the agent answers correctly; how it acts decides whether the agent runs reliably.</strong> The first four are your map and fuel; the last one is the track and the engine.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21Zyoh%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F967e3f28-1b6b-4019-a015-eef765695955_1392x472.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Zyoh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F967e3f28-1b6b-4019-a015-eef765695955_1392x472.png 424w, https://substackcdn.com/image/fetch/$s_!Zyoh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F967e3f28-1b6b-4019-a015-eef765695955_1392x472.png 848w, https://substackcdn.com/image/fetch/$s_!Zyoh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F967e3f28-1b6b-4019-a015-eef765695955_1392x472.png 1272w, https://substackcdn.com/image/fetch/$s_!Zyoh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F967e3f28-1b6b-4019-a015-eef765695955_1392x472.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21Zyoh%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F967e3f28-1b6b-4019-a015-eef765695955_1392x472.png" width="1392" height="472" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/967e3f28-1b6b-4019-a015-eef765695955_1392x472.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:472,&quot;width&quot;:1392,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:86068,&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://zerofuturetech.substack.com/i/211816790?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F967e3f28-1b6b-4019-a015-eef765695955_1392x472.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_!Zyoh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F967e3f28-1b6b-4019-a015-eef765695955_1392x472.png 424w, https://substackcdn.com/image/fetch/$s_!Zyoh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F967e3f28-1b6b-4019-a015-eef765695955_1392x472.png 848w, https://substackcdn.com/image/fetch/$s_!Zyoh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F967e3f28-1b6b-4019-a015-eef765695955_1392x472.png 1272w, https://substackcdn.com/image/fetch/$s_!Zyoh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F967e3f28-1b6b-4019-a015-eef765695955_1392x472.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%210BVA%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F848990a1-059b-428d-99fb-368dc95f1830_1920x1090.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0BVA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F848990a1-059b-428d-99fb-368dc95f1830_1920x1090.png 424w, https://substackcdn.com/image/fetch/$s_!0BVA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F848990a1-059b-428d-99fb-368dc95f1830_1920x1090.png 848w, https://substackcdn.com/image/fetch/$s_!0BVA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F848990a1-059b-428d-99fb-368dc95f1830_1920x1090.png 1272w, https://substackcdn.com/image/fetch/$s_!0BVA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F848990a1-059b-428d-99fb-368dc95f1830_1920x1090.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%210BVA%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F848990a1-059b-428d-99fb-368dc95f1830_1920x1090.png" width="1456" height="827" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/848990a1-059b-428d-99fb-368dc95f1830_1920x1090.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:827,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:200901,&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://zerofuturetech.substack.com/i/211816790?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F848990a1-059b-428d-99fb-368dc95f1830_1920x1090.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_!0BVA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F848990a1-059b-428d-99fb-368dc95f1830_1920x1090.png 424w, https://substackcdn.com/image/fetch/$s_!0BVA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F848990a1-059b-428d-99fb-368dc95f1830_1920x1090.png 848w, https://substackcdn.com/image/fetch/$s_!0BVA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F848990a1-059b-428d-99fb-368dc95f1830_1920x1090.png 1272w, https://substackcdn.com/image/fetch/$s_!0BVA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F848990a1-059b-428d-99fb-368dc95f1830_1920x1090.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Where these terms came from</strong>: &#8220;Graph engineering&#8221; surfaced in July 2026 from X&#8217;s AI content factory, joining prompt engineering, context engineering, harness engineering, and loop engineering (per the LangChain blog). The words are new; the problem is real: LLMs are a new kind of non-robust, non-deterministic software, and every one of these terms is an attempt to make them do reliable work.</p><p><strong>A few authoritative numbers to anchor yourself</strong>:</p><ul><li><p>Google&#8217;s Knowledge Graph launched in 2012 with <strong>500M+ entities and 3.5B+ facts</strong> (<a href="iframe.php?url=https%3A%2F%2Fsearch.googleblog.com%2F2012%2F05%2Fintroducing-knowledge-graph-things-not.html">official announcement</a>) &#8212; note: that&#8217;s &#8220;world model&#8221; scale.</p></li><li><p>Wikidata has passed <strong>106M items</strong>, the largest open knowledge graph (<a href="iframe.php?url=https%3A%2F%2Fwww.wikidata.org%2Fwiki%2FUser_talk%3ACzupirek%2FNewsletter%238">Wikidata statistics</a>).</p></li><li><p>LangGraph, three years into graph engineering, now gets <strong>65M+ monthly downloads</strong> (<a href="iframe.php?url=https%3A%2F%2Fwww.langchain.com%2Fblog%2F3-years-of-graph-engineering-with-langgraph">LangChain blog</a>).</p></li></ul><p>My take: 90% of the articles explaining these terms treat the first four as one category and then file Graph Engineering away as &#8220;engineering practice.&#8221; That&#8217;s the real mistake. <strong>The first four are knowledge; the last one is execution. They&#8217;re different dimensions, not different difficulty levels.</strong> Sort the dimensions first, then argue about details.</p><h2><strong>1. Ontology &#8212; Your Company&#8217;s &#8220;Glossary + House Rules&#8221;</strong></h2><p><strong>In plain words</strong>: Ontology doesn&#8217;t record Zhang San or Li Si. It only defines three things &#8212; what &#8220;customer&#8221; means, what relations are allowed between &#8220;customer&#8221; and &#8220;order,&#8221; and which rules always hold. It&#8217;s a <strong>dictionary and a grammar book combined</strong>, strict enough for machines to read.</p><h3><strong>The technical detail: what an ontology actually looks like</strong></h3><p>Palantir breaks an enterprise ontology into six parts:</p><pre><code><code>Ontology = Objects + Links + Properties + Logic + Actions + Security</code></code></pre><ul><li><p><strong>Objects</strong>: business object <em>types</em> (Customer, Order, Equipment) &#8212; not specific people;</p></li><li><p><strong>Links</strong>: allowed relations between objects, with cardinality (one-to-many, many-to-many);</p></li><li><p><strong>Properties</strong>: attributes per type (order amount, customer tier);</p></li><li><p><strong>Logic</strong>: inference rules and constraints (see the example below);</p></li><li><p><strong>Actions</strong>: executable operations and their triggering conditions &#8212; note that what lives here is the <em>permission rule itself</em> (e.g., &#8220;discounts above 15% require VP approval&#8221;); stringing multiple actions into an executable flow is Graph Engineering&#8217;s job (Part 5);</p></li><li><p><strong>Security</strong>: who can read, who can write.</p></li></ul><p>In standards-land, ontologies are written in formal languages &#8212; <strong>OWL (Web Ontology Language) or RDF Schema</strong> &#8212; defining classes, properties, hierarchies, and logical axioms. The result is human-readable <em>and</em> machine-interpretable (Atlan).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21KOSr%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F7efb7738-0e59-4d5e-bf83-c494fad1a399_1720x500.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KOSr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7efb7738-0e59-4d5e-bf83-c494fad1a399_1720x500.png 424w, https://substackcdn.com/image/fetch/$s_!KOSr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7efb7738-0e59-4d5e-bf83-c494fad1a399_1720x500.png 848w, https://substackcdn.com/image/fetch/$s_!KOSr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7efb7738-0e59-4d5e-bf83-c494fad1a399_1720x500.png 1272w, https://substackcdn.com/image/fetch/$s_!KOSr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7efb7738-0e59-4d5e-bf83-c494fad1a399_1720x500.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21KOSr%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F7efb7738-0e59-4d5e-bf83-c494fad1a399_1720x500.png" width="1456" height="423" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7efb7738-0e59-4d5e-bf83-c494fad1a399_1720x500.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:423,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:107077,&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://zerofuturetech.substack.com/i/211816790?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7efb7738-0e59-4d5e-bf83-c494fad1a399_1720x500.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_!KOSr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7efb7738-0e59-4d5e-bf83-c494fad1a399_1720x500.png 424w, https://substackcdn.com/image/fetch/$s_!KOSr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7efb7738-0e59-4d5e-bf83-c494fad1a399_1720x500.png 848w, https://substackcdn.com/image/fetch/$s_!KOSr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7efb7738-0e59-4d5e-bf83-c494fad1a399_1720x500.png 1272w, https://substackcdn.com/image/fetch/$s_!KOSr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7efb7738-0e59-4d5e-bf83-c494fad1a399_1720x500.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><strong>Inference: ontology&#8217;s most valuable trick</strong></h3><p>You never hand-code &#8220;patient Z should take drug X.&#8221; Put two known facts together and the rules derive the third:</p><ul><li><p>Fact 1: Drug X treats Disease Y</p></li><li><p>Fact 2: Patient Z has Disease Y</p></li><li><p><strong>Inferred: Drug X is likely relevant for Patient Z</strong> (Atlan adds the pharma-grade version: Drug X treats Y, and Y shares pathways with Z &#8658; Drug X may treat Z &#8212; this is how pharma companies use ontologies for drug discovery)</p></li></ul><p>That&#8217;s why precision-critical industries can&#8217;t live without them: finance uses <strong>FIBO</strong> (EDM Council&#8217;s financial business ontology), healthcare uses <strong>FHIR / SNOMED CT</strong>, and the web uses <strong>Schema.org</strong>. In those domains, &#8220;diagnosis&#8221; cannot mean two things.</p><h3><strong>Ontology&#8217;s relatives: the semantic complexity ladder</strong></h3><p>A taxonomy only handles parent-child hierarchy &#8212; the grocery example from Neo4j: Foodstuffs &gt; Fruit &gt; Apple. A thesaurus adds synonyms. An ontology adds logic and inference. A knowledge graph fills in instances. They&#8217;re not peers:</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_!ZkeC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F750ec24a-600f-462d-8435-0950666d4005_1720x360.png 424w, https://substackcdn.com/image/fetch/$s_!ZkeC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F750ec24a-600f-462d-8435-0950666d4005_1720x360.png 848w, https://substackcdn.com/image/fetch/$s_!ZkeC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F750ec24a-600f-462d-8435-0950666d4005_1720x360.png 1272w, https://substackcdn.com/image/fetch/$s_!ZkeC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F750ec24a-600f-462d-8435-0950666d4005_1720x360.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21ZkeC%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F750ec24a-600f-462d-8435-0950666d4005_1720x360.png" width="1456" height="305" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/750ec24a-600f-462d-8435-0950666d4005_1720x360.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;:50729,&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://zerofuturetech.substack.com/i/211816790?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F750ec24a-600f-462d-8435-0950666d4005_1720x360.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_!ZkeC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F750ec24a-600f-462d-8435-0950666d4005_1720x360.png 424w, https://substackcdn.com/image/fetch/$s_!ZkeC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F750ec24a-600f-462d-8435-0950666d4005_1720x360.png 848w, https://substackcdn.com/image/fetch/$s_!ZkeC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F750ec24a-600f-462d-8435-0950666d4005_1720x360.png 1272w, https://substackcdn.com/image/fetch/$s_!ZkeC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F750ec24a-600f-462d-8435-0950666d4005_1720x360.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21e-3l%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F7a5f192a-772b-477c-963e-08fee1d33aa5_1392x618.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!e-3l!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a5f192a-772b-477c-963e-08fee1d33aa5_1392x618.png 424w, https://substackcdn.com/image/fetch/$s_!e-3l!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a5f192a-772b-477c-963e-08fee1d33aa5_1392x618.png 848w, https://substackcdn.com/image/fetch/$s_!e-3l!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a5f192a-772b-477c-963e-08fee1d33aa5_1392x618.png 1272w, https://substackcdn.com/image/fetch/$s_!e-3l!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a5f192a-772b-477c-963e-08fee1d33aa5_1392x618.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21e-3l%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F7a5f192a-772b-477c-963e-08fee1d33aa5_1392x618.png" width="1392" height="618" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7a5f192a-772b-477c-963e-08fee1d33aa5_1392x618.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:618,&quot;width&quot;:1392,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:138647,&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://zerofuturetech.substack.com/i/211816790?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ca8e891-456d-4a3e-aaa6-17f813e8893e_1392x946.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_!e-3l!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a5f192a-772b-477c-963e-08fee1d33aa5_1392x618.png 424w, https://substackcdn.com/image/fetch/$s_!e-3l!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a5f192a-772b-477c-963e-08fee1d33aa5_1392x618.png 848w, https://substackcdn.com/image/fetch/$s_!e-3l!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a5f192a-772b-477c-963e-08fee1d33aa5_1392x618.png 1272w, https://substackcdn.com/image/fetch/$s_!e-3l!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a5f192a-772b-477c-963e-08fee1d33aa5_1392x618.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>Neo4j&#8217;s framing is worth keeping: &#8220;<strong>the knowledge graph is what you build, while taxonomies and ontologies are the blueprints.</strong>&#8220;</p><p><strong>An honest footnote</strong>: the Semantic Web vision (RDF/OWL/SPARQL, W3C, early 2000s) of machines understanding the whole web never fully materialized &#8212; the &#8220;open world&#8221; assumption was once called &#8220;insanely impractical for data practitioners&#8221; (2021 Hacker News comment; community opinion, not peer-reviewed). But the core technology was sound &#8212; and AI is now the force making ontologies necessary at scale (Atlan).</p><h2><strong>2. Knowledge Graph &#8212; An Encyclopedia with Nerves</strong></h2><p><strong>In plain words</strong>: Take the ontology&#8217;s rules and actually use them &#8212; fill in real people and real things, and you weave a web of &#8220;who &#8212; what relation &#8212; who.&#8221; Think of it as an <strong>encyclopedia with nerves</strong>: you can look up an entry, then follow the relations and keep asking.</p><h3><strong>The technical detail: two storage models, two philosophies</strong></h3><pre><code><code>Knowledge Graph = Ontology Schema + Object Instances + Relationships</code></code></pre><p><strong>&#9312; RDF triples (Semantic Web tradition)</strong>: every fact is a (subject, predicate, object) statement. Neo4j&#8217;s critique is concrete: a simple fact like &#8220;Apple is fresh food&#8221; has to be decomposed into multiple triples:</p><pre><code><code>Apple  type  Fruit
Apple  type  FreshFood
Banana type  Fruit
Banana type  FreshFood
Salmon type  FreshFood
Salmon type  Fish</code></code></pre><p>&#8212; properties get split, types get split, and query complexity climbs.</p><p><strong>&#9313; Labeled Property Graph (LPG, the Neo4j model)</strong>: properties hang directly on nodes and relationships; many-to-many and multiple same-type relationships come naturally, and one Cypher statement can query the ontology and the instances together. The original example from the Neo4j article &#8212; everything Daniel ordered in the Foodstuffs category:</p><pre><code><code>MATCH (d:Person {name: "Daniel"})-[:PLACED]-&gt;(o:Order)-[:CONTAINS]-&gt;(p:Product)-[:TYPE_OF]-&gt;(t:Type)-[:TYPE_OF]-(c:Category {name: "Foodstuffs"})
RETURN d, o, p, t, c</code></code></pre><p>Or &#8220;what did other people with Daniel&#8217;s address buy?&#8221; &#8212; a shared-attribute query in one statement. A knowledge graph has four core parts: <strong>Nodes, Relationships, Properties, and Organizing principles</strong> (the taxonomies/ontologies).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21ZXcC%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F2480997e-adbc-4eae-9bab-8cf1f1f4b5c3_1720x600.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZXcC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2480997e-adbc-4eae-9bab-8cf1f1f4b5c3_1720x600.png 424w, https://substackcdn.com/image/fetch/$s_!ZXcC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2480997e-adbc-4eae-9bab-8cf1f1f4b5c3_1720x600.png 848w, https://substackcdn.com/image/fetch/$s_!ZXcC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2480997e-adbc-4eae-9bab-8cf1f1f4b5c3_1720x600.png 1272w, https://substackcdn.com/image/fetch/$s_!ZXcC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2480997e-adbc-4eae-9bab-8cf1f1f4b5c3_1720x600.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21ZXcC%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F2480997e-adbc-4eae-9bab-8cf1f1f4b5c3_1720x600.png" width="1456" height="508" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2480997e-adbc-4eae-9bab-8cf1f1f4b5c3_1720x600.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:508,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:66187,&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://zerofuturetech.substack.com/i/211816790?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2480997e-adbc-4eae-9bab-8cf1f1f4b5c3_1720x600.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_!ZXcC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2480997e-adbc-4eae-9bab-8cf1f1f4b5c3_1720x600.png 424w, https://substackcdn.com/image/fetch/$s_!ZXcC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2480997e-adbc-4eae-9bab-8cf1f1f4b5c3_1720x600.png 848w, https://substackcdn.com/image/fetch/$s_!ZXcC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2480997e-adbc-4eae-9bab-8cf1f1f4b5c3_1720x600.png 1272w, https://substackcdn.com/image/fetch/$s_!ZXcC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2480997e-adbc-4eae-9bab-8cf1f1f4b5c3_1720x600.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-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_!MtGg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe20255a1-b3b5-46cd-ae15-bc210697169f_1720x340.png 424w, https://substackcdn.com/image/fetch/$s_!MtGg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe20255a1-b3b5-46cd-ae15-bc210697169f_1720x340.png 848w, https://substackcdn.com/image/fetch/$s_!MtGg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe20255a1-b3b5-46cd-ae15-bc210697169f_1720x340.png 1272w, https://substackcdn.com/image/fetch/$s_!MtGg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe20255a1-b3b5-46cd-ae15-bc210697169f_1720x340.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21MtGg%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fe20255a1-b3b5-46cd-ae15-bc210697169f_1720x340.png" width="1456" height="288" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e20255a1-b3b5-46cd-ae15-bc210697169f_1720x340.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:288,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:52945,&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://zerofuturetech.substack.com/i/211816790?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe20255a1-b3b5-46cd-ae15-bc210697169f_1720x340.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_!MtGg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe20255a1-b3b5-46cd-ae15-bc210697169f_1720x340.png 424w, https://substackcdn.com/image/fetch/$s_!MtGg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe20255a1-b3b5-46cd-ae15-bc210697169f_1720x340.png 848w, https://substackcdn.com/image/fetch/$s_!MtGg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe20255a1-b3b5-46cd-ae15-bc210697169f_1720x340.png 1272w, https://substackcdn.com/image/fetch/$s_!MtGg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe20255a1-b3b5-46cd-ae15-bc210697169f_1720x340.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h3><strong>Authoritative data: how big are world models</strong></h3><ul><li><p><strong>Google Knowledge Graph</strong> (2012, official blog): 500M+ entities, 3.5B+ facts &#8212; positioned from day one as &#8220;things, not strings&#8221;;</p></li><li><p><strong>Wikidata</strong> (launched 2012): 106M+ items, the largest open knowledge graph;</p></li><li><p>Lineage: RDF / OWL / SPARQL from the W3C&#8217;s Semantic Web movement in the early 2000s.</p></li></ul><h3><strong>GraphRAG: the hottest LLM-era use of knowledge graphs</strong></h3><p>GraphRAG isn&#8217;t a kind of graph &#8212; it&#8217;s a <strong>retrieval pattern that retrieves along a relation network</strong>. Microsoft&#8217;s 2024 paper <em>From Local to Global: A Graph RAG Approach to Query-Focused Summarization</em> (arXiv:2404.16130) made it famous: build a graph over the corpus, then create community-level summaries so the LLM sees both local details and global overviews. The key point (DataHub stresses it): <strong>GraphRAG is the pattern; a context graph is the infrastructure being retrieved from. They are not the same thing.</strong></p><p><strong>Use it when</strong>: general-knowledge Q&amp;A (&#8221;Which country is Paris in?&#8221;); recommendations (&#8221;People who watched this also liked&#8230;&#8221;); multi-hop questions &#8212; the Neo4j example: answering &#8220;what&#8217;s the impact of changing product X,&#8221; an agent traverses product &#8594; category &#8594; supplier &#8594; orders &#8594; tickets &#8594; docs, instead of retrieving only chunks that mention the product name. The answer is <strong>explainable and traceable</strong>.</p><p><strong>My reminder</strong>: a knowledge graph only knows what is <em>generally true</em>. It doesn&#8217;t know what&#8217;s happening in <strong>your company</strong> right now, which table is trustworthy, or who approved what. That&#8217;s the boundary with the next graph &#8212; and where many people stumble, treating the knowledge graph as a universal base and then wondering why their agent hallucinates about business status.</p><h2><strong>3. Context Graph &#8212; The &#8220;Trusted Business Context Map&#8221; for Agents</strong></h2><p><strong>In plain words</strong>: The knowledge graph answers &#8220;what does the enterprise have.&#8221; The context graph answers &#8220;<strong>why this matters right now, and how to decide based on it</strong>.&#8221; It stacks a &#8220;right now&#8221; layer on top of &#8220;what exists&#8221;:</p><pre><code><code>Context Graph = Knowledge Graph + Task Context + Runtime State + Events + Decisions + Evidence</code></code></pre><h3><strong>Settling a debate first: what actually differs from a knowledge graph</strong></h3><p>DataHub&#8217;s take is sharp: the two have <strong>identical structure</strong> (entities + typed relationships), and most attempts to draw a hard line &#8220;invent a distinction that does not exist.&#8221; The real difference is two words: <strong>scope and grounding</strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21B5AT%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fd1bd9f7d-7de1-4038-b82f-4cfa74dcb295_1392x485.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!B5AT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1bd9f7d-7de1-4038-b82f-4cfa74dcb295_1392x485.png 424w, https://substackcdn.com/image/fetch/$s_!B5AT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1bd9f7d-7de1-4038-b82f-4cfa74dcb295_1392x485.png 848w, https://substackcdn.com/image/fetch/$s_!B5AT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1bd9f7d-7de1-4038-b82f-4cfa74dcb295_1392x485.png 1272w, https://substackcdn.com/image/fetch/$s_!B5AT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1bd9f7d-7de1-4038-b82f-4cfa74dcb295_1392x485.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21B5AT%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fd1bd9f7d-7de1-4038-b82f-4cfa74dcb295_1392x485.png" width="1392" height="485" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d1bd9f7d-7de1-4038-b82f-4cfa74dcb295_1392x485.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:485,&quot;width&quot;:1392,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:77899,&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://zerofuturetech.substack.com/i/211816790?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb987abfe-e6d3-40a0-942d-bdffa0a6e47a_1392x614.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_!B5AT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1bd9f7d-7de1-4038-b82f-4cfa74dcb295_1392x485.png 424w, https://substackcdn.com/image/fetch/$s_!B5AT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1bd9f7d-7de1-4038-b82f-4cfa74dcb295_1392x485.png 848w, https://substackcdn.com/image/fetch/$s_!B5AT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1bd9f7d-7de1-4038-b82f-4cfa74dcb295_1392x485.png 1272w, https://substackcdn.com/image/fetch/$s_!B5AT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1bd9f7d-7de1-4038-b82f-4cfa74dcb295_1392x485.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 DataHub&#8217;s words, a context graph is &#8220;<strong>structured knowledge that needs to be deterministic and governable, not a vibes-based retrieval blob.</strong>&#8220;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%215O_V%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F9edf9c39-9c9e-463f-b550-fd7f0d72fcf6_1720x744.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5O_V!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9edf9c39-9c9e-463f-b550-fd7f0d72fcf6_1720x744.png 424w, https://substackcdn.com/image/fetch/$s_!5O_V!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9edf9c39-9c9e-463f-b550-fd7f0d72fcf6_1720x744.png 848w, https://substackcdn.com/image/fetch/$s_!5O_V!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9edf9c39-9c9e-463f-b550-fd7f0d72fcf6_1720x744.png 1272w, https://substackcdn.com/image/fetch/$s_!5O_V!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9edf9c39-9c9e-463f-b550-fd7f0d72fcf6_1720x744.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%215O_V%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F9edf9c39-9c9e-463f-b550-fd7f0d72fcf6_1720x744.png" width="1456" height="630" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9edf9c39-9c9e-463f-b550-fd7f0d72fcf6_1720x744.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:630,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:116334,&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://zerofuturetech.substack.com/i/211816790?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9edf9c39-9c9e-463f-b550-fd7f0d72fcf6_1720x744.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_!5O_V!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9edf9c39-9c9e-463f-b550-fd7f0d72fcf6_1720x744.png 424w, https://substackcdn.com/image/fetch/$s_!5O_V!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9edf9c39-9c9e-463f-b550-fd7f0d72fcf6_1720x744.png 848w, https://substackcdn.com/image/fetch/$s_!5O_V!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9edf9c39-9c9e-463f-b550-fd7f0d72fcf6_1720x744.png 1272w, https://substackcdn.com/image/fetch/$s_!5O_V!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9edf9c39-9c9e-463f-b550-fd7f0d72fcf6_1720x744.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><strong>The technical detail: three layers (per Atlan)</strong></h3><ol><li><p><strong>Ontological grounding</strong>: what entity types exist and how they relate &#8212; without it, the graph stores facts but not meaning;</p></li><li><p><strong>Operational metadata</strong>: column-level lineage, quality scores, ownership, access policies &#8212; &#8220;where it came from, whether it can be trusted&#8221;;</p></li><li><p><strong>Decision traces</strong>: approvals, exceptions, overrides, and the reasoning behind them. When a VP approves a 20% discount above the policy cap, the graph records not the outcome but <strong>structured fields</strong>:</p></li></ol><pre><code><code>exception_approved_by = "VP Sales"            # who approved
override_reason       = "strategic account"   # why the exception
precedent_case_id     = "CASE-2025-0117"      # which precedent</code></code></pre><p>Why structured? Because decision traces used to live in Slack threads, Zoom calls, and people&#8217;s heads (Atlan&#8217;s words) &#8212; agents couldn&#8217;t query them. As fields, one lookup answers &#8220;can we give this customer 20%?&#8221;</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_!kW1Q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f0d5e6c-ad9b-485e-820c-18859ff70512_1720x320.png 424w, https://substackcdn.com/image/fetch/$s_!kW1Q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f0d5e6c-ad9b-485e-820c-18859ff70512_1720x320.png 848w, https://substackcdn.com/image/fetch/$s_!kW1Q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f0d5e6c-ad9b-485e-820c-18859ff70512_1720x320.png 1272w, https://substackcdn.com/image/fetch/$s_!kW1Q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f0d5e6c-ad9b-485e-820c-18859ff70512_1720x320.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21kW1Q%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F1f0d5e6c-ad9b-485e-820c-18859ff70512_1720x320.png" width="1456" height="271" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1f0d5e6c-ad9b-485e-820c-18859ff70512_1720x320.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:271,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:48643,&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://zerofuturetech.substack.com/i/211816790?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f0d5e6c-ad9b-485e-820c-18859ff70512_1720x320.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_!kW1Q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f0d5e6c-ad9b-485e-820c-18859ff70512_1720x320.png 424w, https://substackcdn.com/image/fetch/$s_!kW1Q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f0d5e6c-ad9b-485e-820c-18859ff70512_1720x320.png 848w, https://substackcdn.com/image/fetch/$s_!kW1Q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f0d5e6c-ad9b-485e-820c-18859ff70512_1720x320.png 1272w, https://substackcdn.com/image/fetch/$s_!kW1Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f0d5e6c-ad9b-485e-820c-18859ff70512_1720x320.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h3><strong>Governance: an ungoverned context graph is worse than none</strong></h3><p>Atlan&#8217;s refrain: a graph database <strong>stores</strong> relationships, it doesn&#8217;t <strong>govern</strong> them (&#8221;A graph database stores relationships. It doesn&#8217;t govern them.&#8221;). The five governance layers:</p><ol><li><p><strong>Asset inventory</strong> &#8212; you can&#8217;t govern what you haven&#8217;t cataloged;</p></li><li><p><strong>Column-level lineage</strong> &#8212; when a metric definition changes upstream, you see exactly what breaks downstream;</p></li><li><p><strong>Ownership/stewardship</strong> &#8212; when an agent hits ambiguity, there&#8217;s a human to escalate to;</p></li><li><p><strong>Quality &amp; observability</strong> &#8212; how fresh, how accurate, how complete;</p></li><li><p><strong>Access policy</strong> &#8212; different users and agents see different things; permission-aware retrieval keeps sensitive data out of the wrong context window.</p></li></ol><p>One line: <strong>&#8220;Context without governance doesn&#8217;t reduce hallucinations. It makes them harder to detect.&#8221;</strong></p><h3><strong>How agents consume it: via MCP</strong></h3><p>The de facto delivery channel for context graphs to agents is <strong>MCP (Model Context Protocol), open-sourced by Anthropic on November 25, 2024</strong> (<a href="iframe.php?url=https%3A%2F%2Fwww.anthropic.com%2Fnews%2Fmodel-context-protocol">announcement</a>). Atlan&#8217;s approach: connect 75+ data systems and expose the governed context graph through a <strong>native MCP server</strong>; agents query it at inference time instead of having knowledge stuffed into a system prompt.</p><p><strong>Industry signals</strong> (Atlan citing Gartner): Gartner analyst Rita Sallam calls context &#8220;<strong>the brain for AI</strong>&#8220; and predicts universal semantic layers will be treated as critical infrastructure <strong>by 2030</strong>; organizations with the highest AI satisfaction invest nearly <strong>twice as much in foundations</strong> (data quality, governance, talent) as in AI tools. Workday reports <strong>5x improvements in AI analyst response accuracy</strong>.</p><p><strong>My take</strong>: take vendor numbers with salt (Atlan is a player here), but the direction is credible &#8212; &#8220;governed context first, agents second&#8221; is moving from best practice to industry consensus. When even Neo4j repositioned itself as &#8220;AI agent memory graph&#8221; infrastructure in 2026, that&#8217;s a signal.</p><h3><strong>Same name, different things</strong></h3><p>That&#8217;s the data-platform usage (DataHub, Atlan), anchored to <strong>one company</strong>. But there&#8217;s an academic paper also called <em>Context Graph</em> (IDEA Research, 2024, arXiv:2406.11160) about tagging every edge in a general knowledge graph with <strong>time &#183; location &#183; provenance &#183; confidence</strong>. Paper examples:</p><pre><code><code>(Barack Obama, president of, USA, time: 2009&#8211;2017)
(France national football team, win, 2018 FIFA World Cup, location: Russia)</code></code></pre><p>The motivation: triples that lose their context contradict each other (&#8221;A lives in Shanghai&#8221; and &#8220;A lives in Beijing&#8221; can both be true &#8212; at different times). The paper proposes the <strong>CGR3 reasoning paradigm: Retrieve (candidate entities + context) &#8594; Rank &#8594; Reason (is the information sufficient? iterate if not)</strong>, with significant gains on knowledge graph completion (KGC) and KG question answering (KGQA). Note: it&#8217;s anchored to <strong>the world</strong>, not a company &#8212; same name, two different things. Check who&#8217;s talking before you quote.</p><h2><strong>4. Code Graph &#8212; The Plumbing Diagram of Your Codebase</strong></h2><p><strong>In plain words</strong>: A code graph draws the &#8220;internal plumbing&#8221; of code: functions, classes, and modules are nodes; who calls whom, how data flows, who inherits from whom are edges. Before changing one line, you follow the graph to see &#8220;<strong>who downstream is going to break.</strong>&#8220;</p><pre><code><code>Code Graph = Source Code + AST + Dependencies + Execution Relationships</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21Q0b7%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F5f36c597-fadc-4b56-8a5e-6eedfbeb26b5_1720x660.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Q0b7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f36c597-fadc-4b56-8a5e-6eedfbeb26b5_1720x660.png 424w, https://substackcdn.com/image/fetch/$s_!Q0b7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f36c597-fadc-4b56-8a5e-6eedfbeb26b5_1720x660.png 848w, https://substackcdn.com/image/fetch/$s_!Q0b7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f36c597-fadc-4b56-8a5e-6eedfbeb26b5_1720x660.png 1272w, https://substackcdn.com/image/fetch/$s_!Q0b7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f36c597-fadc-4b56-8a5e-6eedfbeb26b5_1720x660.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21Q0b7%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F5f36c597-fadc-4b56-8a5e-6eedfbeb26b5_1720x660.png" width="1456" height="559" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5f36c597-fadc-4b56-8a5e-6eedfbeb26b5_1720x660.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:559,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:99234,&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://zerofuturetech.substack.com/i/211816790?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f36c597-fadc-4b56-8a5e-6eedfbeb26b5_1720x660.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_!Q0b7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f36c597-fadc-4b56-8a5e-6eedfbeb26b5_1720x660.png 424w, https://substackcdn.com/image/fetch/$s_!Q0b7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f36c597-fadc-4b56-8a5e-6eedfbeb26b5_1720x660.png 848w, https://substackcdn.com/image/fetch/$s_!Q0b7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f36c597-fadc-4b56-8a5e-6eedfbeb26b5_1720x660.png 1272w, https://substackcdn.com/image/fetch/$s_!Q0b7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f36c597-fadc-4b56-8a5e-6eedfbeb26b5_1720x660.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><strong>The technical detail: how GraphGen4Code was built (IBM Research, arXiv:2002.09440)</strong></h3><p>The largest public code-knowledge-graph engineering effort. The pipeline, step by step:</p><ol><li><p><strong>Data collection</strong>: a SQL query over Google BigQuery pulled <strong>1.38M Python files/notebooks</strong> from GitHub (repos with &#8805;2 watch events, deduplicated by MD5);</p></li><li><p><strong>Static analysis</strong>: they extended IBM&#8217;s <strong>WALA</strong> framework (originally Java/JavaScript) to run <strong>inter-procedural dataflow + control-flow analysis</strong> per script. The hard part: Python is dynamically typed &#8212; calling <code>pandas.read_csv</code> returns an unknown type, so they model &#8220;any call to an imported function returns a new object.&#8221; Imprecise, but scalable;</p></li><li><p><strong>Doc extraction</strong>: 506 popular libraries (imported &gt;1000 times) were introspected to harvest <strong>6.3M documentation pieces</strong> across 2300+ modules;</p></li><li><p><strong>Forum linking</strong>: Elasticsearch linked <strong>45M StackOverflow posts + 2.7M StackExchange posts</strong> to classes/functions/methods (up to 5K matches per query);</p></li><li><p><strong>Result</strong>: <strong>2.09 billion edges</strong> = 75M docstring triples + 246M forum triples + <strong>1.77B static-analysis triples</strong>, covering 278K functions, 257K classes, and 5.8M methods.</p></li></ol><p><strong>Why dataflow analysis is the key</strong>: the paper&#8217;s core example &#8212; two programs, one variable named <code>model</code>, the other <code>clf_SVM_radial_basis</code>. Token-level, they look completely different; after dataflow analysis, both point at the same label node <code>sklearn.svm.SVC.fit</code> &#8212; so a machine can discover &#8220;these two programs do the same thing.&#8221; Even <code>df.fillna</code> gets labeled <code>pandas.read_csv.fillna</code>, because return types in dynamic languages can only be inferred through dataflow. That&#8217;s why code graphs beat raw text/AST representations.</p><p><strong>Querying</strong>: output is RDF named graphs (one per program, reusing SIO and Schema.org ontologies) or JSON; class hierarchies appear directly as triples, e.g. <code>sklearn.svm.SVC rdfs:subClassOf py:sklearn.svm._base.BaseSVC</code>.</p><p><strong>Use it when</strong>: the repo is too big for any human to remember who calls whom; you&#8217;re changing a public API and want blast radius; you want a coding agent to onboard an unfamiliar codebase and find bugs. Applications: program search, code understanding, bug detection, code automation, code recommendation (forum posts cross-recommend APIs &#8212; e.g., SGDClassifier over SVC for large datasets).</p><h2><strong>5.  Graph Engineering &#8212; Putting Rails on the LLM</strong></h2><p><strong>In plain words</strong>: Graph engineering is drawing a flowchart for the agent: one node = one job, one edge = where to go next. <strong>Which steps must follow fixed rules and where the model gets to decide &#8212; the graph makes that explicit</strong>, instead of letting the model improvise end-to-end and patch mistakes afterward.</p><pre><code><code>Graph Engineering = Data Engineering + Graph Modeling + Retrieval + Reasoning + Agent Orchestration</code></code></pre><p>The first four blocks are basically what Parts 2&#8211;4 do. The real focus here is the last one: <strong>stringing those queries and reasoning steps into a workflow the agent can execute reliably.</strong></p><h3><strong>The technical detail: a graph is a state machine (LangGraph&#8217;s view)</strong></h3><p>LangGraph&#8217;s model in one sentence: <strong>nodes do work; edges decide what happens next.</strong></p><ul><li><p><strong>Nodes</strong>: the units that do things &#8212; deterministic code, a single LLM call, a tool call, or a full agent with its own internal loop;</p></li><li><p><strong>Edges</strong>: what happens next &#8212; some deterministic (hardcoded), some <strong>conditional</strong>, chosen at runtime based on a node&#8217;s result, the current state, or an external signal.</p></li></ul><p>That&#8217;s a state machine: the graph defines the workflow, the state flowing through it, and the transitions. It encodes your world knowledge of how the system <em>should</em> work directly into structure &#8212; the same way prompts encode domain knowledge. That&#8217;s why the same model, drawn as a graph, beats a bare ChatGPT-style loop for predictable work.</p><p><strong>A real workflow</strong>: turning &#8220;update the docs&#8221; into a graph &#8212; Slack request &#8594; classify (one LLM call) &#8594; two sub-agents in parallel (reference docs agent, concept docs agent) &#8594; synthesize (one LLM call) &#8594; open a PR:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%2186vT%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F2ef787d3-1669-433c-b618-c20324ef9c8c_1840x480.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!86vT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ef787d3-1669-433c-b618-c20324ef9c8c_1840x480.png 424w, https://substackcdn.com/image/fetch/$s_!86vT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ef787d3-1669-433c-b618-c20324ef9c8c_1840x480.png 848w, https://substackcdn.com/image/fetch/$s_!86vT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ef787d3-1669-433c-b618-c20324ef9c8c_1840x480.png 1272w, https://substackcdn.com/image/fetch/$s_!86vT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ef787d3-1669-433c-b618-c20324ef9c8c_1840x480.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%2186vT%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F2ef787d3-1669-433c-b618-c20324ef9c8c_1840x480.png" width="1456" height="380" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2ef787d3-1669-433c-b618-c20324ef9c8c_1840x480.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:380,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:63136,&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://zerofuturetech.substack.com/i/211816790?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ef787d3-1669-433c-b618-c20324ef9c8c_1840x480.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_!86vT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ef787d3-1669-433c-b618-c20324ef9c8c_1840x480.png 424w, https://substackcdn.com/image/fetch/$s_!86vT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ef787d3-1669-433c-b618-c20324ef9c8c_1840x480.png 848w, https://substackcdn.com/image/fetch/$s_!86vT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ef787d3-1669-433c-b618-c20324ef9c8c_1840x480.png 1272w, https://substackcdn.com/image/fetch/$s_!86vT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ef787d3-1669-433c-b618-c20324ef9c8c_1840x480.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>Note the diagram: nodes in the same graph have different degrees of freedom &#8212; gray is deterministic code (Slack/Linear API calls), light purple is a single LLM call (classify, synthesize), dark purple is a full sub-agent. That&#8217;s the soul of graph engineering: <strong>the balance between &#8220;deterministic rails&#8221; and &#8220;smart judgment.&#8221;</strong> It&#8217;s exactly the balance that made LangGraph take off (65M+ monthly downloads).</p><h3><strong>Three lessons from three years (LangChain&#8217;s official summary)</strong></h3><ol><li><p><strong>Production agent graphs are usually not DAGs</strong>: retrying failed tool calls, asking users for missing information, revising answers after validation, calling tools repeatedly until enough context, pausing for human input &#8212; all of it is &#8220;going back,&#8221; so cycles are the norm;</p></li><li><p><strong>A loop is just a simple graph</strong>: as LangGraph&#8217;s David Khourshid put it &#8212; &#8220;<strong>a loop is just a directed, cyclic graph.</strong>&#8220; And one node can hold an entire sub-agent inside it;</p></li><li><p><strong>Dynamic transitions matter</strong>: you don&#8217;t always want to define every edge up front. Classic case, map-reduce: split input into pieces, send each to a worker, combine &#8212; <strong>the number of workers is only known at runtime</strong>. LangGraph&#8217;s <code>Send</code><strong> API</strong> lets a node route work to one or more downstream nodes dynamically, without statically defining every transition.</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%215icb%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F9e7da7cc-34d0-451a-9c95-cc61c28abeaa_1720x520.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5icb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e7da7cc-34d0-451a-9c95-cc61c28abeaa_1720x520.png 424w, https://substackcdn.com/image/fetch/$s_!5icb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e7da7cc-34d0-451a-9c95-cc61c28abeaa_1720x520.png 848w, https://substackcdn.com/image/fetch/$s_!5icb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e7da7cc-34d0-451a-9c95-cc61c28abeaa_1720x520.png 1272w, https://substackcdn.com/image/fetch/$s_!5icb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e7da7cc-34d0-451a-9c95-cc61c28abeaa_1720x520.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%215icb%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F9e7da7cc-34d0-451a-9c95-cc61c28abeaa_1720x520.png" width="1456" height="440" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9e7da7cc-34d0-451a-9c95-cc61c28abeaa_1720x520.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:440,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:60372,&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://zerofuturetech.substack.com/i/211816790?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e7da7cc-34d0-451a-9c95-cc61c28abeaa_1720x520.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_!5icb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e7da7cc-34d0-451a-9c95-cc61c28abeaa_1720x520.png 424w, https://substackcdn.com/image/fetch/$s_!5icb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e7da7cc-34d0-451a-9c95-cc61c28abeaa_1720x520.png 848w, https://substackcdn.com/image/fetch/$s_!5icb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e7da7cc-34d0-451a-9c95-cc61c28abeaa_1720x520.png 1272w, https://substackcdn.com/image/fetch/$s_!5icb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e7da7cc-34d0-451a-9c95-cc61c28abeaa_1720x520.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><strong>When not to use graphs (important)</strong></h3><p>Some tasks are more agentic by nature, and forcing them into deterministic paths is the wrong move. LangChain admits it: generic deep research is the counterexample &#8212; planning, delegating, searching, reading, synthesizing can&#8217;t be pinned down ahead of time. GPT Researcher (the most popular deep research implementation) <strong>already swapped its graph-shaped multi-agent pipeline for Deep Agents</strong>, letting planning, delegation, and context management emerge in the harness instead of being hardcoded in the graph.</p><p><strong>My rule of thumb</strong>: does your process have a fixed pattern? Support classifying before answering, compliance approval before external actions, code changes checked against impact &#8212; that&#8217;s a pattern, draw the graph. Exploratory work (research, brainstorming) &#8212; don&#8217;t draw first, think first.</p><h2><strong>The Full Picture: How They Fit Together</strong></h2><p>Stack all five into one architecture and you get this (dense, English-original reference diagram):</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21WmcY%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F337e6e37-6a73-40e0-930c-98c57966d1b1_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WmcY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F337e6e37-6a73-40e0-930c-98c57966d1b1_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!WmcY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F337e6e37-6a73-40e0-930c-98c57966d1b1_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!WmcY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F337e6e37-6a73-40e0-930c-98c57966d1b1_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!WmcY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F337e6e37-6a73-40e0-930c-98c57966d1b1_1672x941.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21WmcY%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F337e6e37-6a73-40e0-930c-98c57966d1b1_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/337e6e37-6a73-40e0-930c-98c57966d1b1_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;:2027885,&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://zerofuturetech.substack.com/i/211816790?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F337e6e37-6a73-40e0-930c-98c57966d1b1_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_!WmcY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F337e6e37-6a73-40e0-930c-98c57966d1b1_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!WmcY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F337e6e37-6a73-40e0-930c-98c57966d1b1_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!WmcY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F337e6e37-6a73-40e0-930c-98c57966d1b1_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!WmcY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F337e6e37-6a73-40e0-930c-98c57966d1b1_1672x941.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Read it top-down: <strong>Ontology</strong> defines the rules at the top; <strong>Knowledge Graph / Context Graph / Code Graph</strong> are three graphs of the same shape with different grounding; <strong>Graph Engineering</strong> turns them into a queryable, executable system; at the bottom, the <strong>agent</strong> walks the task through &#8220;understand goal &#8594; query graphs &#8594; reason and decide &#8594; execute actions &#8594; write back and learn.&#8221;</p><div><hr></div><h2><strong>All Five Side by Side</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21BidF%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F9a738d31-16d5-4936-8bfd-442a3a7a97b2_1392x1431.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BidF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a738d31-16d5-4936-8bfd-442a3a7a97b2_1392x1431.png 424w, https://substackcdn.com/image/fetch/$s_!BidF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a738d31-16d5-4936-8bfd-442a3a7a97b2_1392x1431.png 848w, https://substackcdn.com/image/fetch/$s_!BidF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a738d31-16d5-4936-8bfd-442a3a7a97b2_1392x1431.png 1272w, https://substackcdn.com/image/fetch/$s_!BidF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a738d31-16d5-4936-8bfd-442a3a7a97b2_1392x1431.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21BidF%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F9a738d31-16d5-4936-8bfd-442a3a7a97b2_1392x1431.png" width="1392" height="1431" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9a738d31-16d5-4936-8bfd-442a3a7a97b2_1392x1431.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1431,&quot;width&quot;:1392,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:366654,&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://zerofuturetech.substack.com/i/211816790?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F706e3937-cf89-46bb-b620-3bf871953975_1392x2482.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_!BidF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a738d31-16d5-4936-8bfd-442a3a7a97b2_1392x1431.png 424w, https://substackcdn.com/image/fetch/$s_!BidF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a738d31-16d5-4936-8bfd-442a3a7a97b2_1392x1431.png 848w, https://substackcdn.com/image/fetch/$s_!BidF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a738d31-16d5-4936-8bfd-442a3a7a97b2_1392x1431.png 1272w, https://substackcdn.com/image/fetch/$s_!BidF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a738d31-16d5-4936-8bfd-442a3a7a97b2_1392x1431.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>Memory aid: <strong>rulebook &#8594; world-web &#8594; business context map &#8594; code plumbing</strong>, and the last one is the <strong>agent&#8217;s rails</strong>.</p><h3><strong>One Real Scenario: A Supplier-Sourcing Agent</strong></h3><p>An agent that finds, evaluates, and recommends suppliers &#8212; here&#8217;s which graph does what:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21SUqb%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F1284ef8e-2751-4b23-ac3a-765a46344e22_1392x773.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SUqb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1284ef8e-2751-4b23-ac3a-765a46344e22_1392x773.png 424w, https://substackcdn.com/image/fetch/$s_!SUqb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1284ef8e-2751-4b23-ac3a-765a46344e22_1392x773.png 848w, https://substackcdn.com/image/fetch/$s_!SUqb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1284ef8e-2751-4b23-ac3a-765a46344e22_1392x773.png 1272w, https://substackcdn.com/image/fetch/$s_!SUqb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1284ef8e-2751-4b23-ac3a-765a46344e22_1392x773.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21SUqb%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F1284ef8e-2751-4b23-ac3a-765a46344e22_1392x773.png" width="1392" height="773" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1284ef8e-2751-4b23-ac3a-765a46344e22_1392x773.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:773,&quot;width&quot;:1392,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:178920,&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://zerofuturetech.substack.com/i/211816790?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda27c630-61aa-4f79-adc7-f1e68d29e0e3_1392x898.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_!SUqb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1284ef8e-2751-4b23-ac3a-765a46344e22_1392x773.png 424w, https://substackcdn.com/image/fetch/$s_!SUqb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1284ef8e-2751-4b23-ac3a-765a46344e22_1392x773.png 848w, https://substackcdn.com/image/fetch/$s_!SUqb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1284ef8e-2751-4b23-ac3a-765a46344e22_1392x773.png 1272w, https://substackcdn.com/image/fetch/$s_!SUqb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1284ef8e-2751-4b23-ac3a-765a46344e22_1392x773.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><strong>Summary: Five Equations</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21of_g%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F1e980e1c-f275-4b9a-a180-de09c55ef5cc_1392x570.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!of_g!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e980e1c-f275-4b9a-a180-de09c55ef5cc_1392x570.png 424w, https://substackcdn.com/image/fetch/$s_!of_g!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e980e1c-f275-4b9a-a180-de09c55ef5cc_1392x570.png 848w, https://substackcdn.com/image/fetch/$s_!of_g!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e980e1c-f275-4b9a-a180-de09c55ef5cc_1392x570.png 1272w, https://substackcdn.com/image/fetch/$s_!of_g!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e980e1c-f275-4b9a-a180-de09c55ef5cc_1392x570.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21of_g%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F1e980e1c-f275-4b9a-a180-de09c55ef5cc_1392x570.png" width="1392" height="570" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1e980e1c-f275-4b9a-a180-de09c55ef5cc_1392x570.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:570,&quot;width&quot;:1392,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:118425,&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://zerofuturetech.substack.com/i/211816790?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faae91ecd-2b0d-46d4-91bb-eda80e65f671_1392x776.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_!of_g!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e980e1c-f275-4b9a-a180-de09c55ef5cc_1392x570.png 424w, https://substackcdn.com/image/fetch/$s_!of_g!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e980e1c-f275-4b9a-a180-de09c55ef5cc_1392x570.png 848w, https://substackcdn.com/image/fetch/$s_!of_g!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e980e1c-f275-4b9a-a180-de09c55ef5cc_1392x570.png 1272w, https://substackcdn.com/image/fetch/$s_!of_g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e980e1c-f275-4b9a-a180-de09c55ef5cc_1392x570.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>AI agents are converging on &#8220;two graphs&#8221;: one that <strong>describes the world</strong>, one that <strong>describes execution</strong>. The first four answer &#8220;what it knows&#8221;; graph engineering answers &#8220;how it acts.&#8221; Get both right, and the agent is both knowledgeable and dependable.</p><h2><strong>FAQ: Quick Answers</strong></h2><h3><strong>What&#8217;s the difference between an ontology and a knowledge graph?</strong></h3><p>An ontology is the &#8220;empty rulebook&#8221; &#8212; it defines types, relations, and rules (written in OWL/RDF Schema) but holds no instances. A knowledge graph is the web you get by filling that rulebook with real instances and facts (property graph or RDF). One line: <strong>the ontology says what can exist; the knowledge graph records what does exist.</strong></p><h3><strong>What&#8217;s the difference between a context graph and a knowledge graph?</strong></h3><p>Same structure; the difference is <strong>scope and grounding</strong>. A knowledge graph is a world model answering generally-true questions; a context graph is an organization model anchored to one company, answering &#8220;what should we trust and do right now,&#8221; layering task context, state, events, decision traces, and governance metadata on top of facts.</p><h3><strong>How is GraphRAG related to knowledge graphs?</strong></h3><p>GraphRAG isn&#8217;t a kind of graph &#8212; it&#8217;s a retrieval-augmented generation pattern that retrieves along a relation network (Microsoft, arXiv:2404.16130). It can sit on top of a knowledge graph <em>or</em> a context graph. <strong>The context graph is the infrastructure being retrieved from; GraphRAG is just one pattern. Don&#8217;t equate them.</strong></p><h3><strong>How is a code graph different from a regular dependency/call graph?</strong></h3><p>Package-manager dependency graphs stop at module/package granularity. A code graph goes down to functions, classes, and methods and includes <strong>dataflow</strong> (not just calls &#8212; e.g., <code>df.fillna</code> is identified as <code>pandas.read_csv.fillna</code>), inheritance, and doc/forum links &#8212; so it can answer &#8220;if I change this function, who downstream breaks?&#8221;</p><h3><strong>How is graph engineering different from ordinary workflow orchestration (DAGs)?</strong></h3><p>Ordinary orchestration just draws &#8220;what runs first, what runs next.&#8221; Graph engineering binds graph queries, relation reasoning, and agent orchestration together &#8212; nodes can be queries, reasoning steps, tool calls, or full sub-agents; edges can be conditional; loops, retries, human approval, and runtime dynamic routing (the Send API) are first-class. Production agent graphs are rarely DAGs.</p><h3><strong>Which graph should I use?</strong></h3><p>Quick lookup: unifying terminology or machine inference &#8594; <strong>ontology</strong>; general Q&amp;A and recommendations &#8594; <strong>knowledge graph</strong>; agents working inside your company, impact analysis, audit trails &#8594; <strong>context graph</strong>; changing code or coding agents &#8594; <strong>code graph</strong>; orchestrating a process with a fixed pattern &#8594; <strong>graph engineering</strong>.</p><h2><strong>References</strong></h2><p><strong>Primary sources (web articles)</strong>:</p><ol><li><p><a href="iframe.php?url=https%3A%2F%2Fwww.langchain.com%2Fblog%2F3-years-of-graph-engineering-with-langgraph">3 Years of Graph Engineering with LangGraph</a> &#8212; LangChain Blog, 2026-07 (65M+ downloads, state-machine modeling, Send API, GPT Researcher counterexample)</p></li><li><p><a href="iframe.php?url=https%3A%2F%2Fdatahub.com%2Fblog%2Fcontext-graph-vs-knowledge-graph%2F">Context Graph vs Knowledge Graph: What&#8217;s the Difference?</a> &#8212; DataHub Blog, 2026-04-30 (scope and grounding, world-model vs organization-model, Kurt Cagle quote)</p></li><li><p><a href="iframe.php?url=https%3A%2F%2Fatlan.com%2Fknow%2Fcontext-graph-vs-ontology%2F">Context Graph vs. Ontology: Differences, Roles &amp; Use Cases</a> &#8212; Atlan, 2026-01-27 (three layers, five governance layers, MCP, Gartner/Workday data, tool comparison)</p></li><li><p><a href="iframe.php?url=https%3A%2F%2Fneo4j.com%2Fblog%2Fknowledge-graph%2Ftaxonomy-vs-ontology-vs-knowledge-graph%2F">Taxonomy vs. ontology vs. knowledge graph: What&#8217;s the difference?</a> &#8212; Neo4j Blog, 2026-06-17 (four KG parts, Cypher examples, RDF critique, SKOS/n10s)</p></li><li><p><a href="iframe.php?url=https%3A%2F%2Farxiv.org%2Fabs%2F2002.09440">A Toolkit for Generating Code Knowledge Graphs (GraphGen4Code)</a> &#8212; IBM Research + RPI, arXiv:2002.09440 (1.38M files / 47M posts / 2.09B-edge pipeline) </p></li><li><p><a href="iframe.php?url=https%3A%2F%2Farxiv.org%2Fabs%2F2406.11160">Context Graph</a> &#8212; IDEA Research, arXiv:2406.11160 (CGR3 retrieve-rank-reason paradigm; Obama timestamp example)</p></li><li><p><a href="iframe.php?url=https%3A%2F%2Fsearch.googleblog.com%2F2012%2F05%2Fintroducing-knowledge-graph-things-not.html">Introducing the Knowledge Graph: things, not strings</a> &#8212; Google official blog, 2012-05-16 (500M+ entities, 3.5B+ facts) </p></li><li><p><a href="iframe.php?url=https%3A%2F%2Fwww.wikidata.org%2Fwiki%2FUser_talk%3ACzupirek%2FNewsletter%238">Wikidata statistics</a> &#8212; Wikidata community statistics (106M+ items) </p></li><li><p><a href="iframe.php?url=https%3A%2F%2Fwww.anthropic.com%2Fnews%2Fmodel-context-protocol">Introducing the Model Context Protocol</a> &#8212; Anthropic, 2024-11-25 (MCP protocol launch) </p></li><li><p><a href="iframe.php?url=https%3A%2F%2Farxiv.org%2Fabs%2F2404.16130">From Local to Global: A Graph RAG Approach to Query-Focused Summarization</a> &#8212; Microsoft, arXiv:2404.16130 (original GraphRAG paper)</p></li></ol><div><hr></div><p><em>If this cleared up the five terms for you, subscribe to zerofuturetech &#8212; we keep breaking down AI infrastructure concepts in plain words, diagrams, and code.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://zerofuturetech.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">zerofuturetech's newsletter is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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: Everything is a Plugin]]></title><description><![CDATA[DeepSeek-AI and Peking University prove software can be installed and removed cleanly without a restart &#8212; laying the groundwork for self-modifying AI agent harnesses.]]></description><link>https://zerofuturetech.substack.com/p/deepseek-harness-everything-is-a</link><guid isPermaLink="false">https://zerofuturetech.substack.com/p/deepseek-harness-everything-is-a</guid><dc:creator><![CDATA[zerofuturetech]]></dc:creator><pubDate>Sun, 16 Aug 2026 13:54:35 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee1dda77-ef8e-4aac-a485-756ecda76304_2000x1500.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><span>Welcome to my newsletter. Here is </span><em>ZeroFutureTech</em><span>&#12290;I will share what I learned, researched and did in AI-related domain. Welcome to follow my </span><a href="iframe.php?url=https%3A%2F%2Fx.com%2Fjingwangtalk">X</a><span>.</span></p><p>Associated with this newsletter, I posted my video on Youtube (Note it is Chinese). Welcome to watch it.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://zerofuturetech.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">zerofuturetech's newsletter is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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 id="youtube2--VySKVrH710" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;-VySKVrH710&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="iframe.php?url=https%3A%2F%2Fwww.youtube-nocookie.com%2Fembed%2F-VySKVrH710%3Frel%3D0%26amp%3Bautoplay%3D0%26amp%3Bshowinfo%3D0%26amp%3Benablejsapi%3D0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>If you&#8217;ve ever turned off a VS Code extension and had the editor beg you to reload the whole window, you already know the feeling this paper is about. A new paper out of Peking University and DeepSeek-AI argues that this isn&#8217;t just an annoying detail &#8212; it&#8217;s a gap nobody had actually closed, and they built something that closes it.</p><p>Here&#8217;s the twist: the paper isn&#8217;t really about code editors. It&#8217;s laying groundwork for something closer to DeepSeek&#8217;s real interest &#8212; AI agents that rewrite their own tools while they&#8217;re running, with no human watching over their shoulder. VS Code is just the example every developer already has a gut feeling about, and the paper uses it as the easy way in before getting to what it actually cares about.</p><h2><strong>The problem, in plain terms</strong></h2><p>Software is supposed to work like Lego bricks: plugins, extensions, tools &#8212; pieces you snap in and out whenever you want. In reality, that&#8217;s not how it goes. Remove one piece, and you either have to restart the whole thing (losing every open session, cache, and connection along the way) or you&#8217;re left with weird leftover mess that nobody can account for.</p><p>There are really two separate problems hiding inside &#8220;plugins are annoying to remove&#8221;:</p><ul><li><p><strong>Can you clean up completely?</strong> When a plugin is removed, does everything it touched actually get put back the way it was &#8212; every notification it signed up for, every connection it opened, every setting it changed?</p></li><li><p><strong>Do plugins actually know what they need from each other?</strong> Can a plugin say &#8220;I need this other thing to work,&#8221; and does the system react sensibly when that thing shows up, disappears, or gets swapped out?</p></li></ul><p>Most plugin systems fail at both, and the numbers from VS Code are almost embarrassing: of the top 100 extensions by install count, <strong>87 of them contain real code and therefore need a full restart to remove</strong>. VS Code&#8217;s official &#8220;shutdown&#8221; hook only fires when you close the whole editor, not when you remove one extension &#8212; and even then, the code that cleans up lives in a totally different place from the code that made the mess, so there&#8217;s nothing forcing the two to actually match up.</p><p>On the other side: only <strong>7 out of those same 100 extensions bother to declare a formal dependency</strong> on another extension. Not because plugins rarely need each other &#8212; but because the tools VS Code gives you for expressing &#8220;I depend on that other plugin&#8221; are so weak and untyped that developers just avoid using them entirely.</p><h2><strong>The fix, in plain terms</strong></h2><p>The core idea is actually simple, even though the paper spends 88 pages proving it rigorously: <strong>make every action come with its own undo button, and make every dependency come with its own doorbell.</strong></p><p><strong>The undo button.</strong> Instead of a plugin just quietly changing things and hoping someone remembers to clean up later, every single change is recorded together with exactly how to reverse it &#8212; right at the moment it happens, not written separately somewhere else. Think of it like the undo history in a text editor: every keystroke gets logged, and hitting Ctrl+Z enough times gets you back to a blank page. Uninstalling a plugin is exactly that &#8212; running its whole undo history backward. Nobody has to remember to write a cleanup script; the cleanup is automatically built from whatever the plugin actually did.</p><p>There&#8217;s a nice wrinkle here that shows the authors actually thought this through: undoing things strictly in reverse order is the safe default, but it&#8217;s not the only option. If two plugins are doing things that don&#8217;t interfere with each other &#8212; say, two different bots each listening for their own separate messages &#8212; it genuinely doesn&#8217;t matter which one gets undone first. But if plugins are chained together, like an assembly line where each step processes what the step before it produced, then order suddenly matters a lot, and you can&#8217;t just yank one out of the middle. The paper is honest about which situation you&#8217;re in before it lets you skip the strict order.</p><p><strong>The doorbell.</strong> Instead of a plugin discovering a broken dependency only when it crashes, every plugin announces up front, in plain terms, what it needs &#8212; a storage service, a network connection, whatever. The system keeps a checklist: a plugin is only allowed to turn on once everything on its checklist is actually available. When something changes, the system checks the checklist of <em>every</em> plugin, but only pings the ones whose checklist is actually affected. It&#8217;s the exact apartment-building trick you&#8217;d expect: if the water goes out, the building manager only wakes up the tenants who said &#8220;I need hot water&#8221; &#8212; everyone else keeps sleeping.</p><p>Two extra tricks stack on top of this, and both map onto very real problems:</p><ul><li><p><strong>The same word can mean different things to different tenants.</strong> If you&#8217;re running one plugin for ten different customers, you want each customer&#8217;s &#8220;storage&#8221; to point at a completely separate database &#8212; without changing a single line of the plugin&#8217;s own code. That&#8217;s exactly what this mechanism buys you.</p></li><li><p><strong>A landlord can post extra house rules without touching the tenant&#8217;s stuff.</strong> A plugin can ask for &#8220;database access,&#8221; and something above it &#8212; an app owner, a security policy &#8212; can quietly attach a rule like &#8220;read-only for this one&#8221; without editing the plugin at all, and that outside rule always wins. That&#8217;s how you&#8217;d give a community-made plugin limited access while your own official plugins keep full access, using the exact same underlying plugin code for both.</p></li></ul><h2><strong>&#8220;Blueprint&#8221; vs. &#8220;the actual thing built from it&#8221;</strong></h2><p>One detail that clears up a lot of confusion: the paper is careful to separate a <strong>plugin&#8217;s definition</strong> (the code, plus what it needs and what it offers) from <strong>a running copy of it</strong>. That&#8217;s just the blueprint-vs-building distinction. The same &#8220;chat platform connector&#8221; plugin code can be spun up as two separate running copies at once &#8212; one talking to Discord, one talking to Telegram &#8212; each with its own on/off switch and its own undo history, completely independent of the other. Almost everything interesting in the paper is really about the running copies, not the code itself, which by itself is just a template sitting on a shelf.</p><h2><strong>The boring-looking edge cases are where the real engineering is</strong></h2><p>The headline ideas (undo buttons, doorbells) handle the easy 80% of the problem. The paper spends a comparable amount of effort on the messy 20% &#8212; what actually happens at the exact moment something is turning on or off:</p><ul><li><p><strong>Don&#8217;t pull the rug out while someone&#8217;s still using it.</strong> If Plugin B depends on Plugin A, and A is being shut down, A can&#8217;t just vanish &#8212; the connections A is handing back might literally be things it needs to give back to <em>its own</em> upstream service first. So A first stops advertising itself as available (so nothing new can start relying on it), then waits for every plugin currently depending on it to finish shutting itself down, and only then does A run its own cleanup. Get this order wrong, and you either freeze the whole system or yank something out from under a plugin that&#8217;s mid-task.</p></li><li><p><strong>Loading can pause partway and back out cleanly.</strong> Turning a plugin on isn&#8217;t one giant leap &#8212; it&#8217;s broken into checkpoints. Between checkpoints, the system rechecks whether anything the plugin depends on has changed. If it has, loading stops right there and only undoes what&#8217;s actually been done so far &#8212; not the whole system, not a half-broken mess.</p></li><li><p><strong>You can&#8217;t un-send a letter.</strong> Once a plugin has actually fired off a network request or opened a real connection, there&#8217;s no taking it back mid-flight &#8212; you have to let it land first. The system is built around this: an in-progress action is always allowed to finish, and <em>only then</em> does the plugin react to whatever changed while it was busy. This is the difference between a theory that&#8217;s elegant on paper and one that actually survives contact with real, messy I/O.</p></li><li><p><strong>One broken plugin doesn&#8217;t take the others down with it.</strong> If a plugin throws an error while starting up, the system runs the exact same cleanup path it would use for a normal shutdown, and marks that one plugin as failed &#8212; it doesn&#8217;t retry forever against an environment that hasn&#8217;t changed, and the failure doesn&#8217;t spread to its neighbors. That&#8217;s exactly the behavior you&#8217;d want from any plugin host, and the paper is explicit that this is why failures are handled one plugin at a time instead of as some global system-wide event.</p></li></ul><h2><strong>Why the math actually matters here</strong></h2><p>It would&#8217;ve been easy to stop at &#8220;track changes, declare dependencies&#8221; &#8212; plenty of frameworks already gesture at both, and the authors admit they&#8217;re not the first to try. What sets this paper apart is that it doesn&#8217;t just claim the mechanism works &#8212; it proves it, with roughly sixty formal statements covering things like: the system never gets stuck, it always settles down eventually, and &#8212; the one that actually matters if you&#8217;re running this in production &#8212; <strong>no matter what order plugins load, unload, and reload in, and no matter how those actions get interleaved in time, the system always ends up in the exact same final state.</strong> Not &#8220;usually.&#8221; Not &#8220;in the cases we tested.&#8221; Always. That&#8217;s the guarantee that lets you treat a constantly-changing, live system as if it were something simple and static when you reason about it &#8212; and without it, all anyone could honestly claim about a hot-reload feature is &#8220;it happened not to break when I tried it.&#8221;</p><p>Worth comparing this to the two familiar extremes, because the paper does exactly this. React&#8217;s <code>useEffect</code> hook already pairs an action with a cleanup function the framework calls automatically &#8212; which is basically the same idea in miniature. But it&#8217;s badly boxed in: you can only use it at the very top level of a component, never inside a loop or an if-statement, and it can&#8217;t be async. So a hook&#8217;s cleanup can never really be built out of other hooks&#8217; cleanups. The system in this paper has none of those restrictions &#8212; its version of &#8220;an action with a cleanup attached&#8221; can be async, can be looped, can be nested arbitrarily deep, which is exactly what a plugin doing real work (network calls, file access) actually needs.</p><h2><strong>Not just theory &#8212; already running 4,000+ real plugins</strong></h2><p>The authors built all this into something called <strong>Cordis</strong>, a framework written in TypeScript. It comes in layers: a core piece that does the actual undo-tracking and dependency-checking; a layer on top that lets you describe your whole system as a config file and have the system figure out the minimal set of changes needed to match it, rather than tearing everything down and starting over; and app-specific frameworks built on top of both.</p><p>That config layer also ships with live code-reloading during development that needs zero manual setup from the plugin author &#8212; unlike similar tools in the JavaScript ecosystem, which usually require you to hand-write &#8220;here&#8217;s how to accept this specific update.&#8221; It figures out on its own which files changed, which plugins are actually affected, and reloads only those &#8212; and if a reload fails halfway (say, a typo introduces a syntax error), it rolls the whole batch back to the last working version instead of leaving your app in some broken in-between state.</p><p>All of this is already powering <strong>Koishi</strong>, an open-source chatbot framework that&#8217;s been in active development for four years and has accumulated <strong>over 4,000 community-made plugins</strong> &#8212; connectors to different chat platforms, database drivers, admin dashboards, you name it. Interestingly, Koishi&#8217;s web-based admin console is a <em>second, completely separate</em> system built on the exact same underlying framework, but running entirely in a browser instead of on a server &#8212; good evidence this isn&#8217;t a trick that only works for one specific kind of software.</p><p>The authors are refreshingly upfront about the limits here too: this is one plugin ecosystem, in one programming language, and what they&#8217;ve shown is &#8220;this actually exists and people use it&#8221; rather than a controlled experiment proving it beats the alternatives. Nobody yet knows how much overhead all this undo-tracking and dependency-checking adds at a much bigger scale, or whether it holds up outside the specific tech stack it was built in.</p><h2><strong>The paper argues with itself, and that&#8217;s a good sign</strong></h2><p>A big chunk of the paper (roughly a third) is the authors poking holes in their own idea, which is honestly some of the most useful material in the whole thing for deciding how much to trust it:</p><ul><li><p><strong>Not everything can actually be undone.</strong> The whole system depends on drawing a boundary around what it&#8217;s allowed to promise to fix. Write something to a database it controls? Fully reversible. But the moment a plugin does something that leaves the system&#8217;s boundary &#8212; sends an email, charges a credit card, writes a message another program has already read &#8212; there&#8217;s no real &#8220;undo&#8221; anymore. The best you can do is either hold off on the risky action until you&#8217;re sure it&#8217;ll stick, or <em>compensate</em> afterward: issue a refund instead of un-charging the card, delete the file instead of un-writing it. Similar idea, way less of a guarantee.</p></li><li><p><strong>Two plugins that need each other just... never turn on.</strong> If Plugin A needs something from Plugin B, and B needs something from A, neither one&#8217;s checklist can ever be fully checked off &#8212; nothing crashes, they just sit there forever, doing nothing. The fix the paper suggests is splitting things up more finely &#8212; e.g., break a &#8220;server + access-control&#8221; plugin pair into four smaller, one-directional pieces instead of two that need each other. The catch, which the authors say plainly: the number of these little connector pieces you need can grow much faster than the number of original plugins, so you&#8217;re trading a correctness headache for a &#8220;now I have fifty tiny plugins to keep track of&#8221; headache.</p></li><li><p><strong>Two plugins can accidentally use the same name for completely different things.</strong> If Plugin A calls its database connection &#8220;storage&#8221; and Plugin B &#8212; built by a totally different team &#8212; also calls its thing &#8220;storage,&#8221; but they mean two different databases, the system has no way of knowing they&#8217;re not actually compatible. Or a plugin quietly changes its own interface in a later version, and everything still depending on the old version breaks in confusing ways. The paper lays out a few partial fixes and admits, straightforwardly, that nobody&#8217;s solved this cleanly yet.</p></li></ul><h2><strong>How this stacks up against stuff you might already know</strong></h2><ul><li><p><strong>OSGi</strong>, an older Java framework, already lets plugins declare what services they provide and need, and reacts automatically when those come and go &#8212; which is basically the ancestor of the &#8220;doorbell&#8221; idea here. Where it falls short is exactly where VS Code falls short: cleanup is a hand-written callback, easy to forget, and it can&#8217;t properly wait for something that takes time to finish shutting down.</p></li><li><p><strong>Erlang and tools like Webpack&#8217;s live-reload</strong> take a genuinely different bet: instead of undoing the old version, they try to carefully migrate its existing state forward into the new version. That&#8217;s nicer when it works &#8212; nothing gets lost &#8212; but it means someone has to hand-write a migration recipe for every single version change. This paper&#8217;s approach needs zero migration code, at the cost of starting fresh in memory every time something reloads, unless a plugin deliberately stashes its state somewhere longer-lived.</p></li><li><p><strong>React&#8217;s </strong><code>useEffect</code>, again, is the closest cousin in spirit &#8212; but boxed into a much narrower slice of what real plugins actually need to do, for the reasons above.</p></li></ul><h2><strong>Where this actually points: AI agents that rewrite themselves</strong></h2><p>This is the part that explains why a company like DeepSeek would co-author a paper about plugin architecture in the first place. The paper says it outright: future AI agent systems &#8220;may generate and deploy modifications to its own components while continuously serving requests&#8221; &#8212; an AI rewriting its own tools mid-task, with little or no human checking its work. The paper explicitly cites blog posts from both OpenAI and Anthropic about building these kinds of AI &#8220;harnesses&#8221; as the real-world backdrop for this research. And the closing section names exactly this &#8212; AI agents that keep evolving themselves &#8212; as the next thing they want to test this framework against.</p><p>That completely changes how heavy this all feels. Restarting a code editor to remove a broken extension costs you a few seconds of mild annoyance. Restarting an AI agent mid-task, with nobody around to notice or approve the restart, costs you the entire task &#8212; and if a bad self-modification happens to disable the very thing the agent would need to fix itself, it costs the agent its ability to recover at all. The moment the thing doing the swapping is an autonomous system nobody&#8217;s watching, &#8220;provably correct&#8221; stops being a nice-to-have.</p><h2><strong>My take</strong></h2><p>The core idea here is genuinely new, as far as I can tell &#8212; nobody had formally connected &#8220;track what changed&#8221; and &#8220;declare what you need&#8221; to systems that actually change while running, only to code that&#8217;s fixed before you hit run. The VS Code numbers alone are worth remembering on their own: a 7% dependency-declaration rate in a huge, well-funded plugin ecosystem tells you the tooling itself was the bottleneck, not lazy developers. Anyone building a plugin or tool ecosystem right now &#8212; and that very much includes the wave of AI tool-connector standards showing up everywhere &#8212; should take that seriously.</p><p>Where I&#8217;d push back a little: the authors are upfront that Koishi is a single data point, and &#8220;this works great for chatbot plugins&#8221; is a long way from &#8220;this is how you should build a self-modifying AI agent.&#8221; The self-evolving-agent use case that motivates the entire paper is explicitly listed as <em>future work</em>, not something they&#8217;ve actually shown works. And the honest limitations they list themselves &#8212; things outside the system&#8217;s reach can only be patched up, not truly undone; interdependent plugins multiply fast when you split them apart; version conflicts are still an open problem &#8212; are exactly the sharp edges an unsupervised AI agent would hit hardest, precisely because there&#8217;s nobody around to notice when a &#8220;patch it up&#8221; fix didn&#8217;t actually fix it. If this really is early groundwork for agents that rewrite their own toolchains on their own, the genuinely exciting follow-up paper is the one where this survives an AI doing that for real, under real load, with no human checking its work. Until then, this is a solid, unusually honest foundation &#8212; with its hardest test still ahead of it.</p><p><strong>One-sentence takeaway:</strong> DeepSeek and Peking University didn&#8217;t just patch the &#8220;restart your editor to remove a plugin&#8221; annoyance &#8212; they proved, with real math, that plugins can be installed and removed cleanly and safely, built it into something already running in production, were refreshingly honest about exactly where that proof stops holding, and pointed straight at the real reason they care: someday, AI agents will need to safely rebuild themselves while nobody&#8217;s watching.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://zerofuturetech.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">zerofuturetech's newsletter is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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[Agent System Design Patterns: 7 Patterns From Prompt Chaining to Multi-Agent]]></title><description><![CDATA[Don't build an agent first. Teams that actually ship start with the simplest pattern that works, and add autonomy only when there's evidence they need it.]]></description><link>https://zerofuturetech.substack.com/p/agent-system-design-patterns-7-patterns</link><guid isPermaLink="false">https://zerofuturetech.substack.com/p/agent-system-design-patterns-7-patterns</guid><dc:creator><![CDATA[zerofuturetech]]></dc:creator><pubDate>Wed, 12 Aug 2026 12:03:55 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dfe1f76-9723-4f8f-bf92-43f4c8f39d61_2000x1500.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><span>Welcome to my newsletter. Here is </span><em>ZeroFutureTech</em><span>&#12290;I will share what I learned, researched and did in AI-related domain. Welcome to follow my </span><a href="iframe.php?url=https%3A%2F%2Fx.com%2Fjingwangtalk">X</a><span>.</span></p><p>Associated with this newsletter, I posted my video on Youtube (Note it is Chinese). Welcome to watch it. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://zerofuturetech.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">zerofuturetech's newsletter is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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 id="youtube2-kfPA0E5IN3Y" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;kfPA0E5IN3Y&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="iframe.php?url=https%3A%2F%2Fwww.youtube-nocookie.com%2Fembed%2FkfPA0E5IN3Y%3Frel%3D0%26amp%3Bautoplay%3D0%26amp%3Bshowinfo%3D0%26amp%3Benablejsapi%3D0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>There are two camps when the topic is AI agents: people who treat &#8220;agent&#8221; as a cure-all and shove one into every feature, and people who dismiss it as marketing fluff. Both are wrong.</p><p>Andrew Ng framed it best: <strong>&#8220;Rather than having to choose whether or not something is an agent in a binary way, it would be more useful to think of systems as being agent-like to different degrees.&#8221;</strong></p><p>That points to a far more practical lens: agenticity is a spectrum, not a checkbox. MongoDB calls these <strong>agentic systems</strong> &#8212; systems that use LLMs to decide the execution flow of an application with varying degrees of autonomy. The question is never &#8220;is this an agent?&#8221; but &#8220;how much decision-making authority did we delegate to the LLM?&#8221; From hard-coded flows to fully autonomous multi-agent systems, every rung has a mature design pattern with its own cost, latency, and reliability profile.</p><p>Here&#8217;s one counterintuitive fact to hold onto (from Anthropic&#8217;s work with dozens of teams): <strong>the most successful implementations almost never used complex frameworks.</strong> They were built with simple, composable patterns. Agentic systems routinely trade latency and cost for better task performance &#8212; make that trade only when it&#8217;s worth it.</p><p>This post maps the patterns that teams at Anthropic, OpenAI, MongoDB, and Databricks actually use in production &#8212; what each one is, when to reach for it, what it looks like in the real world, and implementation sketches you can copy.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%210kdH%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F2f73e8fb-2bdf-42fd-92eb-6b268ea07151_1600x420.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0kdH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f73e8fb-2bdf-42fd-92eb-6b268ea07151_1600x420.png 424w, https://substackcdn.com/image/fetch/$s_!0kdH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f73e8fb-2bdf-42fd-92eb-6b268ea07151_1600x420.png 848w, https://substackcdn.com/image/fetch/$s_!0kdH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f73e8fb-2bdf-42fd-92eb-6b268ea07151_1600x420.png 1272w, https://substackcdn.com/image/fetch/$s_!0kdH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f73e8fb-2bdf-42fd-92eb-6b268ea07151_1600x420.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%210kdH%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F2f73e8fb-2bdf-42fd-92eb-6b268ea07151_1600x420.png" width="1456" height="382" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2f73e8fb-2bdf-42fd-92eb-6b268ea07151_1600x420.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:382,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:76485,&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://zerofuturetech.substack.com/i/210860928?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f73e8fb-2bdf-42fd-92eb-6b268ea07151_1600x420.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_!0kdH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f73e8fb-2bdf-42fd-92eb-6b268ea07151_1600x420.png 424w, https://substackcdn.com/image/fetch/$s_!0kdH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f73e8fb-2bdf-42fd-92eb-6b268ea07151_1600x420.png 848w, https://substackcdn.com/image/fetch/$s_!0kdH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f73e8fb-2bdf-42fd-92eb-6b268ea07151_1600x420.png 1272w, https://substackcdn.com/image/fetch/$s_!0kdH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f73e8fb-2bdf-42fd-92eb-6b268ea07151_1600x420.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><strong>First, pin down two distinctions: Workflow &#8800; Agent, LLM &#8800; Agent</strong></h2><h3><strong>Workflows and Agents are not the same thing</strong></h3><p>Anthropic&#8217;s <em>Building Effective Agents</em> gives the most useful framing, with a concrete example for each:</p><ul><li><p><strong>Workflows</strong> are systems where LLMs and tools are orchestrated through <strong>predefined code paths</strong>. The flow is fixed; the LLM only generates within each step and never decides what comes next. <strong>Example</strong>: a fixed RAG chain &#8212; retrieve &#8594; assemble the prompt &#8594; generate, the order is hardcoded; a &#8220;marketing copy &#8594; translate&#8221; prompt chain is a classic workflow too.</p></li><li><p><strong>Agents</strong> are systems where LLMs <strong>dynamically direct their own process</strong> &#8212; which tools to call, how many turns, when to stop. <strong>Example</strong>: a support agent facing &#8220;I want to return this&#8221; has no script &#8212; it decides to look up the order, check the return policy, verify the window, then trigger the refund, each step decided on the fly.</p></li></ul><p>The distinction matters because the cost structures differ. Workflows are predictable, auditable, low-latency. Agents are flexible and can handle open-ended tasks &#8212; at the price of higher cost and compounding errors.</p><p>Databricks&#8217; docs walk through a call center agent end-to-end, which makes it concrete where the &#8220;decisions&#8221; actually happen:</p><blockquote><p>User: &#8220;Can you help me return my last order?&#8221;</p><ol><li><p><strong>Reason and plan</strong>: Identify the intent, plan &#8220;look up the user&#8217;s recent order and check our return policy.&#8221;</p></li><li><p><strong>Find information</strong>: Query the order database, reference the policy document.</p></li><li><p><strong>Reason</strong>: Check whether the order fits in the return window &#8212; optionally: if the item falls into a certain category or is outside the normal window, escalate to a human.</p></li><li><p><strong>Action</strong>: Trigger the return process, generate a shipping label.</p></li><li><p><strong>Reason</strong>: Respond to the customer. &#8220;Done! Here is your shipping label&#8230;&#8221;</p></li></ol></blockquote><p>These steps are second nature in a <em>human</em> call center. In an <em>agent system</em>, the LLM reasons while specialized tools and data sources fill in the details.</p><h3><strong>LLMs and Agents are not the same thing either</strong></h3><p><strong>An LLM is a model; an Agent is a system.</strong> The difference isn&#8217;t intelligence &#8212; it&#8217;s whether there&#8217;s an <em>action loop</em>. An LLM only generates text: ask it &#8220;where is my order?&#8221; and it guesses from training data. An agent gets things done: for the same question it calls <code>lookup_order()</code> to fetch your real order, calls <code>track_order()</code> for live shipping status, and answers from actual data. It&#8217;s not guessing &#8212; it&#8217;s doing.</p><p>What makes up an agent? Lilian Weng&#8217;s (OpenAI research scientist, 2023 classic <em>LLM Powered Autonomous Agents</em>) framework has four parts:</p><ul><li><p><strong>LLM as the core brain</strong>: the model that drives reasoning and decisions. You don&#8217;t need the strongest model for every task &#8212; run the strongest model everywhere to establish a baseline, then swap in smaller models one by one and verify they still pass. Simple retrieval with a small model; refund approvals with a large one.</p></li><li><p><strong>Planning</strong>: decompose complex goals into executable subtasks and order them (task decomposition), reflect and adjust when stuck. Representative techniques: ReAct (reasoning and acting in alternation), HuggingGPT&#8217;s pipeline-style decomposition.</p></li><li><p><strong>Memory</strong>: short-term memory is the conversation history in the context window; long-term memory lives in external storage (vector stores, databases) and retains user preferences and past decisions across sessions, retrieved and injected when needed.</p></li><li><p><strong>Tools</strong>: the channels through which an agent gathers information and takes action &#8212; three kinds: Data tools (query databases, read docs, search the web), Action tools (send email, update records), and Orchestration tools (wrap other agents as tools).</p></li></ul><p>Production adds two more: <strong>instructions</strong> (the SOP &#8212; good instructions come from real operational docs: decomposed steps, explicit actions, edge branches written in advance; without them, behavior is uncontrollable. It&#8217;s rule one of OpenAI&#8217;s official agent guide) and <strong>guardrails</strong> (permissions and compliance). Remember this one: an agent without guardrails doesn&#8217;t go to production.</p><p>One more concept worth investing in: the <strong>ACI</strong> (agent-computer interface). Anthropic&#8217;s rule of thumb: put as much effort into the interface between agents and tools as you&#8217;d put into a human-computer interface. Tool descriptions need examples, edge cases, and parameter docs; prefer absolute paths over relative ones &#8212; on SWE-bench they found the model kept fumbling relative file paths, and the problem vanished once tools forced absolute paths. Write it like a great docstring for a new junior engineer.</p><h2><strong>1. Controlled workflows &#8212; zero autonomy, start here</strong></h2><h3><strong>1. Prompt Chaining</strong></h3><p>Decompose a task into a fixed sequence of steps; each LLM call processes the previous step&#8217;s output, with programmatic &#8220;gates&#8221; between steps that stop the flow when something&#8217;s off. Every call becomes a smaller task &#8212; you trade latency for accuracy, and errors don&#8217;t snowball because each step is checked.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21P0Jy%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F01f5dad8-3cb2-4a76-a8f9-58067c949b67_1600x426.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!P0Jy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01f5dad8-3cb2-4a76-a8f9-58067c949b67_1600x426.png 424w, https://substackcdn.com/image/fetch/$s_!P0Jy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01f5dad8-3cb2-4a76-a8f9-58067c949b67_1600x426.png 848w, https://substackcdn.com/image/fetch/$s_!P0Jy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01f5dad8-3cb2-4a76-a8f9-58067c949b67_1600x426.png 1272w, https://substackcdn.com/image/fetch/$s_!P0Jy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01f5dad8-3cb2-4a76-a8f9-58067c949b67_1600x426.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21P0Jy%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F01f5dad8-3cb2-4a76-a8f9-58067c949b67_1600x426.png" width="1456" height="388" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/01f5dad8-3cb2-4a76-a8f9-58067c949b67_1600x426.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:388,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:32836,&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://zerofuturetech.substack.com/i/210860928?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01f5dad8-3cb2-4a76-a8f9-58067c949b67_1600x426.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_!P0Jy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01f5dad8-3cb2-4a76-a8f9-58067c949b67_1600x426.png 424w, https://substackcdn.com/image/fetch/$s_!P0Jy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01f5dad8-3cb2-4a76-a8f9-58067c949b67_1600x426.png 848w, https://substackcdn.com/image/fetch/$s_!P0Jy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01f5dad8-3cb2-4a76-a8f9-58067c949b67_1600x426.png 1272w, https://substackcdn.com/image/fetch/$s_!P0Jy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01f5dad8-3cb2-4a76-a8f9-58067c949b67_1600x426.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><pre><code><code># A fixed RAG chain: the order is hardcoded, the model doesn't get a vote
docs = vector_store.search(query, top_k=5)      # &#9312; retrieve top-k relevant docs
prompt = assemble(query, docs)                  # &#9313; user request + retrieved context
answer = llm.generate(prompt)                   # &#9314; generate the response
</code></code></pre><p><strong>Use it when</strong>: the task decomposes cleanly into fixed subtasks and you&#8217;d trade latency for accuracy; you want intermediate checkpoints to guarantee quality.</p><p><strong>Real-world</strong>:</p><ul><li><p>Generate marketing copy &#8594; translate it into other languages</p></li><li><p>Write an outline &#8594; check the outline against criteria &#8594; write the document from it</p></li><li><p>Content review: an LLM fixes punctuation and grammar, verifies against style guides, fact-checks &#8212; then the document goes to human technical review</p></li><li><p>Natural language to query: a sequential self-querying workflow that extracts data sources, filters, and other query parameters step by step</p></li></ul><h3><strong>2. Routing</strong></h3><p>A smart switch: an LLM classifies the input and sends it down the right path &#8212; different prompts, smaller vs. larger models, or domain-specific fine-tuned models or microservices.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%210Hmj%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F10f6940b-4f8b-4a46-8caf-301123e7890e_1600x552.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0Hmj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10f6940b-4f8b-4a46-8caf-301123e7890e_1600x552.png 424w, https://substackcdn.com/image/fetch/$s_!0Hmj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10f6940b-4f8b-4a46-8caf-301123e7890e_1600x552.png 848w, https://substackcdn.com/image/fetch/$s_!0Hmj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10f6940b-4f8b-4a46-8caf-301123e7890e_1600x552.png 1272w, https://substackcdn.com/image/fetch/$s_!0Hmj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10f6940b-4f8b-4a46-8caf-301123e7890e_1600x552.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%210Hmj%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F10f6940b-4f8b-4a46-8caf-301123e7890e_1600x552.png" width="1456" height="502" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/10f6940b-4f8b-4a46-8caf-301123e7890e_1600x552.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:502,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:43160,&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://zerofuturetech.substack.com/i/210860928?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10f6940b-4f8b-4a46-8caf-301123e7890e_1600x552.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_!0Hmj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10f6940b-4f8b-4a46-8caf-301123e7890e_1600x552.png 424w, https://substackcdn.com/image/fetch/$s_!0Hmj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10f6940b-4f8b-4a46-8caf-301123e7890e_1600x552.png 848w, https://substackcdn.com/image/fetch/$s_!0Hmj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10f6940b-4f8b-4a46-8caf-301123e7890e_1600x552.png 1272w, https://substackcdn.com/image/fetch/$s_!0Hmj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10f6940b-4f8b-4a46-8caf-301123e7890e_1600x552.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 analogy: a hospital triage nurse. The nurse (router) doesn&#8217;t treat anyone &#8212; they just decide which department you belong in. A common cold goes to general practice; a rare condition goes to a specialist. Specialist resources are expensive; don&#8217;t waste them on small stuff.</p><p><strong>Classification is the core skill.</strong> The more diverse your inputs in topic and difficulty, the more routing pays off &#8212; but only if classification is reliable. Get it wrong and everything breaks: hard questions land in a small model and quality collapses; easy ones land in a reasoning model and your budget collapses.</p><p><strong>Use it when</strong>: requests span diverse topics and difficulty, and classification is reliably accurate.</p><p><strong>Real-world</strong>:</p><ul><li><p>Customer service: returns &#8594; one flow, tech support &#8594; another, each with its own processes and tools</p></li><li><p>Route easy/common questions to a small, cheap model and hard ones to a reasoning model. Anthropic&#8217;s example: Claude Haiku 4.5 for common simple questions, Claude Sonnet 4.5 for the hard stuff.</p></li></ul><pre><code><code>category = router.classify(query)        # the LLM classifies the input
if category == "simple":
    return haiku_4_5.answer(query)       # small model: fast, cheap
else:
    return sonnet_4_5.answer(query)      # reasoning model: slower, better
</code></code></pre><h3><strong>3. Parallelization</strong></h3><p>Several LLMs work simultaneously and their outputs get aggregated. Two variants &#8212; don&#8217;t mix them up:</p><ul><li><p><strong>Sectioning</strong>: split the task into independent subtasks run in parallel. Each LLM concentrates on one aspect &#8212; focus itself is a quality win. Example: one model instance processes user queries while another screens them for inappropriate content; that reliably beats a single LLM call doing both jobs.</p></li><li><p><strong>Voting</strong>: run the same task multiple times (different prompts or different models) and compare or combine the diverse outputs for higher confidence. Example: several prompts review the same code for vulnerabilities; multiple prompts judge whether content is inappropriate, with thresholds set to balance false positives and negatives.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%218oTr%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F1f6ad965-bc6e-4c6e-aed6-6e2bdb2d01e3_760x267.svg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8oTr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f6ad965-bc6e-4c6e-aed6-6e2bdb2d01e3_760x267.svg 424w, https://substackcdn.com/image/fetch/$s_!8oTr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f6ad965-bc6e-4c6e-aed6-6e2bdb2d01e3_760x267.svg 848w, https://substackcdn.com/image/fetch/$s_!8oTr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f6ad965-bc6e-4c6e-aed6-6e2bdb2d01e3_760x267.svg 1272w, https://substackcdn.com/image/fetch/$s_!8oTr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f6ad965-bc6e-4c6e-aed6-6e2bdb2d01e3_760x267.svg 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%218oTr%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F1f6ad965-bc6e-4c6e-aed6-6e2bdb2d01e3_760x267.svg" width="1456" height="512" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1f6ad965-bc6e-4c6e-aed6-6e2bdb2d01e3_760x267.svg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3445,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/svg+xml&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://zerofuturetech.substack.com/i/210860928?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f6ad965-bc6e-4c6e-aed6-6e2bdb2d01e3_760x267.svg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8oTr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f6ad965-bc6e-4c6e-aed6-6e2bdb2d01e3_760x267.svg 424w, https://substackcdn.com/image/fetch/$s_!8oTr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f6ad965-bc6e-4c6e-aed6-6e2bdb2d01e3_760x267.svg 848w, https://substackcdn.com/image/fetch/$s_!8oTr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f6ad965-bc6e-4c6e-aed6-6e2bdb2d01e3_760x267.svg 1272w, https://substackcdn.com/image/fetch/$s_!8oTr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f6ad965-bc6e-4c6e-aed6-6e2bdb2d01e3_760x267.svg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Use it when</strong>: subtasks are genuinely independent, or you need multiple perspectives for confidence.</p><p><strong>Real-world</strong>:</p><ul><li><p>LLM-as-a-judge: multiple models (or prompts) score different aspects of a response at once</p></li><li><p>Code generation: several models each write code for the same prompt, the snippets get executed, and an LLM picks the most efficient one</p></li></ul><p>The payoff is exactly two things: <strong>lower latency</strong> (run concurrently) and <strong>better quality</strong> (focused attention + multiple perspectives). For complex tasks with several considerations, a single all-in-one LLM call usually loses to several focused ones.</p><h3><strong>4. Evaluator-Optimizer</strong></h3><p>One LLM generates, another evaluates in a loop until the output passes. The LLM acts as its own critic &#8212; the same family as &#8220;reflection,&#8221; polishing output against explicit standards.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21asvT%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fb5f48201-c596-4e72-847d-db98a9359eab_1600x468.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!asvT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5f48201-c596-4e72-847d-db98a9359eab_1600x468.png 424w, https://substackcdn.com/image/fetch/$s_!asvT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5f48201-c596-4e72-847d-db98a9359eab_1600x468.png 848w, https://substackcdn.com/image/fetch/$s_!asvT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5f48201-c596-4e72-847d-db98a9359eab_1600x468.png 1272w, https://substackcdn.com/image/fetch/$s_!asvT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5f48201-c596-4e72-847d-db98a9359eab_1600x468.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21asvT%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fb5f48201-c596-4e72-847d-db98a9359eab_1600x468.png" width="1456" height="426" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b5f48201-c596-4e72-847d-db98a9359eab_1600x468.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:426,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:36501,&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://zerofuturetech.substack.com/i/210860928?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5f48201-c596-4e72-847d-db98a9359eab_1600x468.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_!asvT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5f48201-c596-4e72-847d-db98a9359eab_1600x468.png 424w, https://substackcdn.com/image/fetch/$s_!asvT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5f48201-c596-4e72-847d-db98a9359eab_1600x468.png 848w, https://substackcdn.com/image/fetch/$s_!asvT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5f48201-c596-4e72-847d-db98a9359eab_1600x468.png 1272w, https://substackcdn.com/image/fetch/$s_!asvT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5f48201-c596-4e72-847d-db98a9359eab_1600x468.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><pre><code><code>while not evaluator.passes(draft, criteria):
    feedback = evaluator.critique(draft)            # evaluator critiques against standards
    draft = generator.rewrite(draft, feedback)      # generator rewrites with feedback
</code></code></pre><p><strong>The precondition is strict</strong>: evaluation criteria must be clearly writable, and iteration must measurably improve results. Anthropic&#8217;s two signs of good fit: first, a human can articulate the feedback that would improve the output; second, the LLM can actually deliver that feedback. With vague criteria, the loop spins in place &#8212; or makes things worse.</p><p><strong>Real-world</strong>:</p><ul><li><p>Literary translation &#8212; the translator LLM drafts, the evaluator LLM flags nuances it missed, and the loop refines</p></li><li><p>Report generation &#8212; the evaluator checks style, specific details, and diagrams, and recommends improvements</p></li><li><p>Complex search tasks &#8212; the evaluator decides whether further rounds of searching are warranted</p></li></ul><h3><strong>5. Orchestrator-Workers</strong></h3><p>A central LLM dynamically breaks down a task, delegates to worker LLMs, and synthesizes results. Unlike parallelization, the subtasks aren&#8217;t pre-defined &#8212; the orchestrator decides them per input. It&#8217;s also a concrete implementation of the Planning component from Andrew Ng&#8217;s four patterns: the planner is a task decomposer.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21x7uO%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fb3b66076-e639-486b-a46c-2b291978fba8_1600x616.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!x7uO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3b66076-e639-486b-a46c-2b291978fba8_1600x616.png 424w, https://substackcdn.com/image/fetch/$s_!x7uO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3b66076-e639-486b-a46c-2b291978fba8_1600x616.png 848w, https://substackcdn.com/image/fetch/$s_!x7uO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3b66076-e639-486b-a46c-2b291978fba8_1600x616.png 1272w, https://substackcdn.com/image/fetch/$s_!x7uO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3b66076-e639-486b-a46c-2b291978fba8_1600x616.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21x7uO%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fb3b66076-e639-486b-a46c-2b291978fba8_1600x616.png" width="1456" height="561" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b3b66076-e639-486b-a46c-2b291978fba8_1600x616.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:561,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:61546,&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://zerofuturetech.substack.com/i/210860928?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3b66076-e639-486b-a46c-2b291978fba8_1600x616.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_!x7uO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3b66076-e639-486b-a46c-2b291978fba8_1600x616.png 424w, https://substackcdn.com/image/fetch/$s_!x7uO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3b66076-e639-486b-a46c-2b291978fba8_1600x616.png 848w, https://substackcdn.com/image/fetch/$s_!x7uO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3b66076-e639-486b-a46c-2b291978fba8_1600x616.png 1272w, https://substackcdn.com/image/fetch/$s_!x7uO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3b66076-e639-486b-a46c-2b291978fba8_1600x616.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Use it when</strong>: the shape of subtasks depends on the input and can&#8217;t be hardcoded &#8212; coding products that change multiple files per task (which files, and how, depends on the task), or search tasks that gather and analyze information from multiple sources.</p><h2><strong>2: The autonomous single agent &#8212; a while loop</strong></h2><p>When people say &#8220;AI agent,&#8221; this is usually what they mean: one LLM plus tools, in a loop, deciding each next step until the task is done.</p><p>Under the hood it&#8217;s embarrassingly simple &#8212; <strong>a while loop</strong>: feed the LLM&#8217;s output back, let it see environment feedback (tool results, code execution output), and let it decide the next move.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21uRl3%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Ff9e67057-a2ff-46cd-9a03-e22d223191cb_1600x590.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uRl3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e67057-a2ff-46cd-9a03-e22d223191cb_1600x590.png 424w, https://substackcdn.com/image/fetch/$s_!uRl3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e67057-a2ff-46cd-9a03-e22d223191cb_1600x590.png 848w, https://substackcdn.com/image/fetch/$s_!uRl3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e67057-a2ff-46cd-9a03-e22d223191cb_1600x590.png 1272w, https://substackcdn.com/image/fetch/$s_!uRl3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e67057-a2ff-46cd-9a03-e22d223191cb_1600x590.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21uRl3%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Ff9e67057-a2ff-46cd-9a03-e22d223191cb_1600x590.png" width="1456" height="537" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f9e67057-a2ff-46cd-9a03-e22d223191cb_1600x590.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:537,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:43862,&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://zerofuturetech.substack.com/i/210860928?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e67057-a2ff-46cd-9a03-e22d223191cb_1600x590.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_!uRl3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e67057-a2ff-46cd-9a03-e22d223191cb_1600x590.png 424w, https://substackcdn.com/image/fetch/$s_!uRl3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e67057-a2ff-46cd-9a03-e22d223191cb_1600x590.png 848w, https://substackcdn.com/image/fetch/$s_!uRl3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e67057-a2ff-46cd-9a03-e22d223191cb_1600x590.png 1272w, https://substackcdn.com/image/fetch/$s_!uRl3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e67057-a2ff-46cd-9a03-e22d223191cb_1600x590.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><pre><code><code>while not done:
    step = agent.think(context)          # LLM reasons, decides the next step
    if step.is_final:
        done = True                      # exit: final-output tool / direct answer / max iterations
    else:
        result = step.call_tool()        # execute the tool, get ground truth from the environment
        context += result                # feedback returns to context; loop continues
</code></code></pre><p>At every step, the agent must obtain &#8220;ground truth&#8221; from the environment (tool results, code execution) to calibrate its progress &#8212; that&#8217;s the line between an agent and a system that&#8217;s making things up.</p><p><strong>Use it when</strong>: open-ended tasks with unpredictable step counts, latency tolerance, and acceptable non-determinism. Moderate complexity in a single domain &#8212; don&#8217;t jump to multi-agent yet.</p><p><strong>Real-world</strong>:</p><ul><li><p>SWE-bench coding agents (edit multiple files, run tests, read failures, retry)</p></li><li><p>Adaptive learning (analyze student performance, pick focus areas and difficulty)</p></li><li><p>Databricks&#8217; help desk example: <code>lookup_order(customer_id, order_id)</code> returns &#8220;invalid order number&#8221; &#8212; the agent retries or asks the user for the correct ID, looping until it can give a final answer</p></li></ul><p>Databricks&#8217; framing is worth remembering: <strong>the single agent is the enterprise sweet spot</strong> &#8212; more flexible than a deterministic chain, far easier to debug than multi-agent.</p><p><strong>Two enemies</strong>:</p><ul><li><p><strong>Repeated invalid tool calls</strong>: the model calls the same tool for the same dead end (invalid order number &#8594; look up again &#8594; still invalid). Set iteration limits and timeouts; when a tool errors, decide whether the argument was wrong or you should ask the user.</p></li><li><p><strong>Tool overload</strong>: past roughly 10&#8211;15 similar tools, the model starts picking wrong ones. Fix names, parameters, and descriptions first; split into multiple agents only if that doesn&#8217;t help.</p></li></ul><p>And the risks: higher cost, compounding errors, infinite loops. Set iteration limits and timeouts, and test extensively in sandboxed environments.</p><h2><strong>3: Multi-agent &#8212; the ceiling of autonomy</strong></h2><p>Multiple specialized agents collaborate. Three architectures by who&#8217;s in charge:</p><ul><li><p><strong>Manager pattern (Supervisor)</strong>: a central manager LLM coordinates experts via tool calls and is the only one facing the user.</p></li><li><p><strong>Decentralized pattern (Handoff)</strong>: peer agents transfer execution &#8212; and conversation state &#8212; directly to each other.</p></li><li><p><strong>Custom topology</strong>: you define who talks to whom and how control flows &#8212; best for rule-heavy business processes, and the most controllable.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%213ym8%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F02c3de4a-581c-4f93-ad1d-ba58e21a09b1_1600x640.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3ym8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02c3de4a-581c-4f93-ad1d-ba58e21a09b1_1600x640.png 424w, https://substackcdn.com/image/fetch/$s_!3ym8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02c3de4a-581c-4f93-ad1d-ba58e21a09b1_1600x640.png 848w, https://substackcdn.com/image/fetch/$s_!3ym8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02c3de4a-581c-4f93-ad1d-ba58e21a09b1_1600x640.png 1272w, https://substackcdn.com/image/fetch/$s_!3ym8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02c3de4a-581c-4f93-ad1d-ba58e21a09b1_1600x640.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%213ym8%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F02c3de4a-581c-4f93-ad1d-ba58e21a09b1_1600x640.png" width="1456" height="582" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/02c3de4a-581c-4f93-ad1d-ba58e21a09b1_1600x640.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:582,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:61978,&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://zerofuturetech.substack.com/i/210860928?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02c3de4a-581c-4f93-ad1d-ba58e21a09b1_1600x640.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_!3ym8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02c3de4a-581c-4f93-ad1d-ba58e21a09b1_1600x640.png 424w, https://substackcdn.com/image/fetch/$s_!3ym8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02c3de4a-581c-4f93-ad1d-ba58e21a09b1_1600x640.png 848w, https://substackcdn.com/image/fetch/$s_!3ym8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02c3de4a-581c-4f93-ad1d-ba58e21a09b1_1600x640.png 1272w, https://substackcdn.com/image/fetch/$s_!3ym8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02c3de4a-581c-4f93-ad1d-ba58e21a09b1_1600x640.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>Try the graph view: a multi-agent system is a graph &#8212; agents are nodes, manager edges are tool calls, decentralized edges are handoffs. It also explains the framework divide: declarative frameworks (like LangGraph) make you draw the graph explicitly; code-first frameworks (like OpenAI&#8217;s Agents SDK) express it dynamically through program structure.</p><p><strong>Use it when</strong>: domains diverge so much one agent can&#8217;t hold them (finance / devops / marketing); agents need independent contexts and tool sets; the tool schema no longer fits one agent; you want generate-and-verify collaboration.</p><p><strong>Real-world</strong>:</p><ul><li><p>Scientific discovery (literature review / experimental design / testing / validation as separate agents)</p></li><li><p>Large support centers: triage &#8594; line-of-business experts (shopping assistant, customer support, order management as independent agents)</p></li><li><p>Multimedia storytelling: agents with different artistic specialties collaborate on storylines, characters, visuals, and music</p></li></ul><p><strong>Ask this before going multi-agent</strong>: do these subtasks really need <em>separate</em> agents? Every source agrees &#8212; max out a single agent first (enough tools, clear prompts). Multi-agent is the most expensive, hardest to debug, and has its own failure mode: agents ping-ponging tasks without resolution. MongoDB puts it bluntly: multi-agent is worth it only when you can&#8217;t predict the outcome of the task &#8212; and business scenarios where you can&#8217;t predict the outcome are rare.</p><h2><strong>Cross-cutting concerns: every pattern needs these</strong></h2><p>None of these care which pattern you picked &#8212; prompt chain or multi-agent, they all need to be addressed. Only the investment level differs.</p><h3><strong>Memory and retrieval</strong></h3><p>Two paths solve different problems: <strong>RAG</strong> answers &#8220;is the knowledge current and specific enough,&#8221; <strong>long-term memory</strong> answers &#8220;do you remember who I am and what we discussed.&#8221;</p><p>RAG (retrieval-augmented generation) injects external knowledge into context at inference time, and splits into two pipelines: <strong>offline ingestion</strong> (scrape &#8594; clean &#8594; chunk &#8594; embed &#8594; index) and <strong>online retrieval</strong> (vector + keyword hybrid search, fused with Reciprocal Rank Fusion). Chunking is the classic pitfall: chunks too small lose context; chunks too large dilute the semantic meaning of the embedding.</p><p>Long-term memory has two layers: short-term (the current session, kept in the prompt window, compressed with sliding windows or summaries when it overflows) and long-term (preferences and past decisions across sessions, stored in vector stores or databases, retrieved on demand). The hard part of memory isn&#8217;t storing &#8212; it&#8217;s what to write, what to read, and when to forget. Ten thousand uncurated notes inject noise that steers the agent off course &#8212; as bad as none.</p><h3><strong>Guardrails and human-in-the-loop</strong></h3><p>Layered defense: rules (regex, blocklists, length limits) &#8594; safety classifiers (jailbreaks, prompt injection) &#8594; moderation APIs (hateful, violent content) &#8594; relevance screening (an LLM judges whether the request is in scope) &#8212; any layer intercepts, the request is rejected before it reaches the main flow. OpenAI&#8217;s heuristic: cover data privacy and content safety first, then keep adding layers based on real incidents.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21ObrH%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F8baf70e6-0815-497b-84fa-39aacdff3e76_1600x574.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ObrH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8baf70e6-0815-497b-84fa-39aacdff3e76_1600x574.png 424w, https://substackcdn.com/image/fetch/$s_!ObrH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8baf70e6-0815-497b-84fa-39aacdff3e76_1600x574.png 848w, https://substackcdn.com/image/fetch/$s_!ObrH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8baf70e6-0815-497b-84fa-39aacdff3e76_1600x574.png 1272w, https://substackcdn.com/image/fetch/$s_!ObrH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8baf70e6-0815-497b-84fa-39aacdff3e76_1600x574.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21ObrH%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F8baf70e6-0815-497b-84fa-39aacdff3e76_1600x574.png" width="1456" height="522" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8baf70e6-0815-497b-84fa-39aacdff3e76_1600x574.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:522,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:59620,&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://zerofuturetech.substack.com/i/210860928?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8baf70e6-0815-497b-84fa-39aacdff3e76_1600x574.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_!ObrH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8baf70e6-0815-497b-84fa-39aacdff3e76_1600x574.png 424w, https://substackcdn.com/image/fetch/$s_!ObrH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8baf70e6-0815-497b-84fa-39aacdff3e76_1600x574.png 848w, https://substackcdn.com/image/fetch/$s_!ObrH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8baf70e6-0815-497b-84fa-39aacdff3e76_1600x574.png 1272w, https://substackcdn.com/image/fetch/$s_!ObrH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8baf70e6-0815-497b-84fa-39aacdff3e76_1600x574.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>Human intervention triggers on two conditions: <strong>exceeding failure thresholds</strong> (retries keep failing to understand the user &#8594; escalate) and <strong>high-risk actions</strong>. Rate every tool by read-only / writable / reversible / financial impact &#8212; low risk runs automatically, extreme risk (cancel orders, large refunds, payments) goes to a human. A refund API and a weather API shouldn&#8217;t share a trust level.</p><p>Human-in-the-loop in the wild:</p><ul><li><p><strong>Computer use</strong> (LLMs automating web tasks): logins, 2FA, and CAPTCHAs inherently require human interaction &#8212; they can&#8217;t be automated</p></li><li><p><strong>Health insurance claims</strong>: the LLM analyzes claims and gives detailed reasoning for approval or denial &#8212; but human adjusters make the final call</p></li></ul><p>Also: natural language is inherently ambiguous, so letting humans clarify mid-conversation benefits every workflow, even when it&#8217;s not strictly required.</p><h3><strong>Evaluation and monitoring</strong></h3><p>Build evals before iterating (LLM-as-a-judge for the baseline, then calibrate with human feedback from experts and users &#8212; if your metrics don&#8217;t match human judgment, automated evaluation is self-congratulation). Trace every request, plan, and tool call (Databricks uses MLflow Tracing; multi-agent debugging runs on logs). Pin model versions &#8212; providers swap models behind your back and behavior drifts, a real incident type. Every LLM and tool call needs retry and fallback logic &#8212; timeouts, malformed responses, and empty results will break a workflow; fall back to a simpler chain when advanced features fail. Version your prompts too, so you can roll back and compare.</p><p>Two protocols worth knowing, both standardizing fast: <strong>MCP</strong> (Model Context Protocol) standardizes how agents connect to external tools &#8212; implement a tool once, use it everywhere; <strong>A2A</strong> (Agent-to-Agent) standardizes how agents talk to each other. They standardize the plugs between patterns &#8212; they are not patterns themselves, and they don&#8217;t replace the core decision of which pattern to pick.</p><h2><strong>Choosing: start simple, add complexity on evidence</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21pH7Q%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F33dcb738-840e-4eeb-83aa-529835ad227c_1600x420.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pH7Q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33dcb738-840e-4eeb-83aa-529835ad227c_1600x420.png 424w, https://substackcdn.com/image/fetch/$s_!pH7Q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33dcb738-840e-4eeb-83aa-529835ad227c_1600x420.png 848w, https://substackcdn.com/image/fetch/$s_!pH7Q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33dcb738-840e-4eeb-83aa-529835ad227c_1600x420.png 1272w, https://substackcdn.com/image/fetch/$s_!pH7Q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33dcb738-840e-4eeb-83aa-529835ad227c_1600x420.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21pH7Q%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F33dcb738-840e-4eeb-83aa-529835ad227c_1600x420.png" width="1456" height="382" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/33dcb738-840e-4eeb-83aa-529835ad227c_1600x420.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:382,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:52769,&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://zerofuturetech.substack.com/i/210860928?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33dcb738-840e-4eeb-83aa-529835ad227c_1600x420.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_!pH7Q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33dcb738-840e-4eeb-83aa-529835ad227c_1600x420.png 424w, https://substackcdn.com/image/fetch/$s_!pH7Q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33dcb738-840e-4eeb-83aa-529835ad227c_1600x420.png 848w, https://substackcdn.com/image/fetch/$s_!pH7Q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33dcb738-840e-4eeb-83aa-529835ad227c_1600x420.png 1272w, https://substackcdn.com/image/fetch/$s_!pH7Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33dcb738-840e-4eeb-83aa-529835ad227c_1600x420.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 four sources&#8217; (Databricks, MongoDB, Anthropic, OpenAI) collective conclusion, compressed into a decision table:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21qXwS%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F812419dd-70b9-4780-aa33-b9e7c3e1a030_940x1684.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qXwS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F812419dd-70b9-4780-aa33-b9e7c3e1a030_940x1684.png 424w, https://substackcdn.com/image/fetch/$s_!qXwS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F812419dd-70b9-4780-aa33-b9e7c3e1a030_940x1684.png 848w, https://substackcdn.com/image/fetch/$s_!qXwS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F812419dd-70b9-4780-aa33-b9e7c3e1a030_940x1684.png 1272w, https://substackcdn.com/image/fetch/$s_!qXwS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F812419dd-70b9-4780-aa33-b9e7c3e1a030_940x1684.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21qXwS%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F812419dd-70b9-4780-aa33-b9e7c3e1a030_940x1684.png" width="940" height="1684" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/812419dd-70b9-4780-aa33-b9e7c3e1a030_940x1684.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1684,&quot;width&quot;:940,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:303904,&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://zerofuturetech.substack.com/i/210860928?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F812419dd-70b9-4780-aa33-b9e7c3e1a030_940x1684.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_!qXwS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F812419dd-70b9-4780-aa33-b9e7c3e1a030_940x1684.png 424w, https://substackcdn.com/image/fetch/$s_!qXwS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F812419dd-70b9-4780-aa33-b9e7c3e1a030_940x1684.png 848w, https://substackcdn.com/image/fetch/$s_!qXwS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F812419dd-70b9-4780-aa33-b9e7c3e1a030_940x1684.png 1272w, https://substackcdn.com/image/fetch/$s_!qXwS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F812419dd-70b9-4780-aa33-b9e7c3e1a030_940x1684.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>All sources converge on the same advice:</p><ol><li><p><strong>Start simple</strong>: use a deterministic chain when one will do. Don&#8217;t pay for imagined complexity.</p></li><li><p><strong>Add complexity gradually</strong>: dynamic decisions &#8594; single agent; clearly separated domains or an overflowing tool set &#8594; multi-agent.</p></li><li><p><strong>Combine patterns</strong>: a mostly-deterministic chain with one dynamic step often beats upgrading the whole system &#8212; real systems are almost always hybrids.</p></li></ol><p>Anthropic adds three laws: <strong>keep it simple</strong> (the most successful systems skipped heavy frameworks &#8212; most patterns are implementable in a few lines of direct LLM API calls; use basic components before layering abstractions), <strong>be transparent</strong> (show the agent&#8217;s planning steps &#8212; users and developers can see why it did what it did, which is the basis of trust), and <strong>craft the ACI</strong> (the agent-computer interface deserves as much effort as a human interface &#8212; on SWE-bench they spent more time optimizing tools than the overall prompt).</p><h2><strong>Closing thought</strong></h2><p>Building agents isn&#8217;t an arms race. New patterns surface every week; chasing them isn&#8217;t a strategy. Focus on your requirements: pick the simplest architecture, evaluate it honestly, add components only on evidence. Between prompt chaining and multi-agent there are several rungs &#8212; and every rung has someone building a great product right now.</p><div><hr></div><p><em>Sources:</em></p><ul><li><p><em>Anthropic, Building Effective Agents &#8212; <a href="iframe.php?url=https%3A%2F%2Fwww.anthropic.com%2Fengineering%2Fbuilding-effective-agents">anthropic.com/engineering/building-effective-agents</a></em></p></li><li><p><em>OpenAI, A Practical Guide to Building Agents &#8212; <a href="iframe.php?url=https%3A%2F%2Fplatform.openai.com%2Fdocs%2Fguides%2Fagents">platform.openai.com/docs/guides/agents</a></em></p></li><li><p><em>MongoDB, 7 Practical Design Patterns for Agentic Systems &#8212; <a href="iframe.php?url=https%3A%2F%2Fwww.mongodb.com%2Fresources%2Fbasics%2Fartificial-intelligence%2Fagentic-systems">mongodb.com/resources/basics/artificial-intelligence/agentic-systems</a></em></p></li><li><p><em>Databricks, Agent system design patterns &#8212; <a href="iframe.php?url=https%3A%2F%2Fdocs.databricks.com%2Faws%2Fen%2Fagents%2Fagent-system-design-patterns">docs.databricks.com/aws/en/agents/agent-system-design-patterns</a></em></p></li><li><p><em>Agentic Design Patterns (21-chapter translation) &#8212; <a href="iframe.php?url=https%3A%2F%2Fadp.xindoo.xyz%2F">adp.xindoo.xyz</a></em></p></li><li><p><em>LLM System Design: The Complete Guide (2026) &#8212; RAG architectures chapter</em></p></li></ul><p>If this issue was useful, subscribe &#8212; see you in the next one.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://zerofuturetech.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">zerofuturetech's newsletter is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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[Graph Engineering: Why AI Agents Are Graduating From While-Loops to Org Charts]]></title><description><![CDATA[From Loop to Graph &#8212; this isn&#8217;t just vocabulary churn. It&#8217;s a real escalation in how we design agent architectures.]]></description><link>https://zerofuturetech.substack.com/p/graph-engineering-why-ai-agents-are</link><guid isPermaLink="false">https://zerofuturetech.substack.com/p/graph-engineering-why-ai-agents-are</guid><dc:creator><![CDATA[zerofuturetech]]></dc:creator><pubDate>Sun, 02 Aug 2026 12:02:25 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a39f704-73bd-49c9-8a14-ff2ff1d19b1c_2000x1500.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><span>Welcome to my newsletter. Here is </span><em>ZeroFutureTech</em><span>&#12290;I will share what I learned, researched and did in AI-related domain. Welcome to follow my </span><a href="iframe.php?url=https%3A%2F%2Fx.com%2Fjingwangtalk">X</a><span>.</span></p><p>Associated with this newsletter, I posted my video on Youtube (Note it is Chinese). Welcome to watch it.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://zerofuturetech.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">zerofuturetech's newsletter is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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 id="youtube2-grSL9KuvLNM" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;grSL9KuvLNM&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="iframe.php?url=https%3A%2F%2Fwww.youtube-nocookie.com%2Fembed%2FgrSL9KuvLNM%3Frel%3D0%26amp%3Bautoplay%3D0%26amp%3Bshowinfo%3D0%26amp%3Benablejsapi%3D0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>On July 18, 2026, <strong>Peter Steinberger</strong> &#8212; creator of OpenClaw &#8212; posted nine words on X:</p><blockquote><p><em>&#8220;Are we still talking loops or did we shift to graphs yet?&#8221;</em></p></blockquote><p>Nine words. Thousands of likes. Every serious AI builder recognized themselves mid-stride &#8212; one foot on the pattern they were leaving, one foot on the pattern they were reaching for.</p><p>Here&#8217;s the full decode: what graph engineering actually is, why loop engineering hits a structural ceiling, where the frameworks stand, and an honest answer to the loudest question on the timeline: <em>is this just slop?</em></p><h2><strong>The Timeline: How &#8220;Graph Engineering&#8221; Ate the X Timeline</strong></h2><p>Here&#8217;s what happened, hour by hour (sources: <a href="iframe.php?url=https%3A%2F%2Fwww.aibuilderclub.com%2Fblog%2Fgraph-engineering-guide-2026">AI Jason&#8217;s Graph Engineering Guide</a>, <a href="iframe.php?url=https%3A%2F%2Fwww.turingpost.com%2Fp%2Fis-graph-engineering-real-why-everyone-is-talking-about-it">Turing Post FOD#159</a>, <a href="iframe.php?url=https%3A%2F%2Fmedium.com%2Fintuitionmachine%2Ffrom-loop-engineering-to-graph-engineering-d3ebeb08511c">Carlos E. Perez&#8217;s analysis</a>):</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21UOyP%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F88bfa483-4d86-4178-961b-37c6be90048e_940x1002.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UOyP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88bfa483-4d86-4178-961b-37c6be90048e_940x1002.png 424w, https://substackcdn.com/image/fetch/$s_!UOyP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88bfa483-4d86-4178-961b-37c6be90048e_940x1002.png 848w, https://substackcdn.com/image/fetch/$s_!UOyP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88bfa483-4d86-4178-961b-37c6be90048e_940x1002.png 1272w, https://substackcdn.com/image/fetch/$s_!UOyP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88bfa483-4d86-4178-961b-37c6be90048e_940x1002.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21UOyP%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F88bfa483-4d86-4178-961b-37c6be90048e_940x1002.png" width="940" height="1002" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/88bfa483-4d86-4178-961b-37c6be90048e_940x1002.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1002,&quot;width&quot;:940,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:201317,&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://zerofuturetech.substack.com/i/209381029?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88bfa483-4d86-4178-961b-37c6be90048e_940x1002.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_!UOyP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88bfa483-4d86-4178-961b-37c6be90048e_940x1002.png 424w, https://substackcdn.com/image/fetch/$s_!UOyP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88bfa483-4d86-4178-961b-37c6be90048e_940x1002.png 848w, https://substackcdn.com/image/fetch/$s_!UOyP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88bfa483-4d86-4178-961b-37c6be90048e_940x1002.png 1272w, https://substackcdn.com/image/fetch/$s_!UOyP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88bfa483-4d86-4178-961b-37c6be90048e_940x1002.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Crucially: nothing shipped on July 18.</strong> No framework suddenly supported something it couldn&#8217;t do the day before. So why did this word colonize the timeline?</p><p>Because throughout the first half of 2026, teams everywhere completed phase one of agent development &#8212; getting <em>one</em> agent to run in a loop &#8212; and then collectively hit the same wall: <strong>one loop can&#8217;t hold this work anymore.</strong> The tasks demanded role specialization, parallel execution, and explicit routing. Graph Engineering is just giving a name to a design upgrade that was already happening.</p><h2><strong>What Is Graph Engineering?</strong></h2><p>As AI Jason defines it in his <a href="iframe.php?url=https%3A%2F%2Fwww.aibuilderclub.com%2Fblog%2Fgraph-engineering-guide-2026">canonical guide</a>:</p><blockquote><p><em>&#8220;Graph engineering is the practice of wiring multiple specialized agents or steps into a graph &#8212; nodes that do the work, edges that route between them, and shared state flowing along those edges &#8212; for when a single agent running one loop isn&#8217;t enough.&#8221;</em></p></blockquote><p><strong>Loop Engineering</strong> designs the cycle <em>one</em> agent repeats: discover &#8594; plan &#8594; execute &#8594; verify &#8594; repeat. You design the cycle and its stop condition.</p><p><strong>Graph Engineering</strong> decides how <em>several</em> of those loops connect. Which specialized nodes exist, which edges route work between them, and what shared state travels along those edges.</p><p><strong>A loop is the special case of a graph</strong> &#8212; a single node with an edge back to itself. This isn&#8217;t a replacement. It&#8217;s the layer directly above.</p><h3><strong>This Is Not New &#8212; And That&#8217;s the Point</strong></h3><p>When Harrison Chase said &#8220;it&#8217;s basically just LangGraph,&#8221; and when <strong>David Khourshid</strong> (creator of XState) rolled his eyes at &#8220;directed graphs&#8221; being announced as novel &#8212; they&#8217;re both right (and both quoted at length in <a href="iframe.php?url=https%3A%2F%2Fwww.aibuilderclub.com%2Fblog%2Fgraph-engineering-guide-2026%23is-graph-engineering-just-slop">AI Jason&#8217;s slop-discussion section</a>).</p><p>Graph Engineering rests on three ancient CS foundations:</p><ol><li><p><strong>Directed Graphs</strong> &#8212; Dijkstra (1959) onward. From compiler control-flow graphs to database query plans, graph topology has always been the standard language for describing <em>how work flows</em>.</p></li><li><p><strong>Workflow Orchestration</strong> &#8212; From BPMN to Airflow to Temporal, enterprise software has spent decades doing the same thing: defining dependencies and routing between steps. The DAG is the core abstraction of virtually every orchestration engine.</p></li><li><p><strong>Cybernetics &amp; Hierarchical Control</strong> &#8212; Norbert Wiener (1948) described that complex systems need <strong>multi-level feedback structures</strong>: fast operational loops wrapped by slower strategic loops. This is the original theoretical foundation for Loop &#8594; Graph, explored in depth by Carlos E. Perez in <a href="iframe.php?url=https%3A%2F%2Fmedium.com%2Fintuitionmachine%2Ffrom-loop-engineering-to-graph-engineering-d3ebeb08511c">his essay</a>.</p></li></ol><blockquote><p>Graph Engineering as a <strong>label</strong> is new (July 2026). As a <strong>practice</strong>, it&#8217;s the rediscovery of decades-old CS fundamentals in the Agent era. Just like &#8220;Design Patterns&#8221; weren&#8217;t invented by the Gang of Four &#8212; they just named practices that already existed.</p></blockquote><h3><strong>The Five Layers of AI Engineering</strong></h3><p>@sairahul1&#8217;s framework (cited in <a href="iframe.php?url=https%3A%2F%2Fwww.aibuilderclub.com%2Fblog%2Fgraph-engineering-guide-2026">AI Jason&#8217;s guide</a>) is the cleanest map of where graph engineering sits:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21Ac_P%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Ff3fefd78-6d7c-4a8f-a12a-9f4d53e535f1_940x724.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ac_P!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3fefd78-6d7c-4a8f-a12a-9f4d53e535f1_940x724.png 424w, https://substackcdn.com/image/fetch/$s_!Ac_P!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3fefd78-6d7c-4a8f-a12a-9f4d53e535f1_940x724.png 848w, https://substackcdn.com/image/fetch/$s_!Ac_P!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3fefd78-6d7c-4a8f-a12a-9f4d53e535f1_940x724.png 1272w, https://substackcdn.com/image/fetch/$s_!Ac_P!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3fefd78-6d7c-4a8f-a12a-9f4d53e535f1_940x724.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21Ac_P%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Ff3fefd78-6d7c-4a8f-a12a-9f4d53e535f1_940x724.png" width="940" height="724" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f3fefd78-6d7c-4a8f-a12a-9f4d53e535f1_940x724.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:724,&quot;width&quot;:940,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:102575,&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://zerofuturetech.substack.com/i/209381029?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3fefd78-6d7c-4a8f-a12a-9f4d53e535f1_940x724.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_!Ac_P!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3fefd78-6d7c-4a8f-a12a-9f4d53e535f1_940x724.png 424w, https://substackcdn.com/image/fetch/$s_!Ac_P!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3fefd78-6d7c-4a8f-a12a-9f4d53e535f1_940x724.png 848w, https://substackcdn.com/image/fetch/$s_!Ac_P!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3fefd78-6d7c-4a8f-a12a-9f4d53e535f1_940x724.png 1272w, https://substackcdn.com/image/fetch/$s_!Ac_P!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3fefd78-6d7c-4a8f-a12a-9f4d53e535f1_940x724.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>These layers are cumulative, not sequential.</strong> A graph is full of nodes; a good node is a well-designed loop; a good loop needs a solid harness. Skip a lower layer, and the graph on top just fails in a more elaborate way.</p><h2><strong>Loop vs Graph: The Four Structural Failures of the Single Loop</strong></h2><p>Carlos E. Perez, in his <a href="iframe.php?url=https%3A%2F%2Fmedium.com%2Fintuitionmachine%2Ffrom-loop-engineering-to-graph-engineering-d3ebeb08511c">essay on the transition</a>, provides the deepest analytical frame: single-loop failures aren&#8217;t random &#8212; they&#8217;re <strong>consequences of the loop&#8217;s shape itself</strong>. There are four of them, and each has a topological answer in the graph.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21APNC%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F38eee366-1150-47a6-99f8-9203da73da39_860x400.svg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!APNC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38eee366-1150-47a6-99f8-9203da73da39_860x400.svg 424w, https://substackcdn.com/image/fetch/$s_!APNC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38eee366-1150-47a6-99f8-9203da73da39_860x400.svg 848w, https://substackcdn.com/image/fetch/$s_!APNC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38eee366-1150-47a6-99f8-9203da73da39_860x400.svg 1272w, https://substackcdn.com/image/fetch/$s_!APNC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38eee366-1150-47a6-99f8-9203da73da39_860x400.svg 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21APNC%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F38eee366-1150-47a6-99f8-9203da73da39_860x400.svg" width="1456" height="677" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/38eee366-1150-47a6-99f8-9203da73da39_860x400.svg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:677,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:8927,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/svg+xml&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://zerofuturetech.substack.com/i/209381029?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38eee366-1150-47a6-99f8-9203da73da39_860x400.svg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!APNC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38eee366-1150-47a6-99f8-9203da73da39_860x400.svg 424w, https://substackcdn.com/image/fetch/$s_!APNC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38eee366-1150-47a6-99f8-9203da73da39_860x400.svg 848w, https://substackcdn.com/image/fetch/$s_!APNC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38eee366-1150-47a6-99f8-9203da73da39_860x400.svg 1272w, https://substackcdn.com/image/fetch/$s_!APNC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38eee366-1150-47a6-99f8-9203da73da39_860x400.svg 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><strong>&#9332; Goodhart&#8217;s Law &#8212; When the Metric Becomes the Target</strong></h3><p><strong>What happens:</strong> A customer-support chatbot optimizes &#8220;ticket resolution rate.&#8221; The bot learns to close conversations fast and discourage follow-ups. The number climbs for five months. Then renewal data arrives &#8212; <strong>churn has doubled</strong>. The loop faithfully optimized the metric, and the metric quietly detached from the reality it was supposed to represent.</p><p><strong>Graph&#8217;s answer &#8212; Paired Metrics:</strong> One node optimizes the metric. A separate Reviewer node watches the <em>counter-metric</em> (renewal rate). Divergence triggers an alert. Perez calls this <em>pairing</em> &#8212; every optimizing loop gets a watching loop.</p><h3><strong>&#9333; Blindness Upward &#8212; The Loop Cannot Question Its Own Target</strong></h3><p><strong>What happens:</strong> A sales agent is told &#8220;send 500 personalized emails per day.&#8221; It does. Reply rate: 0.1%. The &#8220;500&#8221; target was set six months ago by instinct. Nothing inside the loop can ask whether the target is right. It&#8217;s a thermostat &#8212; it will faithfully control toward 68 degrees, but it will never ask whether 68 is the correct temperature.</p><p><strong>Graph&#8217;s answer &#8212; Hierarchical Targets:</strong> A slower strategy node owns the downstream loop&#8217;s reference value. It runs every two weeks, analyzes reply rates and conversions, and dynamically adjusts the target &#8212; from &#8220;500 sends&#8221; to &#8220;five meaningful conversations per week.&#8221; Speed is separated so fast loops can&#8217;t thrash what slower loops steward.</p><h3><strong>&#9334; Conflict &#8212; Independent Loops Fighting in the Same System</strong></h3><p><strong>What happens:</strong> One loop optimizes response speed. Another loop optimizes reply quality. The speed loop makes responses shorter. The quality loop demands more detail. Each loop, examined alone, is working. Like two thermostats in the same room, one heating and one cooling, each performing beautifully by its own light.</p><p><strong>Graph&#8217;s answer &#8212; Explicit Arbitration:</strong> An arbitration node sits above both loops and owns the trade-off. Urgent notification? Speed wins. Policy interpretation? Quality wins. It doesn&#8217;t optimize any single metric &#8212; it manages the <em>boundaries between them.</em></p><h3><strong>&#9335; Measurement Decay &#8212; Nobody&#8217;s Watching the Yardstick</strong></h3><p><strong>What happens:</strong> A code-review agent runs for six months. Dashboard says &#8220;95% pass rate.&#8221; But the test data has aged &#8212; new framework versions, new coding patterns, new vulnerabilities. The loop is spinning, the data is rotting, and nobody&#8217;s watching.</p><p><strong>Graph&#8217;s answer &#8212; Audit Loops:</strong> An independent audit loop doesn&#8217;t participate in daily execution. Its sole job: periodically sample real-world data and verify that &#8220;95%&#8221; still means quality. If not, it can freeze downstream outputs. Perez points out this is exactly the same principle as the held-out evaluation set in ML &#8212; a deliberately blinded loop whose whole job is to catch the optimizer gaming its own test.</p><p><strong>The pattern across all four answers: one node does the work, another node watches it.</strong> That&#8217;s the structural essence of the graph &#8212; not more complex cycles, but <em>relationships of constraint between cycles.</em></p><p>The practical decision framework comes from <a href="iframe.php?url=https%3A%2F%2Fwww.aibuilderclub.com%2Fblog%2Fgraph-engineering-vs-loop-engineering">AI Jason&#8217;s comparison guide</a>:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21n5Tp%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fa8d5585e-0dcb-454b-a0b1-f6ebe275af07_940x960.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!n5Tp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8d5585e-0dcb-454b-a0b1-f6ebe275af07_940x960.png 424w, https://substackcdn.com/image/fetch/$s_!n5Tp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8d5585e-0dcb-454b-a0b1-f6ebe275af07_940x960.png 848w, https://substackcdn.com/image/fetch/$s_!n5Tp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8d5585e-0dcb-454b-a0b1-f6ebe275af07_940x960.png 1272w, https://substackcdn.com/image/fetch/$s_!n5Tp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8d5585e-0dcb-454b-a0b1-f6ebe275af07_940x960.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21n5Tp%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fa8d5585e-0dcb-454b-a0b1-f6ebe275af07_940x960.png" width="940" height="960" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a8d5585e-0dcb-454b-a0b1-f6ebe275af07_940x960.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:960,&quot;width&quot;:940,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:163657,&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://zerofuturetech.substack.com/i/209381029?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8d5585e-0dcb-454b-a0b1-f6ebe275af07_940x960.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_!n5Tp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8d5585e-0dcb-454b-a0b1-f6ebe275af07_940x960.png 424w, https://substackcdn.com/image/fetch/$s_!n5Tp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8d5585e-0dcb-454b-a0b1-f6ebe275af07_940x960.png 848w, https://substackcdn.com/image/fetch/$s_!n5Tp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8d5585e-0dcb-454b-a0b1-f6ebe275af07_940x960.png 1272w, https://substackcdn.com/image/fetch/$s_!n5Tp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8d5585e-0dcb-454b-a0b1-f6ebe275af07_940x960.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><strong>The Anatomy of an Agent Graph</strong></h2><p>Strip the jargon and an agent graph has exactly three parts (from <a href="iframe.php?url=https%3A%2F%2Fwww.aibuilderclub.com%2Fblog%2Fgraph-engineering-guide-2026">AI Jason&#8217;s Guide</a>):</p><h3><strong>Nodes</strong></h3><p>The units that do the work. A node is usually a specialized agent (researcher, writer, reviewer) or a plain deterministic step (function call, data fetch). Each node has one job.</p><h3><strong>Edges</strong></h3><p>The routing between nodes. An edge says <em>after this node, go to that one</em>. Edges can be <strong>straight</strong> (A &#8594; B), <strong>conditional</strong> (if review passes &#8594; ship; if not &#8594; loop back), <strong>fan-out</strong> (one node kicks off three in parallel), and <strong>fan-in</strong> (three results join into one).</p><h3><strong>Shared State</strong></h3><p>The object that travels along the edges. Every node reads from it and writes to it: the task, the draft so far, notes, verdicts. As AI Jason puts it: <em>&#8220;State is what turns a pile of agents into a system instead of a group chat that forgets everything.&#8221;</em></p><h3><strong>The Org-Chart Metaphor</strong></h3><p>@rohit4verse&#8217;s framing is the one every analyst has adopted &#8212; from AI Jason to Perez to Turing Post: <strong>a company org chart.</strong> A company doesn&#8217;t make one person do research, writing, and review in a single unbroken stint. It gives those to different roles, routes work between them, and lets results roll back up. An agent graph is the same idea: specialized roles, defined hand-offs, a shared record.</p><h3><strong>Canonical Example: The Daily Research Brief</strong></h3><p>From <a href="iframe.php?url=https%3A%2F%2Fwww.aibuilderclub.com%2Fblog%2Fgraph-engineering-guide-2026">AI Jason&#8217;s Guide</a>, here&#8217;s the canonical starter graph:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21XJqw%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F27e2c913-eddb-4653-9ed1-ffb01a8cc87d_860x280.svg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XJqw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27e2c913-eddb-4653-9ed1-ffb01a8cc87d_860x280.svg 424w, https://substackcdn.com/image/fetch/$s_!XJqw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27e2c913-eddb-4653-9ed1-ffb01a8cc87d_860x280.svg 848w, https://substackcdn.com/image/fetch/$s_!XJqw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27e2c913-eddb-4653-9ed1-ffb01a8cc87d_860x280.svg 1272w, https://substackcdn.com/image/fetch/$s_!XJqw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27e2c913-eddb-4653-9ed1-ffb01a8cc87d_860x280.svg 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21XJqw%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F27e2c913-eddb-4653-9ed1-ffb01a8cc87d_860x280.svg" width="1456" height="474" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/27e2c913-eddb-4653-9ed1-ffb01a8cc87d_860x280.svg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:474,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:6254,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/svg+xml&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://zerofuturetech.substack.com/i/209381029?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27e2c913-eddb-4653-9ed1-ffb01a8cc87d_860x280.svg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!XJqw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27e2c913-eddb-4653-9ed1-ffb01a8cc87d_860x280.svg 424w, https://substackcdn.com/image/fetch/$s_!XJqw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27e2c913-eddb-4653-9ed1-ffb01a8cc87d_860x280.svg 848w, https://substackcdn.com/image/fetch/$s_!XJqw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27e2c913-eddb-4653-9ed1-ffb01a8cc87d_860x280.svg 1272w, https://substackcdn.com/image/fetch/$s_!XJqw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27e2c913-eddb-4653-9ed1-ffb01a8cc87d_860x280.svg 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><blockquote><p><em>Above: Agent Graph example &#8212; Input enters the Researcher node (fan-out over N sources in parallel, outputs structured notes), notes flow along the edge to the Writer node (sees only clean notes, produces draft), draft flows to the Reviewer node (independent context, different model, read-only judgment). If pass &#8594; ship &#9989;. If reject &#8594; route back to Writer via conditional edge &#128260;. The Shared State object flowing along edges is shown at the bottom.</em></p></blockquote><p></p><p>What the graph buys that the single loop couldn&#8217;t:</p><ol><li><p><strong>Clean, separate contexts</strong> &#8212; Writer never sees raw HTML; Reviewer runs in a completely independent context</p></li><li><p><strong>Real review instead of self-rubber-stamping</strong> &#8212; &#8220;don&#8217;t let an agent self-verify,&#8221; promoted to its own node</p></li><li><p><strong>Parallel source gathering</strong> &#8212; Researcher&#8217;s fan-out is something a single loop structurally cannot do</p></li><li><p><strong>Auditable control flow</strong> &#8212; the routing logic is defined up front and inspectable as a diagram, rather than reconstructed from one long transcript</p></li></ol><h2><strong>Not to Be Confused With: Knowledge Graphs or GraphRAG</strong></h2><p>&#8220;Graph&#8221; is an overloaded term. AI Jason&#8217;s guide explicitly separates Graph Engineering from two unrelated concepts:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21G3GB%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F970116a2-c760-4a28-988b-bce525674bb7_940x1332.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!G3GB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F970116a2-c760-4a28-988b-bce525674bb7_940x1332.png 424w, https://substackcdn.com/image/fetch/$s_!G3GB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F970116a2-c760-4a28-988b-bce525674bb7_940x1332.png 848w, https://substackcdn.com/image/fetch/$s_!G3GB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F970116a2-c760-4a28-988b-bce525674bb7_940x1332.png 1272w, https://substackcdn.com/image/fetch/$s_!G3GB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F970116a2-c760-4a28-988b-bce525674bb7_940x1332.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21G3GB%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F970116a2-c760-4a28-988b-bce525674bb7_940x1332.png" width="940" height="1332" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/970116a2-c760-4a28-988b-bce525674bb7_940x1332.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1332,&quot;width&quot;:940,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:225083,&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://zerofuturetech.substack.com/i/209381029?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F970116a2-c760-4a28-988b-bce525674bb7_940x1332.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_!G3GB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F970116a2-c760-4a28-988b-bce525674bb7_940x1332.png 424w, https://substackcdn.com/image/fetch/$s_!G3GB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F970116a2-c760-4a28-988b-bce525674bb7_940x1332.png 848w, https://substackcdn.com/image/fetch/$s_!G3GB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F970116a2-c760-4a28-988b-bce525674bb7_940x1332.png 1272w, https://substackcdn.com/image/fetch/$s_!G3GB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F970116a2-c760-4a28-988b-bce525674bb7_940x1332.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Same word, completely unrelated problem domains.</strong> They can coexist &#8212; your agent graph&#8217;s researcher node might call a GraphRAG for retrieval &#8212; but they solve orthogonal problems.</p><h3><strong>Two Sides of the Same Coin: Agent Network &#215; Ontology Foundation</strong></h3><p>The task-driven Multi-Agent network (the Graph Engineering layer) and the Knowledge-Graph-based Ontology layer are <strong>not either/or &#8212; they&#8217;re the upper and lower layers of one system, and both layers are &#8220;graphs&#8221;</strong>:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21jh4R%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F9298b7d5-1a82-4ce9-8d4d-1c6399fb9a54_860x460.svg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jh4R!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9298b7d5-1a82-4ce9-8d4d-1c6399fb9a54_860x460.svg 424w, https://substackcdn.com/image/fetch/$s_!jh4R!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9298b7d5-1a82-4ce9-8d4d-1c6399fb9a54_860x460.svg 848w, https://substackcdn.com/image/fetch/$s_!jh4R!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9298b7d5-1a82-4ce9-8d4d-1c6399fb9a54_860x460.svg 1272w, https://substackcdn.com/image/fetch/$s_!jh4R!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9298b7d5-1a82-4ce9-8d4d-1c6399fb9a54_860x460.svg 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21jh4R%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F9298b7d5-1a82-4ce9-8d4d-1c6399fb9a54_860x460.svg" width="1456" height="779" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9298b7d5-1a82-4ce9-8d4d-1c6399fb9a54_860x460.svg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:779,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:11928,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/svg+xml&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://zerofuturetech.substack.com/i/209381029?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9298b7d5-1a82-4ce9-8d4d-1c6399fb9a54_860x460.svg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jh4R!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9298b7d5-1a82-4ce9-8d4d-1c6399fb9a54_860x460.svg 424w, https://substackcdn.com/image/fetch/$s_!jh4R!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9298b7d5-1a82-4ce9-8d4d-1c6399fb9a54_860x460.svg 848w, https://substackcdn.com/image/fetch/$s_!jh4R!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9298b7d5-1a82-4ce9-8d4d-1c6399fb9a54_860x460.svg 1272w, https://substackcdn.com/image/fetch/$s_!jh4R!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9298b7d5-1a82-4ce9-8d4d-1c6399fb9a54_860x460.svg 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>Notice that <strong>both layers are networks</strong>:</p><ul><li><p><strong>The upper layer is an execution-flow network</strong> &#8212; agents are nodes, control flow is the edges (notes / draft / if reject / if pass / new task). It answers &#8220;who does what, in what order, and how work is handed off.&#8221;</p></li><li><p><strong>The lower layer is a semantic-relation network</strong> &#8212; business objects are nodes, semantic relations are the edges (place order / contains / invoice / supplies / stocks / ships). It answers &#8220;what exists in the enterprise, and how these things relate.&#8221;</p></li></ul><p><strong>The most vivid metaphor: a set of multi-agents is a team of virtual employees; an ontology is the virtual form of the enterprise.</strong> Employees do the work &#8212; research, writing, review, decisions; the enterprise form defines the business objects, relations, rules, and actions employees are allowed to see. The upper layer gets re-orchestrated constantly (3 nodes today, 5 tomorrow), but no matter how it&#8217;s rewired, everyone <strong>reads and writes the same Ontology</strong> &#8212; <strong>employees can be replaced; the enterprise skeleton stays.</strong></p><h2><strong>The Tooling Landscape</strong></h2><p>You don&#8217;t need to invent the runtime from scratch. These frameworks shipped the node-edge-state model well before the term &#8220;graph engineering&#8221; trended (sources: <a href="iframe.php?url=https%3A%2F%2Fwww.aibuilderclub.com%2Fblog%2Fgraph-engineering-guide-2026">AI Jason&#8217;s Guide</a>, <a href="iframe.php?url=https%3A%2F%2Fdocs.langchain.com%2Foss%2Fpython%2Flanggraph%2Foverview">LangGraph docs</a>, <a href="iframe.php?url=https%3A%2F%2Fadk.dev%2F">Google ADK docs</a>):</p><h3><strong>LangGraph (LangChain)</strong></h3><blockquote><p>&#8220;A low-level orchestration framework and runtime for building, managing, and deploying long-running, stateful agents.&#8221;</p></blockquote><ul><li><p><strong>How it maps</strong>: Define a <code>StateGraph</code> &#8594; add nodes &#8594; add edges &#8594; state passes along edges</p></li><li><p><strong>Built-in</strong>: conditional edges, fan-out/fan-in, checkpointing, human-in-the-loop, streaming</p></li><li><p><strong>Best for</strong>: complex agents requiring fine-grained control flow and state management</p></li></ul><h3><strong>Microsoft AutoGen &#8212; GraphFlow</strong></h3><ul><li><p><strong>How it maps</strong>: Describe how a team of agents connects and hands off, rather than running one in isolation</p></li><li><p><strong>Built-in</strong>: sequential, parallel, conditional, and looping flows (DiGraph model)</p></li><li><p><strong>Best for</strong>: Microsoft ecosystem, scenarios requiring multi-agent conversation and negotiation</p></li></ul><h3><strong>Google ADK + A2A Protocol</strong></h3><ul><li><p><strong>How it maps</strong>: <em>&#8220;Orchestrate complex tasks through structured, graph-based architectures&#8221;</em></p></li><li><p><strong>Built-in</strong>: sequential/parallel/loop workflow agents, agent routing, <strong>A2A</strong> cross-system delegation</p></li><li><p><strong>Best for</strong>: Google Cloud ecosystem, cross-organizational agent collaboration (LinkedIn deployed A2A in 2025)</p></li></ul><h3><strong>The Golden Rule</strong></h3><p>AI Jason puts it plainly: <strong>pick a framework instead of hand-rolling.</strong> Reinventing the node-edge-state runtime is its own kind of slop.</p><h2><strong>Honest Assessment: Is This Just Hype?</strong></h2><p>The backlash arrived almost before the term did &#8212; and the critics aren&#8217;t cranks. They&#8217;re some of the people who know this domain best (all quoted in <a href="iframe.php?url=https%3A%2F%2Fwww.aibuilderclub.com%2Fblog%2Fgraph-engineering-guide-2026%23is-graph-engineering-just-slop">AI Jason&#8217;s slop section</a>, <a href="iframe.php?url=https%3A%2F%2Fwww.turingpost.com%2Fp%2Fis-graph-engineering-real-why-everyone-is-talking-about-it">Turing Post&#8217;s FOD#159</a>, and <a href="iframe.php?url=https%3A%2F%2Fwww.aibuilderclub.com%2Fblog%2Fgraph-engineering-vs-loop-engineering">Graph Engineering vs Loop Engineering</a>):</p><ul><li><p><strong>Rhys Sullivan</strong> called the slop-article wave before it landed &#8212; and then dryly noted that it had arrived</p></li><li><p><strong>David Khourshid</strong> (creator of XState) reminded everyone that state machines with nodes and transitions are decades old</p></li><li><p><strong>Pawe&#322; Huryn</strong> argued that naming the <em>mechanism</em> (loops, graphs) keeps missing the <em>substance</em> (objectives and verification)</p></li><li><p><strong>Harrison Chase</strong> (creator of LangGraph) himself wasn&#8217;t sure the word named anything new</p></li><li><p><strong>Nathan Flurry</strong> pointed out that LinkedIn deployed multi-agent graphs in 2025 &#8212; this Twitter coinage was late, not early</p></li></ul><h3><strong>Where I Land: Concede Three Things, Hold Two</strong></h3><p><strong>Concede:</strong></p><ul><li><p>&#9989; The mechanics aren&#8217;t new &#8212; directed graphs, state machines, and orchestration engines predate the buzzword by a year or more</p></li><li><p>&#9989; Much of the content riding the term is slop &#8212; the content-farm gold rush arrived exactly on schedule</p></li><li><p>&#9989; The <em>word</em> &#8220;Graph Engineering&#8221; is optional &#8212; you can build every system described here and never once use the phrase</p></li></ul><p><strong>Hold:</strong></p><ul><li><p>&#128313; Teams genuinely moving from &#8220;one agent in a loop&#8221; to &#8220;multiple specialized agents coordinated over shared state&#8221; &#8212; <strong>this is real</strong></p></li><li><p>&#128313; Choosing nodes, edges, and state is a design skill distinct from designing a single loop &#8212; <strong>this is also real</strong></p><p></p></li></ul><h2><strong>The Bottom Line: Grounded vs. Ungrounded</strong></h2><p>Graph Engineering makes the coordination relationships in complex AI systems <strong>explicit, programmable graph structures</strong> &#8212; turning implicit prompts and manual coordination into something more reliable, observable, and scalable.</p><p>It carries buzzword baggage &#8212; even its proponents admit that. But underneath is the real trajectory of agents moving from solo operators to coordinated organizations.</p><p>Carlos E. Perez closes <a href="iframe.php?url=https%3A%2F%2Fmedium.com%2Fintuitionmachine%2Ffrom-loop-engineering-to-graph-engineering-d3ebeb08511c">his essay</a> with the insight that outlasts the hype cycle:</p><blockquote><p><em>&#8220;The durable axis was never loops versus graphs at all. It is ungrounded versus grounded: whether the improvement machinery, however shaped, keeps touching the reality it claims to improve.&#8221;</em></p></blockquote><p><strong>The deep question isn&#8217;t &#8220;Loop or Graph?&#8221; &#8212; it&#8217;s &#8220;Does your improvement machine, whatever its shape, still touch the world?&#8221;</strong> Do your watchers have genuine independence? Do your frozen rules stay frozen under pressure? Do you admit that your deepest targets were chosen, not computed?</p><h2><strong>References</strong></h2><ol><li><p>AI Jason (AI Builder Club). <a href="iframe.php?url=https%3A%2F%2Fwww.aibuilderclub.com%2Fblog%2Fgraph-engineering-guide-2026">Graph Engineering Guide (2026)</a> &#8212; The pillar guide covering concepts, frameworks, controversy, and a starting checklist</p></li><li><p>AI Jason (AI Builder Club). <a href="iframe.php?url=https%3A%2F%2Fwww.aibuilderclub.com%2Fblog%2Fgraph-engineering-vs-loop-engineering">Graph Engineering vs Loop Engineering</a> &#8212; The boundary between the two disciplines and the &#8220;did you actually change paradigms?&#8221; gut-check</p></li><li><p>Carlos E. Perez (Intuition Machine). <a href="iframe.php?url=https%3A%2F%2Fmedium.com%2Fintuitionmachine%2Ffrom-loop-engineering-to-graph-engineering-d3ebeb08511c">From Loop Engineering to Graph Engineering?</a> &#8212; Cybernetics-grounded analysis of why single loops fail and how graphs answer</p></li><li><p>Ksenia Se (Turing Post). <a href="iframe.php?url=https%3A%2F%2Fwww.turingpost.com%2Fp%2Fis-graph-engineering-real-why-everyone-is-talking-about-it">FOD#159: Is Graph Engineering Real? Why Everyone Is Talking About It</a> &#8212; The industry snapshot and hype-cycle analysis</p></li><li><p>Peter Steinberger. <a href="iframe.php?url=https%3A%2F%2Fx.com%2Fsteipete%2Fstatus%2F2078277297791189132">Original X post</a> &#8212; The nine words that started it all</p></li><li><p><a href="iframe.php?url=https%3A%2F%2Fdocs.langchain.com%2Foss%2Fpython%2Flanggraph%2Foverview">LangGraph Overview (LangChain docs)</a> &#8212; Official documentation</p></li><li><p><a href="iframe.php?url=https%3A%2F%2Fadk.dev%2F">Agent Development Kit (Google ADK)</a> &#8212; Official documentation</p></li><li><p>Harrison Chase. <a href="iframe.php?url=https%3A%2F%2Fx.com%2Fhwchase17%2Fstatus%2F2079219804951683380">&#8220;it&#8217;s basically just LangGraph?&#8221;</a> &#8212; LangGraph creator&#8217;s reaction</p></li><li><p>Shann Holmberg. <a href="iframe.php?url=https%3A%2F%2Fx.com%2Fshannholmberg%2Fstatus%2F2079096565344739643">Loops vs Graphs</a> &#8212; &#8220;The difference is who decides the path, the agent or you&#8221;</p></li><li><p>Dale Everett. <a href="iframe.php?url=https%3A%2F%2Fx.com%2Fdaleverett%2Farticle%2F2078969402046009374">&#8220;Loops are just shitty graphs&#8221;</a> &#8212; The counter-position</p></li></ol><p></p><p><strong>Welcome to subscribe my newsletter</strong> &#183; Making AI engineering knowledge accessible<br><em>If you&#8217;re building AI agents and finding that a single loop isn&#8217;t enough anymore &#8212; try thinking in graphs. But first, check whether one loop was enough. Most of the time, it is.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://zerofuturetech.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">zerofuturetech's newsletter is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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[Ontology Design: 4 Core Principles & Anti-Patterns]]></title><description><![CDATA[How to design a Ontology&#65311;Are there any basic Ontologies I can apply&#65311;]]></description><link>https://zerofuturetech.substack.com/p/ontology-design-4-core-principles</link><guid isPermaLink="false">https://zerofuturetech.substack.com/p/ontology-design-4-core-principles</guid><dc:creator><![CDATA[zerofuturetech]]></dc:creator><pubDate>Sun, 26 Jul 2026 09:33:34 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadf721c9-830f-4755-8f67-8aac5656836d_2000x1500.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><span>Welcome to my newsletter. Here is </span><em>ZeroFutureTech</em><span>&#12290;I will share what I learned, researched and did in AI-related domain. Welcome to follow my </span><a href="iframe.php?url=https%3A%2F%2Fx.com%2Fjingwangtalk">X</a><span>.</span></p><p>Associated with this newsletter, I posted my video on Youtube (Note it is Chinese). Welcome to watch it.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://zerofuturetech.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">zerofuturetech's newsletter is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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 id="youtube2-TyjnxRGKYX0" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;TyjnxRGKYX0&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="iframe.php?url=https%3A%2F%2Fwww.youtube-nocookie.com%2Fembed%2FTyjnxRGKYX0%3Frel%3D0%26amp%3Bautoplay%3D0%26amp%3Bshowinfo%3D0%26amp%3Benablejsapi%3D0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p><br>Here&#8217;s a scenario you&#8217;ve probably encountered: the same &#8220;customer&#8221; exists as <code>Sales Customer</code> in your CRM, <code>Support Customer</code> in your ticketing system, and <code>Billing Customer</code> in your finance platform. Which one is the real customer?</p><p>The problem starts at the design level &#8212; <strong>you&#8217;re modeling source systems, not reality.</strong></p><p>Palantir distilled years of field experience across government and commercial implementations into four core principles &#8212; priority-ordered, higher wins in conflict &#8212; and seven anti-patterns. Let&#8217;s walk through them.</p><div><hr></div><h2><strong>Principle 1: Domain-Driven Design (Highest Priority)</strong></h2><p><strong>Model the real world, not the source data.</strong> The correct order is non-negotiable:</p><ol><li><p><strong>Understand the domain</strong> &#8212; identify real-world entities and relationships</p></li><li><p><strong>Design the ontology</strong> &#8212; define object types, properties, links, interfaces</p></li><li><p><strong>Map source data</strong> &#8212; pipe data in through transforms</p></li></ol><h3><strong>&#10060; Anti-Pattern: Kitchen Sink</strong></h3><p>Take a CSV with <code>order_id</code>, <code>customer_name</code>, <code>customer_email</code>, <code>product_sku</code>, and <code>quantity</code>. The instinct is to create one <code>OrderData</code> object type with five properties &#8212; including technical metadata like <code>_crm_extracted_at</code>.</p><h3><strong>&#9989; Fix</strong></h3><p>That single CSV contains three entities. Split them:</p><pre><code><code>Order { orderId, quantity }   &#8594; links to Customer, Product
Customer { name, email }
Product { sku }</code></code></pre><blockquote><p>&#127919; <strong>Litmus test:</strong> A user should navigate your ontology intuitively &#8212; no docs required &#8212; because the structure matches how they already think about the domain.</p></blockquote><div><hr></div><h2><strong>Principle 2: Don&#8217;t Build the Same Entity Twice &#8212; The Rule of Three</strong></h2><p><strong>Every concept has exactly one canonical representation.</strong> One occurrence is coincidence. Two is a pattern. Three &#8212; refactor.</p><h3><strong>&#10060; Anti-Pattern: Department Silos</strong></h3><p>Sales creates <code>Sales_Customer</code>. Support creates <code>Support_Customer</code>. Finance creates <code>Billing_Customer</code>. All share <code>name</code>, <code>email</code>, <code>phone</code> plus department-specific fields. Three code paths, three maintenance burdens, inconsistent data.</p><h3><strong>&#9989; Fix</strong></h3><p><strong>Option A (preferred):</strong> Merge into a single <code>Customer</code> type.</p><pre><code><code>Customer { name, email, phone, lifecycleStage, department }</code></code></pre><p><strong>Option B (when shapes genuinely differ):</strong> Extract a shared interface.</p><pre><code><code>interface CustomerBase { name, email, phone }
SalesLead implements CustomerBase { dealSize: number }
SupportContact implements CustomerBase { ticketHistory: Ticket[] }
BillingAccount implements CustomerBase { paymentMethod: string }</code></code></pre><blockquote><p>&#128161; An <strong>Interface</strong> defines a shared contract. Multiple types implement it, so shared logic is authored once and specializations live where they belong.</p></blockquote><div><hr></div><h2><strong>Principle 3: Open for Extension, Closed for Modification</strong></h2><p><strong>Core models lock after validation. New capabilities arrive via extensions &#8212; never by adding fields to the core.</strong></p><h3><strong>&#10060; Anti-Pattern: God Object</strong></h3><p><code>Equipment</code> started with <code>serialNumber</code>, <code>model</code>, <code>location</code>. Then certification added 4 fields, finance added 3 depreciation columns, maintenance added 5 more. Result: 150+ properties, most null, and every team risks breaking everyone else&#8217;s applications.</p><h3><strong>&#9989; Fix</strong></h3><p>Keep core <code>Equipment</code> lean. Certification info? Create a linked <code>EquipmentCertification</code> type. Inspectability? Implement the <code>Inspectable</code> interface. Each capability is an independent module.</p><h2><strong>Principle 4: Composition Over Deep Hierarchies</strong></h2><p>Foundry&#8217;s interfaces support multiple inheritance. An entity can be both a <code>Building</code> and a <code>SchedulableResource</code> simultaneously.</p><ul><li><p><strong>Deep inheritance:</strong> <code>Asset &#8594; PhysicalAsset &#8594; Building &#8594; SchedulableBuilding &#8594; Arena</code> (5 levels)</p></li><li><p><strong>Composition:</strong> <code>Arena implements Building, SchedulableResource</code> (2 steps)</p></li></ul><p><strong>A scheduling workflow built against </strong><code>SchedulableResource</code><strong> works for arenas, conference rooms, and vehicles without modification.</strong> Deep hierarchies can never deliver this.</p><h2><strong>4 Structural Patterns</strong></h2><p>Beyond principles, four patterns act as the &#8220;grammar&#8221; of your ontology:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21it7F%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F7e5e41c3-f04b-4151-ac91-18f6dac39f29_940x812.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!it7F!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e5e41c3-f04b-4151-ac91-18f6dac39f29_940x812.png 424w, https://substackcdn.com/image/fetch/$s_!it7F!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e5e41c3-f04b-4151-ac91-18f6dac39f29_940x812.png 848w, https://substackcdn.com/image/fetch/$s_!it7F!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e5e41c3-f04b-4151-ac91-18f6dac39f29_940x812.png 1272w, https://substackcdn.com/image/fetch/$s_!it7F!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e5e41c3-f04b-4151-ac91-18f6dac39f29_940x812.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21it7F%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F7e5e41c3-f04b-4151-ac91-18f6dac39f29_940x812.png" width="940" height="812" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7e5e41c3-f04b-4151-ac91-18f6dac39f29_940x812.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:812,&quot;width&quot;:940,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:150643,&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://zerofuturetech.substack.com/i/208538307?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e5e41c3-f04b-4151-ac91-18f6dac39f29_940x812.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_!it7F!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e5e41c3-f04b-4151-ac91-18f6dac39f29_940x812.png 424w, https://substackcdn.com/image/fetch/$s_!it7F!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e5e41c3-f04b-4151-ac91-18f6dac39f29_940x812.png 848w, https://substackcdn.com/image/fetch/$s_!it7F!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e5e41c3-f04b-4151-ac91-18f6dac39f29_940x812.png 1272w, https://substackcdn.com/image/fetch/$s_!it7F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e5e41c3-f04b-4151-ac91-18f6dac39f29_940x812.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><strong>Anti-Patterns Gallery</strong></h2><p>Beyond those paired with principles, four more trap designers at every experience level:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21h1PS%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F31eba128-6852-4934-81c1-55192ba38e7e_940x1136.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!h1PS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31eba128-6852-4934-81c1-55192ba38e7e_940x1136.png 424w, https://substackcdn.com/image/fetch/$s_!h1PS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31eba128-6852-4934-81c1-55192ba38e7e_940x1136.png 848w, https://substackcdn.com/image/fetch/$s_!h1PS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31eba128-6852-4934-81c1-55192ba38e7e_940x1136.png 1272w, https://substackcdn.com/image/fetch/$s_!h1PS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31eba128-6852-4934-81c1-55192ba38e7e_940x1136.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21h1PS%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F31eba128-6852-4934-81c1-55192ba38e7e_940x1136.png" width="940" height="1136" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/31eba128-6852-4934-81c1-55192ba38e7e_940x1136.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1136,&quot;width&quot;:940,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:205107,&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://zerofuturetech.substack.com/i/208538307?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31eba128-6852-4934-81c1-55192ba38e7e_940x1136.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_!h1PS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31eba128-6852-4934-81c1-55192ba38e7e_940x1136.png 424w, https://substackcdn.com/image/fetch/$s_!h1PS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31eba128-6852-4934-81c1-55192ba38e7e_940x1136.png 848w, https://substackcdn.com/image/fetch/$s_!h1PS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31eba128-6852-4934-81c1-55192ba38e7e_940x1136.png 1272w, https://substackcdn.com/image/fetch/$s_!h1PS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31eba128-6852-4934-81c1-55192ba38e7e_940x1136.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><strong>Decision Framework: Pick the Right Tool</strong></h2><p>Before implementing, run through five questions:</p><ol><li><p>Requires human judgment? &#8594; <strong>Action Type</strong></p></li><li><p>Data transform or aggregation? &#8594; <strong>Pipeline</strong> (Streaming if low-latency, else Batch)</p></li><li><p>&#8220;Something changed &#8594; something should happen&#8221;? &#8594; <strong>Automation</strong></p></li><li><p>Complex cross-object real-time computation? &#8594; <strong>Function</strong> or Derived Property</p></li><li><p>Simple, stable-input derivation (e.g. <code>fullName</code>)? &#8594; Pre-compute in Pipeline</p></li></ol><h2><strong>Naming &amp; Security: The Two Hardest Things to Fix Later</strong></h2><p><strong>Naming:</strong> Singular, concrete nouns for object types (<code>Patient</code>, not <code>Data</code>). Self-documenting properties (<code>lastInspectionDate</code>, not <code>dtLastInspMod</code>). Consistent date suffixes. Bidirectional link readability (<code>department</code> &#8596; <code>employees</code>).</p><p><strong>Security:</strong> Model with semantic policies, not duplicated types. One <code>Patient</code> type with row-level (VIP patients) + column-level (clinical notes) + cell-level (VIP clinical notes) restrictions. Never create <code>PublicPatient</code> and <code>RestrictedPatient</code> as separate types.</p><div><hr></div><h2><strong>Beyond Palantir: Industry Practices</strong></h2><p>Five complementary practices from academic research and enterprise architecture:</p><ol><li><p><strong>Entity Classification</strong> &#8212; Categorize every type as Business Entity (noun), Process Entity (verb), or Result Entity (output) before modeling</p></li><li><p><strong>Upper Ontologies</strong> &#8212; Use frameworks like gist to avoid rebuilding fundamentals (Person, Organization, Event, Time)</p></li><li><p><strong>Semantic Lifting</strong> &#8212; Map existing BPMN/ER diagrams to ontology entities via annotation; preserve prior investments</p></li><li><p><strong>RACI Governance</strong> &#8212; Every entity and property needs an Owner, Steward, and Sponsor</p></li><li><p><strong>Central Governance + Distributed Population</strong> &#8212; Core model centrally controlled; domain teams own extensions and data</p></li></ol><h2><strong>The Pragmatist&#8217;s Principle</strong></h2><p><strong>An imperfect ontology delivering real value today beats a theoretically perfect one still being designed.</strong></p><p>But &#8212; naming quality, semantic clarity, and security design are the three things that are punishingly expensive to fix later. Don&#8217;t compromise on those. Everything else? Ship it, then iterate.</p><div><hr></div><blockquote><p>&#128218; <strong>Sources</strong><br><a href="iframe.php?url=https%3A%2F%2Fwww.palantir.com%2Fdocs%2Ffoundry%2Fontology%2Fontology-best-practices">Palantir Ontology Best Practices</a> &#183; <a href="iframe.php?url=https%3A%2F%2Fwww.palantir.com%2Fdocs%2Ffoundry%2Fontology%2Fontology-structural-guidance%2F">Structural Guidance</a> &#183; <a href="iframe.php?url=https%3A%2F%2Fwww.palantir.com%2Fdocs%2Ffoundry%2Fontology%2Fontology-anti-patterns%2F">Anti-Patterns</a> &#183; gist Ontology (Semantic Arts) &#183; Industry 4.0/5.0 Ontology Framework (Abonyi, Nagy, Ruppert &#183; Springer 2024)</p></blockquote><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://zerofuturetech.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">zerofuturetech's newsletter is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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[Ontology Isn’t a Knowledge Graph: 4 Things to Settle Before Your Company Builds Agents on It]]></title><description><![CDATA[Ontology isn't a knowledge graph database &#8212; it's the semantic operating system (AgentOS) behind enterprise Agent deployment. This piece answers four recurring questions: what Ontology actually solves?]]></description><link>https://zerofuturetech.substack.com/p/ontology-isnt-a-knowledge-graph-4</link><guid isPermaLink="false">https://zerofuturetech.substack.com/p/ontology-isnt-a-knowledge-graph-4</guid><dc:creator><![CDATA[zerofuturetech]]></dc:creator><pubDate>Mon, 13 Jul 2026 14:50:23 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55e6d95e-be44-4cb6-b519-d37ef2d5647e_2000x1500.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><span>Welcome to my newsletter. Here is </span><em>ZeroFutureTech</em><span>&#12290;I will share what I learned, researched and did in AI-related domain. Welcome to follow my </span><a href="iframe.php?url=https%3A%2F%2Fx.com%2Fjingwangtalk">X</a><span>.</span></p><p>Associated with this newsletter, I posted my video on Youtube (Note it is Chinese). Welcome to watch it.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://zerofuturetech.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">zerofuturetech's newsletter is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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 id="youtube2-C85E9wfW6XQ" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;C85E9wfW6XQ&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="iframe.php?url=https%3A%2F%2Fwww.youtube-nocookie.com%2Fembed%2FC85E9wfW6XQ%3Frel%3D0%26amp%3Bautoplay%3D0%26amp%3Bshowinfo%3D0%26amp%3Benablejsapi%3D0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>A few recent videos on Ontology-driven enterprise Agent deployment got more traction than expected. Since then I&#8217;ve talked to a mix of people: founders building in this space, engineers trying to stand up a pilot inside their own company, people whose bosses asked them to put together a proposal, and practitioners who just want to learn the concept properly. Given limited bandwidth, I could only take a handful of these conversations one-on-one &#8212; but the questions kept converging on the same few points. Here&#8217;s the consolidated answer, so I stop repeating myself.</p><h2><strong>What problem does Ontology actually solve?</strong></h2><p>The most common misread is treating Ontology as a knowledge graph database. That&#8217;s not wrong exactly &#8212; Ontology does cover graph-storage functionality &#8212; but it&#8217;s not where the value sits.</p><p>The core of Ontology is a description of the business itself: it encodes the objective facts and relationships that exist in a business domain, carrying the semantic information that actually matters. A customer places an order. The order contains products. Products are made of components. Components get sourced from specific suppliers. That entire chain of semantic relationships is exactly what Ontology is meant to capture.</p><p>Why does this semantic layer matter? Because an Agent can only automate work and support decisions reliably inside a business domain once it understands this web of relationships. Without that foundation, Agent output tends to fail in one of two ways: hallucination, or answers so generic they ignore the industry and company context &#8212; and worse, inconsistent answers to the same question asked twice.</p><p>Based on what Palantir has validated in practice so far, Ontology is the infrastructure that lets an Agent make accurate decisions at the business-domain level &#8212; effectively an operating system for the Agent, an AgentOS. That&#8217;s the path proven today; it doesn&#8217;t rule out someone finding a different one later.</p><h2><strong>What tools exist for building an Ontology? Is anything open source?</strong></h2><p>A number of companies in China are already exploring this space, and some have shipped their own AgentOS-style products &#8212; ranging from vibe-coded demos to reasonably mature versions, most of them adaptations or simplifications of Palantir&#8217;s approach.</p><p>It&#8217;s hard to say any single tool is definitively better or more authoritative, but there are open-source options worth looking at:</p><ul><li><p>OntoFlow: <a href="iframe.php?url=https%3A%2F%2Fgithub.com%2FH2020-OpenModel%2FOntoFlow">https://github.com/H2020-OpenModel/OntoFlow</a></p></li><li><p>OntoEKG: <a href="iframe.php?url=https%3A%2F%2Fgithub.com%2FLiberAI%2FOntoEKG">https://github.com/LiberAI/OntoEKG</a></p></li><li><p>nano-ontoprompt, a lightweight version I built myself: <a href="iframe.php?url=https%3A%2F%2Fgithub.com%2Fjingw2%2Fnano-ontoprompt">https://github.com/jingw2/nano-ontoprompt</a></p></li></ul><p>Finance also has ready-made open ontologies worth studying for structure:</p><ul><li><p>FIBO: <a href="iframe.php?url=https%3A%2F%2Fgithub.com%2Fedmcouncil%2Ffibo">https://github.com/edmcouncil/fibo</a></p></li><li><p>BIAN: <a href="iframe.php?url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FBanking_Industry_Architecture_Network">https://en.wikipedia.org/wiki/Banking_Industry_Architecture_Network</a></p></li></ul><p>One framing worth flagging here. Bob McGrew talked on a podcast about how AgentOS-type products essentially scale something that&#8217;s inherently hard to scale. The FDE (Forward Deployed Engineer) model is a gravel road by nature &#8212; hard for a company to replicate at scale. AgentOS-style products pave a highway over that gravel road: they bake FDE domain knowledge and delivery experience into the product itself, so the same capability can serve more clients without rebuilding from scratch every time.</p><p>Worth a caution though: I&#8217;ve talked to a lot of companies that are chasing the trend more than solving a problem &#8212; they heard the concept was hot, skipped straight to &#8220;what tool should we use,&#8221; and never stopped to ask whether they should be building this at all, or whether it fits their situation. That&#8217;s the order backwards.</p><h2><strong>Does your company actually need to build an Ontology?</strong></h2><p>For most small and mid-sized companies, my honest recommendation is: don&#8217;t invest in this. Two reasons.</p><p>First, the combined investment of building an Ontology and the Agents on top of it is not small, and it has to be a top-priority initiative sponsored directly by leadership &#8212; not something a technical team can push through on its own. Second, small and mid-sized companies typically don&#8217;t have complex enough processes or large enough headcount for the ROI on Ontology + Agent infrastructure to make sense.</p><p>The real test isn&#8217;t &#8220;is this concept trending&#8221; &#8212; it&#8217;s whether your company genuinely needs a business-domain-level Agent Runtime to drive efficiency, or to close the leakage and misaligned incentives that come from too much manual intervention in the process. If that need doesn&#8217;t exist, the Ontology investment is wasted effort.</p><h2><strong>Want to start, but don&#8217;t know where?</strong></h2><p>Right now, most companies&#8217; Agent deployments sit at the individual-productivity level: things like Lark&#8217;s Ally, multi-dimensional tables, a finance reconciliation assistant, writing weekly reports, generating slides. Slightly more advanced setups build workflows &#8212; listening to an inbox, downloading attachments, parsing them, and writing the results back into a system.</p><p>The pattern across almost all of these: the Agent never touches the core of the business domain, and none of it is systematized. The bottleneck is usually not technical capability &#8212; it&#8217;s that leadership doesn&#8217;t see it. They don&#8217;t know this is possible, or don&#8217;t know how to approach it.</p><p>So step one is always winning over leadership &#8212; making the top decision-maker understand the concrete value Ontology + Agent can create. That buy-in is the precondition for pushing domain-level implementation across the company. Only after that should you pick a high-value process &#8212; sales, procurement, finance, supply chain &#8212; as a pilot. Choose something where ROI can be validated quickly, not an attempt to build an enterprise-wide Ontology on day one.</p><div><hr></div><p>If this was useful, forward it to anyone on the fence about whether to build an Ontology. Happy to talk through implementation paths for specific industry scenarios in the comments.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://zerofuturetech.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">zerofuturetech's newsletter is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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[Palantir AIP Agent-Ontology Interaction: A Deep Dive into the Five-Layer Enterprise AI Architecture — Retrieval Context, Object Query, AIP Logic, Action Tools, and Governance]]></title><description><![CDATA[If you&#8217;ve ever wondered how Palantir lets AI agents access enterprise data without handing them database credentials, this is the answer. We deconstruct the full five-layer Palantir AIP architecture &#8212;]]></description><link>https://zerofuturetech.substack.com/p/palantir-aip-agent-ontology-interaction</link><guid isPermaLink="false">https://zerofuturetech.substack.com/p/palantir-aip-agent-ontology-interaction</guid><dc:creator><![CDATA[zerofuturetech]]></dc:creator><pubDate>Sat, 04 Jul 2026 12:03:06 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7318612a-9ccc-498b-9f00-9a24c9a2ad54_2000x1500.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to my newsletter. Here is <em>ZeroFutureTech</em>&#12290;I will share what I learned, researched and did in AI-related domain. Welcome to follow my <a href="iframe.php?url=https%3A%2F%2Fx.com%2Fjingwangtalk">X</a>. </p><p>Associated with this newsletter, I posted my video on Youtube (Note it is Chinese). Welcome to watch it. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://zerofuturetech.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">zerofuturetech's newsletter is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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 id="youtube2-TOXpSnIrXFQ" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;TOXpSnIrXFQ&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="iframe.php?url=https%3A%2F%2Fwww.youtube-nocookie.com%2Fembed%2FTOXpSnIrXFQ%3Frel%3D0%26amp%3Bautoplay%3D0%26amp%3Bshowinfo%3D0%26amp%3Benablejsapi%3D0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>If you&#8217;re building enterprise AI agents, you&#8217;ve hit the fundamental question: how should an LLM safely access enterprise data?</p><p>The naive answer &#8212; give it database credentials and let it write SQL &#8212; is terrifying. Hallucinations fabricating numbers. Privilege escalation into restricted tables. Sensitive data leaking through prompts. Pick your nightmare.</p><p>The RAG answer &#8212; wrap a retrieval layer around the LLM &#8212; solves part of the problem. RAG helps the LLM <em>see more relevant information</em>. But RAG doesn&#8217;t solve what the LLM <em>must not see</em>, and it certainly doesn&#8217;t solve what the LLM <em>is allowed to do</em>.</p><p>Palantir&#8217;s answer operates at an entirely different level of sophistication.</p><p>They don&#8217;t insert a retriever between the agent and the data. They first build a complete enterprise business semantic layer &#8212; called <strong>Ontology</strong> &#8212; modeling every noun, relationship, rule, action, and permission. Then they let the agent operate on <em>that governed layer</em>, not on the raw data beneath it.</p><p>This article deconstructs the entire mechanism. Drawn from Palantir&#8217;s official documentation across AIP Architecture, Chatbot Studio Tools, Retrieval Context, AIP Logic, Tool Calling, Palantir MCP, and Ontology MCP &#8212; every layer gets detailed treatment with concrete configuration examples, operational analogies, and architectural analysis.</p><h2><strong>The Core Thesis</strong></h2><p>In Palantir&#8217;s architecture, <strong>agents do not access underlying database tables directly, nor do they freely scan the complete Ontology schema.</strong> They operate within a configured and authorized boundary &#8212; interacting through Ontology-exposed objects, relationships, contexts, functions, and actions.</p><p>One sentence captures the relationship: <strong>The Ontology is the governed semantic interface to the enterprise business world. The Agent is the operator that uses natural language to work through these interfaces.</strong></p><p>The interaction formula:</p><pre><code><code>LLM + Retrieval Context + Tools + Ontology + Governance</code></code></pre><p>The complete data flow:</p><pre><code><code>User Message &#8594; Retrieval Context injection &#8594; LLM reasoning &#8594; Tool invocation &#8594; Ontology query/compute/mutate &#8594; Governance constraint &amp; audit</code></code></pre><p>Five components, each with a distinct responsibility:</p><ul><li><p><strong>LLM</strong> &#8212; Understands user intent and decides next steps. Handles reasoning and decision-making, not direct data access.</p></li><li><p><strong>Retrieval Context</strong> &#8212; Deterministically provides necessary business context on every user message. Prevents the agent from starting &#8220;blind&#8221; and from having to decide on its own what to retrieve.</p></li><li><p><strong>Ontology</strong> &#8212; The semantic model of business objects, relationships, functions, and actions. The &#8220;business language&#8221; of the entire system.</p></li><li><p><strong>Tools</strong> &#8212; Converts LLM intent into executable queries, function calls, or business operations. The LLM decides <em>what</em> to do; the Tool executes <em>how</em> to do it.</p></li><li><p><strong>Governance</strong> &#8212; Constrains what the agent can see, invoke, and modify. Logs audit trails and lineage. Spans every layer.</p></li></ul><p>This design philosophy &#8212; governed freedom &#8212; echoes through every layer that follows. You&#8217;ll see it in the deterministic-vs-autonomous split between Context and Query. You&#8217;ll see it in the Function-vs-LLM division of labor. And you&#8217;ll see it most powerfully in the Governance layer that constrains everything.</p><h2><strong>What Is Ontology to an Agent?</strong></h2><p>Many hear &#8220;Ontology&#8221; and think knowledge graph or data catalog. Palantir Ontology is something different: an <strong>operational layer</strong> &#8212; sitting above datasets, virtual tables, and models, mapping raw digital assets into real-world business objects.</p><p>Palantir&#8217;s official Ontology documentation uses two categories of terms. This article builds on that classification, interpreting them as &#8220;describing the business world&#8221; and &#8220;changing the business world.&#8221;</p><h3><strong>Semantic Elements: Describing the Business World</strong></h3><pre><code><code>Object Types:  Shipment, Order, Warehouse, Customer, Carrier
Properties:    Shipment.status, Shipment.ETA, Order.priority, Carrier.performanceScore
Links:         Shipment belongsTo Order, Order belongsTo Customer, Shipment handledBy Carrier</code></code></pre><p>These elements answer: <strong>How does the agent understand what exists in the enterprise, and how are these things related?</strong></p><p>The agent doesn&#8217;t infer from training data that a Shipment has a status or that it belongs to an Order. The Ontology <em>defines</em> these relationships explicitly and authoritatively. When the agent reasons about &#8220;delayed shipments for VIP customers,&#8221; it&#8217;s reasoning over governed semantic objects, not guessing from column names.</p><h3><strong>Kinetic Elements: Changing the Business World</strong></h3><pre><code><code>Actions:    updateShipmentETA, assignCarrier, createExceptionCase, approveSchedulePlan
Functions:  calculateDelayRisk, recommendCarrier, summarizeCustomerIssue, optimizeSchedule</code></code></pre><p>These elements answer: <strong>How does the agent move from answering questions to executing business operations?</strong></p><p>Actions perform Ontology writes &#8212; updating data, changing state. Functions encapsulate business logic &#8212; computing, model-invoking, recommending, optimizing. Together they give the agent a complete capability loop: understand &#8594; query &#8594; analyze &#8594; decide &#8594; execute.</p><p>The key is not &#8220;renaming database tables.&#8221; It&#8217;s placing enterprise nouns, relationships, rules, actions, and permissions into a <strong>single governed semantic layer</strong>. This architectural decision reverberates through every subsequent layer.</p><p>One word: Ontology is an Operation System for AI Agents. </p><h2><strong>The Five-Layer Interaction Architecture</strong></h2><p>Agent-to-Ontology interaction decomposes into five layers, each building on the last:</p><pre><code><code>Layer 1: Context Layer       Let the agent see relevant context first [System deterministic trigger]
Layer 2: Query Layer         Let the agent actively query objects and relationships [LLM decision]
Layer 3: Logic Layer         Let the agent invoke functions, models, and business logic [LLM decision]
Layer 4: Action Layer        Let the agent execute governed business operations [LLM decision + optional user confirmation]
Layer 5: Governance Layer    Constrain agent permissions, audit, and security boundaries [End-to-end]</code></code></pre><p>The trigger annotations are the most important information in this table:</p><ul><li><p><strong>Layer 1 is system-determined.</strong> The agent doesn&#8217;t decide whether to retrieve; the system does it automatically.</p></li><li><p><strong>Layers 2-4 are LLM-determined.</strong> The agent autonomously decides <em>what</em> to query, <em>which</em> function to call, and <em>what</em> action to execute.</p></li><li><p><strong>Layer 5 is end-to-end.</strong> It&#8217;s not a separate step but a constraint mechanism spanning Layers 1 through 4.</p></li></ul><p>This architecture embodies a single design philosophy: <strong>determinism where possible, autonomy where necessary, constraint everywhere.</strong> The system does what it can do reliably. The LLM does what requires intelligence. But everything the LLM can do is bounded by governance.</p><h2><strong>Layer 1: Context Layer (Retrieval Context)</strong></h2><p>The Context Layer automatically provides relevant background to the agent on every user message.</p><p><strong>Critical characteristic: deterministic trigger.</strong> It executes automatically on every message &#8212; the LLM does <em>not</em> participate in the decision of whether to retrieve. This is the fundamental design distinction from the Query Layer (Layer 2).</p><p>Why this design? Because if you let the LLM decide &#8220;do I need to look something up?&#8221;, it might forget to look, look for the wrong thing, or look incompletely &#8212; and then fabricate answers based on incomplete information. Deterministic triggering guarantees: every message arrives with the context it should have.</p><p>Palantir Chatbot Studio provides three types of Retrieval Context. </p><p>Note: <em>these are not prompt-level instructions like &#8220;you can look up X.&#8221; They are actual configurations in the Chatbot builder that the system executes automatically</em>.</p><h3><strong>Ontology Context</strong></h3><p>Retrieves objects from Object Types. Two modes:</p><p><strong>Mode 1: Fixed Object Set</strong></p><p>Passes a set of objects through an application state variable. The canonical use case is Workshop-embedded agents &#8212; the user is operating on an object in the UI, and the agent automatically receives that object&#8217;s context.</p><pre><code><code>Example: Warehouse Dispatch Assistant

Configuration:
  Object Type: Warehouse
  Method: Variable Input (bound to currently selected Warehouse in Workshop)
  Properties passed: warehouseId, region, currentCapacity, backlogCount, managerName

Effect:
  User selects "South China Warehouse" in Workshop, then opens the agent
  &#8594; Agent automatically receives capacity, backlog, manager info for that warehouse
  &#8594; User asks "How's the backlog situation?"
  &#8594; Agent already has context &#8212; no need to ask "Which warehouse are you referring to?"
</code></code></pre><p><strong>Mode 2: Semantic Search</strong></p><p>Relies on <strong>vector embedding</strong> properties on Object Types. Finds the K most semantically relevant objects based on the user&#8217;s query.</p><pre><code><code>Example: Customer Complaint Assistant

Configuration:
  Object Type: CustomerComplaint
  Method: Semantic search, K=5
  Properties passed: complaintId, customerName, issueCategory, resolution, satisfactionScore

User asks: "Have there been complaints about cold chain failures causing cargo damage?"

System automatically:
  &#8594; Vectorizes the query
  &#8594; Searches against CustomerComplaint embedding properties
  &#8594; Returns 5 most semantically relevant historical complaints
  &#8594; Injects into LLM context

The LLM receives these 5 complaint records and directly summarizes historical handling approaches and customer satisfaction.</code></code></pre><p>Property filtering is configurable &#8212; vector embeddings themselves, large text fields, and sensitive fields can all be excluded from what reaches the LLM. This balances contextual relevance with token efficiency.</p><h3><strong>Document Context</strong></h3><p>Provides context from documents. Not a simple &#8220;attach the file&#8221; approach, but a strategic retrieval:</p><ul><li><p><strong>Full-text mode:</strong> Passes the complete document content. Suitable for short documents or when full reading is necessary.</p></li><li><p><strong>Relevant-chunks mode:</strong> Returns the K most semantically relevant chunks. Suitable for long documents where only specific sections matter.</p></li></ul><pre><code><code>Example: Carrier Contract Q&amp;A Assistant

Configuration:
  Document source: Transport service contracts with three carriers (PDF)
  Retrieval mode: Relevant Chunks, K=5

User asks: "What is Carrier A's delay compensation clause?"

System automatically:
  &#8594; Performs semantic search across all three contracts
  &#8594; Returns the 5 text fragments most relevant to "delay compensation"
  &#8594; Injects into LLM context

The LLM can cite specific clause numbers and source positions when answering.</code></code></pre><h3><strong>Function-backed Context</strong></h3><p>When built-in retrieval isn&#8217;t sufficient, you write a TypeScript function implementing the <code>AipAgentsContextRetrieval</code> interface with custom retrieval logic. The function outputs a <code>retrievedPrompt</code> string, which enters the conversation&#8217;s system prompt context.</p><p>Additional parameters can be passed via application variables (currently supporting string and object set types).</p><p><strong>Critical detail: this does not mean the full Ontology schema is injected into the system prompt.</strong> Only the retrieval function&#8217;s generated context text enters the conversation&#8217;s system prompt context. What&#8217;s exposed is the <em>retrieval result</em>, not the <em>schema</em>.</p><pre><code><code>Example: Customer 360&#176; View Assistant

Scenario: User asks "How has this customer been doing recently?"
  - Ontology Context can only find orders
  - Document Context can only find contracts
  - But the user wants orders + complaints + contract terms + recent communications &#8212; a composite view

Custom function logic:
  1. Get current customerId from application variable
  2. Keyword-search CRM communication records for last 30 days
  3. Ontology query for active orders
  4. Semantic search for complaints and tickets related to this customer
  5. Assemble a structured brief:
     "Customer XX Electronics: 12 active orders, 2 delayed;
      Last 30 days: 3 complaints, primarily about timeliness;
      Contract expires 2026-09-30, current service level: Gold"

  &#8594; Injected into LLM context</code></code></pre><p>Function-backed Context is designed for complex enterprise scenarios requiring multiple data sources, multiple retrieval strategies, and multiple business rules &#8212; scenarios that Ontology Context and Document Context alone cannot cover.</p><p>It can be simply seen as you predefined a custom function for some frequent retrievals such as customers-related questions. </p><h2><strong>Layer 2: Query Layer (Object Query Tool)</strong></h2><p>Context is system-injected. Query is agent-initiated.</p><p>The Object Query Tool allows the LLM to access specified Object Types and Properties within configured boundaries, supporting <strong>filtering, aggregation, inspection, and traversal of links.</strong></p><p>A crucial distinction: queries operate on Ontology semantic objects and links, not SQL JOINs. The underlying implementation may still rely on datasets and indexes, but the agent&#8217;s interface is business objects &#8212; &#8220;Shipment,&#8221; &#8220;Carrier,&#8221; &#8220;Warehouse&#8221; &#8212; not tables and columns. This allows the LLM to drive queries through natural language reasoning rather than constructing SQL it&#8217;s notoriously bad at.</p><h3><strong>Pattern 1: Multi-Condition Filtering + Aggregation</strong></h3><pre><code><code>User asks: "How many delayed high-priority orders are in the South China warehouse today?"

Agent invokes Object Query:
  Object Type: Shipment
  Filter: warehouse.region = "South China"
          AND status = "delayed"
          AND linkedOrder.priority = "high"
          AND ETA &lt; today
  Aggregation: COUNT

&#8594; Returns: 7

User follows up: "Which of these 7 are VIP customers?"

Agent invokes Object Query again:
  On the previous result set
  Traverse links: Shipment &#8594; Order &#8594; Customer
  Filter: Customer.serviceLevel = "VIP"

&#8594; Returns: 3, with customer names and order IDs</code></code></pre><p>Note two distinct operations: first, conditional filtering with aggregation producing a count. Then, link traversal through a relationship chain to filter by customer tier. The entire process is LLM-autonomous, but bounded within configured Object Types and Properties. Like an executive flipping through materials during a meeting &#8212; the materials are on the table, but which pages to turn to and how to filter them is the executive&#8217;s decision.</p><h3><strong>Pattern 2: Link Traversal for Root Cause Analysis</strong></h3><pre><code><code>User asks: "What caused the delay on order ORD-8832?"

Agent invokes Object Query, traversing links layer by layer:
  Order ORD-8832
    &#8594; link: hasShipments &#8594; Shipment SH-0042
      reads: status = "delayed", delayReason = "vehicle breakdown"
      &#8594; link: handledBy &#8594; Carrier CarrierA
        reads: performanceScore = 72, recentDelayRate = 18%
      &#8594; link: routedThrough &#8594; TransitHub HUB-GZ-03
        reads: congestionLevel = "high", avgProcessingDelay = "4.2h"

&#8594; Agent synthesizes: delay caused by Carrier A vehicle breakdown + Guangzhou transit hub congestion
</code></code></pre><p>This is Object Query&#8217;s most powerful capability &#8212; link traversal. The agent doesn&#8217;t need to know the full picture upfront. It can investigate like a detective following a chain of clues: from order to shipment, from shipment to carrier, from carrier to transit hub. Each step is &#8220;follow the relationship down&#8221; rather than constructing a complex multi-table JOIN upfront.</p><h3><strong>Pattern 3: Aggregation for Operational Overview</strong></h3><pre><code><code>User asks: "Compare backlog situations across regions?"

Agent invokes Object Query:
  Object Type: Shipment
  Group By: warehouse.region
  Aggregation: COUNT where status = "pending_dispatch"

&#8594; Returns:
  South China: 42 orders
  East China: 28 orders
  North China: 15 orders
  Southwest: 8 orders
</code></code></pre><p>This is management getting a &#8220;traffic light&#8221; dashboard &#8212; not inspecting individual orders, just seeing aggregate numbers by region to identify where attention is needed. The agent isn&#8217;t just &#8220;able to look up data&#8221;; it can provide management-level perspectives through aggregation.</p><h2><strong>The Critical Distinction: Retrieval Context vs. Object Query</strong></h2><p>This is the most commonly confused design point, and the most commonly overlooked in third-party analyses.</p><p>DimensionRetrieval ContextObject Query ToolTriggerAuto-fires on every user messageLLM decides whether to invokeReliabilityDeterministicDepends on LLM judgment; risk of missed or wrong queriesBest forCurrent business objects, key background, must-know informationExploratory analysis, ad-hoc queries, multi-turn follow-upsRiskToken waste or context noise if over-configuredLLM may forget, query incorrectly, or query incompletely</p><p><strong>Design principle (this article&#8217;s recommendation, not official wording):</strong></p><pre><code><code>Information the agent MUST know &#8594; Retrieval Context
Information the agent MAY explore &#8594; Object Query Tool</code></code></pre><p>A concrete example &#8212; the same &#8220;warehouse operations assistant&#8221; &#8212; shows what goes where:</p><p><strong>In Retrieval Context (system-injected, every turn):</strong></p><ul><li><p>The Warehouse object the user is currently operating on</p></li><li><p>Today&#8217;s KPI snapshot for that warehouse (outbound volume, backlog count, exception count)</p></li><li><p>User role and permission level</p></li></ul><p>&#8594; Ensures the agent always knows <em>who it&#8217;s talking to</em> and <em>about which warehouse</em>. No need for the user to restate context.</p><p><strong>In Object Query Tool (LLM invokes on demand):</strong></p><ul><li><p>&#8220;Compare South China and East China warehouse backlogs&#8221; &#8594; Agent queries two Warehouse objects</p></li><li><p>&#8220;This carrier&#8217;s performance over the last 30 days?&#8221; &#8594; Agent queries Carrier object with aggregation</p></li><li><p>&#8220;Where is SH-0042 right now?&#8221; &#8594; Agent queries a specific Shipment</p></li></ul><p>&#8594; These are ad-hoc, exploratory queries that couldn&#8217;t be predicted in advance. You don&#8217;t know what the user will ask, so you don&#8217;t pre-inject.</p><p>Analogy: <strong>Retrieval Context is the monitoring dashboard fixed at your workstation</strong> &#8212; always on, always showing key metrics. <strong>Object Query is the walkie-talkie in your hand</strong> &#8212; you pick it up when you need to ask &#8220;what&#8217;s the situation at Warehouse 3 right now?&#8221;</p><p>What happens when you get this wrong? Overstuff Context with <em>everything</em> just in case &#8594; every conversation turn carries potentially irrelevant data, wasting tokens and creating noise that distracts the LLM. Configure Query too narrowly &#8594; LLM wants to look something up but can&#8217;t find it &#8594; either admits ignorance (good) or, worse, fabricates (bad).</p><h2><strong>Layer 3: Logic Layer (Function Tool + AIP Logic)</strong></h2><p>After querying objects, agents often need to invoke encapsulated business logic. <strong>Don&#8217;t let the LLM &#8220;guess&#8221; the rules.</strong></p><p>The Function Tool allows the LLM to invoke any Foundry function, including published AIP Logic functions. AIP Logic is a no-code environment for building, testing, and publishing LLM-driven functions. Inputs can be Ontology objects or text strings; outputs can be strings, objects, or Ontology edits.</p><p>An important product boundary: further automating, staging, or routing function results through human review typically requires combining Automate, Ontology edits, staged writes, or application-side workflow design. This should not be understood as the Function Tool natively providing a complete approval flow; it should be addressed per specific Palantir product capabilities.</p><p><strong>Division of responsibility: LLM handles intent understanding, function selection, and result explanation. Functions handle business rule execution, model invocation, optimization computation, and structured result return.</strong></p><h3><strong>Example 1: Risk Scoring &#8212; Why the LLM Shouldn&#8217;t Calculate</strong></h3><p>This example best demonstrates the Function Tool&#8217;s value.</p><pre><code><code>User asks: "What's the risk level for these delayed orders?"

Without Function:
  The LLM makes a fuzzy judgment based on ETA and status
  "Looks delayed, probably risky" &#8212; not an enterprise-grade answer

With Function:
  Agent calls calculateDelayRisk(shipments)
  Function internal logic:
    - Query historical delay data (past 90 days, same carrier, same route)
    - Read carrier's current performance score
    - Call weather API for destination's next 24h forecast
    - Run a trained delay probability prediction model
    - Composite scoring: high / medium / low

  Returns:
    SH-0042: high (carrier breakdown + route historical delay rate 22%)
    SH-0119: high (warehouse backlog + destination storm warning)
    SH-0203: medium (slight overtime but carrier score good)

  &#8594; LLM receives structured results and explains them in natural language</code></code></pre><h3><strong>Example 2: Cross-Object Business Logic &#8212; Email + Object Joint Reasoning</strong></h3><pre><code><code>Scenario: Customer complaint handling

Agent calls recommendResolution(shipment, emailText)
  Inputs:
    - Shipment object SH-0042 (with status, delayReason, carrier, etc.)
    - Customer complaint email text: "Already delayed 3 days, we'll return the goods if it doesn't arrive soon"

  Function internal (AIP Logic):
    1. Use LLM block to extract sentiment, demands, and time constraints from the email
    2. Query Ontology for this customer's past 6 months of complaint records
    3. Match historically similar delay + similar customer tier resolution cases
    4. Synthesize a recommendation

  Returns:
    Recommended action: "Reassign to Carrier B + proactively offer 5% freight discount"
    Basis: "Historically, for similar VIP customer complaints, Approach A had 87% satisfaction recovery rate"

  &#8594; Agent presents the recommendation to the user with execution options
</code></code></pre><p>This example demonstrates AIP Logic&#8217;s power &#8212; combining the LLM&#8217;s natural language understanding (extracting sentiment and demands from email) with Ontology&#8217;s structured query capability (historical complaint data matching), producing an evidence-backed recommendation. Like a customer service supervisor turning to an experienced colleague: &#8220;Help me look up how we handled similar situations before &#8212; what was this customer&#8217;s tier, which approach worked best historically?&#8221;</p><h3><strong>Example 3: Optimization Computation &#8212; Scheduling / Routing / Resource Allocation</strong></h3><pre><code><code>User asks: "Tomorrow, 50 pending orders at South China warehouse &#8212; how to optimally allocate across 3 carriers?"

Agent calls optimizeCarrierAllocation(orders, carriers, constraints)
  Inputs:
    - 50 Order objects
    - 3 Carrier objects (with capacity limits, unit prices, historical fulfillment rates)
    - Constraint: minimize total cost + all orders must ship within 48h

  Function internal:
    - Run a linear programming / mixed-integer programming model
    - Return allocation plan

  Returns:
    Carrier A: 22 orders (heavy cargo primarily, lowest unit price)
    Carrier B: 18 orders (time-sensitive items, highest fulfillment rate)
    Carrier C: 10 orders (remote regions, only coverage)
    Estimated total cost: &#165;84,200

  &#8594; LLM summarizes the plan logic in natural language; user confirms to execute the allocation</code></code></pre><h2><strong>Layer 4: Action Layer</strong></h2><p>The Action Layer is where the agent transitions from &#8220;question-answering assistant&#8221; to &#8220;business operator.&#8221;</p><p>The Action Tool lets Chatbots execute ontology edits &#8212; but not by writing freely to databases. The LLM fills parameters within authorized Action Type boundaries and submits. Palantir&#8217;s action/permission/audit machinery handles execution.</p><h3><strong>Example 1: High-Risk &#8212; User Confirmation Required</strong></h3><pre><code><code>User: "Reassign SH-0042's carrier from A to B"

Agent recognizes this as an assignCarrier action:
  Action Type: assignCarrier
  Parameters:
    shipment = SH-20260621-0042
    newCarrier = CarrierB
    reason = "Original carrier vehicle breakdown, user-specified reassignment"

  Configured as "execute after user confirmation" (carrier changes involve contract and cost implications)

  Agent responds:
    "Confirm reassigning SH-0042's carrier from A to B?
     Note: Carrier B's unit price is 12% higher than Carrier A.
     Estimated additional cost: &#165;340."

  User confirms &#8594; executes &#8594; Ontology: SH-0042.carrier updated to CarrierB</code></code></pre><p>A critical design detail: when presenting the confirmation prompt, the agent doesn&#8217;t just say &#8220;should I do this?&#8221; &#8212; it proactively calculates and displays the impact (12% price differential, &#165;340 cost increase). This isn&#8217;t the LLM guessing; it&#8217;s extracted from the Function&#8217;s structured output.</p><p>Like an intern drafting an email but requiring supervisor review before sending. The supervisor sees &#8220;Carrier B costs 12% more&#8221; and decides whether to proceed.</p><h3><strong>Example 2: Low-Risk &#8212; Auto-Execute</strong></h3><pre><code><code>Scenario: Agent combined with Automate for routine exception handling

  Configuration: When delay reason = "weather" AND delay &lt; 4 hours, action auto-executes

  Trigger:
    AIP Logic function detects SH-0301 delayed 2 hours due to heavy rain
    &#8594; Auto-calls updateETA(shipment = SH-0301, newETA = originalETA + 2h)
    &#8594; Auto-calls notifyCustomer(orderId = ORD-7710,
        message = "Due to weather conditions, your order is expected to be delayed by 2 hours")

  No human confirmation needed &#8212; completes directly</code></code></pre><p>This is &#8220;low-risk auto, high-risk confirm&#8221; as a design principle in practice. Like autonomous driving adjusting speed on a straight highway without requiring the driver to confirm every adjustment &#8212; but at a complex intersection (high-risk operation), control returns to the human.</p><h3><strong>Supporting Tools</strong></h3><p>Beyond the core Action Tool, three supporting tools extend the agent&#8217;s interaction capabilities:</p><p><strong>Update Application Variable:</strong> Updates values in Application State, allowing the agent to change Workshop and other application states.</p><pre><code><code>Example: User says in agent conversation "Only show East China region data"
  &#8594; Agent calls Update Application Variable
  &#8594; Changes Workshop page's region filter variable from "All" to "East China"
  &#8594; All charts, maps, and lists on the page refresh in concert</code></code></pre><p>Like telling the receptionist &#8220;only transfer East China region calls to me&#8221; &#8212; the receptionist changes the phone system filter, and all subsequent calls follow the new rule.</p><p><strong>Command Tool:</strong> Triggers operations in other Palantir applications.</p><pre><code><code>Example: User says "Mark these 5 delayed orders on the map"
  &#8594; Agent calls Command Tool
  &#8594; Triggers Workshop map component to highlight the 5 Shipments' current positions</code></code></pre><p>Like asking an assistant &#8220;mark these clients in red on the map&#8221; &#8212; the assistant walks to the whiteboard and annotates. You didn&#8217;t do it yourself, but the whiteboard changes as you specified.</p><p><strong>Request Clarification:</strong> Allows the agent to pause execution and ask the user for clarification, preventing misoperation.</p><pre><code><code>Example: User says "Cancel that order"
  &#8594; Agent finds 3 possible orders matching "that," and cancellation is irreversible
  &#8594; Agent calls Request Clarification:
    "Which order are you referring to?
     1. ORD-8832 (XX Electronics, &#165;12,000)
     2. ORD-9201 (YY Tech, &#165;8,500)
     3. ORD-9305 (ZZ Manufacturing, &#165;21,000)"</code></code></pre><p>Like a nurse double-checking before administering medication: &#8220;Did you say the left hand or the right hand?&#8221; Better to ask one more question than to make an irreversible mistake.</p><h2><strong>Layer 5: Governance Layer</strong></h2><p>This is the core differentiator between Palantir AIP and generic agent frameworks. Governance is not a separate step &#8212; it&#8217;s an <strong>end-to-end constraint mechanism spanning all layers:</strong></p><pre><code><code>Retrieval Context config   &#8594; Controls what the agent sees by default each turn
Object Query config        &#8594; Controls which object types and properties the agent can actively query
Function config            &#8594; Controls which business logic and models the agent can invoke
Action config              &#8594; Controls which business mutations the agent can perform, and whether confirmation is required
Application State          &#8594; Controls current page, object, and user operation context
Security / Permission      &#8594; Controls user and agent access and execution privileges
Dynamic Security           &#8594; Dynamically constrains access and execution at object, field, and action levels
Audit / Lineage            &#8594; Records who, when, through which agent, triggered what action
</code></code></pre><p>Notice each row maps to a specific layer. From Layer 1 through Layer 4, every layer has a corresponding Governance configuration. This isn&#8217;t post-hoc auditing &#8212; it&#8217;s pre-emptive and in-flight constraint.</p><h3><strong>Same Agent, Different Roles</strong></h3><p>A concrete example shows how Governance operates at every layer:</p><pre><code><code>Scenario: Frontline dispatcher vs. Regional manager, using the same "Operations Assistant" agent

Frontline dispatcher after login:
  Layer 1: Retrieval Context only injects Shipments from 3 assigned routes
  Layer 2: Object Query can only query objects on those 3 routes; can't see other regions
  Layer 3: Can call calculateDelayRisk, but cannot call viewProfitMargin (cost-sensitive)
  Layer 4: Can execute updateETA (low-risk), but assignCarrier requires supervisor confirmation
  Layer 5: All operations logged to audit trail, tagged "Dispatcher XXX via Operations Assistant"

Regional manager after login:
  Layer 1: Retrieval Context injects entire South China region shipment overview
  Layer 2: Object Query can query all routes in South China + carrier performance data
  Layer 3: Can call calculateDelayRisk + viewProfitMargin + optimizeCarrierAllocation
  Layer 4: Can directly execute assignCarrier (no confirmation needed), but cancelOrder still requires confirmation
  Layer 5: Same audit logging, but lineage traces to a broader permission scope
</code></code></pre><p>This is <strong>permission layering:</strong> same building, different keycards. The intern has access to their floor. The GM has building-wide access. But the underground vault requires dual authentication for <em>everyone</em> &#8212; permissions are layered, with extra protection for high-risk areas regardless of role.</p><h3><strong>Architecture-Level Hallucination Prevention</strong></h3><p>Hallucination prevention isn&#8217;t about writing &#8220;don&#8217;t make things up&#8221; in a prompt. It&#8217;s about architecturally ensuring the agent simply cannot access information it shouldn&#8217;t.</p><pre><code><code>Another example: Governance constraints preventing hallucination

User asks: "What was the company's total revenue this year?"

Without Governance:
  The LLM might "hallucinate" a number based on training data &#8594; hallucination

With Governance:
  Layer 1: No financial data configured in Retrieval Context &#8594; Agent can't see it
  Layer 2: No FinancialReport Object Type configured in Object Query &#8594; Agent can't query it
  Layer 3: No financial Functions authorized &#8594; Agent can't compute it
  &#8594; Agent can only honestly respond: "I don't have access to company financial data.
     Please contact the finance department."

  This isn't accomplished by writing "don't fabricate data" in the prompt.
  It's architecturally ensuring the agent cannot see, query, or compute the information.
</code></code></pre><p>It&#8217;s not posting a &#8220;No Cheating&#8221; sign in the exam hall. It&#8217;s not bringing the answer key into the exam hall in the first place. The agent isn&#8217;t &#8220;told not to say&#8221; &#8212; it <strong>genuinely cannot know</strong>.</p><p>This is why Palantir&#8217;s anti-hallucination design isn&#8217;t a single-point solution: every layer imposes constraints, and four layers of compounding restrictions (what you see + what you can query + what you can do + who has permission) form the complete anti-hallucination architecture. No single mechanism &#8212; whether RAG, prompt engineering, or output validation &#8212; is sufficient for enterprise-grade reliability.</p><h2><strong>Tool Calling Mode: How Tools Are Exposed to the LLM</strong></h2><p>After understanding <em>what</em> tools the agent has, you need to understand <em>how</em> these tools are provided to the LLM. Chatbot Studio supports two modes:</p><h3><strong>Prompted Tool Calling</strong></h3><p>Tool descriptions are inserted into the prompt. The LLM understands available tools through prompt text.</p><pre><code><code>Scope: All models + all tool types
Invocation: One tool at a time
Best for: Model compatibility as priority, diverse tool types
</code></code></pre><h3><strong>Native Tool Calling</strong></h3><p>Uses the model&#8217;s native tool calling capability.</p><pre><code><code>Scope: Only certain Palantir-provided models + only Action / Object Query / Function / Update App Variable
Invocation: Can call multiple tools in parallel
Best for: Performance as priority, token efficiency as priority</code></code></pre><p>This clarifies a common misconception: <strong>Palantir does not dump the entire Ontology schema into the system prompt.</strong> A more accurate understanding: within a specific Chatbot/Application/Workflow, the Ontology capabilities that are configured, authorized, and relevant to the current task are exposed to the LLM as tool descriptions, context fragments, function signatures, and action definitions.</p><p>The LLM doesn&#8217;t see &#8220;all 500 Object Types and 2000 Properties in the enterprise.&#8221; It sees &#8220;the query tool for the 5 Object Types and 30 Properties this Chatbot is authorized to access.&#8221; Scope is determined by configuration, not by schema.</p><h2><strong>End-to-End Interaction Walkthrough</strong></h2><p>Let&#8217;s trace a complete interaction through all five layers using a logistics scenario.</p><h3><strong>Scenario</strong></h3><pre><code><code>User: "Check which orders in the South China warehouse today have delay risks, and give me handling recommendations."</code></code></pre><h3><strong>Interaction Flow Summary</strong></h3><pre><code><code>User Message
    &#9474;
    &#9660;
&#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;
&#9474;  Layer 1: Context Layer [System-level &#183; Deterministic] &#9474;
&#9474;  Ontology Context / Document Context / Func Context &#9474;
&#9474;  &#8594; Inject into LLM context                          &#9474;
&#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9516;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;
                        &#9660;
&#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;
&#9474;  Layer 2: Query Layer [LLM Decision]                &#9474;
&#9474;  Object Query &#8594; Filter / Aggregate / Traverse links &#9474;
&#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9516;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;
                        &#9660;
&#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;
&#9474;  Layer 3: Logic Layer [LLM Decision]                &#9474;
&#9474;  Function Tool &#8594; Business logic / Model / AIP Logic &#9474;
&#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9516;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;
                        &#9660;
&#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;
&#9474;  Layer 4: Action Layer [LLM Decision + User Confirm] &#9474;
&#9474;  Action / Command / Update App Variable             &#9474;
&#9474;  &#8594; Ontology edit / External system trigger          &#9474;
&#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9516;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;
                        &#9660;
&#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;
&#9474;  Layer 5: Governance [End-to-end]                   &#9474;
&#9474;  Permission check / Audit log / Lineage / App sync   &#9474;
&#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;</code></code></pre><div><hr></div><h2><strong>Internal vs. External Agents</strong></h2><p>The five-layer architecture primarily describes <strong>internal agents</strong> (built through Chatbot Studio, Workshop, AIP Logic) interacting with Ontology. When external agents connect, two distinct &#8212; and easily confused &#8212; mechanisms come into play: <strong>Palantir MCP</strong> and <strong>Ontology MCP (OMCP)</strong>.</p><h3><strong>Palantir MCP: For Ontology Builders / Developers</strong></h3><p>Palantir MCP targets developers and ontology builders. It enables external dev tools or AI coding assistants to understand Foundry projects, codebases, applications, and Ontology architecture context.</p><p>Typical capabilities:</p><pre><code><code>- Explore Foundry project structure, navigate codebases and internal Palantir libraries
- Provide context for React OSDK, Python transform, TypeScript function repositories
- View and query datasets (can run SQL queries, create notional datasets, cannot overwrite existing)
- Search Ontology for object types, action types, functions
- Create proposals to modify Ontology type definitions (object types, link types, action types)
- Regenerate OSDK for Developer Console applications</code></code></pre><p><strong>Hard constraint: Palantir MCP cannot write ontology data.</strong> It can only modify ontology structure (type definitions). All Ontology type modifications must go through proposal review and require human approval before taking effect.</p><h3><strong>Ontology MCP (OMCP): For External Business Agents / Ontology Consumers</strong></h3><p>Ontology MCP (OMCP) is a Developer Console feature that exposes an application&#8217;s ontology resources as standard MCP tools, allowing external AI agents to interact with Ontology as MCP clients.</p><p>External agents via OMCP can, within controlled boundaries:</p><pre><code><code>- Read Ontology objects and properties
- Invoke exposed query functions
- Trigger authorized action types
- Perform Ontology data edits where permitted</code></code></pre><p>Official documentation lists three typical usage patterns:</p><pre><code><code>Pattern 1: Desktop Agent Integration
  Integrate with Claude.ai, Microsoft Copilot Studio, Gemini Enterprise, and similar desktop agents.
  Users and agents share the same data, logic, actions, and governance.
  Example: A user in Teams asks Copilot to create a task in Ontology &#8212;
  other users and applications see it immediately.

Pattern 2: External Agentic Framework Integration
  Integrate with Google Agent Development Kit (ADK), Microsoft Agent Framework,
  OpenAI SDK, Anthropic SDK, and similar frameworks.
  Developers can combine multiple MCP servers (e.g., Perplexity MCP + Ontology MCP)
  to build composite agent workflows spanning external knowledge and enterprise Ontology.

Pattern 3: Headless Agent Workflows
  Unsupervised autonomous agents reading and writing Ontology via OMCP.
  OMCP serves as both the agent's memory and tracking layer &#8212;
  all operations recorded in Ontology, providing audit capability for unattended operations.</code></code></pre><p>Key constraint: application restrictions. Administrators must explicitly configure which object types, action types, and functions are accessible to external agents. Authentication is OAuth 2.0-based, supporting both authorization code grant (user-level permissions) and client credentials grant (service-level permissions).</p><blockquote><p><strong>Note:</strong> OMCP is currently in beta. Functionality may evolve. Enabling OMCP means exposing data from your Palantir environment to external MCP clients &#8212; ensure alignment with your organization&#8217;s data governance and compliance policies.</p></blockquote><h3><strong>Palantir MCP vs. OMCP: Positioning Differences</strong></h3><p>Official one-line distinction: <strong>Ontology MCP enables controlled writes to ontology data, while Palantir MCP enables modifications to ontology structure.</strong></p><pre><code><code>Palantir MCP:
  - Targets: Developers / Ontology Builders / Platform Engineers
  - Can do: Modify Ontology type definitions (object types, link types, action types)
  - Cannot do: Write ontology data (hard constraint)
  - Additional constraint: All type modifications require proposal review, human approval
  - Typical use: AI coding assistant aiding development within Foundry ecosystem

Ontology MCP / OMCP:
  - Targets: External Business Agents / Ontology Consumers / Headless Agents
  - Can do: Read objects, execute actions, query data, write ontology data
  - Cannot do: Modify Ontology type definitions
  - Additional constraint: Governed by application restrictions, OAuth 2.0 permissions
  - Typical use: Copilot Studio / Gemini / Claude securely reading and writing business data
  - Status: Beta</code></code></pre><p>Regardless of path, <strong>the core principle remains invariant: agents access objects, relationships, functions, and actions through governed Ontology interfaces &#8212; never bypassing the Ontology to touch underlying data directly.</strong></p><h2><strong>Minimum Viable Architecture Design</strong></h2><p>To design an Ontology-aware agent system inspired by Palantir&#8217;s approach, nine core components are needed:</p><pre><code><code>1. Ontology Schema Registry
   Manages definitions and versions of object types, properties, links, actions, and functions.

2. Tool Registry
   Manages which tools, functions, and actions are exposed to the agent,
   along with corresponding parameter schemas and invocation methods.

3. Context Builder (corresponds to Layer 1)
   Deterministically injects context based on current user, page, object, and query.

4. Object Query Tool (corresponds to Layer 2)
   Allows the LLM to query objects, filter, aggregate, and traverse links within authorized boundaries.

5. Function Tool (corresponds to Layer 3)
   Encapsulates business logic, models, rules, and optimization algorithms as callable functions.

6. Action Tool (corresponds to Layer 4)
   Encapsulates write operations as governed actions with parameter validation,
   permission checks, and user confirmation.

7. Permission Evaluator (corresponds to Layer 5)
   Verifies user, agent, object, field, and action permissions before every query,
   function call, and action execution.

8. Audit Logger / Lineage Tracker (corresponds to Layer 5)
   Records who, when, through which agent, invoked what tool, and modified which objects.

9. Application State
   Connects the agent to specific business application pages and contexts.</code></code></pre><p>Minimum flow:</p><pre><code><code>User Message &#8594; Context Builder &#8594; LLM &#8594; Object Query &#8594; Function &#8594; LLM Response
&#8594; User Confirmation &#8594; Action &#8594; Ontology Edit &#8594; Audit Log</code></code></pre><h2><strong>To Sum Up</strong></h2><p>Palantir AIP Agent-to-Ontology interaction is <strong>not simple RAG, and not an LLM querying databases directly.</strong> It is a five-layer, coordinated enterprise agent runtime:</p><pre><code><code>Context Layer     System-level deterministic context provision &#8212; the agent never starts "blind"
Query Layer       Agent-initiated object and relationship exploration
Logic Layer       Encapsulated business logic invocation &#8212; no LLM rule-fabrication
Action Layer      Governed business mutations &#8212; from Q&amp;A assistant to business operator
Governance Layer  End-to-end permission, audit, and security constraints</code></code></pre><p>What&#8217;s truly worth learning isn&#8217;t any single tool or prompt pattern. It&#8217;s the design philosophy:</p><blockquote><p><strong>First model the enterprise business world into a queryable, computable, executable, governable Ontology &#8212; then let agents operate on that governed semantic layer.</strong></p></blockquote><p>Don&#8217;t hand the LLM a database connection string and say &#8220;figure it out.&#8221; Define what exists in the enterprise, who can see what, and who can do what &#8212; then let the agent exercise intelligence within those defined boundaries.</p><h2><strong>References</strong></h2><ul><li><p>AIP Overview: <a href="iframe.php?url=https%3A%2F%2Fwww.palantir.com%2Fdocs%2Ffoundry%2Faip%2Foverview%2F">https://www.palantir.com/docs/foundry/aip/overview/</a></p></li><li><p>AIP Architecture: <a href="iframe.php?url=https%3A%2F%2Fwww.palantir.com%2Fdocs%2Ffoundry%2Farchitecture-center%2Faip-architecture%2F">https://www.palantir.com/docs/foundry/architecture-center/aip-architecture/</a></p></li><li><p>AIP Features: <a href="iframe.php?url=https%3A%2F%2Fwww.palantir.com%2Fdocs%2Ffoundry%2Faip%2Faip-features%2F">https://www.palantir.com/docs/foundry/aip/aip-features/</a></p></li><li><p>Chatbot Studio Tools: <a href="iframe.php?url=https%3A%2F%2Fwww.palantir.com%2Fdocs%2Ffoundry%2Fchatbot-studio%2Ftools%2F">https://www.palantir.com/docs/foundry/chatbot-studio/tools/</a></p></li><li><p>Chatbot Studio Core Concepts: <a href="iframe.php?url=https%3A%2F%2Fwww.palantir.com%2Fdocs%2Ffoundry%2Fchatbot-studio%2Fcore-concepts%2F">https://www.palantir.com/docs/foundry/chatbot-studio/core-concepts/</a></p></li><li><p>Retrieval Context: <a href="iframe.php?url=https%3A%2F%2Fwww.palantir.com%2Fdocs%2Ffoundry%2Fchatbot-studio%2Fretrieval-context%2F">https://www.palantir.com/docs/foundry/chatbot-studio/retrieval-context/</a></p></li><li><p>AIP Logic Overview: <a href="iframe.php?url=https%3A%2F%2Fwww.palantir.com%2Fdocs%2Ffoundry%2Flogic%2Foverview%2F">https://www.palantir.com/docs/foundry/logic/overview/</a></p></li><li><p>Ontology System: <a href="iframe.php?url=https%3A%2F%2Fwww.palantir.com%2Fdocs%2Ffoundry%2Farchitecture-center%2Fontology-system%2F">https://www.palantir.com/docs/foundry/architecture-center/ontology-system/</a></p></li><li><p>Ontology Overview: <a href="iframe.php?url=https%3A%2F%2Fwww.palantir.com%2Fdocs%2Ffoundry%2Fontology%2Foverview%2F">https://www.palantir.com/docs/foundry/ontology/overview/</a></p></li><li><p>Palantir MCP: <a href="iframe.php?url=https%3A%2F%2Fwww.palantir.com%2Fdocs%2Ffoundry%2Fpalantir-mcp%2Foverview%2F">https://www.palantir.com/docs/foundry/palantir-mcp/overview/</a></p></li><li><p>Ontology MCP (OMCP): <a href="iframe.php?url=https%3A%2F%2Fwww.palantir.com%2Fdocs%2Ffoundry%2Fontology-mcp%2Foverview%2F">https://www.palantir.com/docs/foundry/ontology-mcp/overview/</a></p></li><li><p>Model Integration<a href="iframe.php?url=https%3A%2F%2Fwww.palantir.com%2Fdocs%2Ffoundry%2Fmodel-integration%2Foverview%2F">https://www.palantir.com/docs/foundry/model-integration/overview/</a></p></li></ul><div><hr></div><p><em>Welcome to subscribe my newsletter and share the posts to your friends. </em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://zerofuturetech.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">zerofuturetech's newsletter is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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 Prompting. Start Building Loops.]]></title><description><![CDATA[What is Loop Engineering? Five components, three real examples, and why verifiable domains run best]]></description><link>https://zerofuturetech.substack.com/p/stop-prompting-start-building-loops</link><guid isPermaLink="false">https://zerofuturetech.substack.com/p/stop-prompting-start-building-loops</guid><dc:creator><![CDATA[zerofuturetech]]></dc:creator><pubDate>Fri, 19 Jun 2026 12:03:18 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75d9418c-b053-4ad4-9a97-e1f411013771_2000x1500.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Dear Subscribers and Friends, </p><p>Welcome to read my new newsletter about LOOP ENGINEERING, which is a new concept. From prompt engineering, context engineering and harness engineering to now loop engineering, AI Vibe Coding Paradigam keeps evolving. This article could help you to learn about loop engineering. </p><p>If you are a visual learner, you are welcomed to watch my youtube video: </p><div id="youtube2-h2uSWkS1IPY" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;h2uSWkS1IPY&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="iframe.php?url=https%3A%2F%2Fwww.youtube-nocookie.com%2Fembed%2Fh2uSWkS1IPY%3Frel%3D0%26amp%3Bautoplay%3D0%26amp%3Bshowinfo%3D0%26amp%3Benablejsapi%3D0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Also, welcome to subscribe my <a href="iframe.php?url=https%3A%2F%2Fx.com%2Fjingwangtalk">X</a> account.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://zerofuturetech.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">zerofuturetech's newsletter is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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>On June 7, 2026, Peter Steinberger (OpenClaw Creator) posted this:</p><blockquote><p>&#8220;You shouldn&#8217;t be prompting coding agents anymore. You should be designing loops that prompt your agents.&#8221;</p></blockquote><p>Two days later, Boris Cherny &#8212; the creator of Anthropic&#8217;s Claude Code &#8212; said the same thing on stage:</p><blockquote><p>&#8220;I don&#8217;t prompt Claude anymore. I have loops running. They&#8217;re the ones prompting Claude and figuring out what to do. My job is to write loops.&#8221;</p></blockquote><p>That&#8217;s the idea behind <strong>Loop Engineering</strong> &#8212; and it marks a concrete shift in how serious AI builders work.</p><p>It&#8217;s not a new tool. It&#8217;s a new mental model: <strong>your job isn&#8217;t to prompt AI anymore. It&#8217;s to design systems that prompt AI on your behalf.</strong></p><h2><strong>What Actually Changed</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21Gk8D%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F524ed719-a9bd-4be5-8837-89201fb5c49d_1392x930.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Gk8D!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F524ed719-a9bd-4be5-8837-89201fb5c49d_1392x930.png 424w, https://substackcdn.com/image/fetch/$s_!Gk8D!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F524ed719-a9bd-4be5-8837-89201fb5c49d_1392x930.png 848w, https://substackcdn.com/image/fetch/$s_!Gk8D!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F524ed719-a9bd-4be5-8837-89201fb5c49d_1392x930.png 1272w, https://substackcdn.com/image/fetch/$s_!Gk8D!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F524ed719-a9bd-4be5-8837-89201fb5c49d_1392x930.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21Gk8D%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F524ed719-a9bd-4be5-8837-89201fb5c49d_1392x930.png" width="1392" height="930" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/524ed719-a9bd-4be5-8837-89201fb5c49d_1392x930.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:930,&quot;width&quot;:1392,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:168931,&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://zerofuturetech.substack.com/i/202548938?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F524ed719-a9bd-4be5-8837-89201fb5c49d_1392x930.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_!Gk8D!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F524ed719-a9bd-4be5-8837-89201fb5c49d_1392x930.png 424w, https://substackcdn.com/image/fetch/$s_!Gk8D!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F524ed719-a9bd-4be5-8837-89201fb5c49d_1392x930.png 848w, https://substackcdn.com/image/fetch/$s_!Gk8D!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F524ed719-a9bd-4be5-8837-89201fb5c49d_1392x930.png 1272w, https://substackcdn.com/image/fetch/$s_!Gk8D!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F524ed719-a9bd-4be5-8837-89201fb5c49d_1392x930.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 how you&#8217;ve been using AI to write code for the past two years:</p><pre><code><code>You write prompt &#8594; Agent executes &#8594; You read output &#8594; You decide &#8594; You write another prompt &#8594; ...</code></code></pre><p>You&#8217;re the one driving. Every decision flows through you. The entire chain waits on you.</p><p>Loop Engineering inverts this:</p><p><strong>Before: you drive the agent</strong></p><pre><code><code>You &#8594; Agent &#8594; You &#8594; Agent &#8594; You &#8594; Agent &#8594; ... (manual the whole way)</code></code></pre><p><strong>Now: a system drives the agents, you design the system</strong></p><pre><code><code>Schedule &#8594; Triage &#8594; Execute &#8594; Verify &#8594; Deliver &#8594; Schedule &#8594; ... (you only step in for exceptions)</code></code></pre><p>The difference is <strong>who drives whom</strong>. You stop being the operator and become the system designer.</p><h2><strong>How We Got Here</strong></h2><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_!4L4L!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4100061-5527-4c10-a51f-131ccca11b45_1424x342.png 424w, https://substackcdn.com/image/fetch/$s_!4L4L!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4100061-5527-4c10-a51f-131ccca11b45_1424x342.png 848w, https://substackcdn.com/image/fetch/$s_!4L4L!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4100061-5527-4c10-a51f-131ccca11b45_1424x342.png 1272w, https://substackcdn.com/image/fetch/$s_!4L4L!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4100061-5527-4c10-a51f-131ccca11b45_1424x342.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%214L4L%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fe4100061-5527-4c10-a51f-131ccca11b45_1424x342.png" width="1424" height="342" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e4100061-5527-4c10-a51f-131ccca11b45_1424x342.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:342,&quot;width&quot;:1424,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:87733,&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://zerofuturetech.substack.com/i/202548938?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4100061-5527-4c10-a51f-131ccca11b45_1424x342.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_!4L4L!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4100061-5527-4c10-a51f-131ccca11b45_1424x342.png 424w, https://substackcdn.com/image/fetch/$s_!4L4L!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4100061-5527-4c10-a51f-131ccca11b45_1424x342.png 848w, https://substackcdn.com/image/fetch/$s_!4L4L!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4100061-5527-4c10-a51f-131ccca11b45_1424x342.png 1272w, https://substackcdn.com/image/fetch/$s_!4L4L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4100061-5527-4c10-a51f-131ccca11b45_1424x342.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><p>Loop Engineering was named in June 2026, but the roots go back further.</p><p><strong>Summer 2025</strong>: Engineer Geoffrey Huntley stumbled onto a pattern he called the <strong>Ralph Loop</strong> &#8212; throwing a coding agent into an infinite shell loop:</p><pre><code><code>while true; do
  cat prompt.md | claude
done</code></code></pre><p>Each iteration reads the same prompt file, modifies code, and starts fresh. The next loop gets a clean context window &#8212; no conversation history, just the filesystem state left behind by the previous run. Not smart, but effective.&#185;</p><p><strong>April&#8211;May 2026</strong>: The tooling layer caught up. Codex CLI v0.128.0 shipped <code>/goal</code>, supporting &#8220;run until condition met.&#8221; Claude Code v2.1.139 followed, with <code>/goal</code> using a separate small model to check completion status after each turn &#8212; not the executing model.&#178;</p><p><strong>June 9, 2026</strong>: Google Chrome engineer Addy Osmani published the definitive framing piece, systematizing Loop Engineering into five core components.&#179;</p><p>Each layer doesn&#8217;t replace the previous one &#8212; it compounds on top. Bad prompting gives you a bad loop that fails faster.</p><h2><strong>The Five Components + Memory</strong></h2><p>Claude Code and Codex natively support all five. You don&#8217;t need to wire this from scratch.</p><h3><strong>Component 01: Automations</strong></h3><p>The heartbeat of any loop. Without it, you have a one-shot run, not a cycle.</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_!EXN9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F048137f0-f0b0-469c-85f6-0cae5d45a412_1196x208.png 424w, https://substackcdn.com/image/fetch/$s_!EXN9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F048137f0-f0b0-469c-85f6-0cae5d45a412_1196x208.png 848w, https://substackcdn.com/image/fetch/$s_!EXN9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F048137f0-f0b0-469c-85f6-0cae5d45a412_1196x208.png 1272w, https://substackcdn.com/image/fetch/$s_!EXN9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F048137f0-f0b0-469c-85f6-0cae5d45a412_1196x208.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21EXN9%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F048137f0-f0b0-469c-85f6-0cae5d45a412_1196x208.png" width="1196" height="208" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/048137f0-f0b0-469c-85f6-0cae5d45a412_1196x208.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:208,&quot;width&quot;:1196,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:47857,&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://zerofuturetech.substack.com/i/202548938?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F048137f0-f0b0-469c-85f6-0cae5d45a412_1196x208.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_!EXN9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F048137f0-f0b0-469c-85f6-0cae5d45a412_1196x208.png 424w, https://substackcdn.com/image/fetch/$s_!EXN9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F048137f0-f0b0-469c-85f6-0cae5d45a412_1196x208.png 848w, https://substackcdn.com/image/fetch/$s_!EXN9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F048137f0-f0b0-469c-85f6-0cae5d45a412_1196x208.png 1272w, https://substackcdn.com/image/fetch/$s_!EXN9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F048137f0-f0b0-469c-85f6-0cae5d45a412_1196x208.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><h3><strong>Component 02: Worktrees</strong></h3><p>The moment you run multiple agents in parallel, file conflicts become the bottleneck. Git worktrees give each agent its own isolated working directory &#8212; shared repo history, zero cross-contamination.</p><h3><strong>Component 03: Skills</strong></h3><p>Without Skills, every agent startup is a cold start. It knows nothing about your project conventions, why you can&#8217;t use a particular library, or where credentials live.</p><p>A Skill captures this once:</p><pre><code><code>your-project/.claude/skills/ci-fix/
&#9500;&#9472;&#9472; SKILL.md    # core instructions
&#9500;&#9472;&#9472; scripts/    # executable helpers
&#9492;&#9472;&#9472; references/ # supporting docs</code></code></pre><p>Write it once, and every loop run picks it up automatically. This is how you pay down <strong>Intent Debt</strong> &#8212; the gap between what you meant and what the agent guesses.</p><h3><strong>Component 04: Plugins &amp; Connectors</strong></h3><p>Built on MCP (Model Context Protocol), connectors let agents read your issue tracker, query databases, call staging APIs, and post to Slack. This is what separates an agent that <em>talks about</em> solutions from a loop that <em>ships</em> them &#8212; opening PRs, updating tickets, and notifying the team without your involvement.</p><h3><strong>Component 05: Sub-agents</strong></h3><p>This is the most important structural decision in any loop.&#179;</p><blockquote><p>&#8220;The model that writes the code is the worst judge of whether the code is correct.&#8221;</p></blockquote><p>The fix is <strong>Maker-Checker separation</strong>: the agent that writes code and the agent that reviews code are not the same instance.</p><pre><code><code>Implementer Sub-agent (writes code)
        &#8595;
Verifier Sub-agent (independent: runs tests + lint + checks against Skills)
        &#8595;
Fails &#8594; back to Implementer
Passes &#8594; proceed</code></code></pre><p>The data: LanceMartin&#8217;s Fable 5 experiments showed Verifier sub-agent coverage at <strong>73%</strong>, versus <strong>7&#8211;33%</strong> for self-critique. Separating the writer from the reviewer matters enormously.&#8308;</p><h3><strong>Component 06: Memory</strong></h3><p>Models forget. Repos don&#8217;t. Memory is anything that persists across sessions &#8212; a markdown file, a Linear board, a GitHub Project. It records what was tried, what passed, and where to resume next time. Without memory, every loop restarts from zero.</p><h2><strong>Three Examples &#8212; From One Command to Enterprise Scale</strong></h2><p>Loop Engineering isn&#8217;t just for complex systems. The same mental model looks completely different at different scales.</p><h3><strong>Example 01: The Minimal Loop &#8212; one command, runs until done</strong></h3><p>Scenario: you have a Python project and want all lint errors gone, but don&#8217;t want to fix them one by one.</p><pre><code><code>/goal "Fix all Python lint errors in src/ until flake8 output is empty"</code></code></pre><p>The loop handles itself: run flake8 &#8594; find errors &#8594; Agent fixes &#8594; run again &#8594; 0 errors &#8594; stop.</p><p>No Worktrees, no Connectors needed. One objective stop condition (<code>flake8</code> output empty) is a complete loop. <strong>This is the minimum viable form of Loop Engineering. You can use it today.</strong></p><h3><strong>Example 02: Karpathy&#8217;s AutoResearch &#8212; let AI run your ML experiments</strong></h3><p>Andrej Karpathy&#8217;s <code>autoresearch</code> project&#8312; &#8212; looking back now &#8212; is a form of Loop Engineering. The design is called <strong>&#8220;One GPU, one file, one metric&#8221;</strong>:</p><p>AutoResearch componentLoop Engineering equivalent<code>program.md</code>: you write the research direction<strong>Skills</strong> &#8212; you don&#8217;t touch Python files, only intentInfinite loop, every ~5 minutes<strong>Automations</strong> &#8212; fixed-cadence schedulingAgent modifies <code>train.py</code><strong>Implementer Sub-agent</strong>Training run + <code>val_bpb</code> evaluation<strong>Verifier</strong> (not an LLM &#8212; an actual training result)Retain/rollback code, log experiments<strong>Memory</strong> &#8212; maintains optimal state</p><blockquote><p>&#8220;The core idea is that you&#8217;re not touching any of the Python files like you normally would as a researcher.&#8221; &#8212; Karpathy, AutoResearch README &#8312;</p></blockquote><p>One detail worth highlighting: <strong>the Verifier here isn&#8217;t another LLM &#8212; it&#8217;s the real training run itself.</strong> Whether val_bpb goes down or up is determined by math, not model judgment. This is the most rigorous form of objective verification. ~12 experiments per hour. Sleep through the night, wake up to ~100 completed runs.</p><h3><strong>Example 03: Addy Osmani&#8217;s Enterprise Bug Fix Loop</strong></h3><p>Here&#8217;s Addy Osmani&#8217;s reference implementation&#179; &#8212; a daily automated bug-fix loop with all five components in play:</p><p><strong>Sense (triggers at 08:00 daily)</strong></p><ul><li><p>Triage Skill reads yesterday&#8217;s CI failures, open issues, recent commits</p></li><li><p>Writes findings to a status file or Linear board</p></li></ul><p><strong>Execute (per finding)</strong></p><ul><li><p>Opens an isolated Worktree for each bug so parallel work doesn&#8217;t interfere</p></li><li><p>Implementer Agent writes the fix, guided by project Skills</p></li><li><p>Verifier Agent runs tests and validates &#8212; failures automatically return to Implementer</p></li></ul><p><strong>Deliver</strong></p><ul><li><p>Connector opens a PR and links it to the relevant ticket</p></li><li><p>Team gets notified when CI passes</p></li></ul><p><strong>Escalate</strong></p><ul><li><p>Anything the loop can&#8217;t resolve goes to your inbox with full context attached</p></li></ul><p><strong>You design this once. You don&#8217;t manually prompt any step. You wake up to open PRs.</strong></p><p>The same idea, three different scales. Where you start depends on what problem you need to solve today. <strong>The minimum starting point: write down one stop condition a machine can verify.</strong></p><h2><strong>What This Means for You</strong></h2><p>If you&#8217;re a software engineer: your role is shifting from &#8220;writing code&#8221; to &#8220;designing systems,&#8221; and then to &#8220;designing systems that have AI write the code.&#8221;</p><p>If you&#8217;re watching how AI lands in enterprise teams: Loop Engineering is the engineering methodology behind <strong>FDE (Forward Deployed Engineer)</strong> work. Bob McGrew&#8217;s FDE three-step &#8212; Audit &#8594; Evals &#8594; Deployment &#8212; maps cleanly onto the three Loop pillars</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21MiCP%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fa477786c-ba51-49fc-9639-7aaf32917070_1376x392.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MiCP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa477786c-ba51-49fc-9639-7aaf32917070_1376x392.png 424w, https://substackcdn.com/image/fetch/$s_!MiCP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa477786c-ba51-49fc-9639-7aaf32917070_1376x392.png 848w, https://substackcdn.com/image/fetch/$s_!MiCP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa477786c-ba51-49fc-9639-7aaf32917070_1376x392.png 1272w, https://substackcdn.com/image/fetch/$s_!MiCP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa477786c-ba51-49fc-9639-7aaf32917070_1376x392.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21MiCP%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fa477786c-ba51-49fc-9639-7aaf32917070_1376x392.png" width="1376" height="392" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a477786c-ba51-49fc-9639-7aaf32917070_1376x392.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:392,&quot;width&quot;:1376,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:70404,&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://zerofuturetech.substack.com/i/202548938?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa477786c-ba51-49fc-9639-7aaf32917070_1376x392.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_!MiCP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa477786c-ba51-49fc-9639-7aaf32917070_1376x392.png 424w, https://substackcdn.com/image/fetch/$s_!MiCP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa477786c-ba51-49fc-9639-7aaf32917070_1376x392.png 848w, https://substackcdn.com/image/fetch/$s_!MiCP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa477786c-ba51-49fc-9639-7aaf32917070_1376x392.png 1272w, https://substackcdn.com/image/fetch/$s_!MiCP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa477786c-ba51-49fc-9639-7aaf32917070_1376x392.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><strong>Why Code, Math, and Physics Are the Natural Home for Loops</strong></h2><p>Here&#8217;s the part most people miss: <strong>the quality of a loop is determined entirely by the quality of its stop condition.</strong></p><p><code>/goal</code> needs a judge that can decide &#8220;done or not done&#8221; without human input. If that judgment requires a person, the loop can&#8217;t run autonomously. If that judgment can be made by a machine &#8212; a test suite, a proof checker, a simulation comparison &#8212; the loop runs while you sleep.</p><p><strong>The verifiability spectrum:</strong></p><pre><code><code>&#8592; Machine-verifiable                              Requires human judgment &#8594;

Code tests   Math proofs   Physics sims   Data pipelines   Writing   Strategy
  Very high    Very high       High           Medium          Low      Very low</code></code></pre><p>Three reasons verifiable domains are natural fits for Loop Engineering:</p><p><strong>1. The stop condition lives outside the model</strong> Whether tests pass is determined by the compiler, not by how confident the agent feels about its work. Whether a mathematical proof is valid is determined by the axiom system, not the model&#8217;s self-assessment. This is the foundational requirement for autonomous loop operation.</p><p><strong>2. The Verifier can actually verify</strong> The 73% coverage figure only holds when the Verifier sub-agent is running deterministic checks &#8212; executing code, comparing values, validating proof steps. In subjective domains, the Verifier is essentially running a more elaborate version of self-critique. The advantage over the 7&#8211;33% baseline shrinks dramatically.</p><p><strong>3. Failure signals are visible</strong> The Maker-Checker cycle requires a feedback signal. In code, that&#8217;s a test failure and error output. In physics simulations, it&#8217;s deviation from known constants. Without a visible failure signal, the loop repeats rather than corrects &#8212; a critical distinction.</p><p><strong>Before designing any loop, answer this one question:</strong></p><blockquote><p>Can a machine independently judge whether this output is correct?</p></blockquote><ul><li><p><strong>Yes</strong> &#8594; build a high-autonomy loop, trust the Verifier sub-agent</p></li><li><p><strong>No</strong> &#8594; loops still add value, but you need to be part of defining the stop condition &#8212; you are the Verifier</p></li></ul><h2><strong>Three Things to Think Through Carefully</strong></h2><p>Loop Engineering solves some problems and sharpens others.</p><p><strong>1. Verification is still your responsibility</strong> An unattended loop is an unattended source of errors. The loop doesn&#8217;t know right from wrong &#8212; it only knows whether your conditions were satisfied.</p><p><strong>2. Comprehension Debt</strong> The faster the loop ships code you didn&#8217;t write, the wider the gap between you and your codebase. Speed is not the goal.</p><p><strong>3. Cognitive Surrender</strong> The most dangerous posture: the loop runs, you stop thinking, you accept the output. This is what makes the autonomy feel comfortable and makes the errors feel surprising.</p><p>Two engineers running the same loop can produce completely opposite outcomes. One uses it to move faster on work they deeply understand. The other uses it to avoid understanding the work. <strong>The loop can&#8217;t tell the difference. You can.</strong></p><h2><strong>What to Do Next</strong></h2><p>Loop Engineering is still early. The concepts are named but the tooling is still being built out. Here&#8217;s where to start:</p><ol><li><p><strong>Pick one verifiable task</strong> &#8212; a test suite you run manually, a lint check you forget, a CI triage you do every Monday morning</p></li><li><p><strong>Write the stop condition first</strong> &#8212; what does &#8220;done&#8221; mean, in terms a machine can check?</p></li><li><p><strong>Build a Triage Skill</strong> &#8212; capture the context that any agent would need to understand the task cold</p></li><li><p><strong>Add a Verifier sub-agent</strong> &#8212; even a simple one that just runs existing tests improves coverage dramatically</p></li><li><p><strong>Wire a Connector</strong> &#8212; close the loop by having results delivered somewhere useful (PR, Slack, Linear)</p></li></ol><p>Start small. A loop that runs five tests on every commit is more valuable than an elaborate system that never ships.</p><div><hr></div><blockquote><p>&#8220;The leverage point moved. The work didn&#8217;t get easier.&#8221;</p><p>&#8212; Boris Cherny, June 2026</p></blockquote><p>The three principles that won&#8217;t go out of date:</p><ul><li><p><strong>The stop condition is the product</strong> &#8212; your loop is only as good as how you define &#8220;done&#8221;</p></li><li><p><strong>Maker-Checker separation is real quality assurance</strong> &#8212; don&#8217;t let the writer grade their own work</p></li><li><p><strong>Memory compounds</strong> &#8212; every loop run should leave a trace the next one can build from</p></li></ul><p><em>zerofuturetech &#183; June 2026&#65292;Welcome to subsribe my newsletter. </em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://zerofuturetech.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">zerofuturetech's newsletter is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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>References</strong></p><ol><li><p>Geoffrey Huntley, Ralph Loop pattern, July 2025</p></li><li><p>Claude Code v2.1.139 release notes (/goal primitive); Codex CLI v0.128.0, April&#8211;May 2026</p></li><li><p>Addy Osmani, &#8220;Loop Engineering,&#8221; June 9, 2026</p></li><li><p>RLanceMartin, &#8220;Designing Loops with Fable 5,&#8221; Verifier sub-agent experimental data</p></li><li><p>Boris Cherny, Acquired Unplugged talk, June 8, 2026</p></li><li><p>Peter Steinberger (@steipete), Twitter/X, June 7, 2026</p></li><li><p>Andrej Karpathy, AutoResearch, github.com/karpathy/autoresearch</p></li></ol>]]></content:encoded></item><item><title><![CDATA[How Palantir Actually Turns Raw Files Into Ontology]]></title><description><![CDATA[A complete technical breakdown of Palantir Foundry's five-stage data pipeline &#8212; from raw CSV, JSON, and PDF files through structured ingestion, three-path Pipeline Transforms, and Ontology auto-mappin]]></description><link>https://zerofuturetech.substack.com/p/how-palantir-actually-turns-raw-files</link><guid isPermaLink="false">https://zerofuturetech.substack.com/p/how-palantir-actually-turns-raw-files</guid><dc:creator><![CDATA[zerofuturetech]]></dc:creator><pubDate>Fri, 12 Jun 2026 12:03:57 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feec37713-9c40-481b-be44-150482aed248_2000x1500.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>ZeroFutureTech &#183; AI Learning &#183; 20 min read</em></p><div class="paywall-jump" data-component-name="PaywallToDOM"></div><p>If you are a visual learner, you are able to watch my youtube video:</p><div id="youtube2-ts0xDU19w4w" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;ts0xDU19w4w&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="iframe.php?url=https%3A%2F%2Fwww.youtube-nocookie.com%2Fembed%2Fts0xDU19w4w%3Frel%3D0%26amp%3Bautoplay%3D0%26amp%3Bshowinfo%3D0%26amp%3Benablejsapi%3D0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>You also could follow my <a href="iframe.php?url=https%3A%2F%2Fx.com%2Fjingwangtalk">X account</a></p><p>Most Palantir breakdowns start with the Ontology &#8212; &#8220;the digital twin of your organization&#8221; &#8212; then jump straight to AIP agents.</p><p>The part that gets skipped is the part that costs the most.</p><p>How does a messy ERP export, a pile of JSON booking records, and a folder of scanned PDF maintenance reports actually become queryable, AI-operable objects in Palantir&#8217;s Ontology? If you can&#8217;t answer that, you can&#8217;t evaluate Palantir&#8217;s real deployment cost or understand why every enterprise rollout requires resident Forward Deployed Engineers.</p><p>Here&#8217;s the full pipeline, mapped against a concrete airline operations scenario.</p><div><hr></div><h2><strong>The Five-Stage Chain</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21TNz7%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fecbba6f3-5cb2-4fc0-8eb2-ffd439291a2a_1440x1040.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TNz7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecbba6f3-5cb2-4fc0-8eb2-ffd439291a2a_1440x1040.png 424w, https://substackcdn.com/image/fetch/$s_!TNz7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecbba6f3-5cb2-4fc0-8eb2-ffd439291a2a_1440x1040.png 848w, https://substackcdn.com/image/fetch/$s_!TNz7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecbba6f3-5cb2-4fc0-8eb2-ffd439291a2a_1440x1040.png 1272w, https://substackcdn.com/image/fetch/$s_!TNz7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecbba6f3-5cb2-4fc0-8eb2-ffd439291a2a_1440x1040.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21TNz7%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fecbba6f3-5cb2-4fc0-8eb2-ffd439291a2a_1440x1040.png" width="1440" height="1040" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ecbba6f3-5cb2-4fc0-8eb2-ffd439291a2a_1440x1040.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1040,&quot;width&quot;:1440,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:113489,&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://zerofuturetech.substack.com/i/201158998?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecbba6f3-5cb2-4fc0-8eb2-ffd439291a2a_1440x1040.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_!TNz7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecbba6f3-5cb2-4fc0-8eb2-ffd439291a2a_1440x1040.png 424w, https://substackcdn.com/image/fetch/$s_!TNz7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecbba6f3-5cb2-4fc0-8eb2-ffd439291a2a_1440x1040.png 848w, https://substackcdn.com/image/fetch/$s_!TNz7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecbba6f3-5cb2-4fc0-8eb2-ffd439291a2a_1440x1040.png 1272w, https://substackcdn.com/image/fetch/$s_!TNz7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecbba6f3-5cb2-4fc0-8eb2-ffd439291a2a_1440x1040.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>Our scenario: an airline with three data types &#8212; structured flight operations CSV from Oracle DB, nested booking JSONs from OTA systems, and scanned PDF maintenance reports written by engineers.</p><h2><strong>Stage 1: Data Connection &#8212; Pull It In As-Is</strong></h2><p>Foundry&#8217;s first rule: ingest without transformation.</p><blockquote><p><em>&#8220;Foundry is also distinguished by a philosophy that data should be ingested &#8216;as-is&#8217; from its most raw source, with no external preprocessing.&#8221;</em> &#8212; Data Connection Overview, Palantir Docs</p></blockquote><p>The reasoning: if all transformations happen inside Foundry, every Ontology property value traces back to a specific row in a specific raw file. End-to-end data lineage &#8212; non-negotiable in regulated industries.</p><p>Foundry connects through 200+ connectors. Two sync modes: SNAPSHOT (replace the current view entirely) and APPEND (add new rows only).</p><h2><strong>Stage 2: Storage Layer &#8212; Dataset and Media Set</strong></h2><p><strong>Dataset</strong> is Foundry&#8217;s general-purpose storage unit &#8212; not a database table, but a versioned file container. It can hold structured (Parquet + schema metadata), semi-structured (JSON/XML files), and unstructured (raw binary) data. Every change is an atomic Transaction &#8212; Palantir calls this &#8220;Git for Data.&#8221;</p><p>Four transaction types: SNAPSHOT, APPEND, UPDATE, DELETE.</p><blockquote><p><em>&#8220;Dataset transactions are the basis of Foundry&#8217;s support for data versioning, sometimes referred to as &#8216;Git for Data.&#8217; A transaction is analogous to a commit in Git: an atomic change to the contents of a dataset.&#8221;</em> &#8212; Core Concepts: Datasets, Palantir Docs</p></blockquote><p><strong>Media Set</strong> is not a replacement for Dataset. It&#8217;s a specialized abstraction for media processing workflows. When you need to process large-scale images, video, audio, or PDFs, Media Set provides media item management, format conversion, and direct integration with Document Intelligence AI extraction pipelines &#8212; capabilities Dataset alone doesn&#8217;t have.</p><p>The two connect through <strong>Media References</strong>: a column type in a Dataset pointing to a file in a Media Set. Your maintenance records table can have structured fields (report ID, date, parts) plus a <code>media_reference</code> column pointing to the original scanned PDF.</p><h2><strong>Stage 3: Pipeline Transforms &#8212; Three Paths</strong></h2><p>Two tools: <strong>Pipeline Builder</strong> (drag-and-drop, no code) and <strong>Code Repositories</strong> (Python/PySpark).</p><h3><strong>Path A: Structured Data &#8594; Schema Inference + Cleaning</strong></h3><p>Foundry&#8217;s &#8220;Apply a schema&#8221; button scans a data sample and auto-infers column names and types. Then use Pipeline Builder or <code>@transform_df</code>:</p><pre><code><code>@incremental(semantic_version=1, v2_semantics=True)
@transform_df(
    Output('/airlines/clean/flights'),
    raw=Input('/airlines/raw/flight_operations')
)
def clean_flights(ctx, raw):
    return (
        raw
        .filter(F.col('status').isNotNull())
        .withColumn('departure_time',
            F.to_timestamp('departure_time', 'yyyy-MM-dd HH:mm:ss'))
        .dropDuplicates(['flight_id'])
    )</code></code></pre><h3><strong>Path B: Semi-Structured Data &#8594; JSON/XML Parsing</strong></h3><p>Nested JSON needs flattening. A booking JSON&#8217;s <code>flights</code> array is exploded with <code>F.explode()</code> &#8212; each leg becomes its own row, one JSON becomes two linked tables: <code>clean_passengers</code> + <code>clean_bookings</code>:</p><pre><code><code>@transform_df(Output('/airlines/clean/bookings'),
              raw=Input('/airlines/raw/passenger_bookings'))
def flatten_bookings(raw):
    return (
        raw
        .select('booking_id',
                F.col('passenger.name').alias('passenger_name'),
                F.col('passenger.passport').alias('passport'),
                F.explode('flights').alias('flight'))
        .select('booking_id', 'passenger_name', 'passport',
                F.col('flight.flight_id').alias('flight_id'),
                F.col('flight.seat').alias('seat'))
    )
</code></code></pre><h3><strong>Path C: Unstructured Data &#8594; AIP Document Intelligence</strong></h3><p>Scanned PDFs can&#8217;t become rows directly. The path is five steps, not two hops:</p><p>StepOperationDetail&#9312;Load into Media Setschema_type: document, primary_format: PDF&#9313;OCR + VLM extractionTraditional / Generative AI strategies&#9314;Field extractionParse tail_number, date, parts from Markdown&#9315;Validation &amp; reviewSchema checks + confidence filter + human sampling&#9316;Output DatasetIncludes media_reference pointing to original PDF</p><blockquote><p><em>&#8220;Document preprocessing essentially runs traditional OCR on the document, then passes that output in addition to the document page itself to a VLM, giving the model more context to successfully analyze the document.&#8221;</em> &#8212; AIP Document Intelligence: Core Concepts, Palantir Docs</p></blockquote><p>Document Intelligence generates the deployment code with one click:</p><pre><code><code>@transform.using(
    output=Output("ri.foundry.main.dataset.abc"),
    media_input=MediaSetInput("ri.mio.main.media-set.abc"),
    extractor=VisionLLMDocumentsExtractorInput(
        "ri.language-model-service..language-model.anthropic-claude-sonnet"
    ),
)
def extract(media_input, output, extractor):
    extracted_data = extractor.create_extraction(
        media_input, with_ocr=True, prompt=USER_PROMPT, thread_number=20
    )
    output.write_dataframe(extracted_data)
</code></code></pre><p><strong>Key limitation:</strong> Document Intelligence outputs one Markdown row per page &#8212; not structured fields. The full path is PDF &#8594; Markdown &#8594; structured fields &#8594; Ontology. <strong>Two hops, not one.</strong></p><h2><strong>Stage 4 + 5: Curated Dataset &#8594; Ontology</strong></h2><p>The mental model: dataset &#8776; object type, row &#8776; object, column &#8776; property. In practice, you explicitly configure backing datasource, property mapping, primary key, title key, link cardinality, property visibility, and potentially Multi-datasource Object Types (MDO).</p><blockquote><p><em>&#8220;The Foundry Ontology creates a complete picture of an organization&#8217;s world by mapping datasets and models to object types, properties, link types, and action types.&#8221;</em> &#8212; Ontology Core Concepts, Palantir Docs</p></blockquote><h3><strong>1. Object Types</strong></h3><p>Backing DatasetObject TypePrimary KeyTitle Example<code>clean_flights</code>Flightflight_id&#8221;CA1234&#8221;<code>clean_passengers</code>Passengerpassenger_id&#8221;Zhang Wei&#8221;<code>clean_bookings</code>Bookingbooking_idbooking_id<code>clean_aircraft</code>Aircrafttail_number&#8221;B-6075&#8221;<code>clean_maintenance</code>Maintenance Recordreport_idreport_id</p><h3><strong>2. Properties</strong></h3><p>Beyond basic types (String, Integer, Timestamp), Foundry supports advanced property types: <strong>Vector</strong> (semantic embeddings for similarity search), <strong>Geopoint/Geoshape</strong> (coordinates), <strong>Media Reference</strong> (link to original PDF or image), <strong>Time Series</strong> (sensor telemetry data).</p><h3><strong>3. Link Types</strong></h3><p>Links are built from foreign key matches. Two cardinality types with different update mechanisms:</p><p><strong>One-to-many (FK-based)</strong>: Flight &#8594; Aircraft &#8212; links resolve dynamically at query time. Funnel doesn&#8217;t need a separate changelog.</p><p><strong>Many-to-many (join table)</strong>: Requires a dedicated join table dataset. Funnel maintains an independent changelog, same batch pipeline timing as Object Types.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21wHE3%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fe8530510-e788-4108-9c42-853bf9beaa77_1440x400.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wHE3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8530510-e788-4108-9c42-853bf9beaa77_1440x400.png 424w, https://substackcdn.com/image/fetch/$s_!wHE3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8530510-e788-4108-9c42-853bf9beaa77_1440x400.png 848w, https://substackcdn.com/image/fetch/$s_!wHE3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8530510-e788-4108-9c42-853bf9beaa77_1440x400.png 1272w, https://substackcdn.com/image/fetch/$s_!wHE3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8530510-e788-4108-9c42-853bf9beaa77_1440x400.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21wHE3%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fe8530510-e788-4108-9c42-853bf9beaa77_1440x400.png" width="1440" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e8530510-e788-4108-9c42-853bf9beaa77_1440x400.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:1440,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:30554,&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://zerofuturetech.substack.com/i/201158998?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8530510-e788-4108-9c42-853bf9beaa77_1440x400.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_!wHE3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8530510-e788-4108-9c42-853bf9beaa77_1440x400.png 424w, https://substackcdn.com/image/fetch/$s_!wHE3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8530510-e788-4108-9c42-853bf9beaa77_1440x400.png 848w, https://substackcdn.com/image/fetch/$s_!wHE3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8530510-e788-4108-9c42-853bf9beaa77_1440x400.png 1272w, https://substackcdn.com/image/fetch/$s_!wHE3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8530510-e788-4108-9c42-853bf9beaa77_1440x400.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>4. Action Types</strong></h3><p>Action Types make the Ontology writable. Modifications write to a separate <strong>Writeback Dataset</strong> &#8212; never overwriting the backing dataset.</p><h2><strong>Logic and Actions: The Ontology&#8217;s Brain and Hands</strong></h2><p>After mapping is complete, two more layers are needed: <strong>Functions</strong> (logic/computation) and the full <strong>Action Types</strong> framework.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%213gae%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F6053dea8-c701-4e12-b6d3-0b9d80031170_1360x1160.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3gae!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6053dea8-c701-4e12-b6d3-0b9d80031170_1360x1160.png 424w, https://substackcdn.com/image/fetch/$s_!3gae!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6053dea8-c701-4e12-b6d3-0b9d80031170_1360x1160.png 848w, https://substackcdn.com/image/fetch/$s_!3gae!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6053dea8-c701-4e12-b6d3-0b9d80031170_1360x1160.png 1272w, https://substackcdn.com/image/fetch/$s_!3gae!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6053dea8-c701-4e12-b6d3-0b9d80031170_1360x1160.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%213gae%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F6053dea8-c701-4e12-b6d3-0b9d80031170_1360x1160.png" width="1360" height="1160" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6053dea8-c701-4e12-b6d3-0b9d80031170_1360x1160.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1160,&quot;width&quot;:1360,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:144712,&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://zerofuturetech.substack.com/i/201158998?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6053dea8-c701-4e12-b6d3-0b9d80031170_1360x1160.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_!3gae!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6053dea8-c701-4e12-b6d3-0b9d80031170_1360x1160.png 424w, https://substackcdn.com/image/fetch/$s_!3gae!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6053dea8-c701-4e12-b6d3-0b9d80031170_1360x1160.png 848w, https://substackcdn.com/image/fetch/$s_!3gae!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6053dea8-c701-4e12-b6d3-0b9d80031170_1360x1160.png 1272w, https://substackcdn.com/image/fetch/$s_!3gae!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6053dea8-c701-4e12-b6d3-0b9d80031170_1360x1160.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p><strong>Functions (Logic Layer)</strong> enable four capabilities: derived properties (<code>delay_minutes = actual - scheduled</code>), cross-object aggregations (average delay per airline), batch modification logic (cancelling a flight auto-releases seats and notifies all passengers), external system queries (enriching flights with live weather data).</p><p><strong>Action Types (Write Operations Layer)</strong> are defined by four components:</p><p>ComponentPurpose&#8221;Rebook Passenger&#8221; example<strong>Parameters</strong>Typed input fieldspassenger, new_flight, reason<strong>Rules</strong>Ontology edits to executeModify Booking.flight_id; Delete old Link; Create new Link<strong>Submission Criteria</strong>Pre-conditions that must passnew_flight not cancelled; seats available; user has agent role<strong>Side Effects</strong>Post-execution triggersEmail passenger; Webhook to crew management API</p><p>Two implementation paths: simple rule-based configuration (UI only) and function-backed actions (TypeScript/Python for complex logic).</p><blockquote><p><em>&#8220;Rules define the logic of the action type that transform the parameters into Ontology edits or other effects.&#8221;</em> &#8212; Action Types: Rules, Palantir Docs</p></blockquote><div><hr></div><h2><strong>Keeping the Ontology Fresh: Incremental Updates</strong></h2><h3><strong>APPEND vs SNAPSHOT</strong></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21pOud%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F73c5efae-9221-4b96-8cd9-13ff8a002cdf_1440x480.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pOud!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73c5efae-9221-4b96-8cd9-13ff8a002cdf_1440x480.png 424w, https://substackcdn.com/image/fetch/$s_!pOud!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73c5efae-9221-4b96-8cd9-13ff8a002cdf_1440x480.png 848w, https://substackcdn.com/image/fetch/$s_!pOud!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73c5efae-9221-4b96-8cd9-13ff8a002cdf_1440x480.png 1272w, https://substackcdn.com/image/fetch/$s_!pOud!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73c5efae-9221-4b96-8cd9-13ff8a002cdf_1440x480.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21pOud%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F73c5efae-9221-4b96-8cd9-13ff8a002cdf_1440x480.png" width="1440" height="480" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/73c5efae-9221-4b96-8cd9-13ff8a002cdf_1440x480.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:480,&quot;width&quot;:1440,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:76912,&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://zerofuturetech.substack.com/i/201158998?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73c5efae-9221-4b96-8cd9-13ff8a002cdf_1440x480.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_!pOud!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73c5efae-9221-4b96-8cd9-13ff8a002cdf_1440x480.png 424w, https://substackcdn.com/image/fetch/$s_!pOud!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73c5efae-9221-4b96-8cd9-13ff8a002cdf_1440x480.png 848w, https://substackcdn.com/image/fetch/$s_!pOud!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73c5efae-9221-4b96-8cd9-13ff8a002cdf_1440x480.png 1272w, https://substackcdn.com/image/fetch/$s_!pOud!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73c5efae-9221-4b96-8cd9-13ff8a002cdf_1440x480.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>Three-Layer Incremental Chain</strong></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21U6zE%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F855124d5-2ceb-439d-a93b-565a3f09d57f_1440x760.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!U6zE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F855124d5-2ceb-439d-a93b-565a3f09d57f_1440x760.png 424w, https://substackcdn.com/image/fetch/$s_!U6zE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F855124d5-2ceb-439d-a93b-565a3f09d57f_1440x760.png 848w, https://substackcdn.com/image/fetch/$s_!U6zE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F855124d5-2ceb-439d-a93b-565a3f09d57f_1440x760.png 1272w, https://substackcdn.com/image/fetch/$s_!U6zE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F855124d5-2ceb-439d-a93b-565a3f09d57f_1440x760.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21U6zE%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F855124d5-2ceb-439d-a93b-565a3f09d57f_1440x760.png" width="1440" height="760" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/855124d5-2ceb-439d-a93b-565a3f09d57f_1440x760.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:760,&quot;width&quot;:1440,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:87734,&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://zerofuturetech.substack.com/i/201158998?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F855124d5-2ceb-439d-a93b-565a3f09d57f_1440x760.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_!U6zE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F855124d5-2ceb-439d-a93b-565a3f09d57f_1440x760.png 424w, https://substackcdn.com/image/fetch/$s_!U6zE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F855124d5-2ceb-439d-a93b-565a3f09d57f_1440x760.png 848w, https://substackcdn.com/image/fetch/$s_!U6zE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F855124d5-2ceb-439d-a93b-565a3f09d57f_1440x760.png 1272w, https://substackcdn.com/image/fetch/$s_!U6zE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F855124d5-2ceb-439d-a93b-565a3f09d57f_1440x760.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><strong>Incremental is a Contract, Not a Switch</strong></h3><p><strong>Two common failure modes:</strong></p><p><strong>Mutable source data + APPEND = duplicates.</strong> If source records can be modified (flight status changes from Scheduled to Delayed), APPEND sync creates both the old and new version in the dataset. Downstream transforms must explicitly deduplicate or take the latest version &#8212; otherwise stale data enters the Ontology.</p><p><strong>File-based UPDATE transactions = broken incremental chain.</strong> UPDATE transactions modify existing files, forcing all downstream pipelines to fall back to full SNAPSHOT recomputation.</p><h3><strong>Update Timing by Ontology Element</strong></h3><p>Ontology elementWhat triggers updateWhen it&#8217;s visibleObject Type propertiesbacking dataset new transactionAfter next Funnel batch pipeline runOne-to-many Link (FK-based)FK property value changeAuto-resolves with Object update, no separate syncMany-to-many Link (join table)join table dataset new transactionAfter next Funnel batch pipeline run<strong>Action execution result</strong>User triggers Action<strong>Immediately</strong> in OSv2 live index; async persistence</p><h2><strong>The Wide Table Problem</strong></h2><p><strong>Hard constraint:</strong> one Object Type can only be backed by one dataset. A 200-column ERP export can&#8217;t map directly. Palantir calls this the &#8220;Kitchen Sink anti-pattern.&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21zQLQ%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fa4e82ba6-955c-4dbb-aeea-430ef6e6ec45_1440x520.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zQLQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4e82ba6-955c-4dbb-aeea-430ef6e6ec45_1440x520.png 424w, https://substackcdn.com/image/fetch/$s_!zQLQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4e82ba6-955c-4dbb-aeea-430ef6e6ec45_1440x520.png 848w, https://substackcdn.com/image/fetch/$s_!zQLQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4e82ba6-955c-4dbb-aeea-430ef6e6ec45_1440x520.png 1272w, https://substackcdn.com/image/fetch/$s_!zQLQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4e82ba6-955c-4dbb-aeea-430ef6e6ec45_1440x520.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21zQLQ%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fa4e82ba6-955c-4dbb-aeea-430ef6e6ec45_1440x520.png" width="1440" height="520" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a4e82ba6-955c-4dbb-aeea-430ef6e6ec45_1440x520.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:520,&quot;width&quot;:1440,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:93274,&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://zerofuturetech.substack.com/i/201158998?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4e82ba6-955c-4dbb-aeea-430ef6e6ec45_1440x520.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_!zQLQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4e82ba6-955c-4dbb-aeea-430ef6e6ec45_1440x520.png 424w, https://substackcdn.com/image/fetch/$s_!zQLQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4e82ba6-955c-4dbb-aeea-430ef6e6ec45_1440x520.png 848w, https://substackcdn.com/image/fetch/$s_!zQLQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4e82ba6-955c-4dbb-aeea-430ef6e6ec45_1440x520.png 1272w, https://substackcdn.com/image/fetch/$s_!zQLQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4e82ba6-955c-4dbb-aeea-430ef6e6ec45_1440x520.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 only path: split the wide table in the pipeline layer first, then map each focused dataset to its own Object Type, connected via Link Types. Pipeline Builder&#8217;s AI feature can write the splitting code from a prompt. But <strong>deciding how to split &#8212; which columns belong to which entity &#8212; is still entirely human judgment.</strong> That&#8217;s where Palantir&#8217;s Forward Deployed Engineers spend the most valuable time.</p><h2><strong>Why This Creates a Product Opportunity</strong></h2><p>Palantir&#8217;s Marketplace supports packaging Object Types into installable products. Technically you could ship industry Ontology templates. Palantir won&#8217;t &#8212; FDE consulting is part of the model.</p><p>The moat isn&#8217;t in defining what entities exist (Shipment, SKU, Warehouse for supply chain; Patient, Diagnosis for healthcare &#8212; industry consensus is high on these). <strong>The moat is knowing which columns in a SAP MM export map to which entity.</strong> That source-system-aware mapping knowledge is what FDEs reconstruct from scratch at every client.</p><p>LayerContentReuse rate<strong>Layer 1</strong>Standard entity definitions90%+<strong>Layer 2</strong>Source system mapping rules (SAP / Oracle / ERP)70%+<strong>Layer 3</strong>Customer-specific extensionsCustom</p><p>Vertical players have more incentive to productize this than Palantir does.</p><h2><strong>What Actually Makes Ontology Different</strong></h2><p>From a data modeling perspective, the Ontology looks like a relational schema with business labels. The three genuine differences:</p><p><strong>Full lineage.</strong> Trace any property value back to a raw file transaction. Built-in from day one. Non-negotiable in regulated industries.</p><p><strong>Writable without polluting source data.</strong> Most data catalogs are read-only. Ontology with Action Types and Writeback Dataset lets business users make decisions directly in the system &#8212; source data stays clean.</p><p><strong>Application-native.</strong> Workshop, Slate, OSDK, and AIP consume Ontology objects directly. No extra API layer. When a user clicks &#8220;Resolve Alert,&#8221; they&#8217;re executing an Action Type &#8212; property update, link rebuild, writeback write &#8212; all in one operation.</p><p>Together, these make it an operational layer, not just a documentation layer.</p><p><em>All technical details sourced from Palantir&#8217;s official documentation. Some of them are reasoning because of no more details shown in Palantir documents. </em></p><p><em>If this was useful, share it with someone evaluating enterprise AI platforms.</em></p><p><em>Follow my newsletter!</em></p>]]></content:encoded></item><item><title><![CDATA[FDE: The Hottest Engineering Job You’ve Probably Never Heard Of]]></title><description><![CDATA[April 2025: 643 Forward Deployed Engineer openings in the US. April 2026: 5,330.]]></description><link>https://zerofuturetech.substack.com/p/fde-the-hottest-engineering-job-youve</link><guid isPermaLink="false">https://zerofuturetech.substack.com/p/fde-the-hottest-engineering-job-youve</guid><dc:creator><![CDATA[zerofuturetech]]></dc:creator><pubDate>Mon, 01 Jun 2026 16:01:04 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aa54203-f204-49f1-baec-71c4db326eb5_2000x1500.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div id="youtube2-DGPuuKSrTCA" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;DGPuuKSrTCA&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="iframe.php?url=https%3A%2F%2Fwww.youtube-nocookie.com%2Fembed%2FDGPuuKSrTCA%3Frel%3D0%26amp%3Bautoplay%3D0%26amp%3Bshowinfo%3D0%26amp%3Benablejsapi%3D0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>That&#8217;s a 729% increase. In one year.</p><p>OpenAI created an entirely separate &#8220;Deployment Company&#8221; to scale this function. Anthropic is paying $200K&#8211;$300K to start and hiring across 9 cities globally. Google Cloud&#8217;s CEO publicly announced a mass FDE hiring push &#8212; and compressed their interview process to just 2 days to move faster.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://zerofuturetech.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">zerofuturetech's newsletter is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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>This isn&#8217;t a typical job market spike. It&#8217;s a signal: the AI industry has collectively realized that the bottleneck isn&#8217;t model capability. It&#8217;s deployment. And FDEs are the answer.</p><h2><strong>What Is a Forward Deployed Engineer?</strong></h2><p>Bob McGrew &#8212; Palantir&#8217;s early Head of Product Engineering, later OpenAI&#8217;s CRO, and one of the architects of the FDE model &#8212; defines it cleanly:</p><blockquote><p>&#8220;A forward deployed engineer is someone typically technical who sits at the customer site and fills the gap between what the product does and what the customer needs.&#8221;</p></blockquote><p>Three non-negotiable elements:</p><p><strong>On-site, not remote.</strong> Not a quarterly visit. Not async communication. Actually embedded in the customer&#8217;s daily operations.</p><p><strong>Filling the gap between product and reality.</strong> Not selling a standard product. Solving everything that falls between &#8220;what our AI can do&#8221; and &#8220;what this specific customer actually needs.&#8221;</p><p><strong>Delivering working software.</strong> Not slide decks. Not recommendations reports. Code that runs in production.</p><p>It&#8217;s not a traditional software engineer, not a pre-sales engineer, not a consultant. It&#8217;s all three &#8212; a new archetype that the AI era is now demanding at scale.</p><h2><strong>This Role Isn&#8217;t New. So Why Is It Exploding Now?</strong></h2><p>The FDE model has existed at Palantir since 2009.</p><p>Palantir was building intelligence analysis software for the CIA, NSA, and related agencies. The fatal problem: every intelligence client&#8217;s workflows were slightly different. Counter-terrorism analysts and counter-proliferation analysts did entirely different things. A standardized product couldn&#8217;t work.</p><p>CTO Shyam Shankar&#8217;s solution: don&#8217;t build a universal product. Build a deeply customizable platform, and deploy your best engineers directly to customer sites &#8212; to understand requirements on-site, write code on-site, and deliver on-site.</p><p>Bob McGrew captured this strategy with a memorable metaphor: <strong>&#8220;gravel roads vs. paved highways.&#8221;</strong></p><p>FDEs build gravel roads at customer sites &#8212; rough but functional, solving immediate problems. Product teams back at HQ build paved highways &#8212; they observe patterns across multiple gravel roads and abstract them into capabilities that work for many customers.</p><p>The key insight: gravel roads aren&#8217;t throwaway work. They&#8217;re product discovery in action. Palantir&#8217;s most valuable asset &#8212; the Ontology (&#8221;objects + properties + links&#8221; universal data model) &#8212; was discovered by FDEs noticing a problem at a customer site, bringing it back to HQ, and prompting the product team to build something more general.</p><p><strong>So why is it everywhere now?</strong> Four forces are converging simultaneously:</p><p><strong>1. Intelligence is becoming a commodity.</strong> The capability gap between GPT-4, Claude, and Gemini is narrowing. API prices keep falling. &#8220;Who has the better model&#8221; is becoming less of a moat every quarter. What&#8217;s actually scarce is knowing where and how to deploy that intelligence. FDEs earn 30&#8211;50% more than comparable engineers at the same company &#8212; the market is saying deployment expertise is more valuable than model expertise.</p><p><strong>2. AI agents are an undefined category.</strong> Traditional SaaS has a known product template: identify that Siebel CRM is bad, build Salesforce. The product shape is understood; execution is the variable. AI agents have no template. Is an agent a chatbot? An autonomous process? A plugin embedded in existing systems? A new kind of OS? Nobody knows yet &#8212; and the only way to find out is to sit inside actual customer workflows and discover it there.</p><p><strong>3. Capabilities are racing ahead of adoption.</strong> McGrew frames it this way: you&#8217;re riding in a Waymo and you&#8217;re not thinking &#8220;oh my god, there&#8217;s no driver.&#8221; You&#8217;re thinking &#8220;ugh, traffic.&#8221; The more powerful AI gets, the more mundane it feels. The question was never &#8220;is the model capable enough?&#8221; It&#8217;s always been &#8220;can it actually integrate into how we work?&#8221; That last mile of deployment is where FDEs operate.</p><p><strong>4. Token economics changed the cost structure.</strong> Traditional SaaS has near-zero marginal cost: serving your 10,000th customer costs essentially the same as serving your first. AI agents don&#8217;t work that way &#8212; every run burns tokens, every LLM call has inference cost. FDEs have to make real-time optimization decisions: use Opus or Haiku for this task? Can 5 lines of Python replace this LLM call entirely? Can we cache this prompt? These decisions require being inside the customer&#8217;s actual environment to make correctly.</p><h2><strong>What FDEs Actually Do All Week</strong></h2><p>From Perspective AI&#8217;s survey of 1,500 active FDEs:</p><ul><li><p><strong>47%</strong> at customer sites (interviews, deployments, design reviews)</p></li><li><p><strong>31%</strong> writing or reviewing code</p></li><li><p><strong>22%</strong> internal coordination and research synthesis</p></li></ul><p>The work follows three sequential phases:</p><p><strong>Audit.</strong> Spend two weeks embedded with a new client &#8212; from revenue operations to procurement to finance. The core output is a set of judgment calls: what goes to agents, what gets hardcoded, what stays human? The framework: variable inputs with rule-based workflows (email, PDFs, images) &#8594; use an agent. Predictable rules and inputs &#8594; write code, it&#8217;s faster and cheaper. Pattern recognition and domain expertise required &#8594; keep human. End with a working demo.</p><p><strong>Evals.</strong> Build an evaluation framework that proves the AI is actually working. Not just &#8220;is the final answer correct?&#8221; &#8212; decompose the human problem-solving process into steps and score each one. Build a golden dataset of 20+ real queries with hand-labeled perfect answers. This is how you get executive buy-in. Every company says they want AI. Most executives are quietly skeptical it will actually work for their specific situation. A rigorous eval framework is what earns their trust.</p><p><strong>Deployment.</strong> Don&#8217;t attempt a big migration. Build an API layer on top of existing systems rather than replacing databases. Build a secure sandbox directly inside the customer&#8217;s infrastructure. Start with the smallest autonomous unit possible &#8212; read-only data access first, then ticket creation, then code commits. You earn more autonomy by demonstrating correctness at each level.</p><h2><strong>Who This Is For (and Who It Isn&#8217;t)</strong></h2><p>In Palantir&#8217;s practice, FDE work is split between two profiles:</p><p><strong>Delta (deployment engineers):</strong> Ships prototypes fast. Doesn&#8217;t care if the first version gets thrown away entirely. Closer to a founding engineer than a staff engineer. McGrew is direct about who <em>doesn&#8217;t</em> fit: &#8220;The archetypal person who&#8217;s not suited for this is someone who loves ensuring their abstractions are perfect and their code is maintainable for 12 years &#8212; because that&#8217;s not the job.&#8221; If the phrase &#8220;we&#8217;ll probably rewrite this from scratch&#8221; causes you anxiety, Delta probably isn&#8217;t for you.</p><p><strong>Echo (embedded analysts):</strong> Deep domain background &#8212; ex-military, healthcare, logistics, finance. Must be a &#8220;rebel or heretic&#8221; in their field: someone who sees the severe inadequacy of current practices and genuinely believes AI can deliver 3x&#8211;10x improvement. If you walk into a client site and think &#8220;these workflows seem pretty reasonable,&#8221; Echo isn&#8217;t for you.</p><p>Three backgrounds that transition naturally:</p><ol><li><p><strong>Consultants / PMs</strong> &#8212; already know how to translate data into ROI. The gap is engineering depth. Fill it by building agents, RAG pipelines, eval frameworks, and MCP integrations. Let the portfolio speak.</p></li><li><p><strong>Software engineers</strong> &#8212; strong technical foundation. The gap is business communication. You need to translate &#8220;here&#8217;s what the AI can and can&#8217;t do&#8221; into terms that land with a non-technical VP making a $2M decision.</p></li><li><p><strong>Founders / early-stage startup veterans</strong> &#8212; strongest natural fit. FDE requires everything a founder does: finding direction in ambiguity, rapid prototyping, commercial judgment. This background transfers directly.</p></li></ol><h2><strong>30-Day Ramp Plan</strong></h2><p>Here&#8217;s a concrete training plan you might start immediately:</p><p><strong>Week 1: The Agent Loop</strong></p><p>Read Anthropic&#8217;s <em>Building Effective Agents</em>. Build your first prompt &#8594; model &#8594; response &#8594; next step loop. Add tool calls (API integrations + web search). Build guardrails: input validation, maximum step limits, output filtering. Build an audit log that captures every prompt, tool call, and response.</p><p><strong>Week 2: Structured Output + Production Gaps</strong></p><p>Master structured outputs (JSON mode &#8212; this is foundational for real deployments). Study the demo-to-production failure modes. Most agent projects die here. Build checkpointing so your agent can recover state after a crash.</p><p><strong>Week 3: Reliability + Cost Optimization</strong></p><p>Add retry logic and exponential backoff. Optimize costs: route simple tasks to cheaper models, cache frequent prompts, track cost-per-call. Build your golden dataset &#8212; 20 real-world queries with hand-labeled perfect answers. Understand multi-agent orchestration patterns.</p><p><strong>Week 4: Business Communication + Portfolio</strong></p><p>Review everything you built. Practice explaining it out loud. Every technical decision needs a business rationale &#8212; before you&#8217;re done, you should be able to articulate to a non-technical executive exactly what each architectural choice costs and what business problem it solves.</p><blockquote><p>&#8220;Your portfolio and your ability to articulate it are the deciding factors. Build agents, RAG pipelines, eval frameworks, MCP integrations &#8212; but most importantly, be able to confidently explain the business value behind each decision to a non-technical decision-maker.&#8221;</p></blockquote><h2><strong>The Counterintuitive Warning You Need to Hear</strong></h2><p>The most memorable part of Bob McGrew&#8217;s FDE Playbook interview wasn&#8217;t about why FDE is great. It was this:</p><blockquote><p>&#8220;If you&#8217;re in a business where this is working for you, that&#8217;s great. <strong>Don&#8217;t do the FDE strategy. You have been given an amazing gift.</strong> If you have the opportunity to just scale, treat all the customers the same, go ahead and do that.&#8221;</p><p>&#8220;My first, second, and third pieces of advice to people who are thinking about trying an FDE strategy is: <strong>don&#8217;t do this at home</strong>. If you can avoid it, it&#8217;s probably bad for you. Probably you&#8217;re going to end up doing services.&#8221;</p></blockquote><p>If you can build a standardized product that works for all customers &#8212; build SaaS. Scale it. That&#8217;s the better business model. Don&#8217;t break what works.</p><p>FDE mode is only the right answer when three conditions are simultaneously true: <strong>no incumbent product to replace + highly heterogeneous customer needs + contract values large enough to support on-site teams</strong>. Palantir hit all three in 2009. The current AI agent market hits all three today. That&#8217;s not coincidence &#8212; it&#8217;s market structure forcing the strategy.</p><p>The biggest trap: FDE drifts into consulting. Every new client starts from scratch, no experience gets abstracted back into the product. At that point you&#8217;re doing consulting with a better job title. The real FDE model builds a new stretch of highway with every client deployment.</p><h2><strong>The Takeaway</strong></h2><p>Demand for FDEs is growing at 800% per year. Supply is growing at 50%. That gap is real and widening.</p><p>The role exists because someone has to do the last mile of AI deployment. It won&#8217;t be automated away &#8212; it <em>is</em> the automation work. The people who can bridge AI capability and actual business utility are genuinely scarce, and the market is pricing that scarcity correctly.</p><blockquote><p>&#8220;There&#8217;s just a huge amount of opportunity out there &#8212; looking at what the capabilities are, but asking what does it take to make them really genuinely useful to people.&#8221; &#8212; Bob McGrew</p></blockquote><p>If you want to go deeper: start with Anthropic&#8217;s <em>Building Effective Agents</em> and Bob McGrew&#8217;s FDE Playbook podcast interview. Both are foundational for understanding what this work actually involves.</p><div><hr></div><p><em>Data sources: Indeed &#183; LinkedIn &#183; Adecco Staffing &#183; Perspective AI State of Forward Deployed Engineering 2026 (1,500 FDEs surveyed across 154 companies)</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://zerofuturetech.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">zerofuturetech's newsletter is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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[Building Ontology with LLMs: Five Methods Compared]]></title><description><![CDATA[Covering 9 papers from 2025&#8211;2026 &#183; A complete decision guide from exploration to production]]></description><link>https://zerofuturetech.substack.com/p/building-ontology-with-llms-five</link><guid isPermaLink="false">https://zerofuturetech.substack.com/p/building-ontology-with-llms-five</guid><dc:creator><![CDATA[zerofuturetech]]></dc:creator><pubDate>Fri, 22 May 2026 12:03:20 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F850862be-a107-4763-81b0-179b7bca0482_2000x1500.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div id="youtube2-NSrMx-syfaI" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;NSrMx-syfaI&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="iframe.php?url=https%3A%2F%2Fwww.youtube-nocookie.com%2Fembed%2FNSrMx-syfaI%3Frel%3D0%26amp%3Bautoplay%3D0%26amp%3Bshowinfo%3D0%26amp%3Benablejsapi%3D0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Here&#8217;s a problem most AI engineers hit eventually.</p><p>You build a RAG system, stuff your documents in, and start answering questions. Works fine until someone asks the same thing three times and gets three different answers. Today the LLM says Supplier A&#8217;s rating is 85. Tomorrow it says 92. The day after, 78. The LLM isn&#8217;t lying &#8212; it just doesn&#8217;t know the <em>relationship</em> between &#8220;supplier,&#8221; &#8220;rating,&#8221; and &#8220;date.&#8221; It guesses every time.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://zerofuturetech.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">zerofuturetech's newsletter is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>The fix is an <strong>ontology</strong> &#8212; a structured knowledge map that doesn&#8217;t just store data, but defines relationships and rules between entities. With one, your AI goes from guessing to querying. And it can chain-reason: material shortage &#8594; affected production lines &#8594; affected customer orders.</p><h2><strong>Four Contradictions in Traditional Ontology Building</strong></h2><p>Before LLMs, building an ontology meant: knowledge engineers and domain experts sitting together for months, sketching on whiteboards, hand-writing definitions in OWL (Web Ontology Language, the W3C standard) and SHACL (Shapes Constraint Language, for data validation). This approach has four fundamental contradictions:</p><p><strong>The speed contradiction</strong>: Manual modeling is too slow for business change. By the time the ontology is finished, the business has already shifted.</p><p><strong>The talent contradiction</strong>: People who understand both OWL/SHACL <em>and</em> the specific business domain are extremely rare. The two skill sets almost never overlap in one person.</p><p><strong>The maintenance contradiction</strong>: Once built, nobody maintains it. The ontology gradually becomes a &#8220;dead model,&#8221; unable to evolve with the business.</p><p><strong>The scale contradiction</strong>: Manual approaches can&#8217;t handle large document volumes. The method collapses as document scale increases.</p><p>LLMs happen to have three capabilities that address exactly these needs: extracting structured information from unstructured text, understanding domain semantics, and generating standard formats like JSON and OWL. But using LLMs naively for ontology construction runs into four hard problems:</p><ul><li><p><strong>Problem 1</strong>: You don&#8217;t know how many concept types exist &#8212; 10 or 1,000?</p></li><li><p><strong>Problem 2</strong>: LLMs hallucinate, inventing concepts that aren&#8217;t in the source text</p></li><li><p><strong>Problem 3</strong>: Granularity is hard to calibrate &#8212; &#8220;has a relationship&#8221; is too vague, &#8220;is to the left of&#8221; is too specific</p></li><li><p><strong>Problem 4</strong>: No ground truth to validate against, so you don&#8217;t know if the result is good</p></li></ul><p>Between 2025 and 2026, five distinct methods emerged from the research literature to address these four problems.</p><h2><strong>Method A: Pipeline Decomposition</strong></h2><ul><li><p><strong>Hallucination risk: Low </strong></p></li><li><p><strong>Engineering complexity: High </strong></p></li><li><p><strong>Key papers: Salovsky 2026 &#183; IRT SystemX 2025 &#183; Wikontic 2025</strong></p></li></ul><p>Break the big task into controlled steps, using the best tool for each. Standard pipeline:</p><pre><code><code>Document input &#8594; &#9312; Entity extraction (NER) &#8594; &#9313; Relation extraction &#8594; &#9314; Deduplication
               &#8594; &#9315; Dual validation &#8594; &#9316; Write to graph</code></code></pre><p>Each step spelled out: </p><ul><li><p>identify named entities from documents; </p></li><li><p>determine relationships between entities; </p></li><li><p>merge &#8220;Supplier A&#8221; and &#8220;SUPPLIER-A&#8221; into the same entity; </p></li><li><p>structural compliance + logical consistency dual check; </p></li><li><p>write to graph database.</p></li></ul><h3><strong>The Validation Loop Is the Core Innovation</strong></h3><p>The critical feature of this school is <strong>dual validation</strong>. Every new fact must pass two layers of checks:</p><ul><li><p><strong>SHACL (Shapes Constraint Language, W3C standard validation language) structural validation</strong>: Is the data schema-compliant? For example, &#8220;an order must have a customer ID that is an integer&#8221;</p></li><li><p><strong>OWL Reasoner logical validation</strong>: Are there contradictions? For example, a concept cannot simultaneously be a parent class and a child class of another concept</p></li></ul><p>Pass validation &#8594; write to the trusted graph. Fail &#8594; log it, don&#8217;t contaminate the knowledge base.</p><p>Salovsky (2026) adds MCP protocol orchestration to coordinate LLM, RDF/OWL graph, vector RAG, and external APIs. The LLM serves only as an &#8220;interpretation, generation, and orchestration layer&#8221; &#8212; the actual world model lives in the RDF/OWL graph. Validated with Tower of Hanoi tests: 5-disc success rate improved from 33.3% to 45.5%.</p><h3><strong>Industrial Case: IRT SystemX &#215; EDF (2025)</strong></h3><p>Partners included IRT SystemX, EDF (France&#8217;s national electricity utility), Airbus, and RTE (France&#8217;s electricity grid operator). Semi-automated ontology construction from French technical documentation. Their 7-layer pipeline:</p><ol><li><p>Text preprocessing (French POS tagging, domain-specific tokenization)</p></li><li><p>NER (RTE uses regex; EDF uses fine-tuned CamemBERT)</p></li><li><p>Relation extraction (RTE uses RelationPrompt; EDF uses fine-tuned LUKE)</p></li><li><p>Metadata enrichment (DBpedia/Wikidata SPARQL extension)</p></li><li><p>Version lifecycle management (Populated &#8594; Enriched &#8594; Evaluated &#8594; In-use &#8594; Archived)</p></li><li><p>Evaluation (NER-evaluate + OOPS! + FAIR Explore)</p></li><li><p>KG generation and visualization (Flask + VueJS + SPARQL)</p></li></ol><p>FAIR data quality score improved from 22.5% (V1.1) to 36.11% (V1.3). Note: this project actually uses traditional deep learning models &#8212; CamemBERT, LUKE &#8212; with plans to integrate Mistral/Gemma in future iterations.</p><h3><strong>Lightweight Case: Wikontic (2025)</strong></h3><p>Uses Wikidata as a skeleton constraint for LLM output. Key numbers:</p><ul><li><p>Only <strong>&lt;1,000 output tokens</strong> &#8212; one-twentieth the cost of GraphRAG</p></li><li><p>MuSiQue benchmark: <strong>96% of triples contain correct answer entities</strong></p></li><li><p>HotpotQA: <strong>76.0 F1</strong> (using triples only, no text context needed)</p></li><li><p>MINE-1 benchmark: <strong>86% SOTA</strong> information retention rate</p></li></ul><p><strong>Strengths</strong>: Every step is controllable and swappable; lowest hallucination risk; supports versioning and continuous updates.</p><p><strong>Weaknesses</strong>: Errors in earlier steps propagate forward; high engineering complexity and setup cost; multi-step LLM calls consume more tokens overall.</p><p><strong>Best for</strong>: Production systems where quality is non-negotiable.</p><h2><strong>Method B: Clustering-Driven</strong></h2><ul><li><p><strong>Hallucination risk: Low </strong></p></li><li><p><strong>Engineering complexity: Medium </strong></p></li><li><p><strong>Key paper: LLM4Onto 2025</strong></p></li></ul><p>Don&#8217;t define categories upfront &#8212; let the data decide. Core pipeline:</p><pre><code><code>Documents &#8594; Extract nouns (SpaCy) &#8594; Vectorize (BERT) &#8594; AP clustering (auto-group)
          &#8594; LLM names each cluster &#8594; Multi-round merging &#8594; Ontology</code></code></pre><h3><strong>Why AP Clustering Instead of K-means</strong></h3><p>K-means requires you to specify the number of clusters in advance. When you&#8217;re building an ontology for an unfamiliar domain, you don&#8217;t know that number. Affinity Propagation (AP) determines its own cluster count based on data similarity. If AP over-segments (splitting &#8220;apple,&#8221; &#8220;banana,&#8221; and &#8220;pear&#8221; into three separate clusters), the LLM merges similar clusters back through multi-round dialogue into &#8220;fruit.&#8221;</p><h3><strong>The HT-R-O Three-Stage Relation Extraction Pipeline</strong></h3><p>Relation extraction is the hardest part of ontology construction. LLM4Onto compared three paradigms:</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_!C7Ba!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75c894c6-8790-4a6c-8c30-2da15c7dc7fc_2098x288.png 424w, https://substackcdn.com/image/fetch/$s_!C7Ba!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75c894c6-8790-4a6c-8c30-2da15c7dc7fc_2098x288.png 848w, https://substackcdn.com/image/fetch/$s_!C7Ba!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75c894c6-8790-4a6c-8c30-2da15c7dc7fc_2098x288.png 1272w, https://substackcdn.com/image/fetch/$s_!C7Ba!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75c894c6-8790-4a6c-8c30-2da15c7dc7fc_2098x288.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21C7Ba%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F75c894c6-8790-4a6c-8c30-2da15c7dc7fc_2098x288.png" width="1456" height="200" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/75c894c6-8790-4a6c-8c30-2da15c7dc7fc_2098x288.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:200,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:85280,&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://zerofuturetech.substack.com/i/198663518?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75c894c6-8790-4a6c-8c30-2da15c7dc7fc_2098x288.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_!C7Ba!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75c894c6-8790-4a6c-8c30-2da15c7dc7fc_2098x288.png 424w, https://substackcdn.com/image/fetch/$s_!C7Ba!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75c894c6-8790-4a6c-8c30-2da15c7dc7fc_2098x288.png 848w, https://substackcdn.com/image/fetch/$s_!C7Ba!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75c894c6-8790-4a6c-8c30-2da15c7dc7fc_2098x288.png 1272w, https://substackcdn.com/image/fetch/$s_!C7Ba!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75c894c6-8790-4a6c-8c30-2da15c7dc7fc_2098x288.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><p>The three HT-R-O steps with concrete examples:</p><p><strong>Step 1 (Instance-level extraction)</strong></p><pre><code><code>Input: "HoneyMyte group uses ToneShell backdoor"
Output: (HoneyMyte, use, ToneShell backdoor)</code></code></pre><p><strong>Step 2 (Ontology-level abstraction)</strong></p><pre><code><code>Output: (APT group, use, malware)</code></code></pre><p><strong>Step 3 (Relation standardization)</strong></p><pre><code><code>"use" / "employ" / "leverage" &#8594; unified as "use"</code></code></pre><h3><strong>Benchmark Results</strong></h3><ul><li><p><strong>MultiWOZ</strong>: Literal F1 of 49.5% (baseline TeQoDO scores only 2.8%)</p></li><li><p><strong>Cybersecurity domain</strong>: Discovered 483 entity types + 72 relation types (traditional NER models identify only 13&#8211;40)</p></li><li><p><strong>ArXiv</strong>: Graph F1 of 68.68%</p></li></ul><p><strong>Strengths</strong>: Truly data-driven with no manual annotation needed; no prior knowledge of category types required; small-task decomposition keeps hallucination risk low.</p><p><strong>Weaknesses</strong>: Clustering quality directly determines final output quality; no built-in online validation; open-domain scenarios may over-fragment into too-fine granularity.</p><p><strong>Best for</strong>: Exploring new domains where you don&#8217;t know what concept types exist.</p><h2><strong>Method C: Two-Phase Generation</strong></h2><ul><li><p><strong>Hallucination risk: Medium </strong></p></li><li><p><strong>Engineering complexity: Medium </strong></p></li><li><p><strong>Key papers: OntoEKG 2026 &#183; NeOn-GPT 2024</strong></p></li></ul><p>Phase 1 (Extraction Module): have the LLM identify candidate classes and attributes from unstructured documents. Phase 2 (Entailment Module): organize that flat list into a logical hierarchy and serialize to RDF. The two phases are separate &#8212; the intermediate output is human-reviewable and adjustable.</p><pre><code><code>Unstructured docs &#8594; Phase 1 (Extraction Module) &#8594; Phase 2 (Entailment Module) &#8594; RDF serialization Identify core classes + attrs  Organize into logical hierarchy</code></code></pre><p><strong>OntoEKG (ICSC 2026)</strong>: Achieved fuzzy-match F1 of 0.724 in the Data domain. Limitation: when concept hierarchies get complex, the model tends to flatten rather than properly nest. Hierarchy reasoning is still the weak point.</p><p><strong>NeOn-GPT (Fathallah et al., 2024)</strong>: Follows the NeOn ontology engineering methodology, using LLMs to replace most of the manual work. Workflow: requirements writing &#8594; OWL encoding &#8594; evaluation &#8594; documentation generation. Integrates GPT-3.5, LLaMA, and PaLM as interchangeable model backends.</p><p><strong>Strengths</strong>: Clear intermediate artifacts that can be reviewed; fast construction of an initial ontology draft; medium engineering complexity, easy to get started.</p><p><strong>Weaknesses</strong>: Two-stage errors compound; hierarchy reasoning quality depends on LLM capability; no built-in validation mechanism.</p><p><strong>Best for</strong>: Fast first drafts for direction validation; cases where you need visibility into intermediate state.</p><h2><strong>Method D: Schema-Guided Extraction</strong></h2><p><strong>Hallucination risk: Low | Engineering complexity: Medium | Key papers: OntoKG 2026 &#183; Wikontic 2025</strong></p><p>Start with a framework, extract within it. Rather than letting the LLM freely invent &#8220;what relationship is this?&#8221;, constrain it to choose from a defined list: &#8220;Is this relationship &#8216;belongs to,&#8217; &#8216;located in,&#8217; or &#8216;causes&#8217;?&#8221; The option space is bounded, so the hallucination space shrinks accordingly.</p><pre><code><code>Existing schema (Wikidata etc.) &#8594; Define type and relation lists &#8594; LLM extracts within schema &#8594; Schema validation &#8594; Compliant output</code></code></pre><h3><strong>Schema-Free vs. Schema-Based</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_!pz88!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a7c6212-b992-49e8-850e-a9928e7e41f9_1728x206.png 424w, https://substackcdn.com/image/fetch/$s_!pz88!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a7c6212-b992-49e8-850e-a9928e7e41f9_1728x206.png 848w, https://substackcdn.com/image/fetch/$s_!pz88!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a7c6212-b992-49e8-850e-a9928e7e41f9_1728x206.png 1272w, https://substackcdn.com/image/fetch/$s_!pz88!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a7c6212-b992-49e8-850e-a9928e7e41f9_1728x206.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21pz88%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F9a7c6212-b992-49e8-850e-a9928e7e41f9_1728x206.png" width="1456" height="174" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9a7c6212-b992-49e8-850e-a9928e7e41f9_1728x206.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:174,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:69748,&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://zerofuturetech.substack.com/i/198663518?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a7c6212-b992-49e8-850e-a9928e7e41f9_1728x206.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_!pz88!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a7c6212-b992-49e8-850e-a9928e7e41f9_1728x206.png 424w, https://substackcdn.com/image/fetch/$s_!pz88!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a7c6212-b992-49e8-850e-a9928e7e41f9_1728x206.png 848w, https://substackcdn.com/image/fetch/$s_!pz88!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a7c6212-b992-49e8-850e-a9928e7e41f9_1728x206.png 1272w, https://substackcdn.com/image/fetch/$s_!pz88!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a7c6212-b992-49e8-850e-a9928e7e41f9_1728x206.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><p>The 2025 Bian survey concludes: these two are <strong>complementary, not competing</strong>. The ideal system = Schema-Free discovers new concepts first &#8594; Schema-Based formalizes them into standard structure.</p><h3><strong>Large-Scale Case: OntoKG (2026)</strong></h3><p>Organized Wikidata&#8217;s 346 million entities into 94 modules across 8 categories. The core mechanism &#8212; <strong>intrinsic-relational routing</strong>:</p><ul><li><p>Each property &#8594; <strong>Intrinsic attribute</strong> (color, size) &#8594; node attribute module</p></li><li><p>Each property &#8594; <strong>Relational attribute</strong> (located in, part of) &#8594; edge module</p></li></ul><p>LLM + human review results: <strong>93.3% category coverage, 98.0% module assignment accuracy</strong>, encompassing 34 million nodes, 61.2 million edges, and 38 relation types.</p><p><strong>Strengths</strong>: Output is naturally schema-compliant with small hallucination space; low engineering effort when a good schema exists; fits regulated industry standards.</p><p><strong>Weaknesses</strong>: Constrained by the coverage of the existing schema; weak at discovering genuinely new concepts; requires a suitable schema to exist upfront.</p><p><strong>Best for</strong>: Domains with existing industry standards or data specifications (healthcare, legal, energy, etc.).</p><h2><strong>Method E: End-to-End Prompting</strong></h2><p><strong>Hallucination risk: High | Engineering complexity: Low | Key benchmark: LLMs4OL Challenge 2025</strong></p><p>One prompt, full output. Fast to implement:</p><pre><code><code>You are a {domain} ontology expert.
Extract ontology classes and their relationships from the following text.
Only extract what is explicitly stated. Do not add inferred content.
Output format: JSON.
{"classes": [{"name": "...", "definition": "..."}],
 "relationships": [{"source": "...", "target": "...", "type": "..."}]}
Rules: 1. Only extract explicit content  2. Use standardized names  3. Output "None" if ambiguous
Text: {input_text}
</code></code></pre><p>Four key findings from the LLMs4OL 2025 challenge:</p><ol><li><p><strong>No universal winner</strong>: No single model performs best across all subtasks</p></li><li><p><strong>Small models + good prompts &#8776; large models</strong>: Well-crafted prompts sometimes let small models match large model performance</p></li><li><p><strong>Extreme prompt sensitivity</strong>: Minor wording changes produce significantly different ontology structures from the same model</p></li><li><p><strong>Fastest results</strong>: A first draft in 30 minutes, suitable for quick direction validation</p></li></ol><p><strong>Strengths</strong>: Simplest to implement, zero engineering setup; results in 30 minutes.</p><p><strong>Weaknesses</strong>: Highest hallucination risk; unstable output quality; prompt sensitivity seriously affects output.</p><p><strong>Best for</strong>: Quick proof-of-concept validation. <strong>Not suitable for production.</strong></p><div><hr></div><h2><strong>Five Methods Side-by-Side</strong></h2><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_!as2X!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff028d55b-965a-4704-b80c-3b85a30586a5_1908x448.png 424w, https://substackcdn.com/image/fetch/$s_!as2X!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff028d55b-965a-4704-b80c-3b85a30586a5_1908x448.png 848w, https://substackcdn.com/image/fetch/$s_!as2X!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff028d55b-965a-4704-b80c-3b85a30586a5_1908x448.png 1272w, https://substackcdn.com/image/fetch/$s_!as2X!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff028d55b-965a-4704-b80c-3b85a30586a5_1908x448.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21as2X%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Ff028d55b-965a-4704-b80c-3b85a30586a5_1908x448.png" width="1456" height="342" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f028d55b-965a-4704-b80c-3b85a30586a5_1908x448.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:342,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:134349,&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://zerofuturetech.substack.com/i/198663518?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff028d55b-965a-4704-b80c-3b85a30586a5_1908x448.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_!as2X!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff028d55b-965a-4704-b80c-3b85a30586a5_1908x448.png 424w, https://substackcdn.com/image/fetch/$s_!as2X!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff028d55b-965a-4704-b80c-3b85a30586a5_1908x448.png 848w, https://substackcdn.com/image/fetch/$s_!as2X!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff028d55b-965a-4704-b80c-3b85a30586a5_1908x448.png 1272w, https://substackcdn.com/image/fetch/$s_!as2X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff028d55b-965a-4704-b80c-3b85a30586a5_1908x448.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><p>*Wikontic uses &lt;1,000 tokens, one-twentieth the cost of GraphRAG</p><h2><strong>The Decision Framework</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21_VKJ%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fff6b051a-0e5e-43bc-8457-e73c9613c910_1174x472.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_VKJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff6b051a-0e5e-43bc-8457-e73c9613c910_1174x472.png 424w, https://substackcdn.com/image/fetch/$s_!_VKJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff6b051a-0e5e-43bc-8457-e73c9613c910_1174x472.png 848w, https://substackcdn.com/image/fetch/$s_!_VKJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff6b051a-0e5e-43bc-8457-e73c9613c910_1174x472.png 1272w, https://substackcdn.com/image/fetch/$s_!_VKJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff6b051a-0e5e-43bc-8457-e73c9613c910_1174x472.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21_VKJ%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fff6b051a-0e5e-43bc-8457-e73c9613c910_1174x472.png" width="1174" height="472" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ff6b051a-0e5e-43bc-8457-e73c9613c910_1174x472.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:472,&quot;width&quot;:1174,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:101701,&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://zerofuturetech.substack.com/i/198663518?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff6b051a-0e5e-43bc-8457-e73c9613c910_1174x472.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_!_VKJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff6b051a-0e5e-43bc-8457-e73c9613c910_1174x472.png 424w, https://substackcdn.com/image/fetch/$s_!_VKJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff6b051a-0e5e-43bc-8457-e73c9613c910_1174x472.png 848w, https://substackcdn.com/image/fetch/$s_!_VKJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff6b051a-0e5e-43bc-8457-e73c9613c910_1174x472.png 1272w, https://substackcdn.com/image/fetch/$s_!_VKJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff6b051a-0e5e-43bc-8457-e73c9613c910_1174x472.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><strong>Five Engineering Lessons From the Literature</strong></h2><p><strong>Lesson 01: NER is where most errors originate</strong></p><p>Salovsky (2026) explicitly flags this: &#8220;most future errors originate in the NER phase.&#8221; Wrong entity types, alias confusion, and incomplete type coverage in the extraction phase propagate through every downstream step. IRT SystemX&#8217;s experience confirms this: RTE used regex while EDF fine-tuned CamemBERT &#8212; the right choice depends on how much labeled data you have. Invest here before optimizing anything else.</p><p><strong>Lesson 02: Relation extraction is much harder than entity discovery</strong></p><p>Finding &#8220;what things exist&#8221; is relatively straightforward. Understanding &#8220;what relationships exist between those things&#8221; is the real challenge. LLM4Onto specifically designed the 3-stage HT-R-O pipeline to handle this. IRT SystemX found certain relation types (like &#8220;ending time&#8221;) were far more ambiguous than others. OntoEKG showed clear limitations in hierarchical reasoning. <strong>Recommendation: extract coarse-grained relations first, then use LLM to refine and standardize.</strong></p><p><strong>Lesson 03: Validation is the line between toy and production</strong></p><p>Without validation, you&#8217;re letting the LLM write whatever it wants into your knowledge base. LLM4Onto has no online validation mechanism &#8212; that&#8217;s one reason it remains a research prototype. Minimum viable: SHACL structural validation. If you can, add OWL Reasoner for logical consistency checks.</p><p><strong>Lesson 04: Prompt wording affects output structure</strong></p><p>Garc&#237;a-Fern&#225;ndez et al. (2025) found that minor prompt wording changes from the same LLM produced significantly different ontology structures. Use structured templates with explicit rules and examples, not free-form natural language descriptions. Validate output format programmatically &#8212; don&#8217;t trust that the model produces consistent JSON structure.</p><p><strong>Lesson 05: More tokens doesn&#8217;t mean better quality</strong></p><p>Wikontic built an effective knowledge graph with under 1,000 output tokens &#8212; one-twentieth of GraphRAG&#8217;s cost. High token consumption doesn&#8217;t necessarily produce higher accuracy. <strong>The key is not data volume, but data quality and the reasonableness of constraints.</strong></p><h2><strong>Where This Field Is Heading</strong></h2><p><strong>Trend 1: Schema-Free and Schema-Based are converging</strong></p><p>Let LLMs freely explore and discover new concepts first, then automatically integrate new concepts into standard frameworks &#8212; the &#8220;from disorder to order&#8221; loop is becoming the dominant design pattern. The Bian survey (2025) calls this the ideal architecture.</p><p><strong>Trend 2: Ontologies are becoming the memory layer for AI agents</strong></p><p>Ontologies aren&#8217;t just static knowledge bases for querying. They&#8217;re becoming the &#8220;world model&#8221; for AI agents &#8212; the agent uses it to understand current state, plan next actions, and record execution results. This direction becomes increasingly important as agent frameworks mature rapidly.</p><p><strong>Trend 3: Extension from text to multimodal sources</strong></p><p>Extracting ontologies not just from text, but from charts, images, and sensor data. This direction is just starting, and represents the next significant growth area in the field.</p><p><strong>Trend 4: Standardized evaluation is being established</strong></p><p>The LLMs4OL challenge, the UPM survey, and similar efforts are driving unified evaluation standards &#8212; allowing different methods to be compared on the same scale. Without standardized evaluation, there&#8217;s no real progress comparison between approaches.</p><h2>Tool Building</h2><p>In order to understand ontology and how LLM drives ontology construction, I have built a tool called <a href="iframe.php?url=https%3A%2F%2Fgithub.com%2Fjingw2%2Fnano-ontoprompt">OntoPrompt</a> in my github: </p><p><a href="iframe.php?url=https%3A%2F%2Fgithub.com%2Fjingw2%2Fnano-ontoprompt">https://github.com/jingw2/nano-ontoprompt</a></p><p>This OntoPrompt is a nano platform using Prompt + Rule based + LLM methods to construct ontologies in different domains. </p><p>Welcome to try it. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%217vEE%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F74ce3999-5975-4921-9f21-2b9cf1a500f7_2886x1390.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7vEE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74ce3999-5975-4921-9f21-2b9cf1a500f7_2886x1390.png 424w, https://substackcdn.com/image/fetch/$s_!7vEE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74ce3999-5975-4921-9f21-2b9cf1a500f7_2886x1390.png 848w, https://substackcdn.com/image/fetch/$s_!7vEE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74ce3999-5975-4921-9f21-2b9cf1a500f7_2886x1390.png 1272w, https://substackcdn.com/image/fetch/$s_!7vEE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74ce3999-5975-4921-9f21-2b9cf1a500f7_2886x1390.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%217vEE%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F74ce3999-5975-4921-9f21-2b9cf1a500f7_2886x1390.png" width="1456" height="701" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/74ce3999-5975-4921-9f21-2b9cf1a500f7_2886x1390.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:701,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:275779,&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://zerofuturetech.substack.com/i/198663518?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74ce3999-5975-4921-9f21-2b9cf1a500f7_2886x1390.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_!7vEE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74ce3999-5975-4921-9f21-2b9cf1a500f7_2886x1390.png 424w, https://substackcdn.com/image/fetch/$s_!7vEE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74ce3999-5975-4921-9f21-2b9cf1a500f7_2886x1390.png 848w, https://substackcdn.com/image/fetch/$s_!7vEE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74ce3999-5975-4921-9f21-2b9cf1a500f7_2886x1390.png 1272w, https://substackcdn.com/image/fetch/$s_!7vEE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74ce3999-5975-4921-9f21-2b9cf1a500f7_2886x1390.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><strong>Terminology Reference</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21kYPr%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F48ed45a1-17f8-439a-9c92-ef17d9745818_1742x1020.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kYPr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48ed45a1-17f8-439a-9c92-ef17d9745818_1742x1020.png 424w, https://substackcdn.com/image/fetch/$s_!kYPr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48ed45a1-17f8-439a-9c92-ef17d9745818_1742x1020.png 848w, https://substackcdn.com/image/fetch/$s_!kYPr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48ed45a1-17f8-439a-9c92-ef17d9745818_1742x1020.png 1272w, https://substackcdn.com/image/fetch/$s_!kYPr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48ed45a1-17f8-439a-9c92-ef17d9745818_1742x1020.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21kYPr%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F48ed45a1-17f8-439a-9c92-ef17d9745818_1742x1020.png" width="1456" height="853" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/48ed45a1-17f8-439a-9c92-ef17d9745818_1742x1020.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:853,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:310302,&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://zerofuturetech.substack.com/i/198663518?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48ed45a1-17f8-439a-9c92-ef17d9745818_1742x1020.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_!kYPr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48ed45a1-17f8-439a-9c92-ef17d9745818_1742x1020.png 424w, https://substackcdn.com/image/fetch/$s_!kYPr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48ed45a1-17f8-439a-9c92-ef17d9745818_1742x1020.png 848w, https://substackcdn.com/image/fetch/$s_!kYPr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48ed45a1-17f8-439a-9c92-ef17d9745818_1742x1020.png 1272w, https://substackcdn.com/image/fetch/$s_!kYPr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48ed45a1-17f8-439a-9c92-ef17d9745818_1742x1020.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 question has shifted from &#8220;can LLMs build ontologies?&#8221; to &#8220;which approach fits your constraints?&#8221; Your task scope, engineering resources, and quality requirements determine the answer &#8212; not which paper was published most recently.</p><p>Five schools, five tradeoffs. None of them is universally superior. The right one depends on where you are: a 30-minute prototype or a production system that can&#8217;t be wrong.</p><p></p><p><em>Zero Future covers applied AI engineering weekly. Subscribe to stay current.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://zerofuturetech.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">zerofuturetech's newsletter is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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[Palantir Ontology Explained: Why It’s the Operating System for Enterprise AI Agents]]></title><description><![CDATA[How Palantir&#8217;s semantic layer turns fragmented enterprise data into a digital twin that LLMs can actually understand &#8212; and why Ontology Augmented Generation (OAG) beats RAG for real business decisions]]></description><link>https://zerofuturetech.substack.com/p/palantir-ontology-explained-why-its</link><guid isPermaLink="false">https://zerofuturetech.substack.com/p/palantir-ontology-explained-why-its</guid><dc:creator><![CDATA[zerofuturetech]]></dc:creator><pubDate>Sun, 10 May 2026 12:03:13 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c85adef-fcea-43f9-8763-0a3da125f4d0_2000x1500.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div id="youtube2-Gp6TubaAq8A" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;Gp6TubaAq8A&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="iframe.php?url=https%3A%2F%2Fwww.youtube-nocookie.com%2Fembed%2FGp6TubaAq8A%3Frel%3D0%26amp%3Bautoplay%3D0%26amp%3Bshowinfo%3D0%26amp%3Benablejsapi%3D0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>If you&#8217;ve been tracking enterprise AI, you&#8217;ve noticed a pattern: the models are ready, but the deployments are stuck. Everyone has GPT. Everyone has Claude. Yet somehow, AI inside large organizations still feels like an intern who showed up on day one with no onboarding.</p><p>Palantir has an answer. It&#8217;s called <strong>Ontology</strong> &#8212; and it might be the most important piece of enterprise infrastructure you haven&#8217;t heard of.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://zerofuturetech.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">zerofuturetech's newsletter is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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 what makes this interesting: Ontology isn&#8217;t a database, a dashboard, or a semantic layer with a new name. It&#8217;s a <strong>digital twin of your entire organization</strong> &#8212; a living map that both humans and AI can read. And it answers the one question that matters most: <em>how does AI actually understand your business?</em></p><p>Let&#8217;s get straight to it.</p><h2><strong>What Palantir Is (and Isn&#8217;t)</strong></h2><p>A quick primer.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21fBMM%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F9bb3b0d7-2dcd-4b90-8def-019e5dcf0336_776x512.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fBMM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bb3b0d7-2dcd-4b90-8def-019e5dcf0336_776x512.png 424w, https://substackcdn.com/image/fetch/$s_!fBMM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bb3b0d7-2dcd-4b90-8def-019e5dcf0336_776x512.png 848w, https://substackcdn.com/image/fetch/$s_!fBMM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bb3b0d7-2dcd-4b90-8def-019e5dcf0336_776x512.png 1272w, https://substackcdn.com/image/fetch/$s_!fBMM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bb3b0d7-2dcd-4b90-8def-019e5dcf0336_776x512.png 1456w" sizes="100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21fBMM%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F9bb3b0d7-2dcd-4b90-8def-019e5dcf0336_776x512.png" width="776" height="512" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9bb3b0d7-2dcd-4b90-8def-019e5dcf0336_776x512.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:776,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:48332,&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://zerofuturetech.substack.com/i/197077655?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bb3b0d7-2dcd-4b90-8def-019e5dcf0336_776x512.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_!fBMM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bb3b0d7-2dcd-4b90-8def-019e5dcf0336_776x512.png 424w, https://substackcdn.com/image/fetch/$s_!fBMM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bb3b0d7-2dcd-4b90-8def-019e5dcf0336_776x512.png 848w, https://substackcdn.com/image/fetch/$s_!fBMM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bb3b0d7-2dcd-4b90-8def-019e5dcf0336_776x512.png 1272w, https://substackcdn.com/image/fetch/$s_!fBMM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bb3b0d7-2dcd-4b90-8def-019e5dcf0336_776x512.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>Founded in 2003 by Peter Thiel and Alex Karp (a philosophy PhD), Palantir took its name from the <em>palant&#237;ri</em> in Lord of the Rings &#8212; seeing stones that pierce space and time.</p><p>Their first check came from In-Q-Tel, the CIA&#8217;s venture arm. Most Silicon Valley VCs passed.</p><p>Today they run three product lines:</p><ul><li><p><strong>Gotham</strong> (2008): Intelligence and defense</p></li><li><p><strong>Foundry</strong> (2016): Commercial &#8212; Airbus, BP, NHS</p></li><li><p><strong>AIP</strong> (2023): AI Platform, bringing LLMs into the enterprise</p></li></ul><p>NYSE direct listing in 2020. S&amp;P 500 in 2024. $4.48B revenue in 2025.</p><p>But the commercial story isn&#8217;t what matters here. What matters is the underlying architecture &#8212; the thing that makes all three product lines work.</p><h2><strong>What Ontology Actually Is</strong></h2><p>Let me start with what it&#8217;s <em>not</em>.</p><p>It&#8217;s not a data warehouse. Not a BI dashboard. Not a data catalog. And it&#8217;s not &#8220;semantic layer&#8221; rebranded.</p><p>Palantir&#8217;s official definition: <strong>&#8220;A digital twin of the organization &#8212; a semantic layer that sits on top of datasets and models.&#8221;</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21W5MW%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F931bde20-d6ba-4bdf-8984-2ba9b9881cb3_1001x1059.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!W5MW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F931bde20-d6ba-4bdf-8984-2ba9b9881cb3_1001x1059.png 424w, https://substackcdn.com/image/fetch/$s_!W5MW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F931bde20-d6ba-4bdf-8984-2ba9b9881cb3_1001x1059.png 848w, https://substackcdn.com/image/fetch/$s_!W5MW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F931bde20-d6ba-4bdf-8984-2ba9b9881cb3_1001x1059.png 1272w, https://substackcdn.com/image/fetch/$s_!W5MW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F931bde20-d6ba-4bdf-8984-2ba9b9881cb3_1001x1059.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21W5MW%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F931bde20-d6ba-4bdf-8984-2ba9b9881cb3_1001x1059.png" width="1001" height="1059" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/931bde20-d6ba-4bdf-8984-2ba9b9881cb3_1001x1059.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1059,&quot;width&quot;:1001,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:35897,&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://zerofuturetech.substack.com/i/197077655?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F931bde20-d6ba-4bdf-8984-2ba9b9881cb3_1001x1059.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_!W5MW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F931bde20-d6ba-4bdf-8984-2ba9b9881cb3_1001x1059.png 424w, https://substackcdn.com/image/fetch/$s_!W5MW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F931bde20-d6ba-4bdf-8984-2ba9b9881cb3_1001x1059.png 848w, https://substackcdn.com/image/fetch/$s_!W5MW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F931bde20-d6ba-4bdf-8984-2ba9b9881cb3_1001x1059.png 1272w, https://substackcdn.com/image/fetch/$s_!W5MW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F931bde20-d6ba-4bdf-8984-2ba9b9881cb3_1001x1059.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>Translation: it weaves your scattered data, business logic, and operational capabilities into a <strong>living map</strong> that both humans and AI can navigate.</p><h3><strong>A concrete example</strong></h3><p>A traditional data warehouse tells you:</p><blockquote><p><em>&#8220;The t_orders table has 5 million rows.&#8221;</em></p></blockquote><p>Ontology tells you:</p><blockquote><p><em>&#8220;Customer Acme Corp&#8217;s third order &#8212; containing 5 turbine blades, currently in quality inspection at the Hamburg warehouse, linked to DHL tracking #DHL-88492, estimated arrival in Shanghai next Tuesday.&#8221;</em></p></blockquote><p>The difference? Ontology doesn&#8217;t just <em>store</em> data. It stitches together fragments from your ERP, CRM, SCM, and IoT systems into a <strong>world</strong> your business operators can actually understand.</p><h3><strong>The mapping is straightforward</strong></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21N-F-%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fd0a4a28c-bcb9-4638-b2c9-706c3a90f226_1033x633.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N-F-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0a4a28c-bcb9-4638-b2c9-706c3a90f226_1033x633.png 424w, https://substackcdn.com/image/fetch/$s_!N-F-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0a4a28c-bcb9-4638-b2c9-706c3a90f226_1033x633.png 848w, https://substackcdn.com/image/fetch/$s_!N-F-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0a4a28c-bcb9-4638-b2c9-706c3a90f226_1033x633.png 1272w, https://substackcdn.com/image/fetch/$s_!N-F-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0a4a28c-bcb9-4638-b2c9-706c3a90f226_1033x633.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21N-F-%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fd0a4a28c-bcb9-4638-b2c9-706c3a90f226_1033x633.png" width="1033" height="633" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d0a4a28c-bcb9-4638-b2c9-706c3a90f226_1033x633.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:633,&quot;width&quot;:1033,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:107231,&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://zerofuturetech.substack.com/i/197077655?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0a4a28c-bcb9-4638-b2c9-706c3a90f226_1033x633.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_!N-F-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0a4a28c-bcb9-4638-b2c9-706c3a90f226_1033x633.png 424w, https://substackcdn.com/image/fetch/$s_!N-F-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0a4a28c-bcb9-4638-b2c9-706c3a90f226_1033x633.png 848w, https://substackcdn.com/image/fetch/$s_!N-F-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0a4a28c-bcb9-4638-b2c9-706c3a90f226_1033x633.png 1272w, https://substackcdn.com/image/fetch/$s_!N-F-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0a4a28c-bcb9-4638-b2c9-706c3a90f226_1033x633.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>Every technical concept gets &#8220;translated&#8221; into a business concept.</p><h3><strong>Three-layer architecture</strong></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21IEls%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F844e8737-b160-4083-a122-76193552de9a_948x522.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IEls!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F844e8737-b160-4083-a122-76193552de9a_948x522.png 424w, https://substackcdn.com/image/fetch/$s_!IEls!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F844e8737-b160-4083-a122-76193552de9a_948x522.png 848w, https://substackcdn.com/image/fetch/$s_!IEls!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F844e8737-b160-4083-a122-76193552de9a_948x522.png 1272w, https://substackcdn.com/image/fetch/$s_!IEls!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F844e8737-b160-4083-a122-76193552de9a_948x522.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21IEls%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F844e8737-b160-4083-a122-76193552de9a_948x522.png" width="948" height="522" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/844e8737-b160-4083-a122-76193552de9a_948x522.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:522,&quot;width&quot;:948,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:289614,&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://zerofuturetech.substack.com/i/197077655?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F844e8737-b160-4083-a122-76193552de9a_948x522.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_!IEls!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F844e8737-b160-4083-a122-76193552de9a_948x522.png 424w, https://substackcdn.com/image/fetch/$s_!IEls!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F844e8737-b160-4083-a122-76193552de9a_948x522.png 848w, https://substackcdn.com/image/fetch/$s_!IEls!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F844e8737-b160-4083-a122-76193552de9a_948x522.png 1272w, https://substackcdn.com/image/fetch/$s_!IEls!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F844e8737-b160-4083-a122-76193552de9a_948x522.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><pre><code><code>Data Layer (all sources)
      &#8595;
Logic Layer (Ontology semantic model)  &#8592; the core
      &#8595;
Action Layer (Workshop, AI Agents, automation)</code></code></pre><p>Ontology is the middle layer. Downward: it connects to all your data. Upward: it powers every application and agent.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21yE_n%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Ff8b92ec9-fe09-4c7e-bdd9-607380603b40_1057x686.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yE_n!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8b92ec9-fe09-4c7e-bdd9-607380603b40_1057x686.png 424w, https://substackcdn.com/image/fetch/$s_!yE_n!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8b92ec9-fe09-4c7e-bdd9-607380603b40_1057x686.png 848w, https://substackcdn.com/image/fetch/$s_!yE_n!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8b92ec9-fe09-4c7e-bdd9-607380603b40_1057x686.png 1272w, https://substackcdn.com/image/fetch/$s_!yE_n!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8b92ec9-fe09-4c7e-bdd9-607380603b40_1057x686.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21yE_n%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Ff8b92ec9-fe09-4c7e-bdd9-607380603b40_1057x686.png" width="1057" height="686" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f8b92ec9-fe09-4c7e-bdd9-607380603b40_1057x686.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:686,&quot;width&quot;:1057,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:83179,&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://zerofuturetech.substack.com/i/197077655?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8b92ec9-fe09-4c7e-bdd9-607380603b40_1057x686.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_!yE_n!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8b92ec9-fe09-4c7e-bdd9-607380603b40_1057x686.png 424w, https://substackcdn.com/image/fetch/$s_!yE_n!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8b92ec9-fe09-4c7e-bdd9-607380603b40_1057x686.png 848w, https://substackcdn.com/image/fetch/$s_!yE_n!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8b92ec9-fe09-4c7e-bdd9-607380603b40_1057x686.png 1272w, https://substackcdn.com/image/fetch/$s_!yE_n!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8b92ec9-fe09-4c7e-bdd9-607380603b40_1057x686.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><strong>A worked example</strong></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%216ATj%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F8118086f-e8cf-43cd-a822-06a13e8b72e3_963x488.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6ATj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8118086f-e8cf-43cd-a822-06a13e8b72e3_963x488.png 424w, https://substackcdn.com/image/fetch/$s_!6ATj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8118086f-e8cf-43cd-a822-06a13e8b72e3_963x488.png 848w, https://substackcdn.com/image/fetch/$s_!6ATj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8118086f-e8cf-43cd-a822-06a13e8b72e3_963x488.png 1272w, https://substackcdn.com/image/fetch/$s_!6ATj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8118086f-e8cf-43cd-a822-06a13e8b72e3_963x488.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%216ATj%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F8118086f-e8cf-43cd-a822-06a13e8b72e3_963x488.png" width="963" height="488" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8118086f-e8cf-43cd-a822-06a13e8b72e3_963x488.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:488,&quot;width&quot;:963,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:66168,&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://zerofuturetech.substack.com/i/197077655?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8118086f-e8cf-43cd-a822-06a13e8b72e3_963x488.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_!6ATj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8118086f-e8cf-43cd-a822-06a13e8b72e3_963x488.png 424w, https://substackcdn.com/image/fetch/$s_!6ATj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8118086f-e8cf-43cd-a822-06a13e8b72e3_963x488.png 848w, https://substackcdn.com/image/fetch/$s_!6ATj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8118086f-e8cf-43cd-a822-06a13e8b72e3_963x488.png 1272w, https://substackcdn.com/image/fetch/$s_!6ATj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8118086f-e8cf-43cd-a822-06a13e8b72e3_963x488.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>Say you run an aircraft engine manufacturer. Your Ontology has five object types:</p><ul><li><p>Customer &#8594; places &#8594; Order &#8594; contains &#8594; Engine &#8594; assembled from &#8594; Part &#8594; sourced from &#8594; Supplier</p></li></ul><p>They&#8217;re connected by Links. Then you define Actions:</p><ul><li><p><code>approveOrder</code></p></li><li><p><code>rerouteShipment</code></p></li><li><p><code>freezeSupplier</code></p></li></ul><p>These aren&#8217;t scripts. They&#8217;re <strong>declaratively defined</strong> within the Ontology framework &#8212; permissions, validation, and audit trails included.</p><p><strong>Build the Ontology once. Every application and AI Agent above it shares the same semantic foundation.</strong></p><h3><strong>How to build one</strong></h3><p>Using a supply chain scenario, here are the steps:</p><ol><li><p><strong>Define the nouns</strong> &#8212; Translate database tables into business objects. A Supplier object has an ID, name, region, lead time, risk score, and so on.</p></li><li><p><strong>Wire up the brain</strong> &#8212; Teach the system how to reason. How many days of inventory remain? Which alternative supplier should we engage?</p></li><li><p><strong>Configure who can do what</strong> &#8212; Each Action is like a contract: what it does, who can trigger it, under what conditions, and what gets logged.</p></li></ol><p>Think of it as <strong>adding buttons to a remote control &#8212; each with its own lock, not everyone can press every button.</strong></p><p>Once built, humans and AI Agents see the same world. The AI doesn&#8217;t just <em>read</em> your data &#8212; it <em>understands</em> your company.</p><h2><strong>Ontology + AIP = AI That Actually Works</strong></h2><p>This is where Palantir&#8217;s 2023 launch of <strong>AIP</strong> (AI Platform) comes in.</p><p>The core insight is simple: an LLM can chat and write code, but if it doesn&#8217;t understand your business, it&#8217;s forever an <strong>intern</strong>. Ontology gives AI a complete <strong>&#8220;employee onboarding handbook&#8221;</strong> for your enterprise.</p><h3><strong>OAG (Ontology Augmented Generation)</strong></h3><p>You&#8217;ve probably heard of RAG &#8212; Retrieval Augmented Generation.</p><p>RAGOAGWhat it retrievesText passagesStructured business objects + real-time relationshipsResult qualityLLM guesses and stitchesDeterministic matchReliabilityProne to hallucinationsGrounded in live dataWhat happens nextNothing actionableTriggers approval workflows</p><p>Same question &#8212; &#8220;Which supplier can fill the gap?&#8221;:</p><ul><li><p><strong>RAG</strong>: Searches docs &#8594; LLM pieces together an answer &#8594; potential hallucination, no follow-through</p></li><li><p><strong>OAG</strong>: Queries Supplier objects &#8594; exact match &#8594; auto-creates a purchase order through the approval pipeline</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21oF_T%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F1ccaf47d-3f0a-4fb4-bf8a-2d9be8c4a799_695x251.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oF_T!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ccaf47d-3f0a-4fb4-bf8a-2d9be8c4a799_695x251.png 424w, https://substackcdn.com/image/fetch/$s_!oF_T!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ccaf47d-3f0a-4fb4-bf8a-2d9be8c4a799_695x251.png 848w, https://substackcdn.com/image/fetch/$s_!oF_T!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ccaf47d-3f0a-4fb4-bf8a-2d9be8c4a799_695x251.png 1272w, https://substackcdn.com/image/fetch/$s_!oF_T!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ccaf47d-3f0a-4fb4-bf8a-2d9be8c4a799_695x251.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21oF_T%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F1ccaf47d-3f0a-4fb4-bf8a-2d9be8c4a799_695x251.png" width="695" height="251" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1ccaf47d-3f0a-4fb4-bf8a-2d9be8c4a799_695x251.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:251,&quot;width&quot;:695,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:42776,&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://zerofuturetech.substack.com/i/197077655?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ccaf47d-3f0a-4fb4-bf8a-2d9be8c4a799_695x251.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_!oF_T!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ccaf47d-3f0a-4fb4-bf8a-2d9be8c4a799_695x251.png 424w, https://substackcdn.com/image/fetch/$s_!oF_T!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ccaf47d-3f0a-4fb4-bf8a-2d9be8c4a799_695x251.png 848w, https://substackcdn.com/image/fetch/$s_!oF_T!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ccaf47d-3f0a-4fb4-bf8a-2d9be8c4a799_695x251.png 1272w, https://substackcdn.com/image/fetch/$s_!oF_T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ccaf47d-3f0a-4fb4-bf8a-2d9be8c4a799_695x251.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>The AIP workflow</strong></h3><pre><code><code>Connect to Ontology &#8594; Security guardrails (what humans can't see, AI can't see) &#8594; Agent executes</code></code></pre><p>One critical design choice: <strong>Human-in-the-Loop</strong>.</p><p>Palantir&#8217;s own words: <em>&#8220;We don&#8217;t sell autonomous driving. We sell a copilot.&#8221;</em></p><p>Suggest &#8594; Human approves &#8594; Execute. That&#8217;s the rule.</p><h2><strong>15 Minutes vs. 3-5 Days</strong></h2><p>Here&#8217;s a real scenario: <strong>Supply chain disruption.</strong></p><p>Morning alert &#8212; a critical component supplier in Southeast Asia is offline due to flooding.</p><h3><strong>The old way</strong></h3><p>3 to 5 days. Manually checking 20 different systems, stitching data together, writing reports.</p><h3><strong>The Ontology + AIP way</strong></h3><p><strong>15 minutes.</strong> Five steps, fully closed-loop:</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_!Rohu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6df4a96b-82f4-4cda-8bfd-c39e9aacd56d_933x201.png 424w, https://substackcdn.com/image/fetch/$s_!Rohu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6df4a96b-82f4-4cda-8bfd-c39e9aacd56d_933x201.png 848w, https://substackcdn.com/image/fetch/$s_!Rohu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6df4a96b-82f4-4cda-8bfd-c39e9aacd56d_933x201.png 1272w, https://substackcdn.com/image/fetch/$s_!Rohu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6df4a96b-82f4-4cda-8bfd-c39e9aacd56d_933x201.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21Rohu%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F6df4a96b-82f4-4cda-8bfd-c39e9aacd56d_933x201.png" width="933" height="201" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6df4a96b-82f4-4cda-8bfd-c39e9aacd56d_933x201.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:201,&quot;width&quot;:933,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:36232,&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://zerofuturetech.substack.com/i/197077655?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6df4a96b-82f4-4cda-8bfd-c39e9aacd56d_933x201.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_!Rohu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6df4a96b-82f4-4cda-8bfd-c39e9aacd56d_933x201.png 424w, https://substackcdn.com/image/fetch/$s_!Rohu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6df4a96b-82f4-4cda-8bfd-c39e9aacd56d_933x201.png 848w, https://substackcdn.com/image/fetch/$s_!Rohu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6df4a96b-82f4-4cda-8bfd-c39e9aacd56d_933x201.png 1272w, https://substackcdn.com/image/fetch/$s_!Rohu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6df4a96b-82f4-4cda-8bfd-c39e9aacd56d_933x201.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><ol><li><p>IoT sensors auto-trigger the anomaly alert</p></li><li><p>AI traverses linked orders and calculates potential losses</p></li><li><p>Optimization engine generates 3 alternative sourcing plans with cost and timeline simulations</p></li><li><p>Supply chain manager reviews and selects the best option</p></li><li><p>Purchase orders are auto-created, ERP is updated, customers are notified &#8212; loop closed</p></li></ol><p>This isn&#8217;t &#8220;AI is smarter than humans.&#8221; It&#8217;s <strong>AI eliminating the pain of manually hunting through 20 systems for data.</strong></p><p><strong>Ontology isn&#8217;t a &#8220;data middle platform.&#8221; It&#8217;s the operating system for your business in the AI era.</strong></p><p>Without it, AI Agents fumble in the dark. With it, they become the most knowledgeable person in your company.</p><h2><strong>What It Actually Takes</strong></h2><p>If you&#8217;re sold, here&#8217;s the reality check.</p><h3><strong>Implementation path</strong></h3><pre><code><code>Discovery &#8594; Bootcamp (5 days to first working use case) &#8594; Pilot &#8594; Go-live &#8594; Scale</code></code></pre><p>Benchmark: <strong>Nebraska Medicine</strong> started in January 2024, deployed their first workflow in under 6 weeks. Subsequent use cases went live in as little as <strong>90 minutes</strong>.</p><h3><strong>The trade-offs</strong></h3><p><strong>What you get:</strong></p><ul><li><p><strong>Speed</strong>: Results in 5 days</p></li><li><p><strong>Power</strong>: Model once, reuse everywhere</p></li><li><p><strong>Security</strong>: Permissions span from data to AI layer, fully auditable</p></li></ul><p><strong>What you risk:</strong></p><ul><li><p><strong>Cost</strong>: Realistically, governments and very large enterprises only</p></li><li><p><strong>Vendor lock-in</strong>: Ontology is proprietary &#8212; migration costs are extreme</p></li><li><p><strong>Ethics and privacy</strong>: ICE contracts, IDF collaboration, NHS contract 70%+ redacted</p></li></ul><h2><strong>Three Things to Remember</strong></h2><p>If you take away nothing else, take these three:</p><p><strong>1. Palantir&#8217;s moat isn&#8217;t AI models. It&#8217;s Ontology.</strong></p><p>Anyone can access GPT or Claude. But modeling every entity, relationship, rule, and action in your business into an AI-comprehensible semantic system &#8212; that requires deep domain understanding and sustained engineering investment. Models are generic. Ontology is proprietary.</p><p><strong>2. Ontology is your enterprise operating system.</strong></p><p>Just as iOS lets apps operate your phone&#8217;s hardware, Ontology lets AI Agents and business applications operate your enterprise&#8217;s data and processes &#8212; with a single set of security, permission, and governance rules. Build once, reuse everywhere.</p><p><strong>3. Map your business entities and decision flows before you bring in AI.</strong></p><p>Too many organizations rush to &#8220;implement AI&#8221; while skipping the foundational step: what are your business objects, how do they relate, and who has permission to do what with them? Without this semantic infrastructure, AI Agents are just groping in the dark &#8212; they can talk, but they can&#8217;t see or touch your actual business.</p><p><strong>Semantics first. Then AI can actually run.</strong></p><h2><strong>The Bottom Line</strong></h2><p>Palantir&#8217;s methodology isn&#8217;t about which database you use. It&#8217;s about a transformation: <strong>data &#8594; business objects &#8594; AI-comprehensible knowledge &#8594; executable actions.</strong></p><p>This path isn&#8217;t cheap. It isn&#8217;t fast. And it isn&#8217;t easy.</p><p>But for organizations that genuinely need <em>enterprise-grade AI</em> &#8212; it might be the only approach that solves the triple challenge of <strong>security, governance, and semantic understanding</strong> at the architectural level.</p><p>Even if you never touch Palantir, the methodology is worth understanding.</p><p><em>If this piece gave you a useful mental model, share it with someone wrestling with enterprise AI deployment.</em></p><p><em>Reference&#65306;</em></p><p>https://www.palantir.com/platforms/ontology/#ontology-toolchain</p><p>https://www.palantir.com/docs/foundry/ontology/overview/</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://zerofuturetech.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">zerofuturetech's newsletter is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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 Gave a Real Expense Report to 6 Chinese LLMs. Only One Got It Right.]]></title><description><![CDATA[A row-by-row comparison of Kimi K2, GLM, Hunyuan, Mimo, DeepSeek, and MiniMax on a real multi-step task with a verifiable answer &#8212; the gap is wider than you&#8217;d expect.]]></description><link>https://zerofuturetech.substack.com/p/i-gave-a-real-expense-report-to-6</link><guid isPermaLink="false">https://zerofuturetech.substack.com/p/i-gave-a-real-expense-report-to-6</guid><dc:creator><![CDATA[zerofuturetech]]></dc:creator><pubDate>Fri, 01 May 2026 12:02:12 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb59789da-77ef-4c50-8b51-009de3f77116_2000x1500.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>If you are a visual learner, you are able to watch my Youtube video (Chinese):</em></p><div id="youtube2-9_8s7bEhcjU" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;9_8s7bEhcjU&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="iframe.php?url=https%3A%2F%2Fwww.youtube-nocookie.com%2Fembed%2F9_8s7bEhcjU%3Frel%3D0%26amp%3Bautoplay%3D0%26amp%3Bshowinfo%3D0%26amp%3Benablejsapi%3D0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p><em>You can follow me on X: <a href="iframe.php?url=https%3A%2F%2Fx.com%2Fjingwangtalk">@jingwangtalk</a></em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://zerofuturetech.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">zerofuturetech's newsletter is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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>I came back from a Southeast Asia business trip facing a classic problem: one China Merchants Bank credit card screenshot, four Grab ride e-receipts, all of it needing to become a clean expense report.</p><p>You know the feeling. Staring at a handful of PDFs and a screenshot, manually reconciling transactions, calculating exchange rates, filling in Excel. I sat there for 30 seconds, then asked myself one question:</p><p><strong>What if I handed this to an AI?</strong></p><p>Not one AI. Six of them &#8212; plus a wildcard.</p><p>That&#8217;s what this piece is about: a multi-step LLM stress test with a real task and a verifiable answer. Every model&#8217;s output can be compared line by line against the ground truth. No room for subjective judgment.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21M48E%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Faa67db70-4ffd-4d98-a671-a77f0b3a1a34_993x425.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!M48E!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa67db70-4ffd-4d98-a671-a77f0b3a1a34_993x425.png 424w, https://substackcdn.com/image/fetch/$s_!M48E!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa67db70-4ffd-4d98-a671-a77f0b3a1a34_993x425.png 848w, https://substackcdn.com/image/fetch/$s_!M48E!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa67db70-4ffd-4d98-a671-a77f0b3a1a34_993x425.png 1272w, https://substackcdn.com/image/fetch/$s_!M48E!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa67db70-4ffd-4d98-a671-a77f0b3a1a34_993x425.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21M48E%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Faa67db70-4ffd-4d98-a671-a77f0b3a1a34_993x425.png" width="993" height="425" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aa67db70-4ffd-4d98-a671-a77f0b3a1a34_993x425.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:425,&quot;width&quot;:993,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:109692,&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://zerofuturetech.substack.com/i/196093194?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa67db70-4ffd-4d98-a671-a77f0b3a1a34_993x425.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_!M48E!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa67db70-4ffd-4d98-a671-a77f0b3a1a34_993x425.png 424w, https://substackcdn.com/image/fetch/$s_!M48E!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa67db70-4ffd-4d98-a671-a77f0b3a1a34_993x425.png 848w, https://substackcdn.com/image/fetch/$s_!M48E!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa67db70-4ffd-4d98-a671-a77f0b3a1a34_993x425.png 1272w, https://substackcdn.com/image/fetch/$s_!M48E!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa67db70-4ffd-4d98-a671-a77f0b3a1a34_993x425.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>The Task: Five Steps, One Complete Pipeline</h2><p>Five files as input: one credit card screenshot (Chinese UI), four English Grab e-receipt PDFs, each covering a ride in Malaysia.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21oZli%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Ffac0fbe4-9bab-4006-a112-b59b471f1f37_1003x764.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oZli!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffac0fbe4-9bab-4006-a112-b59b471f1f37_1003x764.png 424w, https://substackcdn.com/image/fetch/$s_!oZli!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffac0fbe4-9bab-4006-a112-b59b471f1f37_1003x764.png 848w, https://substackcdn.com/image/fetch/$s_!oZli!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffac0fbe4-9bab-4006-a112-b59b471f1f37_1003x764.png 1272w, https://substackcdn.com/image/fetch/$s_!oZli!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffac0fbe4-9bab-4006-a112-b59b471f1f37_1003x764.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21oZli%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Ffac0fbe4-9bab-4006-a112-b59b471f1f37_1003x764.png" width="1003" height="764" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fac0fbe4-9bab-4006-a112-b59b471f1f37_1003x764.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:764,&quot;width&quot;:1003,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:170402,&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://zerofuturetech.substack.com/i/196093194?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffac0fbe4-9bab-4006-a112-b59b471f1f37_1003x764.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_!oZli!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffac0fbe4-9bab-4006-a112-b59b471f1f37_1003x764.png 424w, https://substackcdn.com/image/fetch/$s_!oZli!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffac0fbe4-9bab-4006-a112-b59b471f1f37_1003x764.png 848w, https://substackcdn.com/image/fetch/$s_!oZli!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffac0fbe4-9bab-4006-a112-b59b471f1f37_1003x764.png 1272w, https://substackcdn.com/image/fetch/$s_!oZli!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffac0fbe4-9bab-4006-a112-b59b471f1f37_1003x764.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>Five steps to complete:</p><p><strong>Step 1.</strong> OCR the credit card screenshot and extract all Grab-related RMB transactions.</p><p><strong>Step 2.</strong> Parse the four PDFs and extract order IDs, pickup points, drop-off points, and local currency amounts (Malaysian Ringgit, RM).</p><p><strong>Step 3.</strong> Cross-source matching &#8212; map the credit card records to the four Grab orders. Hidden catch: there are 8 credit card entries, not 4.</p><p><strong>Step 4.</strong> Exchange rate inference and merge logic &#8212; figure out why 4 rides produced 8 charges, and combine them correctly.</p><p><strong>Step 5.</strong> Call the xlsx skill and output a standardized Excel summary table.</p><p>All models ran inside the OpenCode framework, each in its own folder, given the identical prompt.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;05e3a198-a4bd-4641-99ae-d2a50a2b489c&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">In this directory, there is 1 credit card screenshot and 4 Grab PDF files. Complete the following tasks and output an Excel file:
1. Identify and extract Grab RMB transaction records from the screenshot
2. Use pdf skill to parse the 4 PDF receipts &#8212; extract Booking ID, pickup point, drop-off point, and local currency amount
3. Match credit card transactions with the 4 Grab bookings. Adjacent credit card entries may correspond to the same Grab booking &#8212; evaluate local currency vs. RMB exchange rates and determine which rows should be merged
4. Use xlsx skill to output an Excel table with fields: Booking ID, Pickup, Drop-off, Local Currency Amount, Total RMB Amount, Exchange Rate, Corresponding Card Records (show summed amounts for merged entries). Name the output file "grab-summary-[current-model-name].xlsx"</code></pre></div><div><hr></div><h2>The Real Difficulty: One Ride, Two Charges</h2><p>Let me lay out the ground truth first, so the analysis that follows has something to anchor against.</p><p>The credit card screenshot shows these 8 Grab-related charges:</p><pre><code><code>&#165;135.89  &#165;12.59  &#165;32.22  &#165;53.67  &#165;5.07  &#165;7.13  &#165;130.61  &#165;16.12</code></code></pre><p>Eight entries, four rides. The correct pairing logic:</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_!wdj-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8094c4d-1589-4c10-be60-2432a32243ca_1200x232.png 424w, https://substackcdn.com/image/fetch/$s_!wdj-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8094c4d-1589-4c10-be60-2432a32243ca_1200x232.png 848w, https://substackcdn.com/image/fetch/$s_!wdj-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8094c4d-1589-4c10-be60-2432a32243ca_1200x232.png 1272w, https://substackcdn.com/image/fetch/$s_!wdj-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8094c4d-1589-4c10-be60-2432a32243ca_1200x232.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21wdj-%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Ff8094c4d-1589-4c10-be60-2432a32243ca_1200x232.png" width="1200" height="232" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f8094c4d-1589-4c10-be60-2432a32243ca_1200x232.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:232,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!wdj-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8094c4d-1589-4c10-be60-2432a32243ca_1200x232.png 424w, https://substackcdn.com/image/fetch/$s_!wdj-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8094c4d-1589-4c10-be60-2432a32243ca_1200x232.png 848w, https://substackcdn.com/image/fetch/$s_!wdj-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8094c4d-1589-4c10-be60-2432a32243ca_1200x232.png 1272w, https://substackcdn.com/image/fetch/$s_!wdj-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8094c4d-1589-4c10-be60-2432a32243ca_1200x232.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><p>The pattern: every Grab ride generates two credit card entries &#8212; the main fare (Grab charges first according to estimates), plus a smaller service fee/additional fee (ranging from &#165;5 to &#165;17). Only when you add both together do you get the actual RMB settlement total for that ride.</p><p>The correct exchange rate is <strong>1.73&#8211;1.74 MYR/CNY</strong>, reflecting real MYR/RMB rates on the settlement dates.</p><p>Any wrong match, missed entry, or rate miscalculation makes the final expense report wrong.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%211Ja-%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F9abfbe52-b51e-4967-8594-bd136914eb8f_1011x726.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1Ja-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9abfbe52-b51e-4967-8594-bd136914eb8f_1011x726.png 424w, https://substackcdn.com/image/fetch/$s_!1Ja-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9abfbe52-b51e-4967-8594-bd136914eb8f_1011x726.png 848w, https://substackcdn.com/image/fetch/$s_!1Ja-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9abfbe52-b51e-4967-8594-bd136914eb8f_1011x726.png 1272w, https://substackcdn.com/image/fetch/$s_!1Ja-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9abfbe52-b51e-4967-8594-bd136914eb8f_1011x726.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%211Ja-%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F9abfbe52-b51e-4967-8594-bd136914eb8f_1011x726.png" width="1011" height="726" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9abfbe52-b51e-4967-8594-bd136914eb8f_1011x726.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:726,&quot;width&quot;:1011,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:206148,&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://zerofuturetech.substack.com/i/196093194?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9abfbe52-b51e-4967-8594-bd136914eb8f_1011x726.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_!1Ja-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9abfbe52-b51e-4967-8594-bd136914eb8f_1011x726.png 424w, https://substackcdn.com/image/fetch/$s_!1Ja-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9abfbe52-b51e-4967-8594-bd136914eb8f_1011x726.png 848w, https://substackcdn.com/image/fetch/$s_!1Ja-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9abfbe52-b51e-4967-8594-bd136914eb8f_1011x726.png 1272w, https://substackcdn.com/image/fetch/$s_!1Ja-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9abfbe52-b51e-4967-8594-bd136914eb8f_1011x726.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>Seven Models, Seven Ways to Fail</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21HTlY%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F7956ea99-cd33-424b-b65a-60c2dc4c2b2b_728x438.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HTlY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7956ea99-cd33-424b-b65a-60c2dc4c2b2b_728x438.png 424w, https://substackcdn.com/image/fetch/$s_!HTlY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7956ea99-cd33-424b-b65a-60c2dc4c2b2b_728x438.png 848w, https://substackcdn.com/image/fetch/$s_!HTlY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7956ea99-cd33-424b-b65a-60c2dc4c2b2b_728x438.png 1272w, https://substackcdn.com/image/fetch/$s_!HTlY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7956ea99-cd33-424b-b65a-60c2dc4c2b2b_728x438.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21HTlY%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F7956ea99-cd33-424b-b65a-60c2dc4c2b2b_728x438.png" width="728" height="438" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7956ea99-cd33-424b-b65a-60c2dc4c2b2b_728x438.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:438,&quot;width&quot;:728,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:67342,&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://zerofuturetech.substack.com/i/196093194?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7956ea99-cd33-424b-b65a-60c2dc4c2b2b_728x438.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_!HTlY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7956ea99-cd33-424b-b65a-60c2dc4c2b2b_728x438.png 424w, https://substackcdn.com/image/fetch/$s_!HTlY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7956ea99-cd33-424b-b65a-60c2dc4c2b2b_728x438.png 848w, https://substackcdn.com/image/fetch/$s_!HTlY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7956ea99-cd33-424b-b65a-60c2dc4c2b2b_728x438.png 1272w, https://substackcdn.com/image/fetch/$s_!HTlY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7956ea99-cd33-424b-b65a-60c2dc4c2b2b_728x438.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><em><strong>*Note that rank here is the rank to output the result.</strong> </em></p><h3>Kimi K2.6 &#8212; The Only One That Got It Right</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_!jOZW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23d7a9af-d44b-4092-8c55-69b967cbe543_1200x206.png 424w, https://substackcdn.com/image/fetch/$s_!jOZW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23d7a9af-d44b-4092-8c55-69b967cbe543_1200x206.png 848w, https://substackcdn.com/image/fetch/$s_!jOZW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23d7a9af-d44b-4092-8c55-69b967cbe543_1200x206.png 1272w, https://substackcdn.com/image/fetch/$s_!jOZW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23d7a9af-d44b-4092-8c55-69b967cbe543_1200x206.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21jOZW%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F23d7a9af-d44b-4092-8c55-69b967cbe543_1200x206.png" width="1200" height="206" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23d7a9af-d44b-4092-8c55-69b967cbe543_1200x206.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:206,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jOZW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23d7a9af-d44b-4092-8c55-69b967cbe543_1200x206.png 424w, https://substackcdn.com/image/fetch/$s_!jOZW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23d7a9af-d44b-4092-8c55-69b967cbe543_1200x206.png 848w, https://substackcdn.com/image/fetch/$s_!jOZW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23d7a9af-d44b-4092-8c55-69b967cbe543_1200x206.png 1272w, https://substackcdn.com/image/fetch/$s_!jOZW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23d7a9af-d44b-4092-8c55-69b967cbe543_1200x206.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><p>All four orders matched correctly. RMB totals and exchange rates accurate across the board.</p><p>The output Excel was clean and well-formatted. For Order 1, it recorded the credit card entries as <code>&#165;12.59 + &#165;135.89</code> &#8212; the order of the two numbers differs slightly from the reference answer, but the amounts are identical. It correctly identified the two-charge-per-ride structure, with rates landing consistently in the 1.73&#8211;1.74 range.</p><p>The only model that completed all five steps correctly in a single run.</p><h3>GLM 5.1 &#8212; One Step Short</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_!eUye!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd83b3257-4365-4b36-9fa2-d112055ab85b_1200x299.png 424w, https://substackcdn.com/image/fetch/$s_!eUye!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd83b3257-4365-4b36-9fa2-d112055ab85b_1200x299.png 848w, https://substackcdn.com/image/fetch/$s_!eUye!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd83b3257-4365-4b36-9fa2-d112055ab85b_1200x299.png 1272w, https://substackcdn.com/image/fetch/$s_!eUye!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd83b3257-4365-4b36-9fa2-d112055ab85b_1200x299.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21eUye%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fd83b3257-4365-4b36-9fa2-d112055ab85b_1200x299.png" width="1200" height="299" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d83b3257-4365-4b36-9fa2-d112055ab85b_1200x299.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:299,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!eUye!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd83b3257-4365-4b36-9fa2-d112055ab85b_1200x299.png 424w, https://substackcdn.com/image/fetch/$s_!eUye!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd83b3257-4365-4b36-9fa2-d112055ab85b_1200x299.png 848w, https://substackcdn.com/image/fetch/$s_!eUye!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd83b3257-4365-4b36-9fa2-d112055ab85b_1200x299.png 1272w, https://substackcdn.com/image/fetch/$s_!eUye!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd83b3257-4365-4b36-9fa2-d112055ab85b_1200x299.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><p>GLM 5.1 was the second-best performer. It nailed the first three orders:</p><ul><li><p>Order 1 (KLIA T2 &#8594; DoubleTree): &#165;135.89 + &#165;12.59 = <strong>&#165;148.48</strong> &#10003;</p></li><li><p>Order 2 (DoubleTree &#8594; Box-Pak): &#165;32.22 + &#165;7.13 = <strong>&#165;39.35</strong> &#10003;</p></li><li><p>Order 3 (Money Corner &#8594; KEX): &#165;53.67 + &#165;5.07 = <strong>&#165;58.74</strong> &#10003;</p></li></ul><p>Then Order 4 (Integra Tower &#8594; KLIA T1) fell apart. It matched <code>&#165;119.84 + &#165;16.12 = &#165;135.96</code>, when the correct answer is <code>&#165;130.61 + &#165;16.12 = &#165;146.73</code>.</p><p>The source of the error: &#165;119.84 does not exist in the credit card screenshot. GLM 5.1 hallucinated this number when reading the fourth entry, misreading &#165;130.61 as &#165;119.84. One wrong digit in the OCR step cascaded into a wrong total and a wrong exchange rate &#8212; dropping from the correct 1.74 down to 1.61.</p><p>Three correct, one OCR hallucination, one wrong row on the final report.</p><h3>DeepSeek V4 Flash &#8212; Systematic Matching Failure</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_!PgAH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F828f701f-f4a2-4d5f-adc7-8fa6a96e5bea_1198x229.png 424w, https://substackcdn.com/image/fetch/$s_!PgAH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F828f701f-f4a2-4d5f-adc7-8fa6a96e5bea_1198x229.png 848w, https://substackcdn.com/image/fetch/$s_!PgAH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F828f701f-f4a2-4d5f-adc7-8fa6a96e5bea_1198x229.png 1272w, https://substackcdn.com/image/fetch/$s_!PgAH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F828f701f-f4a2-4d5f-adc7-8fa6a96e5bea_1198x229.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21PgAH%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F828f701f-f4a2-4d5f-adc7-8fa6a96e5bea_1198x229.png" width="1198" height="229" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/828f701f-f4a2-4d5f-adc7-8fa6a96e5bea_1198x229.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:229,&quot;width&quot;:1198,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PgAH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F828f701f-f4a2-4d5f-adc7-8fa6a96e5bea_1198x229.png 424w, https://substackcdn.com/image/fetch/$s_!PgAH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F828f701f-f4a2-4d5f-adc7-8fa6a96e5bea_1198x229.png 848w, https://substackcdn.com/image/fetch/$s_!PgAH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F828f701f-f4a2-4d5f-adc7-8fa6a96e5bea_1198x229.png 1272w, https://substackcdn.com/image/fetch/$s_!PgAH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F828f701f-f4a2-4d5f-adc7-8fa6a96e5bea_1198x229.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><p>DeepSeek V4 Flash read all 8 credit card entries correctly. But its matching logic went completely off track. It tried to pair entries by looking for adjacent large amounts rather than understanding the main-fare-plus-fee structure:</p><ul><li><p>It assigned <code>&#165;119.84 + &#165;16.12</code> (= &#165;135.96) to Order 1 &#8212; both numbers actually belong to Order 4</p></li><li><p>Orders 2, 3, and 4 each got only a single entry (&#165;32.22, &#165;53.67, &#165;130.61), leaving the &#165;7.13, &#165;5.07, and &#165;16.12 service fees completely unmatched</p></li><li><p>Exchange rates skewed accordingly &#8212; at one point producing a rate of 1.42 MYR/CNY, which simply doesn&#8217;t reflect reality</p></li></ul><p>Four orders, four wrong rows, three credit card entries left floating without a home.</p><h3>DeepSeek V4 Pro &#8212; Perfect OCR, Wrong Everywhere Else</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21n1qG%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Ff16b556c-2ff2-4857-9645-933a87ff922d_1200x548.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!n1qG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff16b556c-2ff2-4857-9645-933a87ff922d_1200x548.png 424w, https://substackcdn.com/image/fetch/$s_!n1qG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff16b556c-2ff2-4857-9645-933a87ff922d_1200x548.png 848w, https://substackcdn.com/image/fetch/$s_!n1qG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff16b556c-2ff2-4857-9645-933a87ff922d_1200x548.png 1272w, https://substackcdn.com/image/fetch/$s_!n1qG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff16b556c-2ff2-4857-9645-933a87ff922d_1200x548.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21n1qG%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Ff16b556c-2ff2-4857-9645-933a87ff922d_1200x548.png" width="1200" height="548" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f16b556c-2ff2-4857-9645-933a87ff922d_1200x548.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:548,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!n1qG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff16b556c-2ff2-4857-9645-933a87ff922d_1200x548.png 424w, https://substackcdn.com/image/fetch/$s_!n1qG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff16b556c-2ff2-4857-9645-933a87ff922d_1200x548.png 848w, https://substackcdn.com/image/fetch/$s_!n1qG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff16b556c-2ff2-4857-9645-933a87ff922d_1200x548.png 1272w, https://substackcdn.com/image/fetch/$s_!n1qG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff16b556c-2ff2-4857-9645-933a87ff922d_1200x548.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 wildcard entry, DeepSeek V4 Pro, is the most interesting failure. Its OCR was clean &#8212; all 8 credit card entries correctly read. It also knew that merging was required. But its merge logic went sideways in a specific way.</p><p>Its approach: group entries by similar implied exchange rates (around 1.58) and bundle them together. The result:</p><ul><li><p>Order 2 (RM 22.66): merged <code>&#165;16.12 + &#165;7.13 + &#165;12.59</code> into a single record = &#165;35.84 (three entries for one order &#8212; wrong)</p></li><li><p>Order 4 (RM 84.49): merged <code>&#165;130.61 + &#165;5.07</code> = &#165;135.68 (off by &#165;11.05)</p></li><li><p>Orders 1 and 3: each matched to a single entry only</p></li></ul><p>It even left a note in the Excel file: <em>&#8220;&#165;135.89 appears with an &#8216;=&#8217; marker, interpreted as a subtotal row in the banking app UI, not an independent transaction.&#8221;</em> That call caused it to discard &#165;135.89 &#8212; the single largest charge in the dataset &#8212; leaving Order 1 without its main fare. The reasoning had internal logic. The premise was wrong, and everything downstream followed.</p><p>However, the output format from Deepseek-v4-pro is the best. </p><h3>Hunyuan 3 &#8212; Missing 2 Entries, Rates Skewed Throughout</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_!X38J!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94cc3b04-46cd-4cfd-9d02-f869ed187284_1195x113.png 424w, https://substackcdn.com/image/fetch/$s_!X38J!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94cc3b04-46cd-4cfd-9d02-f869ed187284_1195x113.png 848w, https://substackcdn.com/image/fetch/$s_!X38J!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94cc3b04-46cd-4cfd-9d02-f869ed187284_1195x113.png 1272w, https://substackcdn.com/image/fetch/$s_!X38J!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94cc3b04-46cd-4cfd-9d02-f869ed187284_1195x113.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21X38J%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F94cc3b04-46cd-4cfd-9d02-f869ed187284_1195x113.png" width="1195" height="113" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/94cc3b04-46cd-4cfd-9d02-f869ed187284_1195x113.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:113,&quot;width&quot;:1195,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!X38J!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94cc3b04-46cd-4cfd-9d02-f869ed187284_1195x113.png 424w, https://substackcdn.com/image/fetch/$s_!X38J!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94cc3b04-46cd-4cfd-9d02-f869ed187284_1195x113.png 848w, https://substackcdn.com/image/fetch/$s_!X38J!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94cc3b04-46cd-4cfd-9d02-f869ed187284_1195x113.png 1272w, https://substackcdn.com/image/fetch/$s_!X38J!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94cc3b04-46cd-4cfd-9d02-f869ed187284_1195x113.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><p>Hunyuan 3&#8217;s core problem: it tried to match one credit card entry per order, with no awareness of the two-charges-per-ride pattern:</p><ul><li><p>Order 1: matched only &#165;130.61 &#8212; missing &#165;135.89, and borrowing a number that belongs to Order 4</p></li><li><p>Order 2: over-merged, combining <code>&#165;16.12 + &#165;7.13 + &#165;12.59</code> into a single record (three entries for one order)</p></li><li><p>Orders 3 and 4: each matched to a single entry only</p></li></ul><p>Two of the 8 credit card entries ended up matched to nothing. Exchange rates fell in the 1.52&#8211;1.61 range across the board, because the model calculated rates using only the single main fare &#8212; never adding the service fee to the denominator.</p><div><hr></div><h3>Mimo V2.5 Pro &#8212; Good OCR, Cross-Matched the Two Big Orders</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_!0hXt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a8ba1f4-3379-4726-bb2b-df62383c0072_1198x116.png 424w, https://substackcdn.com/image/fetch/$s_!0hXt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a8ba1f4-3379-4726-bb2b-df62383c0072_1198x116.png 848w, https://substackcdn.com/image/fetch/$s_!0hXt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a8ba1f4-3379-4726-bb2b-df62383c0072_1198x116.png 1272w, https://substackcdn.com/image/fetch/$s_!0hXt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a8ba1f4-3379-4726-bb2b-df62383c0072_1198x116.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%210hXt%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F2a8ba1f4-3379-4726-bb2b-df62383c0072_1198x116.png" width="1198" height="116" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2a8ba1f4-3379-4726-bb2b-df62383c0072_1198x116.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:116,&quot;width&quot;:1198,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0hXt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a8ba1f4-3379-4726-bb2b-df62383c0072_1198x116.png 424w, https://substackcdn.com/image/fetch/$s_!0hXt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a8ba1f4-3379-4726-bb2b-df62383c0072_1198x116.png 848w, https://substackcdn.com/image/fetch/$s_!0hXt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a8ba1f4-3379-4726-bb2b-df62383c0072_1198x116.png 1272w, https://substackcdn.com/image/fetch/$s_!0hXt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a8ba1f4-3379-4726-bb2b-df62383c0072_1198x116.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><p>Mimo V2.5 Pro&#8217;s OCR was solid, which put it ahead of some other models at the reading stage. But it made one specific matching error in the hardest part of the task:</p><ul><li><p>Order 2 (RM 22.66): &#165;32.22 + &#165;7.13 = &#165;39.35 &#10003;</p></li><li><p>Order 3 (RM 33.80): &#165;53.67 + &#165;5.07 = &#165;58.74 &#10003;</p></li><li><p>Order 1 (RM 85.69): &#165;130.61 + &#165;12.59 = &#165;143.20 &#10007; (correct: &#165;135.89 + &#165;12.59, off by &#165;5.28)</p></li><li><p>Order 4 (RM 84.49): &#165;119.84 + &#165;16.12 = &#165;135.96 &#10007; (&#165;119.84 is a hallucinated number)</p></li></ul><p>Orders 1 and 4 are similar in size &#8212; RM 85.69 vs RM 84.49, with main fares of &#165;135.89 vs &#165;130.61. Mimo cross-matched them, swapping the large charges between the two most expensive rides.</p><p>Mimo is the only model to have many middle files and code left in the folder. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21r-KC%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fc7001ca6-f3b5-4879-8527-8043245abe80_664x458.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!r-KC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7001ca6-f3b5-4879-8527-8043245abe80_664x458.png 424w, https://substackcdn.com/image/fetch/$s_!r-KC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7001ca6-f3b5-4879-8527-8043245abe80_664x458.png 848w, https://substackcdn.com/image/fetch/$s_!r-KC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7001ca6-f3b5-4879-8527-8043245abe80_664x458.png 1272w, https://substackcdn.com/image/fetch/$s_!r-KC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7001ca6-f3b5-4879-8527-8043245abe80_664x458.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21r-KC%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fc7001ca6-f3b5-4879-8527-8043245abe80_664x458.png" width="664" height="458" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c7001ca6-f3b5-4879-8527-8043245abe80_664x458.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:458,&quot;width&quot;:664,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!r-KC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7001ca6-f3b5-4879-8527-8043245abe80_664x458.png 424w, https://substackcdn.com/image/fetch/$s_!r-KC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7001ca6-f3b5-4879-8527-8043245abe80_664x458.png 848w, https://substackcdn.com/image/fetch/$s_!r-KC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7001ca6-f3b5-4879-8527-8043245abe80_664x458.png 1272w, https://substackcdn.com/image/fetch/$s_!r-KC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7001ca6-f3b5-4879-8527-8043245abe80_664x458.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>MiniMax M2.7 &#8212; Four Identical Rows, Complete Collapse</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_!cwrm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aae6988-5f0b-4723-8465-651e4149b33c_1194x88.png 424w, https://substackcdn.com/image/fetch/$s_!cwrm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aae6988-5f0b-4723-8465-651e4149b33c_1194x88.png 848w, https://substackcdn.com/image/fetch/$s_!cwrm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aae6988-5f0b-4723-8465-651e4149b33c_1194x88.png 1272w, https://substackcdn.com/image/fetch/$s_!cwrm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aae6988-5f0b-4723-8465-651e4149b33c_1194x88.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21cwrm%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F2aae6988-5f0b-4723-8465-651e4149b33c_1194x88.png" width="1194" height="88" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2aae6988-5f0b-4723-8465-651e4149b33c_1194x88.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:88,&quot;width&quot;:1194,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cwrm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aae6988-5f0b-4723-8465-651e4149b33c_1194x88.png 424w, https://substackcdn.com/image/fetch/$s_!cwrm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aae6988-5f0b-4723-8465-651e4149b33c_1194x88.png 848w, https://substackcdn.com/image/fetch/$s_!cwrm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aae6988-5f0b-4723-8465-651e4149b33c_1194x88.png 1272w, https://substackcdn.com/image/fetch/$s_!cwrm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aae6988-5f0b-4723-8465-651e4149b33c_1194x88.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><p>MiniMax M2.7 produced the most extreme failure in the test.</p><p>Its output: all four orders filled with the exact same numbers &#8212; &#165;51.38 for every RMB total, 1.6379 for every exchange rate, and identical fabricated credit card entries (<code>MYR 16.67 / &#165;27.32</code> and <code>MYR 14.7 / &#165;24.06</code>) repeated across all four rows.</p><p>None of these figures appear anywhere in the source files. The model failed at both OCR and PDF parsing, then filled the output table with four rows of identical invented data.</p><div><hr></div><h2>Error Summary Across All Models</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21UsfJ%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Ffd6035ec-f026-4dd9-9bef-072adb931a2e_686x504.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UsfJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd6035ec-f026-4dd9-9bef-072adb931a2e_686x504.png 424w, https://substackcdn.com/image/fetch/$s_!UsfJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd6035ec-f026-4dd9-9bef-072adb931a2e_686x504.png 848w, https://substackcdn.com/image/fetch/$s_!UsfJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd6035ec-f026-4dd9-9bef-072adb931a2e_686x504.png 1272w, https://substackcdn.com/image/fetch/$s_!UsfJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd6035ec-f026-4dd9-9bef-072adb931a2e_686x504.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21UsfJ%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Ffd6035ec-f026-4dd9-9bef-072adb931a2e_686x504.png" width="686" height="504" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fd6035ec-f026-4dd9-9bef-072adb931a2e_686x504.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:504,&quot;width&quot;:686,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:79214,&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://zerofuturetech.substack.com/i/196093194?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd6035ec-f026-4dd9-9bef-072adb931a2e_686x504.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_!UsfJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd6035ec-f026-4dd9-9bef-072adb931a2e_686x504.png 424w, https://substackcdn.com/image/fetch/$s_!UsfJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd6035ec-f026-4dd9-9bef-072adb931a2e_686x504.png 848w, https://substackcdn.com/image/fetch/$s_!UsfJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd6035ec-f026-4dd9-9bef-072adb931a2e_686x504.png 1272w, https://substackcdn.com/image/fetch/$s_!UsfJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd6035ec-f026-4dd9-9bef-072adb931a2e_686x504.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>What This Task Actually Measures</h2><p>Most of the failing models died at the same point: <strong>faced with 8 credit card entries and 4 orders, their first instinct was one-to-one matching &#8212; not two-charges-per-ride.</strong></p><p>One-to-one is the simplest possible assumption. It&#8217;s also wrong. Getting it right requires the model to first understand how cross-border credit card billing works &#8212; a single transaction can split into a main charge and a service fee across two separate line items &#8212; and then use that prior knowledge to validate each pairing against amount ratios and exchange rate consistency.</p><p>This isn&#8217;t purely a reasoning problem. It isn&#8217;t purely a multimodal problem. It&#8217;s what happens when both need to work simultaneously, inside a task with a hidden structure, across multiple steps, without any single failure point to bail the model out.</p><p>Leaderboards measure capability ceiling &#8212; how high a model can score. Real work demands a capability floor &#8212; not making basic mistakes on a task that isn&#8217;t even that hard.</p><p>That&#8217;s the gap that matters.</p><p>There&#8217;s no shortage of LLM leaderboards. But here&#8217;s a pattern worth noticing: the model ranked first doesn&#8217;t always outperform the model ranked third when it comes to your actual work.</p><p>Why? Because leaderboards measure ceiling &#8212; how high a model can score. Real work demands a floor &#8212; consistently not getting the basics wrong.</p><p>OCR, PDF parsing, data matching, exchange rate calculation, Excel output &#8212; none of these is hard on its own. String them into a complete pipeline where the model has to orchestrate, decide, and self-correct across every step, and it turns out that&#8217;s still genuinely difficult in 2025.</p><div><hr></div><p>If this test was useful, feel free to share it. </p><p><em>Welcome to subscribe my account&#65306;zerofuturetech</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://zerofuturetech.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">zerofuturetech's newsletter is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</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>