<script data-pm-proxy="intercept"></script><?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[The Orchestra Data Leadership Newsletter]]></title><description><![CDATA[Articles on Data Leadership from from the executive team at Orchestra plus resources on #dataleadership from around the ecosystem]]></description><link>https://dataopsleadership.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!2dw1!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F450b65d6-02c0-419d-8930-dd09e0aa4ecf_1221x1221.png</url><title>The Orchestra Data Leadership Newsletter</title><link>https://dataopsleadership.substack.com</link></image><generator>Substack</generator><lastBuildDate>Fri, 04 Sep 2026 12:55:24 GMT</lastBuildDate><atom:link href="/__u/dataopsleadership.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Hugo Lu]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[dataopsleadership@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[dataopsleadership@substack.com]]></itunes:email><itunes:name><![CDATA[Hugo Lu]]></itunes:name></itunes:owner><itunes:author><![CDATA[Hugo Lu]]></itunes:author><googleplay:owner><![CDATA[dataopsleadership@substack.com]]></googleplay:owner><googleplay:email><![CDATA[dataopsleadership@substack.com]]></googleplay:email><googleplay:author><![CDATA[Hugo Lu]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[AI’s Chokehold | How to build a Data Team without AI Burnout and the AI Bottleneck]]></title><description><![CDATA[AI is exacerbating the bottleneck and burning out engineers]]></description><link>https://dataopsleadership.substack.com/p/ais-chokehold-how-to-build-a-data</link><guid isPermaLink="false">https://dataopsleadership.substack.com/p/ais-chokehold-how-to-build-a-data</guid><dc:creator><![CDATA[Hugo Lu]]></dc:creator><pubDate>Thu, 03 Sep 2026 08:10:04 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!mG0K!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3283a54-4155-47a4-b131-796418c7175c_1350x759.jpeg" 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="/__u/substackcdn.com/image/fetch/$s_!mG0K!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3283a54-4155-47a4-b131-796418c7175c_1350x759.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!mG0K!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3283a54-4155-47a4-b131-796418c7175c_1350x759.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!mG0K!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3283a54-4155-47a4-b131-796418c7175c_1350x759.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!mG0K!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3283a54-4155-47a4-b131-796418c7175c_1350x759.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!mG0K!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3283a54-4155-47a4-b131-796418c7175c_1350x759.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!mG0K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3283a54-4155-47a4-b131-796418c7175c_1350x759.jpeg" width="1350" height="759" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d3283a54-4155-47a4-b131-796418c7175c_1350x759.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:759,&quot;width&quot;:1350,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!mG0K!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3283a54-4155-47a4-b131-796418c7175c_1350x759.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!mG0K!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3283a54-4155-47a4-b131-796418c7175c_1350x759.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!mG0K!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3283a54-4155-47a4-b131-796418c7175c_1350x759.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!mG0K!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3283a54-4155-47a4-b131-796418c7175c_1350x759.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h2><strong>Introduction</strong></h2><p>It is going to be a rough couple of years for data teams.</p><p>I recently spoke to a friend who joined as the first data engineer at a company that raised $500m at a $10bn+ valuation. They were the sole engineer building the data platform. They worked 60+ hours, and always felt underwater. Their requests for an addditional team member were rejected.</p><p>AI is changing how Data Teams are built. <strong>There is more complexity to work through than ever before, expectations and demand are higher than ever before, but Data Team budgets are not growing in size.</strong></p><p>Specifically, many assume tokens are a substitute for manpower, which may be true to a point, but does not scale.</p><p>In this article we&#8217;ll run through the top things you need to be doing to build and scale a data team to avoid your team burning out.</p><h2><strong>Why do you need consider burnout when building a data platform? AI.</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!wqr-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd22d4635-656f-45e5-af22-b4f42e2f45d5_1304x643.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!wqr-!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd22d4635-656f-45e5-af22-b4f42e2f45d5_1304x643.png 424w, /__u/substackcdn.com/image/fetch/$s_!wqr-!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd22d4635-656f-45e5-af22-b4f42e2f45d5_1304x643.png 848w, /__u/substackcdn.com/image/fetch/$s_!wqr-!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd22d4635-656f-45e5-af22-b4f42e2f45d5_1304x643.png 1272w, /__u/substackcdn.com/image/fetch/$s_!wqr-!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd22d4635-656f-45e5-af22-b4f42e2f45d5_1304x643.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!wqr-!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd22d4635-656f-45e5-af22-b4f42e2f45d5_1304x643.png" width="1200" height="591.717791411043" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d22d4635-656f-45e5-af22-b4f42e2f45d5_1304x643.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:643,&quot;width&quot;:1304,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!wqr-!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd22d4635-656f-45e5-af22-b4f42e2f45d5_1304x643.png 424w, /__u/substackcdn.com/image/fetch/$s_!wqr-!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd22d4635-656f-45e5-af22-b4f42e2f45d5_1304x643.png 848w, /__u/substackcdn.com/image/fetch/$s_!wqr-!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd22d4635-656f-45e5-af22-b4f42e2f45d5_1304x643.png 1272w, /__u/substackcdn.com/image/fetch/$s_!wqr-!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd22d4635-656f-45e5-af22-b4f42e2f45d5_1304x643.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The Data Team Bowtie</p><p>The bowtie above illustrates the extreme pressureon data teams.</p><p>On the one hand, companies that are larger have a greater demand for services. This is being exacerbated by AI, with more and more companies choosing to be like Mid-Market or Enteprise companies where everyone wants to do everything with AI.</p><p>AI is also increasing the need for a more robust, fully-featured data stack. This leads to an increase in demand while reducing supply, creating massive pressure on the central data team. Concretely, there are a few ways to think about this.</p><h3><strong>MDS Expectations &gt; budget</strong></h3><p>Everyone wants context, lineage, observability, data quality, governance and self-service. These features are no longer treated as &#8220;nice to have&#8221;; they are expected from the data platform.</p><p>The budget rarely expands at the same rate. In dbt Labs&#8217; 2025 survey, only 30% of respondents reported a larger data budget and 40% reported increased headcount. In other words, most teams were expected to deliver more without receiving more people or money. <a href="https://www.getdbt.com/resources/state-of-analytics-engineering-2025?utm_source=chatgpt.com">Read the report</a>.</p><p>The result is predictable: engineers spend their time maintaining tooling, responding to alerts and explaining broken pipelines instead of building. Burnout is therefore not just a people problem. It is an architectural problem.</p><p><strong>Answer</strong>: you need to pick a single Agentic Control Plane that offers more features and easier &#8220;quick wins&#8221; without having a completely modular ad absurdum stack. Options like Databricks and Orchestra win here.</p><h3><strong>Data volumes are growing faster than data teams</strong></h3><p>The number of people operating the platform might remain roughly constant, but the number of sources, models, pipelines and consumers does not.</p><p>IDC&#8217;s latest Global DataSphere forecast expects data creation and consumption to continue expanding, driven partly by generative AI, IoT devices and increasingly complex digital activity. <a href="https://my.idc.com/getdoc.jsp?containerId=US53363625&amp;utm_source=chatgpt.com">View the IDC forecast</a>.</p><p>More data means more infrastructure, more dependencies and more ways for something to fail. If operating the platform requires engineers to manually monitor pipelines, investigate every failed task and coordinate every rerun, the workload scales directly with the volume of data. Eventually, the humans become the bottleneck.</p><p>A scalable data platform must therefore scale operations as well as compute. Short story is &#8212; buying an old-school tool like Y42, Weld or one of those weird shitty data warehouses like Panoply or perhaps even Postgres won&#8217;t hold up to the simple volume of data you&#8217;ll probably need.</p><p>Conclusion: leverage platforms built for scaling Big Data. Data Volumes are increasing. People want power. Give it to them.</p><p>Bonus: <strong>serverless orchestration. You are going to need at least three engines </strong>(compute engine e.g. Snowflake, orchestration engine, harness engine (Where you run agents)). Don&#8217;t put these all on clusters. It&#8217;s too much work.</p><h3><strong>AI means everyone wants to automate everything</strong></h3><p>AI has made automation accessible to almost anyone. Product, finance, operations and marketing teams can now use tools such as n8n to connect applications, call models and build workflows without waiting for a traditional engineering project.</p><p>This is already happening at scale. Trendyol grew n8n from a local proof of concept to more than 1,000 users, 700 active workflows and roughly half a million executions per quarter. Its case study also describes non-technical employees beginning to think about their everyday work as automatable flows. <a href="https://n8n.io/case-studies/trendyol/?utm_source=chatgpt.com">Read the n8n case study</a>. Pretty crazy stuff &#8212; I am not sure I would want to be managing that web of dependencies.</p><p>This is powerful, but every automation creates another dependency on data, infrastructure and APIs. Without central visibility, governance and observability, citizen automation does not remove work from the data team &#8212; it quietly creates more of it. The platform must make automation safe and operable without making engineers responsible for manually supervising everything.</p><h2><strong>How to build a data stack: the short answer</strong></h2><p>Figuring out where to spend time needs to go into 4 buckets.</p><ul><li><p><strong>Architecture</strong>: you need to pick your architecture correctly for the type of company you are. That means deciding if you&#8217;re going Kubernetes-first or using a Partner like Orchestra</p></li><li><p><strong>Buy-in</strong>: assess the type of company <em>you are. Your AI readiness is determined by your data readiness</em></p></li><li><p><strong>Budget: </strong>understanding if there is any budget for the team and how to cadence it is imperative</p></li><li><p><strong>Depth of solution</strong>: a data stack&#8217;s capability is infinite. You need to find a balance between what you need today, future scalability, and over-enginering</p></li></ul><h2><strong>The Modern Data Stack today: where to focus</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!Bqbq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e39cad8-aa42-4f13-96c0-82c259e95b6b_522x320.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!Bqbq!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e39cad8-aa42-4f13-96c0-82c259e95b6b_522x320.png 424w, /__u/substackcdn.com/image/fetch/$s_!Bqbq!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e39cad8-aa42-4f13-96c0-82c259e95b6b_522x320.png 848w, /__u/substackcdn.com/image/fetch/$s_!Bqbq!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e39cad8-aa42-4f13-96c0-82c259e95b6b_522x320.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Bqbq!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e39cad8-aa42-4f13-96c0-82c259e95b6b_522x320.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!Bqbq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e39cad8-aa42-4f13-96c0-82c259e95b6b_522x320.png" width="522" height="320" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4e39cad8-aa42-4f13-96c0-82c259e95b6b_522x320.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:320,&quot;width&quot;:522,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!Bqbq!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e39cad8-aa42-4f13-96c0-82c259e95b6b_522x320.png 424w, /__u/substackcdn.com/image/fetch/$s_!Bqbq!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e39cad8-aa42-4f13-96c0-82c259e95b6b_522x320.png 848w, /__u/substackcdn.com/image/fetch/$s_!Bqbq!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e39cad8-aa42-4f13-96c0-82c259e95b6b_522x320.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Bqbq!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e39cad8-aa42-4f13-96c0-82c259e95b6b_522x320.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The Bowtie expressed as a graph</figcaption></figure></div><p>There are essentially 4 ways to think of this</p><p><strong>Scenario 1</strong>: <strong>the over-zealous CTO</strong></p><p>In this scenario you have an over-zealous, penny pinching CTO in a company with very little Data and AI Readiness. This could be a SAAS company where many people are new to the company and data standards are not well defined. In this case, you may assume you need a complex solution but in fact you do not. So you should proceed to Step 1.</p><p><strong>Scenario 2: The early company</strong></p><p>This is a great scenario to be in where the most important thing is getting buy-in from higher-ups to get more budget. How should you build a data stack in an early company? Focus on high leverage tools like Snowflake, Orchestra, Databricks, and Anthropic. For example, you can use AI to build end to end pipelines using python and dbt running on Orchestra with Snowflake as a data warehouse.</p><p>Build these very minimally and always caveat &#8220;The data may not be reliable&#8221;, until you make it reliable. This is very important, as without effective expectation setting you cannot succeed</p><p><strong>Scenario 3: The late stage traditional company</strong></p><p>We engineers like to think of ourselves as unique, but we are not. Most SAAS companies and many companies in traditional industries have pretty standard data requirements.</p><p>This means that the technologies and patterns we use could in theory be standardised pretty well across them.</p><p>In a late stage traditional company, the complexity of solution or uniqueness of solution is low, but the demand for Data and AI is high.</p><p>In this case, you should adopt a similar approach to Scenario 2 but with more bells and whistles like observability, metadata, cataloging, and perhaps applications etc. to enable self-serve to scale the company and relieve pressure on the bowtie.</p><p><strong>Scenario 4: The late stage technology company</strong></p><p>Generally speaking, later stage technology companies are much better at hiring engineers than companies in traditional industries like manufacturing. These people want to build and own more of the stack, and spend more money on engineers instead of SAAS.</p><p>However, these engineers are often very bad at internally speccing SAAS Apps. For example, recently I spoke to a team that wanted to build their own MCP atop their data.</p><p>Rather than look at <a href="https://docs.snowflake.com/en/user-guide/snowflake-cortex/cortex-agents-mcp">Snowflake&#8217;s native offering</a>, an existing data MCP like <a href="https://docs.getorchestra.io/api/assets/list-assets">Orchestra</a>, they decided to build their own. It started as a simple Fast API router ontop of Postgres, before it was changed to a Graph DB, before deciding to evaluate other solutions in parallel. 8 months passed, no MCP.</p><p>This happens all the time with orchestration too. What starts out as an own-managed Airflow instance becomes ungovernable, so platform teams add Okta Auth, they spin up more instances, they start maintaining clusters, and then they realise they need a simpler way for people to schedule stuff, so they build UIs ontop of Airflow. This leaves a gigantic multi-tenanted unservable mess where a SAAS option like Orchestra would be much easier.</p><p>Instead, draw a distinction between platform and functional teams. The best place to leverage platform teams is compute. This means using clusters to save money for the data-heavy bits. Use the cluster to displace warehouse and ingestion compute as these are normally the heaviest. Here&#8217;s an example of this below.</p><h2><strong>Conclusion: build for scale, not burnout</strong></h2><p>AI does not remove work from the data team. It makes building new things cheaper, which creates more pipelines, more automations and more dependencies for someone to operate.</p><p>This is the real bottleneck. Tokens may help an engineer write code faster, but they do not replace architecture, governance or operational ownership. If one engineer is responsible for maintaining clusters, monitoring pipelines, fixing data quality issues and supervising hundreds of citizen-built automations, the platform has already failed &#8212; regardless of how sophisticated it looks.</p><p>There is no single perfect Modern Data Stack. An early-stage company should prioritise quick wins and expectation-setting. A traditional enterprise needs self-service, observability and governance. A late-stage technology company should reserve its engineers for genuinely differentiated infrastructure instead of rebuilding authentication, orchestration and metadata systems that already exist.</p><p>The answer is relatively simple: understand your company&#8217;s actual data and AI readiness, budget honestly, choose infrastructure that can scale, and automate the operational layer before demand becomes unmanageable.</p><p>For many teams, that means scalable compute through Snowflake or Databricks, transformation through dbt and an Agentic Control Plane like Orchestra to coordinate everything and give less technical users a governed way to build stuff that doesn&#8217;t require an army of consultants to maintain.</p><p>Your data team should enable the company &#8212; not become the human safety net holding its entire AI strategy together.</p><h2><strong>Frequently Asked Questions</strong></h2><h3><strong>What is a data stack?</strong></h3><p>A data stack is the collection of technologies an organisation uses to collect, store, transform, orchestrate and analyse data. It might include ingestion tools, a cloud data warehouse, dbt, an orchestration platform such as <a href="https://getorchestra.io/">Orchestra</a> and a business intelligence tool.</p><h3><strong>What is a modern data stack?</strong></h3><p>A modern data stack is a cloud-based set of tools for moving, storing, transforming, orchestrating and analysing data. It typically combines specialised platforms rather than relying on one large, all-in-one system. The companies that coined it originally were Fivetran and dbt, but fast-followers like Orchestra (an end-to-end data pipeline automation plaform) swiftly became a big part of it. A Modern Data Stack also goes by the term <a href="https://www.getorchestra.io/whitepaper/modular-microservices-data-architecture">Modular Data Architecture</a>.</p><h3><strong>What is modern data stack architecture?</strong></h3><p>Modern data stack architecture usually includes data sources, ingestion tools like Estuary, cloud storage or a warehouse like Snowflake, transformation software like dbt, orchestration and data quality/observability in a tool like Orchestra, and finally business intelligence. These components work together to move raw data into reliable, analytics-ready datasets. More architecture examples are available <a href="https://www.getorchestra.io/whitepapers">here</a>.</p>]]></content:encoded></item><item><title><![CDATA[AWS Acquires DuckLabs: A new future for DuckDB]]></title><description><![CDATA[This is less about the future of data on AWS than the DuckDB ecosystem]]></description><link>https://dataopsleadership.substack.com/p/aws-acquires-ducklabs-a-new-future</link><guid isPermaLink="false">https://dataopsleadership.substack.com/p/aws-acquires-ducklabs-a-new-future</guid><dc:creator><![CDATA[Hugo Lu]]></dc:creator><pubDate>Wed, 02 Sep 2026 08:07:12 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!OZS8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F678ab72d-f498-4628-9018-a839e8740b8e_945x462.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="/__u/substackcdn.com/image/fetch/$s_!OZS8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F678ab72d-f498-4628-9018-a839e8740b8e_945x462.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!OZS8!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F678ab72d-f498-4628-9018-a839e8740b8e_945x462.png 424w, /__u/substackcdn.com/image/fetch/$s_!OZS8!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F678ab72d-f498-4628-9018-a839e8740b8e_945x462.png 848w, /__u/substackcdn.com/image/fetch/$s_!OZS8!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F678ab72d-f498-4628-9018-a839e8740b8e_945x462.png 1272w, /__u/substackcdn.com/image/fetch/$s_!OZS8!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F678ab72d-f498-4628-9018-a839e8740b8e_945x462.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!OZS8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F678ab72d-f498-4628-9018-a839e8740b8e_945x462.png" width="945" height="462" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/678ab72d-f498-4628-9018-a839e8740b8e_945x462.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:462,&quot;width&quot;:945,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!OZS8!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F678ab72d-f498-4628-9018-a839e8740b8e_945x462.png 424w, /__u/substackcdn.com/image/fetch/$s_!OZS8!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F678ab72d-f498-4628-9018-a839e8740b8e_945x462.png 848w, /__u/substackcdn.com/image/fetch/$s_!OZS8!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F678ab72d-f498-4628-9018-a839e8740b8e_945x462.png 1272w, /__u/substackcdn.com/image/fetch/$s_!OZS8!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F678ab72d-f498-4628-9018-a839e8740b8e_945x462.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>Introduction</strong></h2><p>On 26 August 2026 the team in Amsterdam at DuckLabs / DuckDB and AWS announced the Amazon had signed a definitive agreement to acquire DuckLabs. To paraphrase:</p><blockquote><p><em>Hannes M&#252;hleisen and Mark Raasveldt, who created DuckDB and co-founded DuckLabs, will continue leading the team and the open-source project&#8217;s technical direction as part of AWS. The DuckDB open-source project will also continue to be driven by the DuckLabs team, remain open source under the independent Foundation (the non-profit that oversees DuckDB), and available under the MIT license as it does today (see <a href="https://ducklabs.com/ducklabs-to-join-aws">DuckLabs blog</a>).</em></p></blockquote><p>The move came as a surprise to much of the community, but was clearly well forecast for those in the know. As seen by the immediate release of Duck DB outgrowing its nest from Jordan (see <a href="https://motherduck.com/blog/duckdb-amazon/">here</a>) and the general very professional PR job that came with the announcement.</p><p>There are many questions.</p><p>First &#8212; the future of DuckDB. DuckDB has quickly become a community favourite, offering lightning-fast, in memory SQL atop newer and rawer storage formats like iceberg and parquet. It has become embedded in different products; from Databricks to some of AWS&#8217; analytics projects itself.</p><p>Typically we have seen open-source projects suffer significantly after acquisition, so you might think it&#8217;ll be interesting to see how that happens here.</p><p>Secondly &#8212; AWS. AWS Has long positioned itself as the &#8220;picks and shovels&#8221; for creating the modern data stack, with very many companies including Databricks and Snowflake <a href="https://www.snowflake.com/en/news/press-releases/snowflake-expands-aws-collaboration-with-6b-commitment-to-accelerate-enterprise-agentic-ai-adoption/">continuing to commit</a> more to AWS. Redshift or &#8220;Red****&#8221; has been unpopular for a long time. You may think that this signals the start of something different, for AWS.</p><p>And finally &#8212; what of Motherduck? The company just this week announced the intent to acquire <a href="https://www.linkedin.com/posts/towerdev_tower-joins-motherduck-to-close-the-ai-powered-activity-7498009251064315904-T9ec">tower.dev</a>, a python runtime provider, which seemed odd given the runtime launch of &#8220;Motherduck Flights&#8221; not a few months ago. Motherduck has an agreement with DuckLabs, and many assumed the fate of the two was intertwined. Now, it would appear that the flock is less sure.</p><p>Let&#8217;s DIVE in.</p><h2><strong>The future of DuckLabs and DuckDB after AWS</strong></h2><p>The community have been very clear that Duck DB remains OS and company keeps the IP.</p><p>Hannes said:</p><blockquote><p><em>Our team will remain together in Amsterdam, continuing our work on <a href="https://duckdb.org/">DuckDB</a>, <a href="https://ducklake.select/">DuckLake</a>, <a href="https://duckdb.org/quack">Quack</a>, and the broader community. Joining AWS gives us the resources and reach to bring this technology to many more developers and organizations, and to pursue ideas at a scale that would have been difficult for us to reach alone.</em></p><p><em>Most importantly, the foundations of the project will remain firmly in place. DuckDB and the other open-source components of the &#8220;Duck Stack&#8221; will remain free and open source under the MIT license, with the nonprofit <a href="https://duckdb.foundation/">DuckDB Foundation</a> continuing its stewardship of the projects.</em></p></blockquote><p>Really this is not about technology and ownership but about growth.</p><p>At the end of the day Hannes loves developing and talking about DuckDB and doing cool engineering stuff. He is an out and out engineer, but is also a huge amount of fun (he lives on a boat).</p><p>The team said:</p><blockquote><p><em>We also worried that scaling DuckLabs into a much larger sales, support, and operations organization would pull our attention away from the technical work and open-source community that made DuckDB successful in the first place.</em></p></blockquote><p>And this could not be truer. The data and AI market is absolutely savage right now, it is cut-throat, and selling DuckDB-as-a-service when it is so foundational is extremely hard (think about what it would take for you to sell spark-as-a-service or kafka-as-a-service; this is even more low-level than that).</p><p>To date, DuckLabs received revenue from development commitments from large organisations around the world. While sustainable, it was likely not scalable. So to firm up the developer env around DuckDB, it made sense that the team would look to bring in another investor.</p><p>Terms were not disclosed &#8212; which counts too.</p><h2><strong>Will AWS Create a managed Duck DB and finally get back in to the data stack?</strong></h2><p>Personally I don&#8217;t think so. DuckDB isn&#8217;t just &#8220;the answer&#8221; to the query engine and making iceberg mainstream.</p><p><em>See migrating to a <a href="/__u/dataopsleadership.substack.com/p/migrating-to-an-iceberg-lakehouse">iceberg lakehouse</a> by me</em></p><p>It will be more likely that DuckDB simply gives AWS strategic power over an incredible piece of technology that makes the other hyperscalers think twice about embedding it &#8212; that&#8217;s a great position to be in.</p><p>Adding a small hosted DuckDB Server with logging on stuff like EC2 instances would work well too.</p><p>There is a clear product roadmap progression where you could imagine duckdb running on an EC2, then perhaps on ECS, on Lambda, and eventually in a more distributed way (Kubernetes is not necessarily the answer here).</p><p>One thing is for sure &#8212; redshift is not going away anytime soon.</p><h2><strong>How does the DuckLabs acquisition impact Motherduck</strong></h2><p>There are a few important quotations from <a href="https://motherduck.com/blog/duckdb-amazon/">Motherduck&#8217;s blog post</a></p><blockquote><p><em>It is possible that in another couple of years this post will look hopelessly naive, as in &#8220;I&#8217;m sure that inviting the wolves over for a dinner party will turn out fine.&#8221;</em></p><p><em>Some day, Amazon will likely release their own service based on DuckDB. After all, they&#8217;re not acquiring Duck Labs just because they love open source. We agree that DuckDB is a great engine for building a cloud data warehouse, and appreciate that Amazon sees that too. We welcome the competition.</em></p></blockquote><p>They clearly are marketing their service as the enterprise offer for running a warehouse on duck db / running duck db at scale.</p><p>It&#8217;s an interesting position and one I greatly sympathise with. DuckDB is something that is loved by developers. It is loved by developers for its versatility and for its ability to run on one node.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!sLBF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd624989-82a1-438c-91af-06d217e5ca16_795x970.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!sLBF!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd624989-82a1-438c-91af-06d217e5ca16_795x970.png 424w, /__u/substackcdn.com/image/fetch/$s_!sLBF!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd624989-82a1-438c-91af-06d217e5ca16_795x970.png 848w, /__u/substackcdn.com/image/fetch/$s_!sLBF!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd624989-82a1-438c-91af-06d217e5ca16_795x970.png 1272w, /__u/substackcdn.com/image/fetch/$s_!sLBF!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd624989-82a1-438c-91af-06d217e5ca16_795x970.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!sLBF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd624989-82a1-438c-91af-06d217e5ca16_795x970.png" width="795" height="970" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dd624989-82a1-438c-91af-06d217e5ca16_795x970.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:970,&quot;width&quot;:795,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!sLBF!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd624989-82a1-438c-91af-06d217e5ca16_795x970.png 424w, /__u/substackcdn.com/image/fetch/$s_!sLBF!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd624989-82a1-438c-91af-06d217e5ca16_795x970.png 848w, /__u/substackcdn.com/image/fetch/$s_!sLBF!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd624989-82a1-438c-91af-06d217e5ca16_795x970.png 1272w, /__u/substackcdn.com/image/fetch/$s_!sLBF!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd624989-82a1-438c-91af-06d217e5ca16_795x970.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This means that the scenario where you are a big duckdb lover but also want to actually scale workloads across multiple duck DB instanceson different or similar-sized nodes, and are willing to pay for this &#8212; at least as far as being a DuckDB developer goes, is fairly unlikely.</p><p>Take nothing away from Motherduck. The warehouse is an incredible product capable of some seriously awesome stuff. Some of their customers refuse to publicise their use of Motherduck because they maintain it is such a competitive advantage they don&#8217;t want others to know.</p><p>However if you were a developer looking to easily host DuckDB, you probably are more inclined to take it from Amazon Web Services than to force it into a warehouse-centric product.</p><p>The other thing is commercial leverage. If your core technology is now owned by a competitor this tends to not be good. To give an example &#8212; at Orchestra we built our own state-aware transformation engine called <a href="https://github.com/orchestra-hq/sao-paolo">Sao Paolo</a> rather than rely on Fusion as the license kept changing.</p><h2><strong>Conclusion</strong></h2><p>It was a crazy week this week with nvidia acquiring Hugging face for almost $13bn, AWS Acquiring DuckLabs and then motherduck acquiring tower.dev at the start of the week. Three acquisitions all with completely different levels of magnitude</p><p>What it demonstrates is that these mini-battles are being fought at all levels.</p><p>We&#8217;ll likely see DuckDB remain an incredible community project but the other hyperscalers will need to think twice about embedding a piece of technology one of their competitors owns. Remember when <a href="https://www.azul.com/blog/the-checkered-history-of-oracle-java-pricing/">Oracle bought Java</a>?</p><p>For now, as the mother duck would say, keep on swimming.</p><p><strong>Sources</strong></p><p>DuckLabs acquired by Amazon on Amazon news (<a href="https://www.aboutamazon.com/news/company-news/aws-ducklabs">link</a>)</p><p>DuckLabs join AWS from DuckLabs (<a href="https://ducklabs.com/news/2026/08/26/ducklabs-to-join-aws">link</a>)</p><p>AWS and DuckLabs: Building the Future of Analytics (<a href="https://aws.amazon.com/blogs/big-data/aws-and-ducklabs-building-the-future-of-analytics-together/">link</a>)</p>]]></content:encoded></item><item><title><![CDATA[ORCHESTRA LAUNCHES AGENTIC CONTROL PLANE FOR ENTERPRISE DATA AND AI]]></title><description><![CDATA[Platform usage has grown more than 10x in the past year as data teams adopt the AI-native platform to build and govern pipelines and AI agents in one environment.]]></description><link>https://dataopsleadership.substack.com/p/orchestra-launches-agentic-control</link><guid isPermaLink="false">https://dataopsleadership.substack.com/p/orchestra-launches-agentic-control</guid><dc:creator><![CDATA[Hugo Lu]]></dc:creator><pubDate>Tue, 01 Sep 2026 15:51:39 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!EIWw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd8f13a7-6ac4-412b-a743-a6f17c57dd3a_1620x911.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!EIWw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd8f13a7-6ac4-412b-a743-a6f17c57dd3a_1620x911.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!EIWw!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd8f13a7-6ac4-412b-a743-a6f17c57dd3a_1620x911.png 424w, /__u/substackcdn.com/image/fetch/$s_!EIWw!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd8f13a7-6ac4-412b-a743-a6f17c57dd3a_1620x911.png 848w, /__u/substackcdn.com/image/fetch/$s_!EIWw!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd8f13a7-6ac4-412b-a743-a6f17c57dd3a_1620x911.png 1272w, /__u/substackcdn.com/image/fetch/$s_!EIWw!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd8f13a7-6ac4-412b-a743-a6f17c57dd3a_1620x911.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!EIWw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd8f13a7-6ac4-412b-a743-a6f17c57dd3a_1620x911.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fd8f13a7-6ac4-412b-a743-a6f17c57dd3a_1620x911.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!EIWw!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd8f13a7-6ac4-412b-a743-a6f17c57dd3a_1620x911.png 424w, /__u/substackcdn.com/image/fetch/$s_!EIWw!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd8f13a7-6ac4-412b-a743-a6f17c57dd3a_1620x911.png 848w, /__u/substackcdn.com/image/fetch/$s_!EIWw!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd8f13a7-6ac4-412b-a743-a6f17c57dd3a_1620x911.png 1272w, /__u/substackcdn.com/image/fetch/$s_!EIWw!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd8f13a7-6ac4-412b-a743-a6f17c57dd3a_1620x911.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Read <a href="http://www.getorchestra.io/blog/orchestra-raises-3-3m-to-bring-the-agentic-control-plane">free here</a></p><p>Today I am super excited to finally formally announce our fundraise where we raised $3.3m bringing our total raised to $4.6m. The reason we are announcing this now is because we&#8217;re seeing a massive opportunity in the market and I&#8217;ll explain that to you now.</p><p>Firstly demand&#8202;&#8212;&#8202;we are at the tip of the iceberg in AI adoption. With AI the barrier for doing stuff is lower. So everybody is a builder now. That means A) increased demand but B) demand for things that have more guardrails built-in, as the new ICP is completely different to a traditional data engineer who has been studying Kubernetes handbooks for multiple years</p><p>Second&#8202;&#8212;&#8202;supply. The Modern Data Stack was a fun experiment and now we know that instead of just SSIS in the cloud there are lots of other things we want too. Therefore, there is more to build than ever before, and Data Teams feel that pressure.</p><p>In addition&#8202;&#8212;&#8202;tokens and AI. Data Teams have not doubled headcount, but token budgets have exploded. Now, there is more pressure on teams to deliver than ever. If you have a big token budget and you&#8217;re a data team, you have no excuse&#8202;&#8212;&#8202;even without any more headcount.</p><p>Finally&#8202;&#8212;&#8202;governance. When things get easier, they become less governed. This was the overriding symptom of the &#8220;data swamp&#8221;&#8202;&#8212;&#8202;it got easier to put data into object storage as everyone obsessed over &#8220;Big data&#8221;, and thus everyone began to do it without thinking about how, why, or when. This created these huge &#8220;data swamps&#8221; of useless data.</p><p>The same thing is happening today with AI. Teams are rapidly building hundreds of not thousands of workflows in un-governed tools like n8n, cursor workflows, and claude scheduled tasks. This creates an &#8220;AI Swamp&#8221; with agents running around, spending money, duplicating work, without supervision and in some cases&#8202;&#8212;&#8202;any knowledge of their existence.</p><p>The problems are big, and the solutions are even bigger. It&#8217;s going to be a great year!<br>HL</p><div><hr></div><p><strong>LONDON, August 25, 2026&#8202;&#8212;&#8202;</strong><a href="https://www.getorchestra.io/">Orchestra</a>, the Agentic Control Plane for enterprise data and AI workflows, today announced its formal launch following a year in which platform usage grew more than 10x. Backed by $4.6 million in funding to date, the AI-native platform brings pipelines and governed AI agents into one environment, giving data teams greater control over how they build and operate across their existing technology stacks.</p><p>AI has created unprecedented demand for working with data, but Data and AI infrastructure supporting that shift is complex and costly. Data teams struggle to scale the Data and AI Platform beyond the data team, and spend their time acting as a bottleneck instead of an enabler. Orchestra removes that bottleneck by seamlessly connecting a company&#8217;s existing data infrastructure to form a context-aware control plane anyone can use to reliably automate data and AI workflows.</p><p>&#8220;AI is creating enormous demand across the enterprise, but data and now AI teams are still managing infrastructure that was never designed to support it,&#8221; said Hugo Lu, co-founder and CEO of Orchestra. &#8220;Orchestra gives them the control they need to move beyond being a service desk and build the platform teams use to drive AI adoption across the business.&#8221;</p><p>The company&#8217;s Serverless engine can orchestrate millions of tasks and agents in parallel meaning engineers do not need to rely on being able to maintain large clusters. Engineers can build through an intuitive interface or with a few lines of code, then monitor everything from the same place, with end-to-end visibility that exposes the dependencies behind each workflow and helps teams resolve failures before they affect the wider organization. More than 100 core integrations allow organizations to adopt Orchestra without replacing the technology they already use, and companies can implement the platform in weeks rather than spend years assembling the underlying infrastructure.</p><p>Customers have cut pipeline runtime costs by up to 80 percent and turned migrations that once took years into projects completed in a couple of months. The platform also cuts pipeline development time by up to 95 percent, while automating hundreds of failure investigations every day.</p><p>&#8220;We&#8217;re moving our entire dbt estate from Airflow to Orchestra,&#8221; said Mike Holmes, Global Head of Data Engineering, <a href="https://octopus.energy/">Octopus Energy</a>. &#8220;We&#8217;re excited about running agents alongside our data, giving them direct &amp; secure access to the context they need to take action. A big plus is keeping our stack simple &amp; easy to work with.&#8221;</p><p>Orchestra Runtime offers a secure environment for operating AI agents. Each agent runs in isolation with controlled access to the resources needed for its assignment. Companies can use Runtime to create pipelines, investigate production incidents and automate failure triage.</p><p>Runtime works with Orchestra&#8217;s Context Layer, which organizes information about an enterprise&#8217;s systems and workflows. This gives agents the relevant context to complete data engineering tasks accurately without opening the wider environment. Its model-agnostic design allows companies to choose the models that best meet their needs while using fewer tokens.</p><p>Together, Orchestra&#8217;s core orchestration platform and Runtime allow data engineers to support AI use across the enterprise without manually handling every request. Teams can provide a shared foundation that enables others to work with data and AI while preserving security and oversight.</p><p>The launch is supported by $4.6 million in total funding, including a $3.3 million seed round led by <a href="https://www.differential.vc/">Differential Ventures</a> and a $1.3 million pre-seed round led by <a href="https://www.moonfire.com/">Moonfire</a>, which returned for the seed financing. Additional backing came from Breakers, Tokyo Black, and Contour Ventures. The company is using the capital to expand its engineering and go-to-market teams in London, advance product development, and support growth across the United States and Europe.</p><blockquote><p>&#8220;The industry has only seen the tip of the iceberg of enterprise AI adoption and one of the most significant barriers to powerful AI systems deployed in production is reliable data pipeline management,&#8221; said Nick Adams, co-founder and managing partner at Differential Ventures. &#8220;Orchestra&#8217;s platform represents a major leap forward toward that objective by delivering a single data orchestration layer that customers love.&#8221;</p></blockquote><p><strong>ABOUT ORCHESTRA:</strong></p><p>Orchestra is the Agentic Control Plane for enterprise data and AI. It brings pipelines and governed agents into one environment so organizations can work faster with greater reliability and oversight. Companies like Experian, Octopus Energy, and more are using Orchestra as the foundation for their operations. Headquartered in London, Orchestra serves customers across the United States and Europe. Learn more at <a href="http://getorchestra.io">getorchestra.io</a>.</p><p><strong>MEDIA CONTACT</strong>: Lauren Gill, MAG PR at lauren<a href="mailto:nina@mooringadvisorygroup.com">@mooringadvisorygroup.com</a>.</p>]]></content:encoded></item><item><title><![CDATA[Do Databricks take all the pie? How organisations should be Partnering in 2026]]></title><description><![CDATA[Modern Data Stack Alliances are faltering]]></description><link>https://dataopsleadership.substack.com/p/do-databricks-take-all-the-pie-how</link><guid isPermaLink="false">https://dataopsleadership.substack.com/p/do-databricks-take-all-the-pie-how</guid><dc:creator><![CDATA[Hugo Lu]]></dc:creator><pubDate>Thu, 13 Aug 2026 18:21:29 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!5zNL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F284c8728-c240-4060-9f08-4a51c4db5473_1200x675.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="/__u/substackcdn.com/image/fetch/$s_!5zNL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F284c8728-c240-4060-9f08-4a51c4db5473_1200x675.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!5zNL!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F284c8728-c240-4060-9f08-4a51c4db5473_1200x675.png 424w, /__u/substackcdn.com/image/fetch/$s_!5zNL!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F284c8728-c240-4060-9f08-4a51c4db5473_1200x675.png 848w, /__u/substackcdn.com/image/fetch/$s_!5zNL!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F284c8728-c240-4060-9f08-4a51c4db5473_1200x675.png 1272w, /__u/substackcdn.com/image/fetch/$s_!5zNL!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F284c8728-c240-4060-9f08-4a51c4db5473_1200x675.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!5zNL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F284c8728-c240-4060-9f08-4a51c4db5473_1200x675.png" width="1200" height="675" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/284c8728-c240-4060-9f08-4a51c4db5473_1200x675.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:675,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!5zNL!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F284c8728-c240-4060-9f08-4a51c4db5473_1200x675.png 424w, /__u/substackcdn.com/image/fetch/$s_!5zNL!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F284c8728-c240-4060-9f08-4a51c4db5473_1200x675.png 848w, /__u/substackcdn.com/image/fetch/$s_!5zNL!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F284c8728-c240-4060-9f08-4a51c4db5473_1200x675.png 1272w, /__u/substackcdn.com/image/fetch/$s_!5zNL!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F284c8728-c240-4060-9f08-4a51c4db5473_1200x675.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>What has always fascinated me is the difference in sales culture vs. product in the data industry.</p><p>Companies like Snowflake are very difficult to partner with, but in practice a bit easier as their ecosystem is missing core functionality that naturally lends itself to partnership.</p><p>Companies like Databricks commercially are easier to partner with, but in practice finding the niche is harder.</p><p>This week, we announced that Orchestra is officially a databricks partner (woo!). But it hasn&#8217;t been easy. Partnering with the megaton gorilla in the room is hard - especially when they are building everything under the sun.</p><p>There are a few interesting things to note here.</p><ol><li><p>Outcomes matter</p></li></ol><p>Companies like Sigma have done an exceptional job at partnering with organisations like Databricks, not least because they send a ton of compute down there. This is key, but something that is also key is <em>outcomes. </em>The BI Tools are able to drive outcomes and adoption metrics for Databricks where &#8220;Apps alone&#8221; doesn&#8217;t quite get the buy-in a single vendor might push for. </p><p>Similarly at Orchestra, we send a ton of compute via the pipelining and transformation layer. This is attractive at scale, because databricks workflows doesn&#8217;t cut the mustard or scale well across multiple domains</p><ol start="2"><li><p>Partnerships must find a niche</p></li></ol><p>Ultimately there must be a niche and a scale problem for people to partner with companies like Databricks. They almost begin to resemble Azure, offering everything without one thing being absolutely killer or standalone. </p><ol start="3"><li><p>AI is critical</p></li></ol><p>There are rumours spreading that Databricks recently signed its first <strong>$1bn dollar deal </strong>which is pretty incredible and almost certainly has AI as a critical part. Unity Catalog is not the perfect context store for data teams, and running all your AI on Databricks does not meet the definition of &#8220;Meeting people where they are&#8221;. Embedding Databricks Services as first party citizens in AI products will, I think, be an increasingly important part of how organisations partner with large companies in the data space going forward.</p><p>Anyway we are very excited about this. If you know folks managing multiple teams on Databricks send them this! Here is the full announcement.</p><h2>Orchestra is Officially a Databricks Partner</h2><p>Today, we are excited to announce <a href="https://www.getorchestra.io/blog/orchestra-and-databricks-partnership">Orchestra&#8217;s partnership with Databricks</a>.</p><p>Databricks has become the platform on which many of the world&#8217;s largest organisations build their most important data and AI workloads. Orchestra gives those teams the control plane they need to build, run and monitor those workloads alongside the rest of their data stack.</p><p>Together, Databricks and Orchestra provide a powerful foundation for enterprise data and AI: Databricks supplies the scalable compute, storage, governance and intelligence layer, while Orchestra coordinates the end-to-end workflows that make everything work reliably in production.</p><p>&#8220;Databricks gives data teams an incredibly powerful platform for building data and AI products. The challenge is coordinating everything around it: dbt<sup>TM</sup>, Lakeflow, ingestion, BI, cloud infrastructure and now AI agents,&#8221; says Orchestra CEO Hugo Lu. &#8220;Our partnership with Databricks gives enterprises a simple, scalable control plane for doing exactly that&#8212;without forcing them to build and maintain another orchestration platform themselves.&#8221;</p><p>The partnership formalises work Orchestra is already doing with some of the largest and most advanced data teams in the world.</p><p>Octopus Energy, the UK&#8217;s largest energy provider, uses Orchestra with Databricks to power a multi-tenanted analytics platform containing more than 5,000 dbt models across over 10 business units. Instead of maintaining a custom fork of Airflow, its teams can use Orchestra&#8217;s state-aware orchestration to run dbt intelligently on Databricks and give engineers a single place to understand the health of the wider platform.</p><p>Engineers can work in YAML and Git, while analysts and other data practitioners can use Orchestra&#8217;s visual interface. Platform teams retain control through environments, workspaces, RBAC, SSO and SCIM without forcing every contributor to become an Airflow expert.</p><p>That is exactly what this partnership is about: helping enterprises get more from Databricks while reducing the orchestration code, infrastructure and operational overhead required to run it.</p><h2>What is Orchestra?</h2><p><a href="https://www.getorchestra.io/">Orchestra</a> is the agentic control plane for data and AI workflows.</p><p>It gives data teams a declarative, code-first and GUI-driven environment for building pipelines, running dbt, coordinating infrastructure and executing AI agents. Orchestration, lineage, observability, alerting, data quality and incident management are included in one platform.</p><p>Orchestra is not the data-processing engine. Workloads continue to run on the customer&#8217;s own compute&#8212;including Databricks&#8212;while Orchestra coordinates execution and collects the operational context teams need to understand what happened.</p><p>This serverless architecture is particularly valuable for enterprises using Databricks as part of a wider ecosystem. A pipeline may start with ingestion through Fivetran, Airbyte or a custom Python service, continue through Databricks and dbt, and finish in Power BI, Tableau, Sigma or an operational application. Orchestra coordinates the entire workflow rather than stopping at the boundary of a single platform.</p><p>Data teams therefore get the power of Databricks without having to force every workload into Databricks or maintain a separate orchestration framework around it.</p><h2>How does Orchestra integrate with Databricks?</h2><p>Orchestra provides a<a href="https://www.getorchestra.io/technology/databricks"> deep integration with Databricks</a> that combines workflow execution with metadata, lineage, observability and data quality.</p><p>Teams can use Orchestra to coordinate Databricks SQL, notebooks, one-time runs and<a href="https://docs.databricks.com/aws/en/jobs/"> Lakeflow Jobs</a> inside larger end-to-end pipelines. Runs, dependencies, logs, retries and alerts are available in one place, including the steps that execute outside Databricks.</p><p>This is not simply a thin API call wrapped in a generic task. Orchestra understands what the underlying operation is doing and brings the resulting operational context into the control plane.</p><p>The result is a much better developer and operator experience: less boilerplate, faster root-cause analysis and complete visibility across the data stack.</p><h2>The best way to run dbt<sup>TM</sup> Core on Databricks</h2><p>Databricks is an exceptional compute engine for dbt, but operating a large dbt project still creates difficult scheduling and observability problems.</p><p>As projects grow, teams typically create more tags, selectors and scheduled jobs. Models are frequently rebuilt even when neither their code nor their upstream data has changed. Different teams create overlapping schedules, while engineers are left piecing together dbt artifacts, Databricks logs and orchestration metadata when something fails.</p><p>Orchestra&#8217;s<a href="https://www.getorchestra.io/blog/announcing-state-aware-orchestration-sao-in-orchestra"> state-aware orchestration</a> solves this problem without requiring teams to replace dbt Core with a proprietary transformation engine.</p><p>Orchestra stores and understands the previous state of the dbt project. It can then rebuild a model when its code has changed or fresh upstream data is available, while safely reusing models that do not need to run again.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!fpp6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e57e13d-8779-4726-9dcc-0003179b97d3_1000x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!fpp6!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e57e13d-8779-4726-9dcc-0003179b97d3_1000x1000.png 424w, /__u/substackcdn.com/image/fetch/$s_!fpp6!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e57e13d-8779-4726-9dcc-0003179b97d3_1000x1000.png 848w, /__u/substackcdn.com/image/fetch/$s_!fpp6!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e57e13d-8779-4726-9dcc-0003179b97d3_1000x1000.png 1272w, /__u/substackcdn.com/image/fetch/$s_!fpp6!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e57e13d-8779-4726-9dcc-0003179b97d3_1000x1000.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!fpp6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e57e13d-8779-4726-9dcc-0003179b97d3_1000x1000.png" width="1000" height="1000" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9e57e13d-8779-4726-9dcc-0003179b97d3_1000x1000.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1000,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!fpp6!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e57e13d-8779-4726-9dcc-0003179b97d3_1000x1000.png 424w, /__u/substackcdn.com/image/fetch/$s_!fpp6!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e57e13d-8779-4726-9dcc-0003179b97d3_1000x1000.png 848w, /__u/substackcdn.com/image/fetch/$s_!fpp6!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e57e13d-8779-4726-9dcc-0003179b97d3_1000x1000.png 1272w, /__u/substackcdn.com/image/fetch/$s_!fpp6!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e57e13d-8779-4726-9dcc-0003179b97d3_1000x1000.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Octopus Energy run dbt with Orchestra on Databricks</figcaption></figure></div><p>&#8205;</p><p>This gives teams running <a href="https://www.getorchestra.io/technology/orchestra-dbt-core-tm">dbt on Databricks</a> several immediate benefits:</p><ul><li><p>Faster dbt runs because unchanged models can be reused</p></li><li><p>Lower compute costs because Databricks does not process data unnecessarily</p></li><li><p>Simpler scheduling without maintaining a growing collection of tags and selectors</p></li><li><p>Clear lineage showing which models ran, which were reused and why</p></li><li><p>A shared state across pipelines within an Orchestra workspace</p></li></ul><p>Octopus Energy demonstrates what this looks like at genuine enterprise scale. Orchestra state-aware orchestration helps the company coordinate more than 5,000 dbt models on Databricks across a multi-team, multi-domain environment. This is not a small proof of concept; it is an operating model for one of Europe&#8217;s most ambitious technology businesses.</p><h2>One control plane for Lakeflow, notebooks, SQL and dbt</h2><p>Enterprises rarely standardise on a single way of building inside Databricks.</p><p>One team may use notebooks. Another may use dbt Core. A third may build batch or streaming workloads using<a href="https://docs.databricks.com/aws/en/ldp/concepts/"> Lakeflow Spark Declarative Pipelines</a>. Platform teams may package jobs and pipelines through<a href="https://docs.databricks.com/aws/en/dev-tools/bundles/"> Declarative Automation Bundles</a>, formerly known as Databricks Asset Bundles.</p><p>Orchestra provides a common control plane above them. Teams can coordinate native Databricks workloads alongside external ingestion, transformation, BI and activation services. They can define dependencies declaratively, pass outputs between tasks, trigger workflows from events or schedules, and rerun from the point of failure.</p><p>This allows teams to use the right Databricks capability for each workload while retaining one consistent approach to orchestration, monitoring and incident response.</p><h2>Extending Unity Catalog as the Context Layer for AI</h2><p><a href="https://docs.databricks.com/aws/en/data-governance/unity-catalog/">Unity Catalog</a> provides a governed foundation for discovering and controlling data and AI assets in Databricks, but it lacks specific operational and business context often living outside of Databricks. Through the Context Layer, Orchestra provides this metadata which acts as a foundation for the <a href="https://www.getorchestra.io/product/agent-runtime">Agent Runtime</a> - a single place to run AI Agents leveraging Databricks.</p><p>Orchestra can track tables and views registered in Unity Catalog, including column metadata and data quality test activity. It then combines this asset context with pipeline runs, dbt lineage, logs, failures and dependencies from across the wider stack.</p><p>This matters because enterprise lineage does not begin and end inside a single compute platform. Source data may arrive through an external ingestion service, while the final asset may be consumed by a BI dashboard or operational workflow elsewhere.</p><p>This means that the Agent Runtime uses less tokens than claude, achieves its goals in a fraction of the time, and is able to debug and diagnose pipeline failures end-to-end with greater reliability.</p><h2>Who uses Orchestra and Databricks?</h2><p>Orchestra is designed for enterprises and fast-growing teams using Databricks for analytics engineering, data engineering, machine learning and AI.</p><p>It is especially valuable where:</p><ul><li><p>Multiple teams or business domains share a Databricks platform</p></li><li><p>dbt projects have grown too large for simple cron-based scheduling</p></li><li><p>Databricks workloads must be coordinated with tools outside the Lakehouse</p></li><li><p>Teams need end-to-end lineage and observability without building it themselves</p></li><li><p>An existing Airflow, Azure Data Factory or custom orchestration estate has become expensive to maintain</p></li><li><p>Organisations want to introduce AI agents without sacrificing security, governance or control</p></li></ul><p>For migration and transformation programmes, introducing a unified control plane early prevents orchestration logic, alerts and metadata from becoming fragmented across notebooks, scripts and individual tools.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!8ciq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa17b07dc-456c-44bf-bb06-07b2e99ab33b_1000x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!8ciq!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa17b07dc-456c-44bf-bb06-07b2e99ab33b_1000x1000.png 424w, /__u/substackcdn.com/image/fetch/$s_!8ciq!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa17b07dc-456c-44bf-bb06-07b2e99ab33b_1000x1000.png 848w, /__u/substackcdn.com/image/fetch/$s_!8ciq!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa17b07dc-456c-44bf-bb06-07b2e99ab33b_1000x1000.png 1272w, /__u/substackcdn.com/image/fetch/$s_!8ciq!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa17b07dc-456c-44bf-bb06-07b2e99ab33b_1000x1000.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!8ciq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa17b07dc-456c-44bf-bb06-07b2e99ab33b_1000x1000.png" width="1000" height="1000" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a17b07dc-456c-44bf-bb06-07b2e99ab33b_1000x1000.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1000,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!8ciq!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa17b07dc-456c-44bf-bb06-07b2e99ab33b_1000x1000.png 424w, /__u/substackcdn.com/image/fetch/$s_!8ciq!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa17b07dc-456c-44bf-bb06-07b2e99ab33b_1000x1000.png 848w, /__u/substackcdn.com/image/fetch/$s_!8ciq!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa17b07dc-456c-44bf-bb06-07b2e99ab33b_1000x1000.png 1272w, /__u/substackcdn.com/image/fetch/$s_!8ciq!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa17b07dc-456c-44bf-bb06-07b2e99ab33b_1000x1000.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Coorstek accelerated their Databricks migration from over a year to a matter of months with Orchestra</figcaption></figure></div><p>&#8205;</p><p>See<a href="https://www.getorchestra.io/case-studies"> Orchestra customer stories</a> to learn how enterprise data teams are simplifying their platforms and delivering data products faster.</p><h2>What is next for Orchestra and Databricks?</h2><p>This partnership is the beginning of a much deeper collaboration. We will continue investing into providing greater visibility for data teams into other parts of the platform such as Lakeflow declarative pipelines, Databricks Apps, and Agents.</p><p>We will look to support models hosted in Unity Gateway via the Orchestra <a href="https://www.getorchestra.io/product/agent-runtime">Agent Runtime</a>. We will continue to invest into the Orchestra Context layer as a means of <a href="https://docs.getorchestra.io/docs/agentic-workflow-templates#load-orchestra-metadata-to-warehouse-dlt">hydrating Unity Catalog</a> to create a single place for engineering Context as well as pipelines.</p><p>Databricks gives enterprises the platform to build the future of data and AI. Orchestra gives them the control plane to run it. We&#8217;re very excited to continue this awesome partnership.</p><h2>Find out more</h2><ul><li><p>Explore<a href="https://www.getorchestra.io/technology/databricks"> Orchestra for Databricks</a></p></li><li><p>Read the<a href="https://docs.getorchestra.io/docs/integrations/databricks"> Databricks integration documentation</a></p></li><li><p>Learn about<a href="https://www.getorchestra.io/blog/announcing-state-aware-orchestration-sao-in-orchestra"> state-aware orchestration for dbt Core</a></p></li><li><p><a href="https://app.getorchestra.io/signup?utm_campaign=databricks_partnership">Try Orchestra</a></p></li><li><p><a href="https://calendly.com/hugo-lu-confirmed/30min?utm_campaign=databricks_partnership">Book a conversation with the Orchestra team</a></p></li></ul><p>For partnership, customer or press enquiries, contact legal@getorchestra.io.</p><p></p>]]></content:encoded></item><item><title><![CDATA[ELT is moving back to best-of-breed and Orchestration is the missing piece]]></title><description><![CDATA[Why the new &#8220;ELT&#8221; is just &#8220;ETL&#8221; again]]></description><link>https://dataopsleadership.substack.com/p/elt-is-moving-back-to-best-of-breed</link><guid isPermaLink="false">https://dataopsleadership.substack.com/p/elt-is-moving-back-to-best-of-breed</guid><dc:creator><![CDATA[Hugo Lu]]></dc:creator><pubDate>Thu, 06 Aug 2026 08:02:05 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!vC8s!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38561ca0-053f-477b-b7df-e80622cd56ac_960x640.gif" 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="/__u/substackcdn.com/image/fetch/$s_!vC8s!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38561ca0-053f-477b-b7df-e80622cd56ac_960x640.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!vC8s!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38561ca0-053f-477b-b7df-e80622cd56ac_960x640.gif 424w, /__u/substackcdn.com/image/fetch/$s_!vC8s!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38561ca0-053f-477b-b7df-e80622cd56ac_960x640.gif 848w, /__u/substackcdn.com/image/fetch/$s_!vC8s!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38561ca0-053f-477b-b7df-e80622cd56ac_960x640.gif 1272w, /__u/substackcdn.com/image/fetch/$s_!vC8s!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38561ca0-053f-477b-b7df-e80622cd56ac_960x640.gif 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!vC8s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38561ca0-053f-477b-b7df-e80622cd56ac_960x640.gif" width="960" height="640" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/38561ca0-053f-477b-b7df-e80622cd56ac_960x640.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:640,&quot;width&quot;:960,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:527818,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://dataopsleadership.substack.com/i/209847679?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38561ca0-053f-477b-b7df-e80622cd56ac_960x640.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!vC8s!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38561ca0-053f-477b-b7df-e80622cd56ac_960x640.gif 424w, /__u/substackcdn.com/image/fetch/$s_!vC8s!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38561ca0-053f-477b-b7df-e80622cd56ac_960x640.gif 848w, /__u/substackcdn.com/image/fetch/$s_!vC8s!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38561ca0-053f-477b-b7df-e80622cd56ac_960x640.gif 1272w, /__u/substackcdn.com/image/fetch/$s_!vC8s!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38561ca0-053f-477b-b7df-e80622cd56ac_960x640.gif 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The ol &#8220;Switcheroo&#8221;</figcaption></figure></div><h3>An introduction</h3><p>Recently we&#8217;ve seen a ton of movement in the market with consolidation and it almost begins to sound like a broken record. However&#8202;&#8212;&#8202;data quality, trust, speed of delivery, and value are bigger problems than ever. Data Teams are getting cut. More is being asked of Data Teams. Executives want data faster. Data Platform Teams are now AI and Data Platform Teams. So there is more work than ever to be done, and paradoxically, we seem to have less hands albeit more tokens to do it.</p><p>ELT, or specifically EL (extract and load) remains a critical part of the stack. Every enterprise data engineer I speak to is principally concerned with moving data, replicating databases, and replicating data across regions.</p><p>However, there is some light forming. API connectors are now so easy to build, you can just get AI to write the code for them, leaving infrastructure as the missing piece.</p><p>Database replication remains something that is gnarly. One of the final challenges or &#8220;ELT FINAL BOSS&#8221; might be cross-region replication across different buckets in different cloud providers in different regions; that&#8217;s really exciting stuff.</p><p>In this, I want to cover a bit about how setting up pipelines means you now need best-of-breed to really feel like an &#8220;AI-Enabled engineer&#8221;. What is best of breed? Well&#8202;&#8212;&#8202;certainly not an all-in-one platform.</p><p>There is a growing divide between those who &#8220;simply do everything in Fabric&#8221;.</p><p>These people are willing to accept that Microsoft has the biggest fist in the room, and consequently are happy to have their orchestration, monitoring, and ELT subsidised by their extortionately priced Power BI licenses.</p><p>Databricks to an extent are in the same category, though Databricks is a better product.</p><p>Snowflake <em>want </em>to be in that category, but put simply Snowflake Tasks, Snowflake dbt, Snowflake Horizon, OpenFlow etc. are inferior products to their Databricks counterparts, and far inferior to those things on the market specialising in their niche.</p><p>So perhaps it makes sense to have a complex architecture with Fivetran, dbt Cloud, Apache Airflow, Kubernetes, Datadog, Monte Carlo, Atlan, Cube.dev and Tableau?</p><p>Perhaps not&#8202;&#8212;&#8202;such a combination is rather expensive, and rather hard to stitch together. Let&#8217;s face it&#8202;&#8212;&#8202;there&#8217;s a lot of overlap between those tools that were all once heralded as &#8220;Best of breed&#8221; but they&#8217;re not anymore. Why not?</p><p>It is telling that companies like Informatica, that used to be best of breed, no longer are because they are &#8220;too clunky&#8221;. The same is said for companies like Matillion, though <a href="https://uk.finance.yahoo.com/news/matillion-names-data-integration-pioneer-150000810.html">they have a new CEO</a> and a ton of new hires, which should tell you something. </p><p>Fundamentally these companies offer three things</p><ol><li><p>Data movement</p></li><li><p>Some form of data transformation</p></li><li><p>Some limited alerting and orchestration / scheduling</p></li></ol><p>The biggest missing piece in all of this? An enterprise orchestrator. The biggest and #1 time-sink for companies without an orchestrator operating at scale is building, fixing, debugging, and answering questions stakeholders have of &#8220;where is my data&#8221; and &#8220;Why isn&#8217;t this fresh?&#8221;&#8202;&#8212;&#8202;the answer as you all know&#8202;&#8212;&#8202;is a lack of orchestration, and a lack of observability. </p><p>Best of breed is no longer the categories that the Modern Data Stack gave us. Best of breed for me at least, now encompasses a few smaller categories</p><ol><li><p>Data Movement and Data Replication</p></li><li><p>Data Storage and Compute</p></li><li><p>Control Plane (Orchestration + Observability + Metadata + incident management + runtime for agents)</p></li></ol><p>It is no surprise to see Fivetran and dbt pitch themselves as everything you need. They did this last year.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!Lu7K!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4279e4a7-485a-4c62-b84a-a981e7a5d148_1974x1152.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!Lu7K!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4279e4a7-485a-4c62-b84a-a981e7a5d148_1974x1152.png 424w, /__u/substackcdn.com/image/fetch/$s_!Lu7K!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4279e4a7-485a-4c62-b84a-a981e7a5d148_1974x1152.png 848w, /__u/substackcdn.com/image/fetch/$s_!Lu7K!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4279e4a7-485a-4c62-b84a-a981e7a5d148_1974x1152.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Lu7K!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4279e4a7-485a-4c62-b84a-a981e7a5d148_1974x1152.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!Lu7K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4279e4a7-485a-4c62-b84a-a981e7a5d148_1974x1152.png" width="1456" height="850" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4279e4a7-485a-4c62-b84a-a981e7a5d148_1974x1152.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:850,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;What is open data infrastructure? How is it different from the modern data  stack? | dbt Labs&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="What is open data infrastructure? How is it different from the modern data  stack? | dbt Labs" title="What is open data infrastructure? How is it different from the modern data  stack? | dbt Labs" srcset="/__u/substackcdn.com/image/fetch/$s_!Lu7K!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4279e4a7-485a-4c62-b84a-a981e7a5d148_1974x1152.png 424w, /__u/substackcdn.com/image/fetch/$s_!Lu7K!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4279e4a7-485a-4c62-b84a-a981e7a5d148_1974x1152.png 848w, /__u/substackcdn.com/image/fetch/$s_!Lu7K!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4279e4a7-485a-4c62-b84a-a981e7a5d148_1974x1152.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Lu7K!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4279e4a7-485a-4c62-b84a-a981e7a5d148_1974x1152.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Where is Snowflake here?</figcaption></figure></div><p>This was the same pitch as Informatica, Matillion and lo! The trend is coming back.</p><p>Apart from you us data engineers have memories, and they&#8217;re short but not <em>that short!</em></p><p><em>Further examples and reading lifted from last week - skip to the end for conclusion</em></p><h3>Example: How to build an ELT Pipeline end-to-end using AI with Estuary and Orchestra</h3><p>Orchestra does can move data using python and it transforms data using dbt. It is a baby step in ELT; where you use Orchestra to run python to move data before graduating to a managed ELT tool.</p><p>Its main job is to decide whether the next thing should run, given the state of everything upstream of it. That framing sounds narrow until you notice that most of what upstream consists of is software we did not write and cannot inspect from the inside.</p><p>This means the interesting engineering in an orchestrator is almost entirely about integrations. Every one we ship is an answer to a specific version of the same question: how does a scheduled task find out whether the system it depends on is in a state worth depending on.</p><p><a href="https://www.getorchestra.io/blog/agentic-elt-pipelines-with-estuary">Daniel P&#225;lma at Estuary recently built a pipeline</a> that made this concrete enough to write about, and the result is a good illustration of why I think about integrations the way I do.</p><h3>The setup: postgres CDC to Snowflake using Estuary</h3><p>Postgres CDC into Snowflake through Estuary, running continuously. On top of that, an Orchestra pipeline running daily: dbt build, then four Snowflake data-quality tests. Seven tasks, scheduled.</p><p>The whole thing was authored by agents using two skill packs, ours and Estuary&#8217;s, against live accounts. It took nine runs to go green. Five of those nine runs failed at the same place, which is the part worth talking about.</p><h3>The gap that best-of-breed opens up: streaming</h3><p>Traditional orchestration assumes discrete work. A job starts, does something, exits with a code, and the orchestrator reads that code to decide what happens next. The model is clean because the boundaries are clean.</p><p>A streaming CDC pipeline has no boundaries of that kind. It is always running. There is no exit code, and there is no moment at which it declares itself finished. So when a daily dbt build wakes up and reads a warehouse table that a streaming pipeline has been writing to for the last twenty-four hours, it has no principled way of knowing whether that table is trustworthy.</p><p><strong>This is the new best-of-breed. You need to basically just assume that data is getting streamed and replicated in real-time, especially if it&#8217;s db stuff. There is less stuff to orchestrate, but no less stuff to monitor.</strong></p><p><strong>Takeaway #1: streaming reduces the need for orchestration but increases the need for observability</strong></p><p>In practice teams close this gap by writing a Python task that calls an API, parses a response and raises an exception. I have seen that task written many times. It is written slightly wrong most times, usually because the person writing it picked the first available signal rather than the right one, and because the failure semantics were decided in a hurry.</p><p>That pattern is exactly the shape of thing an integration should absorb. So ESTUARY_CHECK_FLOW takes four parameters:</p><pre><code><code>check_capture:
integration: ESTUARY
integration_job: ESTUARY_CHECK_FLOW
parameters:
task: dani-demo/agent-demo/source-postgres
error_threshold: 0
warn_threshold: 0
latency_threshold: 1800
connection: ${{ ENV.ESTUARY_CONNECTION }}</code></code></pre><p>It reads the Estuary task&#8217;s OpenMetrics endpoint and compares deltas against the previous check. New logged failures above threshold, or latency above threshold, and the task fails. No transaction progress, and it warns.</p><h3>Read metrics, not liveness for observability</h3><p>The first design rule I hold integrations to is that a check has to tell you something you could not have learned from a ping.</p><p>A liveness endpoint tells you a process is up. That is close to useless as a precondition, because the failure mode you actually care about is a pipeline that is running and not making progress. logged_failures_total, txn_count_total and publish latency are the signals that distinguish those two states, and reading deltas rather than absolutes is what makes them meaningful across scheduled runs.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!A6gn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43dcfef5-4307-4e97-946f-b1e34bbfc443_1080x623.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!A6gn!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43dcfef5-4307-4e97-946f-b1e34bbfc443_1080x623.png 424w, /__u/substackcdn.com/image/fetch/$s_!A6gn!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43dcfef5-4307-4e97-946f-b1e34bbfc443_1080x623.png 848w, /__u/substackcdn.com/image/fetch/$s_!A6gn!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43dcfef5-4307-4e97-946f-b1e34bbfc443_1080x623.png 1272w, /__u/substackcdn.com/image/fetch/$s_!A6gn!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43dcfef5-4307-4e97-946f-b1e34bbfc443_1080x623.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!A6gn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43dcfef5-4307-4e97-946f-b1e34bbfc443_1080x623.png" width="1080" height="623" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/43dcfef5-4307-4e97-946f-b1e34bbfc443_1080x623.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:623,&quot;width&quot;:1080,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!A6gn!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43dcfef5-4307-4e97-946f-b1e34bbfc443_1080x623.png 424w, /__u/substackcdn.com/image/fetch/$s_!A6gn!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43dcfef5-4307-4e97-946f-b1e34bbfc443_1080x623.png 848w, /__u/substackcdn.com/image/fetch/$s_!A6gn!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43dcfef5-4307-4e97-946f-b1e34bbfc443_1080x623.png 1272w, /__u/substackcdn.com/image/fetch/$s_!A6gn!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43dcfef5-4307-4e97-946f-b1e34bbfc443_1080x623.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Estuary UI</figcaption></figure></div><p>There is a cost to this precision, and Dani found it. Our latency metric measures commit acknowledgement, so it reads in the hundreds of seconds even when Snowflake is nine seconds behind Postgres. A threshold set from a data freshness SLA will false-alarm continuously. That is on us to document better, and the practical advice is to tune the threshold against the metric you are actually reading.</p><p><strong>Takeaway #2: observability and visibility is critical for streaming pipelines which are best-in breed, but it needs to be combined with visibility of batch pipelines</strong></p><h3>Three states, because infrastructure is mostly degraded</h3><p>The second rule, and the one I would defend hardest: a health check needs three outcomes rather than two.</p><p>Binary checks force an unpleasant choice. Make them strict and they block good runs on transient noise, which teaches your team to ignore or remove them. Make them permissive and they let dbt build models on stale data, which is the failure they existed to prevent. Neither version survives contact with real infrastructure, because real infrastructure spends most of its life somewhere between fine and broken.</p><p>So WARNING allows downstream tasks to proceed and FAILED blocks them. A materialization syncing slowly warns and the batch layer runs. A capture that is throwing connection errors stops the line.</p><p>Dani&#8217;s run 4 is the clearest evidence that the semantics are right. Both Estuary checks came back WARNING, the pipeline continued, and dbt then failed on its own unrelated credential problem. The gate did not hide that failure and did not manufacture one.</p><p><strong>The AI was able to understand all of this and explain it to me, because Orchestra had a lot of the metadata and context about the Estuary and dbt runs together anyway</strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!IYl6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff51c0e8c-8ae0-4e43-a35b-88ab973ce501_1080x938.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!IYl6!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff51c0e8c-8ae0-4e43-a35b-88ab973ce501_1080x938.png 424w, /__u/substackcdn.com/image/fetch/$s_!IYl6!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff51c0e8c-8ae0-4e43-a35b-88ab973ce501_1080x938.png 848w, /__u/substackcdn.com/image/fetch/$s_!IYl6!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff51c0e8c-8ae0-4e43-a35b-88ab973ce501_1080x938.png 1272w, /__u/substackcdn.com/image/fetch/$s_!IYl6!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff51c0e8c-8ae0-4e43-a35b-88ab973ce501_1080x938.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!IYl6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff51c0e8c-8ae0-4e43-a35b-88ab973ce501_1080x938.png" width="1080" height="938" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f51c0e8c-8ae0-4e43-a35b-88ab973ce501_1080x938.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:938,&quot;width&quot;:1080,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!IYl6!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff51c0e8c-8ae0-4e43-a35b-88ab973ce501_1080x938.png 424w, /__u/substackcdn.com/image/fetch/$s_!IYl6!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff51c0e8c-8ae0-4e43-a35b-88ab973ce501_1080x938.png 848w, /__u/substackcdn.com/image/fetch/$s_!IYl6!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff51c0e8c-8ae0-4e43-a35b-88ab973ce501_1080x938.png 1272w, /__u/substackcdn.com/image/fetch/$s_!IYl6!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff51c0e8c-8ae0-4e43-a35b-88ab973ce501_1080x938.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The Agentic Control Loop</figcaption></figure></div><p>This leads to:</p><p><strong>Takeaway #3</strong>: <strong>context and agents about pipelines are critical for building AI data Engineering resources</strong></p><h3>Preconditions belong in your control plane</h3><p>Most people describe orchestration as running things in the right order. The framing I find more useful is that an orchestrator enforces conditions.</p><p>Data quality tests are postconditions. They run after a transform and tell you whether the output is acceptable, and everyone already accepts that they belong in the pipeline. Health checks are the same idea pointed the other way. They run before a transform and tell you whether the input is acceptable.</p><p>Both are cheap, both are declarative, and both should be visible in the same lineage view as the work they guard. When a precondition is buried inside a Python task, nobody can see why the pipeline stopped without reading code. When it is a task in its own right, the run history answers the question directly.</p><p>These are not separate concepts that require separate tools. They&#8217;re just things you should be able to do in a modern tool.</p><h3>What agents changed about how we build APIs</h3><p>Both skill packs in this build are agent-facing, and ours act through roughly 28 MCP tools rather than a CLI, because orchestration state lives behind an API rather than in files on disk.</p><p>The lesson I took from watching an agent use them was not about authoring. Agents write first-draft YAML badly. Across the two products Dani&#8217;s first drafts had six schema errors, including one of ours:</p><pre><code><code>422: Invalid parameters for DBT_CORE_EXECUTE: commands - Input should be a
valid string, input_type=list</code></code></pre><p>That error is the useful part. It names the field, states the expected type, reports what it received, and costs nothing to trigger, because validate_pipeline runs in seconds and writes nothing. An agent reads that and fixes it. A vaguer error, or an expensive one that only surfaces after publishing and waiting for a run, would have stalled the loop.</p><p>Which reframes something I used to think of as developer courtesy. Specific errors and free dry-run validation are now the difference between an API an agent can iterate against and one it cannot. If you are building anything with a public API right now, the strictness of your validation layer is a feature, provided the messages are precise about what went wrong.</p><p>The same holds for diagnosis. The agent found the bug in run 6 by pulling logs through three MCP calls, and the log filename gave it away before it read any content:</p><p>&#8220;1/dbt deps dbt build&#8202;&#8212;&#8202;select stg_orders daily_order_metrics&#8221;</p><p>One command where there should have been two. Reading that correctly is a more valuable capability than generating the YAML in the first place.</p><p><strong>Takeaway #4: with AI, everything must be controlled as code or editable via API/CLI so they can be agent managed</strong></p><h3>Where this still needs a human</h3><p>Worth being precise, since the story is partly a story about automation. Agents authored, published, diagnosed and fixed everything. A human was required for exactly three steps, all of them credential handling: creating the Orchestra connections, minting a GitHub read token, and supplying Snowflake credentials that Estuary encrypts and never hands back.</p><p>Connections being UI-only is the one I think about most. There is a real tension between making credentials scriptable and making them safe to hand to an agent, and I do not think the industry has settled it. Mapping existing connections to environment variables is already automatable through update_environment. Creating them is deliberately not.</p><h3>The main takeaway is to go best-of-breed or suffer</h3><p>The reason to run tools like Estuary and Orchestra together is that streaming health becomes a first-class precondition for batch work, expressed in four parameters and visible in the same lineage as everything it guards.</p><p>Five of nine runs in this build ended with the gate refusing to let dbt read the data. A demo that goes green on the first attempt tells you nothing about whether your preconditions are load-bearing. This one told us they are.</p><p>AI was used to generate everything and debug everything which was incredible to see. Everything was controlled as code. Everything you need for a best-in-class experience was handled with just three tools&#8202;&#8212;&#8202;Estuary, Orchestra and Snowflake.</p><p>Dani&#8217;s full technical writeup, including the gotcha catalogue and the demo repo: <strong><a href="https://www.getorchestra.io/blog/agentic-elt-pipelines-with-estuary">HERE</a></strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!Cr-E!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7d7456c-a2b8-4d5a-8f51-26f53c7bda29_1620x924.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!Cr-E!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7d7456c-a2b8-4d5a-8f51-26f53c7bda29_1620x924.png 424w, /__u/substackcdn.com/image/fetch/$s_!Cr-E!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7d7456c-a2b8-4d5a-8f51-26f53c7bda29_1620x924.png 848w, /__u/substackcdn.com/image/fetch/$s_!Cr-E!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7d7456c-a2b8-4d5a-8f51-26f53c7bda29_1620x924.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Cr-E!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7d7456c-a2b8-4d5a-8f51-26f53c7bda29_1620x924.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!Cr-E!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7d7456c-a2b8-4d5a-8f51-26f53c7bda29_1620x924.png" width="1456" height="830" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e7d7456c-a2b8-4d5a-8f51-26f53c7bda29_1620x924.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:830,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!Cr-E!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7d7456c-a2b8-4d5a-8f51-26f53c7bda29_1620x924.png 424w, /__u/substackcdn.com/image/fetch/$s_!Cr-E!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7d7456c-a2b8-4d5a-8f51-26f53c7bda29_1620x924.png 848w, /__u/substackcdn.com/image/fetch/$s_!Cr-E!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7d7456c-a2b8-4d5a-8f51-26f53c7bda29_1620x924.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Cr-E!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7d7456c-a2b8-4d5a-8f51-26f53c7bda29_1620x924.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Orchestra Sao Paolo (State Aware orchestration)</figcaption></figure></div><p>ALSO don&#8217;t forget&#8202;&#8212;&#8202;nice features like <a href="https://www.orchestra-labs.ai/research/state-aware-orchestration">state-aware orchestration</a> make everything REALLY easy to schedule. State means you can just run the same job over and over again&#8202;&#8212;&#8202;you don&#8217;t even need to have it in the same pipeline, since it won&#8217;t run anything erroneously that doesn&#8217;t have new source data; as the orchestrator catches the state.</p><p>This can help teams go incredibly far. It even scales to multiple teams, with both Estuary, Orchestra and Snowflake supporting multiple deployments for multiple teams across multiple regions.</p><p>The other point is scalability. I genuinely believe this is scalable as hell, since there is no infrastructure to maintain, no connectors to maintain, and everything can be automated on the maintenance side using AI. This is something I&#8217;ve never seen before as a data engineer, and it&#8217;s truly incredible to see with many shared customers like <a href="https://www.getorchestra.io/use-cases/technology">Trust&amp;Will and Raylo</a> leveraging Orchestra alongside Estuary to be best of breed.</p><p>Best-of-breed have to better and cheaper than the incumbents to make a business case. Those that can do it will be the best teams, with the least funding pressures. There aren&#8217;t many companies like that so when you find them act fast!</p><p>HL</p><p></p><div id="youtube2-A2qUrscWMtY" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;A2qUrscWMtY&quot;,&quot;startTime&quot;:&quot;2s&quot;,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/A2qUrscWMtY?start=2s&amp;rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-c-wK1nIgU3Q" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;c-wK1nIgU3Q&quot;,&quot;startTime&quot;:&quot;10s&quot;,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/c-wK1nIgU3Q?start=10s&amp;rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div>]]></content:encoded></item><item><title><![CDATA[Building an Agentic Postgres-to-Snowflake Pipeline With Estuary and Orchestra]]></title><description><![CDATA[Why Modern data stack tooling is no-longer the go-to for Data Teams that are building from scratch]]></description><link>https://dataopsleadership.substack.com/p/building-an-agentic-postgres-to-snowflake</link><guid isPermaLink="false">https://dataopsleadership.substack.com/p/building-an-agentic-postgres-to-snowflake</guid><dc:creator><![CDATA[Hugo Lu]]></dc:creator><pubDate>Wed, 05 Aug 2026 12:56:29 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!R3Sv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d3f22b0-e095-4dda-9d86-73beb82fddbe_2048x1092.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!R3Sv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d3f22b0-e095-4dda-9d86-73beb82fddbe_2048x1092.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!R3Sv!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d3f22b0-e095-4dda-9d86-73beb82fddbe_2048x1092.png 424w, /__u/substackcdn.com/image/fetch/$s_!R3Sv!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d3f22b0-e095-4dda-9d86-73beb82fddbe_2048x1092.png 848w, /__u/substackcdn.com/image/fetch/$s_!R3Sv!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d3f22b0-e095-4dda-9d86-73beb82fddbe_2048x1092.png 1272w, /__u/substackcdn.com/image/fetch/$s_!R3Sv!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d3f22b0-e095-4dda-9d86-73beb82fddbe_2048x1092.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!R3Sv!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d3f22b0-e095-4dda-9d86-73beb82fddbe_2048x1092.png" width="1200" height="639.5604395604396" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2d3f22b0-e095-4dda-9d86-73beb82fddbe_2048x1092.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:776,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!R3Sv!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d3f22b0-e095-4dda-9d86-73beb82fddbe_2048x1092.png 424w, /__u/substackcdn.com/image/fetch/$s_!R3Sv!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d3f22b0-e095-4dda-9d86-73beb82fddbe_2048x1092.png 848w, /__u/substackcdn.com/image/fetch/$s_!R3Sv!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d3f22b0-e095-4dda-9d86-73beb82fddbe_2048x1092.png 1272w, /__u/substackcdn.com/image/fetch/$s_!R3Sv!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d3f22b0-e095-4dda-9d86-73beb82fddbe_2048x1092.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>I asked my friend Dani at Estuary to give our Agent a go at building an end-to-end data pipeline in Orchestra using Estuary and <a href="https://www.getorchestra.io/technology/orchestra-dbt-core-tm">Orchestra&#8217;s State-Aware dbt</a>. The premise is simple - someone of Dani&#8217;s calibre with the data engineering context should be able to use natural language and the <a href="https://www.getorchestra.io/product/agent-runtime">Orchestra Runtime</a> to build a pipeline that&#8217;s pretty complicated from scratch end to end. He wrote up the results, and it&#8217;s an awesome article on how to build data pipelines using AI - one of my favourites. Anyway, enjoy.</em></p><p><a href="https://estuary.dev/capabilities/agent-skills/"><span>Estuary</span></a><span> and Orchestra both offer agent skill packs. Estuary&#8217;s cover data movement, while Orchestra&#8217;s cover </span><a href="https://www.getorchestra.io/product/orchestration"><span>orchestration</span></a><span>. Each is useful alone, and I wanted to know whether they compose, so I described a production-like </span><strong><span>agentic data pipeline</span></strong><span> in plain English and let agents build it against live infrastructure: continuous CDC with a scheduled delivery from Postgres to Snowflake, plus a daily dbt-and-tests layer gated on the health of that stream.</span></p><p><span>After chatting with my agent for a few rounds, I got the whole stack working in less than one hour; that includes data ingestion, transformations and orchestration. A year ago, this would have taken me at least a few days of trial and error.</span></p><p><span>Everything below executed against live Estuary, Snowflake, and Orchestra accounts. The error messages, statuses and row counts are copied from the runs.</span></p><p><span>In this article, &#8220;agentic&#8221; means that an AI coding agent can select skills, author pipeline specifications, call validation tools, inspect execution logs, and revise the pipeline based on the errors it receives.</span></p><h2><span>Key results from the agentic pipeline test</span></h2><p><span>Here&#8217;s what I built condensed into a few bullets:</span></p><ul><li><p><strong><span>What was built:</span></strong><span> </span><a href="https://docs.estuary.dev/getting-started/tutorials/postgresql_cdc_to_snowflake/"><span>Postgres CDC into Snowflake via Estuary</span></a><span>, then a scheduled Orchestra pipeline that gates dbt and a few data-quality tests on top of Estuary task health repoting.</span></p></li><li><p><strong><span>Who wrote it:</span></strong><span> Agents authored, published, diagnosed and fixed every spec. Human involvement was limited to three steps all having to deal with managing credentials.</span></p></li><li><p><strong><span>Key integration:</span></strong><span> Orchestra&#8217;s </span><code>ESTUARY_CHECK_FLOW </code><span>job reads an Estuary task&#8217;s </span><a href="https://docs.estuary.dev/reference/openmetrics-api/"><span>OpenMetrics</span></a><span> endpoint and turns failure count, latency and transaction progress into a pass, warn or fail.</span></p></li><li><p><strong><span>Random cool finding:</span></strong><span> </span><a href="https://docs.estuary.dev/concepts/flowctl/"><span>flowctl catalog test</span></a><span> and validate_pipeline both run in seconds, exercise real credentials, and write nothing. A cheap, useful habit!</span></p></li></ul><h2><span>Agentic data pipeline architecture</span></h2><p><span>Alright, let&#8217;s take a look at what we&#8217;re building from a distance.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!R3Sv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d3f22b0-e095-4dda-9d86-73beb82fddbe_2048x1092.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!R3Sv!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d3f22b0-e095-4dda-9d86-73beb82fddbe_2048x1092.png 424w, /__u/substackcdn.com/image/fetch/$s_!R3Sv!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d3f22b0-e095-4dda-9d86-73beb82fddbe_2048x1092.png 848w, /__u/substackcdn.com/image/fetch/$s_!R3Sv!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d3f22b0-e095-4dda-9d86-73beb82fddbe_2048x1092.png 1272w, /__u/substackcdn.com/image/fetch/$s_!R3Sv!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d3f22b0-e095-4dda-9d86-73beb82fddbe_2048x1092.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!R3Sv!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d3f22b0-e095-4dda-9d86-73beb82fddbe_2048x1092.png" width="1200" height="639.5604395604396" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2d3f22b0-e095-4dda-9d86-73beb82fddbe_2048x1092.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:776,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&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;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!R3Sv!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d3f22b0-e095-4dda-9d86-73beb82fddbe_2048x1092.png 424w, /__u/substackcdn.com/image/fetch/$s_!R3Sv!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d3f22b0-e095-4dda-9d86-73beb82fddbe_2048x1092.png 848w, /__u/substackcdn.com/image/fetch/$s_!R3Sv!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d3f22b0-e095-4dda-9d86-73beb82fddbe_2048x1092.png 1272w, /__u/substackcdn.com/image/fetch/$s_!R3Sv!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d3f22b0-e095-4dda-9d86-73beb82fddbe_2048x1092.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><span>The division of labour carries the design. Estuary owns continuous movement, with seconds of latency for the extraction and a user-defined schedule for delivery. Orchestra owns the periodic transform-and-validate layer and gates it on Estuary&#8217;s health. Neither tool duplicates the other&#8217;s job, and the gate in-between is what makes this one system instead of two pipelines sharing a warehouse.</span></p><h2><span>Set up the Estuary and Orchestra agent skills</span></h2><p><span>As a first step, let&#8217;s take a look at how we can enable our agents to do the actual work. Both packs are installed as Claude Code plugins.</span></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;7a4c383c-247b-4455-beea-5c0158ede415&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext"># Estuary
/plugin marketplace add estuary/agent-skills
/plugin install estuary-captures@estuary
/plugin install estuary-materializations@estuary
/plugin install estuary-operations@estuary

# Orchestra
/plugin marketplace add orchestra-hq/orchestra-skills
/plugin install orchestra@orchestra-marketplace
</code></pre></div><p><span>Orchestra&#8217;s skills are </span><a href="https://www.getorchestra.io/product/orchestra-ai-and-mcp-for-data-teams"><span>MCP-native</span></a><span>. They act through roughly 28 tools instead of a CLI, so the </span><a href="https://docs.getorchestra.io/docs/mcp"><span>server has to be registered too</span></a><span>.</span></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;55dbff10-3e05-4342-bbe0-9a32a96fb41a&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">claude mcp add orchestra https://mcp.getorchestra.io/orchestra \
  --transport http \
  --header &#8220;Authorization: Bearer &lt;ORCHESTRA_API_KEY&gt;&#8221;</code></pre></div><p><span>Restart the client afterwards, because plugins and MCP tools load at startup. Mine were unavailable until a reload, which forced an entertaining detour covered at the end. If you are scripting this headlessly, claude plugin marketplace add &#8230; and claude plugin install &#8230; are the CLI equivalents of the slash commands.</span></p><h3><span>What each agent skill pack covers</span></h3><p><span>Both agent skill packages can do a lot, and this demo is only going to use a friction of those capabilities.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!b7vh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3977f884-f465-463e-aa98-261aad0a7d3e_991x816.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!b7vh!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3977f884-f465-463e-aa98-261aad0a7d3e_991x816.png 424w, /__u/substackcdn.com/image/fetch/$s_!b7vh!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3977f884-f465-463e-aa98-261aad0a7d3e_991x816.png 848w, /__u/substackcdn.com/image/fetch/$s_!b7vh!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3977f884-f465-463e-aa98-261aad0a7d3e_991x816.png 1272w, /__u/substackcdn.com/image/fetch/$s_!b7vh!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3977f884-f465-463e-aa98-261aad0a7d3e_991x816.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!b7vh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3977f884-f465-463e-aa98-261aad0a7d3e_991x816.png" width="991" height="816" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3977f884-f465-463e-aa98-261aad0a7d3e_991x816.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:816,&quot;width&quot;:991,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:148126,&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://dataopsleadership.substack.com/i/209837616?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3977f884-f465-463e-aa98-261aad0a7d3e_991x816.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!b7vh!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3977f884-f465-463e-aa98-261aad0a7d3e_991x816.png 424w, /__u/substackcdn.com/image/fetch/$s_!b7vh!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3977f884-f465-463e-aa98-261aad0a7d3e_991x816.png 848w, /__u/substackcdn.com/image/fetch/$s_!b7vh!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3977f884-f465-463e-aa98-261aad0a7d3e_991x816.png 1272w, /__u/substackcdn.com/image/fetch/$s_!b7vh!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3977f884-f465-463e-aa98-261aad0a7d3e_991x816.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p style="text-align: center;"></p><p><span>With that said, let&#8217;s start building!</span></p><h2><span>Building the PostgreSQL CDC to Snowflake Pipeline with Estuary</span></h2><p><span>For the demo purposes, we&#8217;ll be using a Postgres with wal_level=logical in Docker, a generator that continuously inserts rows, advances them through pending &#8594; shipped &#8594; delivered and deletes some, so the capture sees all three CDC operations rather than an insert-only stream, and ngrok tcp 5432 to expose it to Estuary&#8217;s cloud.</span></p><p><span>Then four prompts.</span></p><h3><span>1. Check that flowctl is installed and authenticated.</span></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!-F8z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcacc3a94-5bbe-40e5-b8e7-249657cc1d71_1792x686.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!-F8z!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcacc3a94-5bbe-40e5-b8e7-249657cc1d71_1792x686.png 424w, /__u/substackcdn.com/image/fetch/$s_!-F8z!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcacc3a94-5bbe-40e5-b8e7-249657cc1d71_1792x686.png 848w, /__u/substackcdn.com/image/fetch/$s_!-F8z!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcacc3a94-5bbe-40e5-b8e7-249657cc1d71_1792x686.png 1272w, /__u/substackcdn.com/image/fetch/$s_!-F8z!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcacc3a94-5bbe-40e5-b8e7-249657cc1d71_1792x686.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!-F8z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcacc3a94-5bbe-40e5-b8e7-249657cc1d71_1792x686.png" width="1456" height="557" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cacc3a94-5bbe-40e5-b8e7-249657cc1d71_1792x686.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:557,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!-F8z!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcacc3a94-5bbe-40e5-b8e7-249657cc1d71_1792x686.png 424w, /__u/substackcdn.com/image/fetch/$s_!-F8z!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcacc3a94-5bbe-40e5-b8e7-249657cc1d71_1792x686.png 848w, /__u/substackcdn.com/image/fetch/$s_!-F8z!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcacc3a94-5bbe-40e5-b8e7-249657cc1d71_1792x686.png 1272w, /__u/substackcdn.com/image/fetch/$s_!-F8z!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcacc3a94-5bbe-40e5-b8e7-249657cc1d71_1792x686.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><span>Routes to estuary-flowctl-setup. The skill thankfully knows one trap that costs people time: flowctl catalog list --prefix &#8220;&#8221; returns PermissionDenied: user is not authorized to access prefix or name &#8216;&#8217;, which reads like an auth failure and is only prefix scoping. The real answer comes from flowctl auth roles list, which showed admin on dani-demo/, the tenant I&#8217;ll be using for this demo.</span></p><h3><span>2. Capture my Postgres orders table into Estuary.</span></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!1Io1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7532eddb-121b-45d6-8630-33e02f296368_1818x536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!1Io1!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7532eddb-121b-45d6-8630-33e02f296368_1818x536.png 424w, /__u/substackcdn.com/image/fetch/$s_!1Io1!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7532eddb-121b-45d6-8630-33e02f296368_1818x536.png 848w, /__u/substackcdn.com/image/fetch/$s_!1Io1!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7532eddb-121b-45d6-8630-33e02f296368_1818x536.png 1272w, /__u/substackcdn.com/image/fetch/$s_!1Io1!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7532eddb-121b-45d6-8630-33e02f296368_1818x536.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!1Io1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7532eddb-121b-45d6-8630-33e02f296368_1818x536.png" width="1456" height="429" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7532eddb-121b-45d6-8630-33e02f296368_1818x536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:429,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!1Io1!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7532eddb-121b-45d6-8630-33e02f296368_1818x536.png 424w, /__u/substackcdn.com/image/fetch/$s_!1Io1!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7532eddb-121b-45d6-8630-33e02f296368_1818x536.png 848w, /__u/substackcdn.com/image/fetch/$s_!1Io1!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7532eddb-121b-45d6-8630-33e02f296368_1818x536.png 1272w, /__u/substackcdn.com/image/fetch/$s_!1Io1!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7532eddb-121b-45d6-8630-33e02f296368_1818x536.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><span>Routes to capture-postgres-create. The skill declined to hand-write a schema. It wrote a spec containing only the endpoint block and bindings: [], then ran discovery.</span></p><p><span>flowctl discover --source discover.flow.yaml --flat</span></p><p><span>Discovery found public.orders, excluded flow_watermarks as connector plumbing, smartly inferred key: [/order_id], and emitted four files: the capture spec, a write schema, a read schema, and a sops-encrypted config.</span></p><p><span>That matters more than it sounds, because a hand-written guess and a discovered spec differ in ways that bite later.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!tgy4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F045d57e7-5e5c-4def-9a28-293b122bdcb0_1032x294.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!tgy4!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F045d57e7-5e5c-4def-9a28-293b122bdcb0_1032x294.png 424w, /__u/substackcdn.com/image/fetch/$s_!tgy4!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F045d57e7-5e5c-4def-9a28-293b122bdcb0_1032x294.png 848w, /__u/substackcdn.com/image/fetch/$s_!tgy4!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F045d57e7-5e5c-4def-9a28-293b122bdcb0_1032x294.png 1272w, /__u/substackcdn.com/image/fetch/$s_!tgy4!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F045d57e7-5e5c-4def-9a28-293b122bdcb0_1032x294.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!tgy4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F045d57e7-5e5c-4def-9a28-293b122bdcb0_1032x294.png" width="1032" height="294" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/045d57e7-5e5c-4def-9a28-293b122bdcb0_1032x294.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:294,&quot;width&quot;:1032,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:53124,&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://dataopsleadership.substack.com/i/209837616?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F045d57e7-5e5c-4def-9a28-293b122bdcb0_1032x294.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!tgy4!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F045d57e7-5e5c-4def-9a28-293b122bdcb0_1032x294.png 424w, /__u/substackcdn.com/image/fetch/$s_!tgy4!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F045d57e7-5e5c-4def-9a28-293b122bdcb0_1032x294.png 848w, /__u/substackcdn.com/image/fetch/$s_!tgy4!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F045d57e7-5e5c-4def-9a28-293b122bdcb0_1032x294.png 1272w, /__u/substackcdn.com/image/fetch/$s_!tgy4!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F045d57e7-5e5c-4def-9a28-293b122bdcb0_1032x294.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p style="text-align: center;"></p><p><span>Documents landing in the collection carry their CDC metadata:</span></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;e84c0c19-a3d3-4f40-a85b-7a41658bbe7c&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">{
   "_meta":{
      "op":"c",
      "source":{
         "schema":"public",
         "snapshot":true,
         "table":"orders"
      }
   },
   "amount":"129.48",
   "customer_name":"Joseph Garner",
   "status":"pending",
   "order_id":"0034c6c6-&#8230;",
   "event_ts":"2026-07-29T10:50:19.173331Z"
}
</code></pre></div><p><span>amount arrives as a string, and that&#8217;s fine. Postgres numeric and timestamptz both land as JSON strings, which is the reason a dbt staging model exists downstream. If you want to verify, head over to the Estuary dashboard and take a look at the collection details. It should look like this:</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!CI2j!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcce18f5-b932-41cc-b1ee-d8777fe09127_2048x1177.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!CI2j!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcce18f5-b932-41cc-b1ee-d8777fe09127_2048x1177.png 424w, /__u/substackcdn.com/image/fetch/$s_!CI2j!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcce18f5-b932-41cc-b1ee-d8777fe09127_2048x1177.png 848w, /__u/substackcdn.com/image/fetch/$s_!CI2j!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcce18f5-b932-41cc-b1ee-d8777fe09127_2048x1177.png 1272w, /__u/substackcdn.com/image/fetch/$s_!CI2j!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcce18f5-b932-41cc-b1ee-d8777fe09127_2048x1177.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!CI2j!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcce18f5-b932-41cc-b1ee-d8777fe09127_2048x1177.png" width="1200" height="689.8351648351648" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dcce18f5-b932-41cc-b1ee-d8777fe09127_2048x1177.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:837,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&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;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!CI2j!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcce18f5-b932-41cc-b1ee-d8777fe09127_2048x1177.png 424w, /__u/substackcdn.com/image/fetch/$s_!CI2j!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcce18f5-b932-41cc-b1ee-d8777fe09127_2048x1177.png 848w, /__u/substackcdn.com/image/fetch/$s_!CI2j!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcce18f5-b932-41cc-b1ee-d8777fe09127_2048x1177.png 1272w, /__u/substackcdn.com/image/fetch/$s_!CI2j!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcce18f5-b932-41cc-b1ee-d8777fe09127_2048x1177.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3><span>3. Materialize the orders collection into Snowflake.</span></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!nGR4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5171e2a8-36bb-4746-8b39-d138b8814051_1840x580.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!nGR4!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5171e2a8-36bb-4746-8b39-d138b8814051_1840x580.png 424w, /__u/substackcdn.com/image/fetch/$s_!nGR4!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5171e2a8-36bb-4746-8b39-d138b8814051_1840x580.png 848w, /__u/substackcdn.com/image/fetch/$s_!nGR4!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5171e2a8-36bb-4746-8b39-d138b8814051_1840x580.png 1272w, /__u/substackcdn.com/image/fetch/$s_!nGR4!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5171e2a8-36bb-4746-8b39-d138b8814051_1840x580.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!nGR4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5171e2a8-36bb-4746-8b39-d138b8814051_1840x580.png" width="1456" height="459" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5171e2a8-36bb-4746-8b39-d138b8814051_1840x580.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:459,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!nGR4!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5171e2a8-36bb-4746-8b39-d138b8814051_1840x580.png 424w, /__u/substackcdn.com/image/fetch/$s_!nGR4!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5171e2a8-36bb-4746-8b39-d138b8814051_1840x580.png 848w, /__u/substackcdn.com/image/fetch/$s_!nGR4!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5171e2a8-36bb-4746-8b39-d138b8814051_1840x580.png 1272w, /__u/substackcdn.com/image/fetch/$s_!nGR4!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5171e2a8-36bb-4746-8b39-d138b8814051_1840x580.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><span>This prompt routes to materialize-snowflake-create. Before publishing, the skill validated against the real warehouse without writing anything.</span></p><p><span>flowctl catalog test --source mat.flow.yaml</span></p><p><span># Tests successful &#9989;</span></p><p><span>flowctl catalog test is the underrated command in this build. It exercises real credentials and connectivity and commits nothing. Every credential problem I hit surfaced here, in seconds, rather than minutes after a publish. Definitely helpful.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!CI2j!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcce18f5-b932-41cc-b1ee-d8777fe09127_2048x1177.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!CI2j!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcce18f5-b932-41cc-b1ee-d8777fe09127_2048x1177.png 424w, /__u/substackcdn.com/image/fetch/$s_!CI2j!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcce18f5-b932-41cc-b1ee-d8777fe09127_2048x1177.png 848w, /__u/substackcdn.com/image/fetch/$s_!CI2j!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcce18f5-b932-41cc-b1ee-d8777fe09127_2048x1177.png 1272w, /__u/substackcdn.com/image/fetch/$s_!CI2j!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcce18f5-b932-41cc-b1ee-d8777fe09127_2048x1177.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!CI2j!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcce18f5-b932-41cc-b1ee-d8777fe09127_2048x1177.png" width="1200" height="689.8351648351648" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dcce18f5-b932-41cc-b1ee-d8777fe09127_2048x1177.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:837,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&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;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!CI2j!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcce18f5-b932-41cc-b1ee-d8777fe09127_2048x1177.png 424w, /__u/substackcdn.com/image/fetch/$s_!CI2j!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcce18f5-b932-41cc-b1ee-d8777fe09127_2048x1177.png 848w, /__u/substackcdn.com/image/fetch/$s_!CI2j!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcce18f5-b932-41cc-b1ee-d8777fe09127_2048x1177.png 1272w, /__u/substackcdn.com/image/fetch/$s_!CI2j!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcce18f5-b932-41cc-b1ee-d8777fe09127_2048x1177.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><span>After publishing, logs showed storedHistory: [247, 1011, 7, 5, 5]: two backfill batches of 247 and 1,011 rows, then incremental commits of 7, 5 and 5. Snowflake was 7,272 rows in and 9 seconds behind Postgres. But that&#8217;s okay, the pipeline quickly caught up and new changes started streaming in 5 minute internals (which I configured via the sync schedule)</span></p><h3><span>4. Verify pipeline health and data movement</span></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!87gt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d4324ec-47a1-43ee-98fa-ae0375b88529_1838x690.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!87gt!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d4324ec-47a1-43ee-98fa-ae0375b88529_1838x690.png 424w, /__u/substackcdn.com/image/fetch/$s_!87gt!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d4324ec-47a1-43ee-98fa-ae0375b88529_1838x690.png 848w, /__u/substackcdn.com/image/fetch/$s_!87gt!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d4324ec-47a1-43ee-98fa-ae0375b88529_1838x690.png 1272w, /__u/substackcdn.com/image/fetch/$s_!87gt!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d4324ec-47a1-43ee-98fa-ae0375b88529_1838x690.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!87gt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d4324ec-47a1-43ee-98fa-ae0375b88529_1838x690.png" width="1456" height="547" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7d4324ec-47a1-43ee-98fa-ae0375b88529_1838x690.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:547,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!87gt!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d4324ec-47a1-43ee-98fa-ae0375b88529_1838x690.png 424w, /__u/substackcdn.com/image/fetch/$s_!87gt!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d4324ec-47a1-43ee-98fa-ae0375b88529_1838x690.png 848w, /__u/substackcdn.com/image/fetch/$s_!87gt!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d4324ec-47a1-43ee-98fa-ae0375b88529_1838x690.png 1272w, /__u/substackcdn.com/image/fetch/$s_!87gt!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d4324ec-47a1-43ee-98fa-ae0375b88529_1838x690.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><span>Routes to estuary-task-health, estuary-task-stats and estuary-logs.</span></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;823efed1-7d8a-4c03-b2f7-73fa83dd2bae&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">dani-demo/agent-demo/source-postgres        Streaming CDC Events

dani-demo/agent-demo/public/orders          Ok

dani-demo/agent-demo/destination-snowflake  Running</code></pre></div><p><span>When exploring task health, one flag came back: recentFailureCount: 14. Log analysis grouped all fourteen as unable to query &#8216;wal_level&#8217;: failed to connect to user=flow_capture, dating from an ngrok tunnel restart, even though nothing was currently failing.</span></p><p><span>Those fourteen historical failures are about to turn an Orchestra task red, which is a good demo of the quality gates!</span></p><h2><span>Orchestrate dbt and Snowflake data-quality tests</span></h2><p><strong><span>My prompt here was:</span></strong><span> &#8220;Create an Orchestra pipeline that first checks my Estuary capture and materialization are healthy, then runs dbt build, then runs </span><a href="https://docs.getorchestra.io/docs/integrations/snowflake/snowflake_run_test"><span>Snowflake data-quality tests</span></a><span>, daily.&#8221;</span></p><p><span>This is routed to the skill called </span><code>create-orchestra-pipeline</code><span>.</span></p><p><span>The skill produced three task groups chained with depends_on, then called validate_pipeline before publishing anything. Validation caught two small errors in the first draft.</span></p><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!mwF9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac4f276c-1bf6-4787-aa4c-b88cfe09b657_1440x676.svg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!mwF9!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac4f276c-1bf6-4787-aa4c-b88cfe09b657_1440x676.svg 424w, /__u/substackcdn.com/image/fetch/$s_!mwF9!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac4f276c-1bf6-4787-aa4c-b88cfe09b657_1440x676.svg 848w, /__u/substackcdn.com/image/fetch/$s_!mwF9!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac4f276c-1bf6-4787-aa4c-b88cfe09b657_1440x676.svg 1272w, /__u/substackcdn.com/image/fetch/$s_!mwF9!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac4f276c-1bf6-4787-aa4c-b88cfe09b657_1440x676.svg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!mwF9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac4f276c-1bf6-4787-aa4c-b88cfe09b657_1440x676.svg" width="727.9947509765625" height="341.9975341126159" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ac4f276c-1bf6-4787-aa4c-b88cfe09b657_1440x676.svg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:684,&quot;width&quot;:1456,&quot;resizeWidth&quot;:727.9947509765625,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Use Orchestra to monitor and observe data quality&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="Use Orchestra to monitor and observe data quality" title="Use Orchestra to monitor and observe data quality" srcset="/__u/substackcdn.com/image/fetch/$s_!mwF9!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac4f276c-1bf6-4787-aa4c-b88cfe09b657_1440x676.svg 424w, /__u/substackcdn.com/image/fetch/$s_!mwF9!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac4f276c-1bf6-4787-aa4c-b88cfe09b657_1440x676.svg 848w, /__u/substackcdn.com/image/fetch/$s_!mwF9!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac4f276c-1bf6-4787-aa4c-b88cfe09b657_1440x676.svg 1272w, /__u/substackcdn.com/image/fetch/$s_!mwF9!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac4f276c-1bf6-4787-aa4c-b88cfe09b657_1440x676.svg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Some examples of what an Estuary Pipeline looks like in Orchestra</figcaption></figure></div><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;c2b2e20f-8098-418e-bda1-85b20ad00984&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">422: Invalid parameters for DBT_CORE_EXECUTE: commands &#8212; Input should be a

     valid string, input_type=list

422: alerts.0.statuses.1 &#8212; Input should be &#8216;ANY_COMPLETED&#8217;, &#8216;CANCELLED&#8217;,

     &#8216;FAILED&#8217;, &#8216;SUCCEEDED&#8217;, &#8216;WARNING&#8217; or &#8216;SKIPPED&#8217;</code></pre></div><p><span>The agent managed to fix and revalidate both in a few seconds: Pipeline schema is valid, published as daily_orders_analytics_agent_demo with 7 tasks at v1. validate_pipeline is free and fast, so publishing unvalidated has no upside.</span></p><p><strong><span>Second prompt: &#8220;Add Snowflake quality tests on the marts: freshness within 24h, no null or negative revenue, status limited to the known enum, and no future-dated events.&#8221;</span></strong></p><p><span>Routes to the skill </span><code>write-snowflake-dq-tests</code><span>.</span></p><p><span>The pattern it used is worth a few sentences to explain: Every SNOWFLAKE_RUN_TEST statement is written so that returning rows means something is wrong, and error_threshold_expression: &#8216;&gt; 0&#8217; turns any violating row into a failure. Freshness needs a HAVING clause so the query emits exactly one row when data is stale and zero rows otherwise.</span></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;32b8d046-c28d-411b-ab9f-e08ce6b2c47d&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">select max(updated_at) as newest
from ESTUARY_DB.AGENT_DEMO_ANALYTICS.STG_ORDERS
having max(updated_at) &lt; dateadd('hour', -24, current_timestamp())
</code></pre></div><p><span>The skill&#8217;s reference doc is opinionated in a way I have started repeating to people. It insists on profiling every candidate column before writing a test, and it draws the design rule from semantic type rather than SQL type: a VARCHAR holding a status code and a VARCHAR holding a free-text note need entirely different tests.</span></p><h2><span>Gate dbt on Estuary task health in Orchestra</span></h2><p><span>This is the part most likely to be new, and it is what makes the two tools compose really well. Orchestra ships a </span><a href="https://www.getorchestra.io/technology/estuary"><span>native ESTUARY integration</span></a><span>. Everything is defined as .yml, which is nice.</span></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;03abc0d5-614c-45a3-967b-22cbfd7903a2&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">check_capture:

  integration: ESTUARY

  integration_job: ESTUARY_CHECK_FLOW

  parameters:

    task: dani-demo/agent-demo/source-postgres

    error_threshold: 0        # any new error fails the run

    warn_threshold: 0

    latency_threshold: 1800   # seconds since the task last published

  connection: ${{ ENV.ESTUARY_CONNECTION }}</code></pre></div><p><span>The job reads the Estuary task&#8217;s </span><a href="https://docs.estuary.dev/reference/openmetrics-api/"><span>OpenMetrics endpoint</span></a><span> and compares deltas against the previous check.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!HlM1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F356aaeff-674d-4b65-b9a5-0659c66b7105_697x385.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!HlM1!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F356aaeff-674d-4b65-b9a5-0659c66b7105_697x385.png 424w, /__u/substackcdn.com/image/fetch/$s_!HlM1!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F356aaeff-674d-4b65-b9a5-0659c66b7105_697x385.png 848w, /__u/substackcdn.com/image/fetch/$s_!HlM1!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F356aaeff-674d-4b65-b9a5-0659c66b7105_697x385.png 1272w, /__u/substackcdn.com/image/fetch/$s_!HlM1!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F356aaeff-674d-4b65-b9a5-0659c66b7105_697x385.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!HlM1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F356aaeff-674d-4b65-b9a5-0659c66b7105_697x385.png" width="697" height="385" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/356aaeff-674d-4b65-b9a5-0659c66b7105_697x385.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:385,&quot;width&quot;:697,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:47992,&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://dataopsleadership.substack.com/i/209837616?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F356aaeff-674d-4b65-b9a5-0659c66b7105_697x385.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!HlM1!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F356aaeff-674d-4b65-b9a5-0659c66b7105_697x385.png 424w, /__u/substackcdn.com/image/fetch/$s_!HlM1!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F356aaeff-674d-4b65-b9a5-0659c66b7105_697x385.png 848w, /__u/substackcdn.com/image/fetch/$s_!HlM1!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F356aaeff-674d-4b65-b9a5-0659c66b7105_697x385.png 1272w, /__u/substackcdn.com/image/fetch/$s_!HlM1!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F356aaeff-674d-4b65-b9a5-0659c66b7105_697x385.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p style="text-align: center;"></p><p><span>Real messages collected across the nine runs, which show it inspecting the stream rather than pinging a liveness endpoint:</span></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;15651d54-a2ec-4994-9f04-6196afe7947f&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">FAILED     Task reported 10 new failure(s). logged_failures_total delta &gt; 0.
FAILED     Latency 1665s exceeds threshold 900s.
WARNING    No new transactions (txn_count_total delta = 0).
SUCCEEDED  txn delta 3150
SUCCEEDED  txn delta 1; latency 694s
</code></pre></div><p><span>WARNING allows downstream tasks to run and FAILED blocks them. That distinction is critical: a slow-syncing materialization warns and lets the batch layer proceed, while a broken capture stops the line.</span></p><p><span>The connection itself is a refresh token plus a default Estuary task name, which Orchestra uses to build the metrics URL and verify the token.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!b2iC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F308ee951-4f6f-4186-8477-f60c01318f90_2048x1139.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!b2iC!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F308ee951-4f6f-4186-8477-f60c01318f90_2048x1139.png 424w, /__u/substackcdn.com/image/fetch/$s_!b2iC!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F308ee951-4f6f-4186-8477-f60c01318f90_2048x1139.png 848w, /__u/substackcdn.com/image/fetch/$s_!b2iC!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F308ee951-4f6f-4186-8477-f60c01318f90_2048x1139.png 1272w, /__u/substackcdn.com/image/fetch/$s_!b2iC!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F308ee951-4f6f-4186-8477-f60c01318f90_2048x1139.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!b2iC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F308ee951-4f6f-4186-8477-f60c01318f90_2048x1139.png" width="1456" height="810" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/308ee951-4f6f-4186-8477-f60c01318f90_2048x1139.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:810,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!b2iC!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F308ee951-4f6f-4186-8477-f60c01318f90_2048x1139.png 424w, /__u/substackcdn.com/image/fetch/$s_!b2iC!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F308ee951-4f6f-4186-8477-f60c01318f90_2048x1139.png 848w, /__u/substackcdn.com/image/fetch/$s_!b2iC!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F308ee951-4f6f-4186-8477-f60c01318f90_2048x1139.png 1272w, /__u/substackcdn.com/image/fetch/$s_!b2iC!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F308ee951-4f6f-4186-8477-f60c01318f90_2048x1139.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!2qE9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d87a388-bb8c-405f-9852-8386adaabbae_2048x802.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!2qE9!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d87a388-bb8c-405f-9852-8386adaabbae_2048x802.png 424w, /__u/substackcdn.com/image/fetch/$s_!2qE9!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d87a388-bb8c-405f-9852-8386adaabbae_2048x802.png 848w, /__u/substackcdn.com/image/fetch/$s_!2qE9!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d87a388-bb8c-405f-9852-8386adaabbae_2048x802.png 1272w, /__u/substackcdn.com/image/fetch/$s_!2qE9!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d87a388-bb8c-405f-9852-8386adaabbae_2048x802.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!2qE9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d87a388-bb8c-405f-9852-8386adaabbae_2048x802.png" width="1456" height="570" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4d87a388-bb8c-405f-9852-8386adaabbae_2048x802.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:570,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!2qE9!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d87a388-bb8c-405f-9852-8386adaabbae_2048x802.png 424w, /__u/substackcdn.com/image/fetch/$s_!2qE9!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d87a388-bb8c-405f-9852-8386adaabbae_2048x802.png 848w, /__u/substackcdn.com/image/fetch/$s_!2qE9!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d87a388-bb8c-405f-9852-8386adaabbae_2048x802.png 1272w, /__u/substackcdn.com/image/fetch/$s_!2qE9!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d87a388-bb8c-405f-9852-8386adaabbae_2048x802.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><span>Nine test runs: from failed validation to a green pipeline</span></h2><p><span>To give you an idea of the minimal trial and error steps the agent worked through while setting up the pipeline, here&#8217;s a summary.</span></p><p><span>Each run failed differently, and each failure taught something specific.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!cOFa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86c042ff-ef6f-4b8c-be5c-36956e615a63_837x778.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!cOFa!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86c042ff-ef6f-4b8c-be5c-36956e615a63_837x778.png 424w, /__u/substackcdn.com/image/fetch/$s_!cOFa!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86c042ff-ef6f-4b8c-be5c-36956e615a63_837x778.png 848w, /__u/substackcdn.com/image/fetch/$s_!cOFa!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86c042ff-ef6f-4b8c-be5c-36956e615a63_837x778.png 1272w, /__u/substackcdn.com/image/fetch/$s_!cOFa!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86c042ff-ef6f-4b8c-be5c-36956e615a63_837x778.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!cOFa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86c042ff-ef6f-4b8c-be5c-36956e615a63_837x778.png" width="837" height="778" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/86c042ff-ef6f-4b8c-be5c-36956e615a63_837x778.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:778,&quot;width&quot;:837,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:136950,&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://dataopsleadership.substack.com/i/209837616?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86c042ff-ef6f-4b8c-be5c-36956e615a63_837x778.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!cOFa!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86c042ff-ef6f-4b8c-be5c-36956e615a63_837x778.png 424w, /__u/substackcdn.com/image/fetch/$s_!cOFa!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86c042ff-ef6f-4b8c-be5c-36956e615a63_837x778.png 848w, /__u/substackcdn.com/image/fetch/$s_!cOFa!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86c042ff-ef6f-4b8c-be5c-36956e615a63_837x778.png 1272w, /__u/substackcdn.com/image/fetch/$s_!cOFa!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86c042ff-ef6f-4b8c-be5c-36956e615a63_837x778.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Understanding Estuary Failures and other states in Orchestra</figcaption></figure></div><p><span>Run 4 convinced me the semantics were correct, although both checks warned, downstream ran anyway, and dbt failed on its own merits.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!y5W7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8268b91-b2c0-4914-a958-051994ac3d29_2048x1134.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!y5W7!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8268b91-b2c0-4914-a958-051994ac3d29_2048x1134.png 424w, /__u/substackcdn.com/image/fetch/$s_!y5W7!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8268b91-b2c0-4914-a958-051994ac3d29_2048x1134.png 848w, /__u/substackcdn.com/image/fetch/$s_!y5W7!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8268b91-b2c0-4914-a958-051994ac3d29_2048x1134.png 1272w, /__u/substackcdn.com/image/fetch/$s_!y5W7!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8268b91-b2c0-4914-a958-051994ac3d29_2048x1134.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!y5W7!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8268b91-b2c0-4914-a958-051994ac3d29_2048x1134.png" width="1200" height="664.2857142857143" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f8268b91-b2c0-4914-a958-051994ac3d29_2048x1134.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:806,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&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;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!y5W7!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8268b91-b2c0-4914-a958-051994ac3d29_2048x1134.png 424w, /__u/substackcdn.com/image/fetch/$s_!y5W7!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8268b91-b2c0-4914-a958-051994ac3d29_2048x1134.png 848w, /__u/substackcdn.com/image/fetch/$s_!y5W7!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8268b91-b2c0-4914-a958-051994ac3d29_2048x1134.png 1272w, /__u/substackcdn.com/image/fetch/$s_!y5W7!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8268b91-b2c0-4914-a958-051994ac3d29_2048x1134.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><span>Around run 8 I was convinced the gate was working well. A 945-second latency reading against a 900-second threshold, and five downstream tasks skipped rather than run against data Orchestra could not vouch for.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!6PJs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40bd5583-5e79-496f-bf81-eaa7735fb231_2048x1132.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!6PJs!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40bd5583-5e79-496f-bf81-eaa7735fb231_2048x1132.png 424w, /__u/substackcdn.com/image/fetch/$s_!6PJs!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40bd5583-5e79-496f-bf81-eaa7735fb231_2048x1132.png 848w, /__u/substackcdn.com/image/fetch/$s_!6PJs!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40bd5583-5e79-496f-bf81-eaa7735fb231_2048x1132.png 1272w, /__u/substackcdn.com/image/fetch/$s_!6PJs!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40bd5583-5e79-496f-bf81-eaa7735fb231_2048x1132.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!6PJs!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40bd5583-5e79-496f-bf81-eaa7735fb231_2048x1132.png" width="1200" height="663.4615384615385" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/40bd5583-5e79-496f-bf81-eaa7735fb231_2048x1132.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:805,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&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;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!6PJs!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40bd5583-5e79-496f-bf81-eaa7735fb231_2048x1132.png 424w, /__u/substackcdn.com/image/fetch/$s_!6PJs!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40bd5583-5e79-496f-bf81-eaa7735fb231_2048x1132.png 848w, /__u/substackcdn.com/image/fetch/$s_!6PJs!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40bd5583-5e79-496f-bf81-eaa7735fb231_2048x1132.png 1272w, /__u/substackcdn.com/image/fetch/$s_!6PJs!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40bd5583-5e79-496f-bf81-eaa7735fb231_2048x1132.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><span>And finally&#8230; drumroll please&#8230; run 9:</span></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;5e63e605-2ab5-4061-a582-b8f2d6c7bf60&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">[SUCCEEDED] Check Postgres capture           ESTUARY     txn delta 173
[SUCCEEDED] Check Snowflake materialization  ESTUARY     txn delta 1; latency 694s
[SUCCEEDED] dbt build                        DBT_CORE    All dbt commands finished
[SUCCEEDED] Orders are fresh                 SNOWFLAKE   Test passed - returned 0 rows
[SUCCEEDED] Revenue is non-negative          SNOWFLAKE   Test passed - returned 0 rows
[SUCCEEDED] Status values are known          SNOWFLAKE   Test passed - returned 0 rows
[SUCCEEDED] No future-dated orders           SNOWFLAKE   Test passed - returned 0 rows
</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!WLjV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbccfb59b-be68-4f11-9cce-5650f608199b_2048x1134.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!WLjV!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbccfb59b-be68-4f11-9cce-5650f608199b_2048x1134.png 424w, /__u/substackcdn.com/image/fetch/$s_!WLjV!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbccfb59b-be68-4f11-9cce-5650f608199b_2048x1134.png 848w, /__u/substackcdn.com/image/fetch/$s_!WLjV!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbccfb59b-be68-4f11-9cce-5650f608199b_2048x1134.png 1272w, /__u/substackcdn.com/image/fetch/$s_!WLjV!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbccfb59b-be68-4f11-9cce-5650f608199b_2048x1134.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!WLjV!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbccfb59b-be68-4f11-9cce-5650f608199b_2048x1134.png" width="1200" height="664.2857142857143" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bccfb59b-be68-4f11-9cce-5650f608199b_2048x1134.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:806,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&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;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!WLjV!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbccfb59b-be68-4f11-9cce-5650f608199b_2048x1134.png 424w, /__u/substackcdn.com/image/fetch/$s_!WLjV!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbccfb59b-be68-4f11-9cce-5650f608199b_2048x1134.png 848w, /__u/substackcdn.com/image/fetch/$s_!WLjV!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbccfb59b-be68-4f11-9cce-5650f608199b_2048x1134.png 1272w, /__u/substackcdn.com/image/fetch/$s_!WLjV!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbccfb59b-be68-4f11-9cce-5650f608199b_2048x1134.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">End to end ELT Pipeline with Orchestra, Estuary, dbt and Snowflake</figcaption></figure></div><h2><span>How the agent diagnosed and fixed pipeline failures</span></h2><p><span>This is where the agent earned its keep, by reading logs rather than by writing YAML. identify-pipeline-error routes into fix-orchestra-pipeline, and the whole loop runs over MCP.</span></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;3e70fc4b-8ed8-4bf9-8439-d20d86fc97f2&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">list_task_runs_for_pipeline_run  &#8594; which task failed, and its integration
list_task_run_logs               &#8594; what log files exist
download_task_run_log            &#8594; the actual stderr</code></pre></div><p><span>For run 6, the log filename gave the bug away before reading a byte of content.</span></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;318b1ca6-4efa-4301-9b66-48b7cc551b9d&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">&#8220;1/dbt deps dbt build --select stg_orders daily_order_metrics&#8221;</code></pre></div><p><span>One file, one command. The newline in my commands string had been flattened and the content confirmed it.</span></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;d6f7d9e3-ad3d-42b9-aad7-cf7c3ed335e4&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">[DBT CORE] Installing dbt dependencies          &#8592; Orchestra runs dbt deps itself

[DBT CORE] Parsed dbt command(s): dbt deps dbt build --select stg_orders &#8230;

[DBT CORE] Running command #1: &#8216;dbt deps dbt build --select stg_orders &#8230;&#8217;

Usage: dbt deps [OPTIONS]

Error: No such option &#8216;--select&#8217;.

[DBT CORE] exited with code 2</code></pre></div><p><span>Two findings came out of one log: the flattening, and the fact that dbt deps was redundant because Orchestra already installs packages.yml dependencies when it clones the repo. The fix was to delete a command.</span></p><h2><span>Where human intervention was still required</span></h2><p><span>&#8220;The agent built my pipeline&#8221; is a claim that deserves a boundary. Agents did the authoring, publishing, diagnosing and fixing. I was required for exactly two things, all related to credential handling. Looks like that is something platforms currently don&#8217;t want to let agents handle. Fair.</span></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!GFPc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadbff7b9-402a-4fe2-ae8b-b5843ada3a3c_847x201.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!GFPc!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadbff7b9-402a-4fe2-ae8b-b5843ada3a3c_847x201.png 424w, /__u/substackcdn.com/image/fetch/$s_!GFPc!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadbff7b9-402a-4fe2-ae8b-b5843ada3a3c_847x201.png 848w, /__u/substackcdn.com/image/fetch/$s_!GFPc!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadbff7b9-402a-4fe2-ae8b-b5843ada3a3c_847x201.png 1272w, /__u/substackcdn.com/image/fetch/$s_!GFPc!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadbff7b9-402a-4fe2-ae8b-b5843ada3a3c_847x201.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!GFPc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadbff7b9-402a-4fe2-ae8b-b5843ada3a3c_847x201.png" width="847" height="201" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/adbff7b9-402a-4fe2-ae8b-b5843ada3a3c_847x201.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:201,&quot;width&quot;:847,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:21454,&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://dataopsleadership.substack.com/i/209837616?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadbff7b9-402a-4fe2-ae8b-b5843ada3a3c_847x201.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!GFPc!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadbff7b9-402a-4fe2-ae8b-b5843ada3a3c_847x201.png 424w, /__u/substackcdn.com/image/fetch/$s_!GFPc!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadbff7b9-402a-4fe2-ae8b-b5843ada3a3c_847x201.png 848w, /__u/substackcdn.com/image/fetch/$s_!GFPc!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadbff7b9-402a-4fe2-ae8b-b5843ada3a3c_847x201.png 1272w, /__u/substackcdn.com/image/fetch/$s_!GFPc!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadbff7b9-402a-4fe2-ae8b-b5843ada3a3c_847x201.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p style="text-align: center;"></p><p><span>Everything downstream of those two was the agent&#8217;s work, including mapping the connections to environment variables, which update_environment handles with type integration_credential even though creating the connections does not.</span></p><p><span>The dbt Core connection illustrates the boundary well. Pasting the repo, token and profiles.yml is mine. Everything about what runs against it belongs to the agent.</span></p><h2><span>Production lessons and configuration gotchas</span></h2><p><span>The full catalogue from this build runs to 25 items, annotated inline in the demo repo. These are the ones I would have paid money to know in advance.</span></p><p><strong><span>DBT_CORE_EXECUTE.commands takes a single string holding a single command.</span></strong><span> Validation rejects a list, and newlines then get silently flattened into one shell invocation, so &#8220;dbt deps\ndbt build&#8221; becomes dbt deps dbt build &#8230; and exits 2. dbt deps is also unnecessary, since Orchestra installs packages.yml for you.</span></p><p><strong><span>ESTUARY_CHECK_FLOW&#8217;s latency metric tracks commit acknowledgement.</span></strong><span> It says nothing about row freshness. I measured 694 to 945 seconds while Snowflake sat 9 seconds behind Postgres. latency_threshold: 900 false-alarms even on a 5-minute sync, and 1800 is a realistic floor. Tune this against the observed metric rather than against your data SLA.</span></p><p><strong><span>The first check has no baseline, so it reports the task&#8217;s entire failure history as new.</span></strong><span> Looks like run one is always noisy, so judge from run two onward.</span></p><p><strong><span>Keep flowctl current. </span></strong><span>Flowctl gets updated frequently, make sure you have the latest version to avoid any backwards incompatibilities.</span></p><p><span>A handful of smaller ones:</span></p><ul><li><p><span>The Snowflake materialization connector creates tables and leaves schemas alone. Create the target schema first, or get Schema &#8216;ESTUARY_DB.AGENT_DEMO&#8217; does not exist or not authorized.</span></p></li><li><p><span>Field names are snake_case: private_key rather than privateKey. timestamp_type is required, and warehouse is required unless the user has a default.</span></p></li><li><p><span>Estuary config changes wait for the current transaction. A connector on a 30m sync finishes its acknowledgement delay first. The symptom is logs still showing the old table name and delay: 29m56s long after a successful publish. Disable and re-enable the shards.</span></p></li><li><p><a href="https://docs.getorchestra.io/docs/core-concepts/triggers/cron"><span>Orchestra cron expressions</span></a><span> have six fields starting with minutes, as in 0 6 ? * * *. The ? resembles Quartz syntax, where the first field is seconds, so a copied Quartz expression shifts everything by one field.</span></p></li><li><p><span>Pipeline aliases accept letters, numbers and underscores. Hyphens fail.</span></p></li><li><p><span>A SLACK alert destination will not validate without a default Slack connection, safe to comment out for the demo.</span></p></li><li><p><span>Your dbt project has to live in a Git repo, since Orchestra clones it and cannot read a local directory. It needs requirements.txt or pyproject.toml at the root. The Git token needs Contents: Read and Metadata: Read.</span></p></li><li><p><span>project_dir is relative to the repo root, so . when dbt_project.yml sits at the top level.</span></p></li><li><p><span>profiles.yml gets pasted into the connection and never committed, and its profile name has to match dbt_project.yml. Skip +schema in dbt_project.yml when the profile already targets the right schema, because dbt concatenates them and yields ANALYTICS_analytics.</span></p></li></ul><p><span>One process gotcha applies regardless of product: verify credentials before wiring anything. dbt debug and flowctl catalog test each take seconds and eliminate whole classes of later confusion. The exact profiles.yml I handed Orchestra was proven locally first, with dbt debug returning All checks passed and dbt build returning 12/12 PASS.</span></p><h2><span>Sidebar: an MCP server is an HTTP endpoint</span></h2><p><span>MCP tools load at client startup, so the freshly added Orchestra server was not callable in-session. Rather than stall, the agent spoke JSON-RPC to the streamable-HTTP endpoint directly, walking initialize, notifications/initialized, tools/list and tools/call, shelling out to curl and tracking Mcp-Session-Id by hand.</span></p><p><span>As a proper solution, it&#8217;s always better to add the MCP server before kicking off an agentic session, but as it turns out, MCP is HTTP with a session header, which is handy to know when a client has not reloaded.</span></p><h2><span>Measured Postgres-to-Snowflake pipeline results</span></h2><p><span>Data movement half:</span></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!-3Ej!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0720663-49ac-4a83-affa-727f00e2536a_703x237.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!-3Ej!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0720663-49ac-4a83-affa-727f00e2536a_703x237.png 424w, /__u/substackcdn.com/image/fetch/$s_!-3Ej!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0720663-49ac-4a83-affa-727f00e2536a_703x237.png 848w, /__u/substackcdn.com/image/fetch/$s_!-3Ej!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0720663-49ac-4a83-affa-727f00e2536a_703x237.png 1272w, /__u/substackcdn.com/image/fetch/$s_!-3Ej!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0720663-49ac-4a83-affa-727f00e2536a_703x237.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!-3Ej!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0720663-49ac-4a83-affa-727f00e2536a_703x237.png" width="703" height="237" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c0720663-49ac-4a83-affa-727f00e2536a_703x237.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:237,&quot;width&quot;:703,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:33645,&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://dataopsleadership.substack.com/i/209837616?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0720663-49ac-4a83-affa-727f00e2536a_703x237.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!-3Ej!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0720663-49ac-4a83-affa-727f00e2536a_703x237.png 424w, /__u/substackcdn.com/image/fetch/$s_!-3Ej!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0720663-49ac-4a83-affa-727f00e2536a_703x237.png 848w, /__u/substackcdn.com/image/fetch/$s_!-3Ej!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0720663-49ac-4a83-affa-727f00e2536a_703x237.png 1272w, /__u/substackcdn.com/image/fetch/$s_!-3Ej!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0720663-49ac-4a83-affa-727f00e2536a_703x237.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p><span>Transformation half: dbt build returned PASS=12 WARN=0 ERROR=0 SKIP=0.</span></p><p><span>The mart across three successive Orchestra-triggered builds, which is the proof it transformed live streamed data rather than a snapshot:</span></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!_Xba!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c92f870-fceb-4ef7-8b34-570d9a7436b6_355x193.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!_Xba!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c92f870-fceb-4ef7-8b34-570d9a7436b6_355x193.png 424w, /__u/substackcdn.com/image/fetch/$s_!_Xba!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c92f870-fceb-4ef7-8b34-570d9a7436b6_355x193.png 848w, /__u/substackcdn.com/image/fetch/$s_!_Xba!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c92f870-fceb-4ef7-8b34-570d9a7436b6_355x193.png 1272w, /__u/substackcdn.com/image/fetch/$s_!_Xba!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c92f870-fceb-4ef7-8b34-570d9a7436b6_355x193.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!_Xba!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c92f870-fceb-4ef7-8b34-570d9a7436b6_355x193.png" width="355" height="193" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8c92f870-fceb-4ef7-8b34-570d9a7436b6_355x193.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:193,&quot;width&quot;:355,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:15880,&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://dataopsleadership.substack.com/i/209837616?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c92f870-fceb-4ef7-8b34-570d9a7436b6_355x193.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!_Xba!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c92f870-fceb-4ef7-8b34-570d9a7436b6_355x193.png 424w, /__u/substackcdn.com/image/fetch/$s_!_Xba!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c92f870-fceb-4ef7-8b34-570d9a7436b6_355x193.png 848w, /__u/substackcdn.com/image/fetch/$s_!_Xba!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c92f870-fceb-4ef7-8b34-570d9a7436b6_355x193.png 1272w, /__u/substackcdn.com/image/fetch/$s_!_Xba!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c92f870-fceb-4ef7-8b34-570d9a7436b6_355x193.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p style="text-align: center;"></p><p><span>All four DQ tests returned 0 rows. Hooray! :fire: :D</span></p><h2><span>What this agentic data engineering test proves, and what it does not</span></h2><p><span>The headline is not that AI writes YAML, because it writes YAML pretty badly on the first attempt: six schema errors across two tools in the first drafts alone.</span></p><p><span>The useful result is that the loop closes. The live APIs are strict enough to reject bad specs with specific, actionable errors (422: commands &#8212; Input should be a valid string, Error: No such option &#8216;--select&#8217;, MAC mismatch), and specific errors are something an agent can act on. validate_pipeline and flowctl catalog test both run in seconds and write nothing, which makes iteration cheap and that combination is what turned nine runs into a short afternoon instead of a week.</span></p><p><span>The narrower result is more interesting to me: streaming health can be a first-class precondition for batch work. </span><code>ESTUARY_CHECK_FLOW </code><span>is the concrete answer to why you would run these two products together. Gating dbt on ingestion freshness used to mean writing a Python task that queried an API and raised an exception. There are now four parameters, and it distinguishes degraded from broken, so a slow sync warns while a failing capture stops the line.</span></p><p><span>Five consecutive runs ended with the gate refusing to let dbt read the data. That behaviour is the thing being demonstrated.</span></p><h2><span>Try it yourself</span></h2><ul><li><p><span>dbt project used here: danthelion/agent-demo-dbt</span></p></li><li><p><span>Full demo, including Docker Postgres and generator, Snowflake setup SQL, Estuary capture and materialization specs, dbt models, and the Orchestra pipeline YAML: </span><strong><a href="https://github.com/estuary/examples/%E2%80%8Eestuary-orchestra-agent-pipeline"><span>https://github.com/estuary/examples/&#8206;estuary-orchestra-agent-pipeline</span></a></strong></p></li><li><p><a href="https://github.com/estuary/agent-skills"><span>Estuary skills</span></a><span>: /plugin marketplace add estuary/agent-skills</span></p></li><li><p><span>Orchestra skills: /plugin marketplace add orchestra-hq/orchestra-skills</span></p></li></ul>]]></content:encoded></item><item><title><![CDATA[IS Codex Better than Claude Code? What Claude can do that Cursor, Codex etc. can't? What are skills? Help]]></title><description><![CDATA[How to think about AI Skills for Data Engineers]]></description><link>https://dataopsleadership.substack.com/p/is-codex-better-than-claude-code</link><guid isPermaLink="false">https://dataopsleadership.substack.com/p/is-codex-better-than-claude-code</guid><dc:creator><![CDATA[Hugo Lu]]></dc:creator><pubDate>Thu, 25 Jun 2026 16:37:02 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!CVrv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dad560f-f7b8-4676-86f2-e1c2753520ca_1110x714.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>So, a few things</p><ol><li><p>Skills are like functions, but they are easier to define</p></li><li><p>Simple things can be functions, you may want a complex thing to be a skill</p></li><li><p>Functions are bad at doing things badly expressed in code, like running a bash script in a python script or running web search</p></li></ol><p>And then, in turn:</p><ul><li><p>Claude Code runs on your desktop. It has minimal governance, no centralisation, the UI is limited to VScode (or similar) or I guess Claude Desktop (which is a different product with different features)</p></li><li><p>Claude uses its own model, and always will</p></li><li><p>Codex providea a centralisation and operationalisation layer for running agents (more infra other than your computer and an LLM inference engine hosted in Anthropic&#8217;s Cloud)</p></li></ul><p>So there are a few things a centralised agent management system can provide that claude code cant</p><ol><li><p>Multi agent harness and cost reduction. If LLM costs are getting to you, this is how you solve it. Model arbitrage</p></li><li><p>Centralisation, governance, logging, consistency - every LLM-based workflow going through one point</p></li><li><p>Orchestration, Monitoring and Scheduling (sounds like <a href="https://getorchestra.io">Orchestra</a>)</p></li></ol><p>Where do Skills come in? Skills are the resuable components agents get. They&#8217;re the logic of <em>how </em>to do something. It&#8217;s becoming increasingly apparent to me that skills are going to need A) a standard and B) centralisation.</p><p>It&#8217;s also interesting that C) Skills are basically natural language represntations of flow-charts and loops.</p><p>This is not to be confused with an agent-writing framework like Langchain, which governs how an agent moves from one task to another operationally, rather than how to move between tasks from a logical perspective.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!CVrv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dad560f-f7b8-4676-86f2-e1c2753520ca_1110x714.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!CVrv!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dad560f-f7b8-4676-86f2-e1c2753520ca_1110x714.png 424w, /__u/substackcdn.com/image/fetch/$s_!CVrv!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dad560f-f7b8-4676-86f2-e1c2753520ca_1110x714.png 848w, /__u/substackcdn.com/image/fetch/$s_!CVrv!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dad560f-f7b8-4676-86f2-e1c2753520ca_1110x714.png 1272w, /__u/substackcdn.com/image/fetch/$s_!CVrv!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dad560f-f7b8-4676-86f2-e1c2753520ca_1110x714.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!CVrv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dad560f-f7b8-4676-86f2-e1c2753520ca_1110x714.png" width="1110" height="714" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3dad560f-f7b8-4676-86f2-e1c2753520ca_1110x714.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:714,&quot;width&quot;:1110,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:90383,&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://dataopsleadership.substack.com/i/203569313?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dad560f-f7b8-4676-86f2-e1c2753520ca_1110x714.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!CVrv!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dad560f-f7b8-4676-86f2-e1c2753520ca_1110x714.png 424w, /__u/substackcdn.com/image/fetch/$s_!CVrv!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dad560f-f7b8-4676-86f2-e1c2753520ca_1110x714.png 848w, /__u/substackcdn.com/image/fetch/$s_!CVrv!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dad560f-f7b8-4676-86f2-e1c2753520ca_1110x714.png 1272w, /__u/substackcdn.com/image/fetch/$s_!CVrv!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dad560f-f7b8-4676-86f2-e1c2753520ca_1110x714.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This &#8220;Loop&#8221; is not the same thing as the &#8220;loop&#8221; in a decision tree, e.g.</p><ul><li><p>Spec task</p></li><li><p>Plan task</p></li><li><p>Execute steps in task</p></li><li><p><mark data-color="#ffe599" style="background-color: rgb(255, 229, 153); color: rgb(0, 0, 0);">Observe results</mark></p></li><li><p>Task complete? If not go back to step 2</p></li></ul><p>Which is what you&#8217;d see in a skill.</p><p>So a few takeaways for data teams</p><ol><li><p>We&#8217;re going to be running agents centrally somewhere at some point for things that arent&#8217; just generating code at home</p></li><li><p>Agents have loops to operate, but when we give them skills we&#8217;re basically defining flow charts which are themselves representations of functions</p></li><li><p>We are going to need to get good, and efficient, at writing good, efficient flowcharts. After all, a badly written flowchart is like a badly written function</p></li><li><p>There is some value in non-model provider AI companies as they&#8217;ll give harnesses that allow you to pick between models and therefore save on costs</p></li><li><p>Ephemeral infrastructure is basically critical for closing the loop as it helps with the <mark data-color="#fff2cc" style="background-color: rgb(255, 242, 204); color: rgb(0, 0, 0);">observe results</mark> step above. Without that, your loop is screwed as your agent cannot observe or check anything.</p></li></ol><p>We open-sourced a bunch of our skills at Orchestra today and a lot of them have these types of loops, if you would care to look:</p><h3>Open-sourcing Orchestra Skills</h3><p><span>Today I'm super excited to share that we're open-sourcing our </span><strong><a href="https://www.linkedin.com/company/getorchestra/"><span>Orchestra</span></a></strong><span> Skills repo &#128293; </span><br><br><span>With AI Skills it's like having a data engineer in your pocket. In </span><strong><a href="https://www.linkedin.com/in/christianchance/"><span>Christian Chance</span></a></strong><span>'s words "This is a game changer" "It's making me second guess hiring a new data engineer"!</span><br><br><span>AI Skills allow you to do things on autopilot that would have taken hours if not days:</span><br><br><span>&#128259; Easily retry broken pipelines from the point of failure with fixes applied in new branches, integrated slack alerting to let you know what is going on</span><br><br><span>&#9874;&#65039; Build Orchestration pipelines e2e. One yml file and you are done. Alerts, monitoring, observability included</span><br><br><span>&#129514; This is a fun one: the skills can also scan your entire DB and write all your data quality tests for you. Supported skill for </span><strong><a href="https://www.linkedin.com/company/snowflake-computing/"><span>Snowflake</span></a></strong><span> </span><strong><a href="https://www.linkedin.com/company/databricks/"><span>Databricks</span></a></strong><span> </span><strong><a href="https://www.linkedin.com/company/clickhouseinc/"><span>ClickHouse</span></a></strong><span> and BigQuery</span><br><br><span>And lots more. Huge thanks to </span><strong><a href="https://www.linkedin.com/in/gary-james-013b0138/"><span>Gary James</span></a></strong><span> for the big lift on these. There are some nice additions like the plugin to allow these to be used for not just claude but any AI e.g. </span><strong><a href="https://www.linkedin.com/company/cursorai/"><span>Cursor</span></a></strong><br><br><span>Check it out here! </span><strong><a href="https://www.linkedin.com/safety/go/?url=https%3A%2F%2Flnkd%2Ein%2FedDh8uWC&amp;urlhash=dDGF&amp;mt=c5nbcZ9qoYi-XnTVvMSePACC2lYrqBGkHAlQZAWvGJCZsk5IppZ9xQRIDqquibKJ1nwL4okonqv27V_MB8m-nEGOVwr1xpJA3FqDqOPUPY97_O45e4v9_VykCA&amp;isSdui=true"><span>https://lnkd.in/edDh8uWC</span></a></strong><br><br><strong><a href="https://www.linkedin.com/search/results/all/?keywords=%23orchestra&amp;origin=HASH_TAG_FROM_FEED"><span>#orchestra</span></a></strong><span> </span><strong><a href="https://www.linkedin.com/search/results/all/?keywords=%23claude&amp;origin=HASH_TAG_FROM_FEED"><span>#claude</span></a></strong><span> </span><strong><a href="https://www.linkedin.com/search/results/all/?keywords=%23ai&amp;origin=HASH_TAG_FROM_FEED"><span>#ai</span></a></strong><span> </span><strong><a href="https://www.linkedin.com/search/results/all/?keywords=%23skills&amp;origin=HASH_TAG_FROM_FEED"><span>#skills</span></a></strong></p><p></p><p></p><p></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[7 Crucial Barriers between Data Teams and Self-Healing Data Architecture]]></title><description><![CDATA[What Data Teams need to build with AI to make Self-Healing Data Architecture a practical reality]]></description><link>https://dataopsleadership.substack.com/p/7-crucial-barriers-between-data-teams</link><guid isPermaLink="false">https://dataopsleadership.substack.com/p/7-crucial-barriers-between-data-teams</guid><dc:creator><![CDATA[Hugo Lu]]></dc:creator><pubDate>Wed, 17 Jun 2026 16:44:16 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!bXPZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa78a1738-2f8f-4e39-8cba-cb0d6104d7b7_1920x1280.jpeg" 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="/__u/substackcdn.com/image/fetch/$s_!bXPZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa78a1738-2f8f-4e39-8cba-cb0d6104d7b7_1920x1280.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!bXPZ!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa78a1738-2f8f-4e39-8cba-cb0d6104d7b7_1920x1280.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!bXPZ!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa78a1738-2f8f-4e39-8cba-cb0d6104d7b7_1920x1280.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!bXPZ!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa78a1738-2f8f-4e39-8cba-cb0d6104d7b7_1920x1280.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!bXPZ!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa78a1738-2f8f-4e39-8cba-cb0d6104d7b7_1920x1280.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!bXPZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa78a1738-2f8f-4e39-8cba-cb0d6104d7b7_1920x1280.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a78a1738-2f8f-4e39-8cba-cb0d6104d7b7_1920x1280.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!bXPZ!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa78a1738-2f8f-4e39-8cba-cb0d6104d7b7_1920x1280.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!bXPZ!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa78a1738-2f8f-4e39-8cba-cb0d6104d7b7_1920x1280.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!bXPZ!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa78a1738-2f8f-4e39-8cba-cb0d6104d7b7_1920x1280.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!bXPZ!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa78a1738-2f8f-4e39-8cba-cb0d6104d7b7_1920x1280.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">AI rendering of Self-Healing Data Architecture (?) Photo by <a href="https://unsplash.com/@solotravelgoals?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">SoloTravelGoals</a> on <a href="https://unsplash.com/photos/brown-concrete-structure-7kLufxYoqWk?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><p>It&#8217;s no surprise that the largest companies in the world are building agents to create autonomous architecture. <a href="https://www.databricks.com/blog/introducing-genie-zeroops">Genie Zero Ops</a> was the worst-kept secret in Databricks Land, but it&#8217;s a really exciting development.</p><p>Genie Ops has context of everything in Unity Catalog. It is, weirdly, always running. It has access to sandboxes, and tests data and can hotfix it, even waiting for a human in the loop to interact with the results (github, Jira ticket etc.) to allow the loop to be closed.</p><p>It&#8217;s a very cool piece of kit, but wanting in many ways.</p><ol><li><p>Credential Management is not clearly defined</p></li><li><p>It is always on, and therefore control is limited</p></li><li><p>Not obvious how the Skills are defined</p></li><li><p>lacks context of anything outside of Unity - tying you to Unity Catalog &#8220;Everything is fine if you have the context&#8221; &#8220;It&#8217;s easy when the data is clean reliable and fresh&#8221;</p></li><li><p>Lacks a proper orchestrator / event-based orchestration</p></li></ol><p>Concretely, there are a few barriers to achieving the nirvana of self-healing data architecture and I don&#8217;t think we are quite there yet. I wrote these up below. The Databricks announcements corroborate this article quite nicely.</p><h3>Introduction</h3><p>For many data engineers, AI examples of Data Engineering revolve around one thing: fixing pipeline. An engineer opens up claude code, pastes some logs, and a pull request is made.</p><p>Semantics are fundamental here. Because when people say &#8220;Self-Healing&#8221; what they mean is &#8220;Self-managing&#8221;. The key to success in AI is not defined by manual intervention and interaction&#8202;&#8212;&#8202;but the absence of it.</p><p>The dream for Data Teams is a system whereby Data Pipelines and workflows generally succeed without any human intervention at all. However, there are barriers that lie in between us and this golden future.</p><p>Agents require context&#8202;&#8212;&#8202;fixing a pipeline may be due to a transient error, upstream schema change, or something uncontrollable entirely like a human dropping a table. Experience provides engineering teams with the know-how of how to fix these; context agents are missing.</p><p>A shift in mindset will also be apparent. The old pattern of &#8220;New branch, merge, re-run&#8221; is distinctly <em>slow </em>and not <em>agenty</em>. Unless we are to change our patterns and allow agents to <em>merge </em>PRs as well, this seems like a large mindset shift is required.</p><p>Finally, data does not &#8220;branch&#8221; well. Projects like Lake FS promised to make &#8220;Git for data&#8221; mainstream, but it is not. I have been writing about <a href="https://medium.com/snowflake/why-snowflakes-clone-command-changes-the-game-for-ci-cd-in-data-ccb6fb9955ba">zero-copy cloning</a> for years, but it is still not widely used. The distinctions between <em>code </em>and <em>data</em> are not obvious.</p><p>In this article, we&#8217;ll cover 7 barriers in between the typical Data Stacks of today and the nirvana of self-healing data pipelines / autonomous data pipelines.</p><p>Let&#8217;s dive in!</p><h3>Barrier 1 | Context and failure recall</h3><p>Pipelines can fail for a plethora of reasons, and being able to fix pipelines <em>period </em>is a requirement for an AI system. We can categorise failures into a few broad types:</p><ul><li><p>Infrastructure issues</p></li><li><p>Code issues</p></li><li><p>Data Issues</p></li><li><p>Transient or Third Party issues</p></li></ul><p>Generally, the manner of fixing data requires knowledge of the system. For example, Acme&#8217;s Kubernetes Cluster may only be accessible by Mr. Bob, who is the only person who has access to Bob&#8217;s special access key hidden in AWS Secrets Manager with a non-standard header. AI doesn&#8217;t know about Bob&#8217;s key, so won&#8217;t be able to fix the cluster.</p><p>Similarly, Analyst Sophie may know that the right thing to do in Widgets Incorporated is to simply gloss over the fact that sales are reported in multiple currencies, and to manipulate the numbers to be 10% higher than the ones yesterday. AI doesn&#8217;t know how to treat the numbers.</p><p>AI may also not know that to failure handle the internal API, you simply need to try it again between 2.47am and 3.12am.</p><p>These are ridiculous examples, but they illustrate the point that the knowledge to fix these different types of errors often exists within individuals&#8217; heads. It is not enough to speak about &#8220;Metadata context&#8221;. While gathering lineage, logs, code, documentation, and other <em>written-down</em> context is undoubtedly imperative, AI is actually pretty good at <em>just working it out</em>.</p><p>As Data Folks, we&#8217;ve all been in a situation where we (Or perhaps someone we&#8217;ve spoken to) has thought:</p><blockquote><p>&#8220;How on earth could I have known that?&#8221;</p></blockquote><p>At the end of the day, only humans know where the bodies are buried.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!OmYS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05d80865-f1dc-4261-94d4-2a930d3c58b5_600x361.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!OmYS!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05d80865-f1dc-4261-94d4-2a930d3c58b5_600x361.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!OmYS!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05d80865-f1dc-4261-94d4-2a930d3c58b5_600x361.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!OmYS!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05d80865-f1dc-4261-94d4-2a930d3c58b5_600x361.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!OmYS!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05d80865-f1dc-4261-94d4-2a930d3c58b5_600x361.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!OmYS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05d80865-f1dc-4261-94d4-2a930d3c58b5_600x361.jpeg" width="600" height="361" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/05d80865-f1dc-4261-94d4-2a930d3c58b5_600x361.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:361,&quot;width&quot;:600,&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="/__u/substackcdn.com/image/fetch/$s_!OmYS!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05d80865-f1dc-4261-94d4-2a930d3c58b5_600x361.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!OmYS!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05d80865-f1dc-4261-94d4-2a930d3c58b5_600x361.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!OmYS!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05d80865-f1dc-4261-94d4-2a930d3c58b5_600x361.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!OmYS!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05d80865-f1dc-4261-94d4-2a930d3c58b5_600x361.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">This entire structure is tech debt and could be broken down with AI. <a href="https://www.getorchestra.io/blog/the-complete-guide-to-ai-implementation-for-chief-data-ai-officers-in-2026">Source</a></figcaption></figure></div><h3>Barrier 2 | Elastic infrastructure</h3><p>Considering issues of the infrastructure type specifically, I am coining a term &#8220;Elastic&#8221; infrastructure. &#8220;Elastic Infrastructure&#8221; does not just scale, but also has an API to manage it.</p><p>An EC2 instance would not be elastic, as it does not scale beyond a certain point.</p><p>A Kubernetes cluster on a locked-down machine would not be elastic w.r.t cloud as there would be no API to be managed.</p><p>The reason is that AI will require access to Infrastructure in order to recover failures from it.</p><p>SaaS providers should relish this opportunity. SAAS providers necessarily take the management burden of infrastructure from Data Teams away, for a fee. This is a very AI-friendly approach, but falls down in respect of Barrier 6, which we will get to.</p><h3>Barrier 3 | Operational Agents and Quality Data</h3><p>Pete in Finance has overwritten the Supply and Operations Planning Google Sheet for the US again. The international forecasts are broken, and your pipeline is failing. There are 0 rows in <code>us_forecast_dec_v1</code> and <code>forecasts_agg</code> is stale.</p><p>AI is telling you the connectors are fine but there was no data. It can&#8217;t do anything.</p><p>What is the solution here? Let&#8217;s play a quiz. I&#8217;ll give you some ideas, and you pick the right answer.</p><ul><li><p><strong>Option 1: </strong>let AI hallucinate the forecasts</p></li><li><p><strong>Option 2:</strong> let AI hallucinate the forecasts in your data warehouse, and re-run the Google Sheet Pipeline Later</p></li><li><p><strong>Option 3</strong>: AI Tells Pete to upload the damn forecasts!</p></li><li><p><strong>Option 4</strong>: there is a warm pool of <a href="https://rentahuman.ai/">rented humans</a>. When this type of pipeline fails, the AI instructs the warm pool to bother Pete <em>in person </em>until he fixes the pipeline himself, by hand</p></li></ul><p>Of course, there is no right answer! All options are not great, ranging from bad to ludicrous. In fact, Option 4 doesn&#8217;t really require AI at all, but something called Teamwork.</p><p>Quality Data is as ever, the most important thing for a data engineer. Data Teams should ask this question when they interview more &#8220;How good is your data?&#8221;. It is such a determinant of Quality of Life, it is surprising not to get more of a mention.</p><p>That is not to say that Operational Agents have no place&#8202;&#8212;&#8202;for example, genuine fat finger errors could easily be corrected by an operational agent. For example, let&#8217;s say there is a new deal for $10m&#8202;&#8212;&#8202;perhaps the correct number is $1m. An agent with a Salesforce API Key could easily amend the data, and restart a pipeline.</p><h3>Barrier 4 | Git for Data</h3><p>The previous example raises an important question, which is &#8220;Should AI Agents edit production?&#8221;</p><p>If you&#8217;ve experienced multiple Saleforce environments in your career&#8202;&#8212;&#8202;I hear your pain. But the feature is designed to avoid the situation above. You see, perhaps the account executive <strong>has </strong>landed a whale deal and it <strong>is </strong>worth $10m. In that case, surely much better for the agent to edit the staging Salesforce instance rather than the Production one?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!4yfN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f467760-5c2f-4378-98f2-ef3337e9a78c_1920x1366.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!4yfN!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f467760-5c2f-4378-98f2-ef3337e9a78c_1920x1366.png 424w, /__u/substackcdn.com/image/fetch/$s_!4yfN!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f467760-5c2f-4378-98f2-ef3337e9a78c_1920x1366.png 848w, /__u/substackcdn.com/image/fetch/$s_!4yfN!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f467760-5c2f-4378-98f2-ef3337e9a78c_1920x1366.png 1272w, /__u/substackcdn.com/image/fetch/$s_!4yfN!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f467760-5c2f-4378-98f2-ef3337e9a78c_1920x1366.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!4yfN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f467760-5c2f-4378-98f2-ef3337e9a78c_1920x1366.png" width="1456" height="1036" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3f467760-5c2f-4378-98f2-ef3337e9a78c_1920x1366.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1036,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!4yfN!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f467760-5c2f-4378-98f2-ef3337e9a78c_1920x1366.png 424w, /__u/substackcdn.com/image/fetch/$s_!4yfN!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f467760-5c2f-4378-98f2-ef3337e9a78c_1920x1366.png 848w, /__u/substackcdn.com/image/fetch/$s_!4yfN!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f467760-5c2f-4378-98f2-ef3337e9a78c_1920x1366.png 1272w, /__u/substackcdn.com/image/fetch/$s_!4yfN!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f467760-5c2f-4378-98f2-ef3337e9a78c_1920x1366.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Complex Version of how AI can take branching data in git and then you can automatically recover a pipeline</figcaption></figure></div><p>The above is a high-level rendering of what the process using a git-for-data like approach would work. There is a simple version below.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!syaW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F153f63d2-dce0-4338-bd4d-47fd72c90953_600x305.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!syaW!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F153f63d2-dce0-4338-bd4d-47fd72c90953_600x305.png 424w, /__u/substackcdn.com/image/fetch/$s_!syaW!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F153f63d2-dce0-4338-bd4d-47fd72c90953_600x305.png 848w, /__u/substackcdn.com/image/fetch/$s_!syaW!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F153f63d2-dce0-4338-bd4d-47fd72c90953_600x305.png 1272w, /__u/substackcdn.com/image/fetch/$s_!syaW!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F153f63d2-dce0-4338-bd4d-47fd72c90953_600x305.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!syaW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F153f63d2-dce0-4338-bd4d-47fd72c90953_600x305.png" width="600" height="305" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/153f63d2-dce0-4338-bd4d-47fd72c90953_600x305.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:305,&quot;width&quot;:600,&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="/__u/substackcdn.com/image/fetch/$s_!syaW!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F153f63d2-dce0-4338-bd4d-47fd72c90953_600x305.png 424w, /__u/substackcdn.com/image/fetch/$s_!syaW!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F153f63d2-dce0-4338-bd4d-47fd72c90953_600x305.png 848w, /__u/substackcdn.com/image/fetch/$s_!syaW!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F153f63d2-dce0-4338-bd4d-47fd72c90953_600x305.png 1272w, /__u/substackcdn.com/image/fetch/$s_!syaW!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F153f63d2-dce0-4338-bd4d-47fd72c90953_600x305.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Simple version of an AI Workflow</figcaption></figure></div><p>In both cases, AI needs a new branch to do its work. That branch needs zero copy clones of the data, it needs a git for data approach, and you need to be able to efficiently &#8220;switch in&#8221; the data at the end.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!g985!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e1f469-cbe4-4f97-b3b7-9a3959e348fb_600x218.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!g985!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e1f469-cbe4-4f97-b3b7-9a3959e348fb_600x218.png 424w, /__u/substackcdn.com/image/fetch/$s_!g985!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e1f469-cbe4-4f97-b3b7-9a3959e348fb_600x218.png 848w, /__u/substackcdn.com/image/fetch/$s_!g985!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e1f469-cbe4-4f97-b3b7-9a3959e348fb_600x218.png 1272w, /__u/substackcdn.com/image/fetch/$s_!g985!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e1f469-cbe4-4f97-b3b7-9a3959e348fb_600x218.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!g985!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e1f469-cbe4-4f97-b3b7-9a3959e348fb_600x218.png" width="600" height="218" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/88e1f469-cbe4-4f97-b3b7-9a3959e348fb_600x218.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:218,&quot;width&quot;:600,&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="/__u/substackcdn.com/image/fetch/$s_!g985!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e1f469-cbe4-4f97-b3b7-9a3959e348fb_600x218.png 424w, /__u/substackcdn.com/image/fetch/$s_!g985!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e1f469-cbe4-4f97-b3b7-9a3959e348fb_600x218.png 848w, /__u/substackcdn.com/image/fetch/$s_!g985!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e1f469-cbe4-4f97-b3b7-9a3959e348fb_600x218.png 1272w, /__u/substackcdn.com/image/fetch/$s_!g985!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88e1f469-cbe4-4f97-b3b7-9a3959e348fb_600x218.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Simple git for data workflow</figcaption></figure></div><p>Without this structure in place, I struggle to see how AI will be trusted to reliably fix things, without creating a governance nightmare whereby it has write access to production data.</p><p>In respect of this, companies like Snowflake are well-positioned as they have supported features like zero-copy cloning for a long time. Motherduck also supports this feature. The clearest winner, though&#8202;&#8212;&#8202;is iceberg.</p><p>Iceberg supports <strong>time travel, rollback, and git for data</strong>. Companies like <a href="https://docs.bauplanlabs.com/concepts/git-for-data">Bauplan</a> have built compute engines around iceberg, which make for a nice, AI-friendly experience. AI should be a huge catalyst for iceberg.</p><h3>Barrier 5 | Pervasion through the industry</h3><p>Self-Healing Architecture hits a problem when we talk about interoperability.</p><p><a href="https://www.fivetran.com/blog/what-is-open-data-infrastructure">Fivetran</a> and <a href="https://www.getdbt.com/blog/what-is-open-data-infrastructure">dbt </a>made a big fuss about open data infrastructure in 2025&#8202;&#8212;&#8202;it is not the same thing as <em>open source data infrastructure</em>, but rather refers to an approach I think is better called the <a href="https://towardsdatascience.com/microservices-vs-monolithic-approaches-in-data-8d9d9a064d06/">Modular Data Architecture</a>, whereby different functions get different tools.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!8-8V!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff751d4ca-52ac-4266-8e9a-df125ff21f54_600x350.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!8-8V!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff751d4ca-52ac-4266-8e9a-df125ff21f54_600x350.png 424w, /__u/substackcdn.com/image/fetch/$s_!8-8V!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff751d4ca-52ac-4266-8e9a-df125ff21f54_600x350.png 848w, /__u/substackcdn.com/image/fetch/$s_!8-8V!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff751d4ca-52ac-4266-8e9a-df125ff21f54_600x350.png 1272w, /__u/substackcdn.com/image/fetch/$s_!8-8V!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff751d4ca-52ac-4266-8e9a-df125ff21f54_600x350.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!8-8V!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff751d4ca-52ac-4266-8e9a-df125ff21f54_600x350.png" width="600" height="350" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f751d4ca-52ac-4266-8e9a-df125ff21f54_600x350.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:350,&quot;width&quot;:600,&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="/__u/substackcdn.com/image/fetch/$s_!8-8V!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff751d4ca-52ac-4266-8e9a-df125ff21f54_600x350.png 424w, /__u/substackcdn.com/image/fetch/$s_!8-8V!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff751d4ca-52ac-4266-8e9a-df125ff21f54_600x350.png 848w, /__u/substackcdn.com/image/fetch/$s_!8-8V!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff751d4ca-52ac-4266-8e9a-df125ff21f54_600x350.png 1272w, /__u/substackcdn.com/image/fetch/$s_!8-8V!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff751d4ca-52ac-4266-8e9a-df125ff21f54_600x350.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><a href="https://medium.com/@hugolu87/enterprise-data-architecture-101-aws-snowflake-blueprints-16bb061526c4">Another example</a> below.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!Xya4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F836d9d24-e7dc-4e09-84b6-bb079ba70033_600x380.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!Xya4!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F836d9d24-e7dc-4e09-84b6-bb079ba70033_600x380.png 424w, /__u/substackcdn.com/image/fetch/$s_!Xya4!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F836d9d24-e7dc-4e09-84b6-bb079ba70033_600x380.png 848w, /__u/substackcdn.com/image/fetch/$s_!Xya4!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F836d9d24-e7dc-4e09-84b6-bb079ba70033_600x380.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Xya4!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F836d9d24-e7dc-4e09-84b6-bb079ba70033_600x380.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!Xya4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F836d9d24-e7dc-4e09-84b6-bb079ba70033_600x380.png" width="600" height="380" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/836d9d24-e7dc-4e09-84b6-bb079ba70033_600x380.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:380,&quot;width&quot;:600,&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="/__u/substackcdn.com/image/fetch/$s_!Xya4!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F836d9d24-e7dc-4e09-84b6-bb079ba70033_600x380.png 424w, /__u/substackcdn.com/image/fetch/$s_!Xya4!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F836d9d24-e7dc-4e09-84b6-bb079ba70033_600x380.png 848w, /__u/substackcdn.com/image/fetch/$s_!Xya4!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F836d9d24-e7dc-4e09-84b6-bb079ba70033_600x380.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Xya4!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F836d9d24-e7dc-4e09-84b6-bb079ba70033_600x380.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Modular Data Architecture. <a href="https://www.getorchestra.io/whitepaper/snowflake-data-architecture-in-2026">Source</a></figcaption></figure></div><p>There is no point having a self-healing architecture if the underlying components do not support it. Underlying service providers most provide relevant APIs that support all the tenets of this paper, as well as self-healing functionality themselves for patterns to work.</p><p>For example, suppose there is a silent failure in an ELT Provider, whereby the sub-schema changes; the columns and types remain the same, but the values change. Perhaps now there are currencies reported in Yen, as well as in USD, but the two columns <code>currency</code> and <code>local_value</code> remain.</p><p>The right thing to do may be to amend the ELT Job in its staging environment, verify the rest of the pipeline from that staging data, switch out the data that is now correct, and then finally switch over the erroneously succeeding ELT job.</p><p>Many ELT tools simply do not provide the APIs to get this functionality. However if you were doing this with a python script you controlled yourself&#8202;&#8212;&#8202;no problem. This will create massive pressure on the ETL players of today to change their structures or die.</p><p>This is a massive barrier in between the modular systems of today and true self-healing autonomous architecture. The only other examples would be for the systems themselves to all become independently self-healing, as you would hope that if all parts of a system are self-healing, then so too is the whole.</p><h3>Barrier 6 | Agent Sandboxes and New Orchestrators</h3><p>The logical place to run Agents that fix things is within an Orchestration Tool.</p><p>This is because the Orchestration Tool has a few things the agent needs.</p><ol><li><p>The ability to run any code, and to replay any DAG with any sets of arbitrary parameters</p></li><li><p>The connections to the different parts of the system the agent may need (remember, an orchestrator orchestrates, so it has access to things)</p></li><li><p>Alerting built-in, with monitoring, recovery, and scalable infrastructure</p></li></ol><p>However there is one huge enormous problem&#8202;&#8212;&#8202;and that is security.</p><p>Companies like <a href="https://blog.cloudflare.com/sandbox-ga/">Cloudflare have built agent sandboxes</a>. This is because models like Fable (<a href="https://www.reddit.com/r/ClaudeAI/comments/1u4dij4/megathread_for_us_government_suspension_of_fable/">which was recently banned</a>) need sandboxes, as they can <a href="https://www.anthropic.com/engineering/how-we-contain-claude">break out</a>. This is especially the case when under attack from <a href="https://www.ibm.com/think/topics/prompt-injection">prompt injection</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!j0Ho!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6c3beca-351f-439e-a24a-1a9108b0098b_900x692.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!j0Ho!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6c3beca-351f-439e-a24a-1a9108b0098b_900x692.png 424w, /__u/substackcdn.com/image/fetch/$s_!j0Ho!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6c3beca-351f-439e-a24a-1a9108b0098b_900x692.png 848w, /__u/substackcdn.com/image/fetch/$s_!j0Ho!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6c3beca-351f-439e-a24a-1a9108b0098b_900x692.png 1272w, /__u/substackcdn.com/image/fetch/$s_!j0Ho!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6c3beca-351f-439e-a24a-1a9108b0098b_900x692.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!j0Ho!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6c3beca-351f-439e-a24a-1a9108b0098b_900x692.png" width="900" height="692" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b6c3beca-351f-439e-a24a-1a9108b0098b_900x692.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:692,&quot;width&quot;:900,&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="/__u/substackcdn.com/image/fetch/$s_!j0Ho!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6c3beca-351f-439e-a24a-1a9108b0098b_900x692.png 424w, /__u/substackcdn.com/image/fetch/$s_!j0Ho!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6c3beca-351f-439e-a24a-1a9108b0098b_900x692.png 848w, /__u/substackcdn.com/image/fetch/$s_!j0Ho!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6c3beca-351f-439e-a24a-1a9108b0098b_900x692.png 1272w, /__u/substackcdn.com/image/fetch/$s_!j0Ho!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6c3beca-351f-439e-a24a-1a9108b0098b_900x692.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The dangers of prompt injection when running AI Agents in the same infrastructure as your legacy Orchestrator</figcaption></figure></div><p>Legacy Orchestration Tools are simply not made to handle agents in this way. The security risks are immense. Not to mention AI workloads could tread on the toes of data ones!</p><p>It is quite clear agents will require access to orchestration frameworks. Whether that is Open AI and Anthropic providing an orchestrator, new age orchestrators with agent sandboxes, or some form of interoperability between the two&#8202;&#8212;&#8202;something has to give here. Because security.</p><h3>Barrier 7 | Standards for Proxy Servers and Agent Definition</h3><p>One approach to security is to set-up a Proxy Sservice for Agents. Rather than install the secrets in the sandbox, the Agent has access to a given number of tools / MCPs.</p><p>The Proxy Service is then the only thing that has access to external systems. This means that even if the Agent becomes a victim of a prompt injection attack, all it could do is limited by the endpoints in the MCPs it has access to.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!K9es!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb433975-071b-4917-8438-1a2fca106336_900x521.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!K9es!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb433975-071b-4917-8438-1a2fca106336_900x521.png 424w, /__u/substackcdn.com/image/fetch/$s_!K9es!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb433975-071b-4917-8438-1a2fca106336_900x521.png 848w, /__u/substackcdn.com/image/fetch/$s_!K9es!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb433975-071b-4917-8438-1a2fca106336_900x521.png 1272w, /__u/substackcdn.com/image/fetch/$s_!K9es!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb433975-071b-4917-8438-1a2fca106336_900x521.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!K9es!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb433975-071b-4917-8438-1a2fca106336_900x521.png" width="900" height="521" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fb433975-071b-4917-8438-1a2fca106336_900x521.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:521,&quot;width&quot;:900,&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="/__u/substackcdn.com/image/fetch/$s_!K9es!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb433975-071b-4917-8438-1a2fca106336_900x521.png 424w, /__u/substackcdn.com/image/fetch/$s_!K9es!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb433975-071b-4917-8438-1a2fca106336_900x521.png 848w, /__u/substackcdn.com/image/fetch/$s_!K9es!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb433975-071b-4917-8438-1a2fca106336_900x521.png 1272w, /__u/substackcdn.com/image/fetch/$s_!K9es!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb433975-071b-4917-8438-1a2fca106336_900x521.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">An illustration of a basic proxy service with an auth server and a credentials DB</figcaption></figure></div><p>What this proxy service needs to look like is not obvious. <a href="https://www.reddit.com/r/mcp/comments/1tle6gl/reducing_context_window_efficiently_in_mcp_heres/">MCP is big</a>. Cloudflare <a href="https://blog.cloudflare.com/code-mode/">released Code Mode</a>. If you need to access multiple different endpoints, how the MCP Servers ought to be configured is not straightforward or obvious.</p><p>Open Standards should prevail&#8202;&#8212;&#8202;any agent looking to interact securely with multiple systems would benefit, from a security perspective, from interactive with a proxy service. These exist today, but in private SaaS tools like <a href="https://www.palantir.com/docs/foundry/data-connection/agent-proxy">Foundry</a>.</p><p>Frameworks for designing agents would also need to emerge. In the example above, a single agent requiring integration to hundreds of systems may not be feasible, as the context required to access hundreds of MCPs may be too large.</p><h3>Putting all together | Single Pane of Glass for AI</h3><p>Collectively, achieving the above would allow data teams to build out a single pane of glass for AI.</p><ul><li><p><strong>Context</strong>: provides the agents with the information to solve any problem</p></li><li><p><strong>Elastic infrastructure</strong>: provides the foundation for fixing pipelines</p></li><li><p><strong>Quality Data</strong>: eradicates the human side of the data inputs</p></li><li><p><strong>Git for Data</strong>: creates reliability and trust in AI</p></li><li><p><strong>Mass Adoption</strong>: prevents industry collapse</p></li><li><p><strong>Agent Sandboxes and New Orchestrators</strong>: remove legacy architecture</p></li><li><p><strong>Proxy Servers</strong>: do their best to guaranteee security</p></li></ul><p>This single pane of glass would allow AI Agents to operate in a secure way. They would execute when they needed to, and would have the context to achieve what they needed to as well.</p><p>Core data primitives like git for data, elastic infrastructure, and support throughout the ecosystem would turn this from a theoretical idea into a practical reality.</p><p>Data Teams looking to implement Autonomous architecture will impose significant pressure on existing vendors to support interoperability.</p><p>This will exacerbate consolidation, as traditional walled-gardens like Salesforce, SAP, and ServiceNow roll-out their own agentic products and data studios, capable of controlling the end-to-end without providing interoperability.</p><p><em>It is probably about time you tried <a href="https://app.getorchestra.io/signup">Orchestra</a>.</em></p>]]></content:encoded></item><item><title><![CDATA[Real-time anomaly detection and log monitoring for dbt core]]></title><description><![CDATA[How to add real-time alerting for dbt core]]></description><link>https://dataopsleadership.substack.com/p/real-time-anomaly-detection-and-log</link><guid isPermaLink="false">https://dataopsleadership.substack.com/p/real-time-anomaly-detection-and-log</guid><dc:creator><![CDATA[Hugo Lu]]></dc:creator><pubDate>Wed, 17 Jun 2026 08:31:49 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!dYju!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F823943a1-e831-4eaa-b1f8-22d2109216f2_1125x390.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="/__u/substackcdn.com/image/fetch/$s_!dYju!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F823943a1-e831-4eaa-b1f8-22d2109216f2_1125x390.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!dYju!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F823943a1-e831-4eaa-b1f8-22d2109216f2_1125x390.png 424w, /__u/substackcdn.com/image/fetch/$s_!dYju!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F823943a1-e831-4eaa-b1f8-22d2109216f2_1125x390.png 848w, /__u/substackcdn.com/image/fetch/$s_!dYju!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F823943a1-e831-4eaa-b1f8-22d2109216f2_1125x390.png 1272w, /__u/substackcdn.com/image/fetch/$s_!dYju!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F823943a1-e831-4eaa-b1f8-22d2109216f2_1125x390.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!dYju!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F823943a1-e831-4eaa-b1f8-22d2109216f2_1125x390.png" width="1125" height="390" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/823943a1-e831-4eaa-b1f8-22d2109216f2_1125x390.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:390,&quot;width&quot;:1125,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!dYju!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F823943a1-e831-4eaa-b1f8-22d2109216f2_1125x390.png 424w, /__u/substackcdn.com/image/fetch/$s_!dYju!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F823943a1-e831-4eaa-b1f8-22d2109216f2_1125x390.png 848w, /__u/substackcdn.com/image/fetch/$s_!dYju!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F823943a1-e831-4eaa-b1f8-22d2109216f2_1125x390.png 1272w, /__u/substackcdn.com/image/fetch/$s_!dYju!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F823943a1-e831-4eaa-b1f8-22d2109216f2_1125x390.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>Introduction</strong></h2><p>A pet peeve of mine has always been the lack of real-time alerting and information provided by out of the box dbt logs.</p><p>The journey of a dbt practitioner typically goes like this.</p><ul><li><p>Stage 1: basic failure Yes/No</p></li><li><p>Stage 2: after everything has compiled, what failed?</p></li><li><p>Stage 3: after everything has compiled, what failed and why?</p></li><li><p>Stage 4: after everything has compiled, what failed that I care about and why?</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!jxzo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e88f6d4-a6c3-4cc6-8c3e-5dfa396a99b1_788x386.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!jxzo!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e88f6d4-a6c3-4cc6-8c3e-5dfa396a99b1_788x386.png 424w, /__u/substackcdn.com/image/fetch/$s_!jxzo!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e88f6d4-a6c3-4cc6-8c3e-5dfa396a99b1_788x386.png 848w, /__u/substackcdn.com/image/fetch/$s_!jxzo!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e88f6d4-a6c3-4cc6-8c3e-5dfa396a99b1_788x386.png 1272w, /__u/substackcdn.com/image/fetch/$s_!jxzo!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e88f6d4-a6c3-4cc6-8c3e-5dfa396a99b1_788x386.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!jxzo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e88f6d4-a6c3-4cc6-8c3e-5dfa396a99b1_788x386.png" width="788" height="386" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7e88f6d4-a6c3-4cc6-8c3e-5dfa396a99b1_788x386.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:386,&quot;width&quot;:788,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!jxzo!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e88f6d4-a6c3-4cc6-8c3e-5dfa396a99b1_788x386.png 424w, /__u/substackcdn.com/image/fetch/$s_!jxzo!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e88f6d4-a6c3-4cc6-8c3e-5dfa396a99b1_788x386.png 848w, /__u/substackcdn.com/image/fetch/$s_!jxzo!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e88f6d4-a6c3-4cc6-8c3e-5dfa396a99b1_788x386.png 1272w, /__u/substackcdn.com/image/fetch/$s_!jxzo!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e88f6d4-a6c3-4cc6-8c3e-5dfa396a99b1_788x386.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>dbt live logs</p><p>This maps clearly to a functional requirement.</p><p>Stage 1: parse the exit code from the program</p><p>Stage 2: clean the manifest / <code>run_results.json</code> and after flattening it, send an alert</p><p>Stage 3: parse data from the flattened <code>run_results.json</code> and put it in an alert</p><p>Stage 4: Add different levels of severity in the dbt project, parse this via the <code>manifest.json</code> and put it into the alert</p><p>Tools like Elementary and dbt Cloud took years to get to Stage 4, but there are additional Stages we would like to get to at scale.</p><p>Stage 5: live logs. Send an alert at model level as soon as it fails</p><p>Stage 6: Live anomalies. Send an alert at model level when a model starts to take longer than normal</p><p>Stage 7: Live sophisticated anomalies. Send an alert at model level when a model satisfies an arbitrary condition.</p><p>In this article, we will show you how to set-up the final Stages 5&#8211;7 and therefore achieve dbt monitoring nirvana.</p><h2><strong>Step 1: set-up Live dbt Logs</strong></h2><p>The first step is to ensure you run</p><p><code>dbt build --log-level debug --log-format json</code></p><p>This allows dbt to spit out as much data that is structured as possible. While this <em>does </em>write a logfile, we want the live logs, so we look at stdout.</p><h2><strong>Step 2: set-up the sidecar process</strong></h2><p>The sidecar process essentially needs to run in parallel on the same machine as the dbt process. It would read from stdout and contains the relevant async + alerting logic to send live alerts. The code looks like this.</p><pre><code>&#8220;&#8221;&#8220;Stream dbt task logs from Orchestra and send Slack alerts on test failures.&#8221;&#8220;&#8221;

import json
import os
import subprocess
import sys
import time

import httpx

BASE_URL = &#8220;https://app.getorchestra.io/api/engine/public&#8221;
ORCHESTRA_API_KEY = os.environ.get(&#8221;ORCHESTRA_API_KEY&#8221;, &#8220;&#8221;)
SLACK_WEBHOOK = os.environ.get(&#8221;SLACK_WEBHOOK&#8221;, &#8220;&#8221;)

MAX_RETRIES = 3
RETRY_DELAY_SECONDS = 3
HTTP_TIMEOUT_SECONDS = 10


def timestamp() -&gt; str:
    return time.strftime(&#8221;%Y-%m-%d %H:%M:%S&#8221;)


def send_slack_message(payload: dict) -&gt; None:
    if not SLACK_WEBHOOK:
        print(&#8221;SLACK_WEBHOOK not set; skipping alert&#8221;)
        return
    try:
        httpx.post(SLACK_WEBHOOK, json=payload, timeout=HTTP_TIMEOUT_SECONDS)
    except httpx.HTTPError as exc:
        print(f&#8221;Failed to send Slack message: {exc}&#8221;)


def fetch_task_run(task_run_id: str) -&gt; dict:
    &#8220;&#8221;&#8220;Fetch task run details from Orchestra, retrying with exponential backoff.&#8221;&#8220;&#8221;
    for attempt in range(MAX_RETRIES):
        try:
            response = httpx.get(
                f&#8221;{BASE_URL}/task_runs&#8221;,
                headers={&#8221;Authorization&#8221;: f&#8221;Bearer {ORCHESTRA_API_KEY}&#8221;},
                params={&#8221;task_run_ids&#8221;: task_run_id},
                timeout=HTTP_TIMEOUT_SECONDS,
            )
            response.raise_for_status()
            return response.json()
        except httpx.HTTPError:
            if attempt == MAX_RETRIES - 1:
                raise
            time.sleep(1)
    raise RuntimeError(&#8221;unreachable&#8221;)


def wait_for_log_stream(task_run_id: str, dbt_command: str) -&gt; subprocess.Popen:
    &#8220;&#8221;&#8220;Spawn orchestra-cli repeatedly until the log stream is available.&#8221;&#8220;&#8221;
    while True:
        process = subprocess.Popen(
            [
                &#8220;orchestra-cli&#8221;,
                &#8220;task&#8221;,
                &#8220;logs&#8221;,
                &#8220;--task-run-id&#8221;,
                task_run_id,
                &#8220;--filename&#8221;,
                f&#8221;1/{dbt_command}&#8221;,
            ],
            stdout=subprocess.PIPE,
            stderr=subprocess.STDOUT,
            text=True,
            env=os.environ.copy(),
        )

        time.sleep(1)

        # Process died immediately -&gt; logs not ready yet.
        if process.poll() is None:
            line = process.stdout.readline()
            if line and &#8220;Download task log failed&#8221; not in line:
                print(line, end=&#8221;&#8220;)
                return process
            process.terminate()

        time.sleep(RETRY_DELAY_SECONDS)


def parse_test_identifiers(data: dict) -&gt; tuple[str, str, str]:
    &#8220;&#8221;&#8220;Split a dbt test node name into (model, test_name, column).&#8221;&#8220;&#8221;
    model = data.get(&#8221;attached_node&#8221;, &#8220;&#8221;).split(&#8221;.&#8221;)[-1]
    base = data.get(&#8221;name&#8221;, &#8220;&#8221;).rsplit(&#8221;__&#8221;, 1)[0]
    test_name, _, remainder = base.partition(f&#8221;_{model}&#8221;)
    # A &#8220;__&#8221; prefix is meaningful: strip only one underscore to keep the rest.
    column = remainder[1:] if remainder.startswith(&#8221;__&#8221;) else remainder.lstrip(&#8221;_&#8221;)
    return model, test_name, column


def build_alert_message(data: dict) -&gt; dict:
    &#8220;&#8221;&#8220;Build a Slack Block Kit payload styled as a test-failure card.&#8221;&#8220;&#8221;
    model, test_name, column = parse_test_identifiers(data)
    meta = data.get(&#8221;node_info&#8221;, {}).get(&#8221;meta&#8221;, {})
    owner = meta.get(&#8221;owner&#8221;, &#8220;Unknown&#8221;)
    subscribers = meta.get(&#8221;subscribers&#8221;, [])
    tags = meta.get(&#8221;tags&#8221;, [])
    failures = data.get(&#8221;num_failures&#8221;, &#8220;unknown&#8221;)
    status = data.get(&#8221;status&#8221;, &#8220;fail&#8221;).upper()
    failed_at = data.get(&#8221;node_info&#8221;, {}).get(&#8221;node_finished_at&#8221;, &#8220;&#8221;)
    alerted_at = timestamp()

    blocks = [
        {
            &#8220;type&#8221;: &#8220;header&#8221;,
            &#8220;text&#8221;: {
                &#8220;type&#8221;: &#8220;plain_text&#8221;,
                &#8220;text&#8221;: &#8220;\U0001f6a8 dbt Test Failure&#8221;,
                &#8220;emoji&#8221;: True,
            },
        },
        {
            &#8220;type&#8221;: &#8220;section&#8221;,
            &#8220;text&#8221;: {&#8221;type&#8221;: &#8220;mrkdwn&#8221;, &#8220;text&#8221;: f&#8221;*Model*\n`{model}`&#8221;},
        },
        {
            &#8220;type&#8221;: &#8220;section&#8221;,
            &#8220;fields&#8221;: [
                {&#8221;type&#8221;: &#8220;mrkdwn&#8221;, &#8220;text&#8221;: f&#8221;*Owner*\n{owner}&#8221;},
                {&#8221;type&#8221;: &#8220;mrkdwn&#8221;, &#8220;text&#8221;: f&#8221;*Channel*\n`{meta.get(&#8217;channel&#8217;, &#8216;&#8217;)}`&#8221;},
                {&#8221;type&#8221;: &#8220;mrkdwn&#8221;, &#8220;text&#8221;: f&#8221;*Column*\n{column}&#8221;},
                {&#8221;type&#8221;: &#8220;mrkdwn&#8221;, &#8220;text&#8221;: f&#8221;*Test name*\n{test_name}&#8221;},
                {
                    &#8220;type&#8221;: &#8220;mrkdwn&#8221;,
                    &#8220;text&#8221;: f&#8221;*Subscribers*\n{&#8217;, &#8216;.join(subscribers) if subscribers else &#8216;None&#8217;}&#8221;,
                },
                {
                    &#8220;type&#8221;: &#8220;mrkdwn&#8221;,
                    &#8220;text&#8221;: f&#8221;*Tags*\n{&#8217;, &#8216;.join(tags) if tags else &#8216;None&#8217;}&#8221;,
                },
            ],
        },
        {
            &#8220;type&#8221;: &#8220;section&#8221;,
            &#8220;text&#8221;: {
                &#8220;type&#8221;: &#8220;mrkdwn&#8221;,
                &#8220;text&#8221;: f&#8221;\U0001f50e *Result*\n```Got {failures} failures, status: {status}```&#8221;,
            },
        },
        {
            &#8220;type&#8221;: &#8220;context&#8221;,
            &#8220;elements&#8221;: [
                {
                    &#8220;type&#8221;: &#8220;mrkdwn&#8221;,
                    &#8220;text&#8221;: f&#8221;Failed at {failed_at}  \u2022  Alerted at {alerted_at}&#8221;,
                },
            ],
        },
    ]

    # Fallback text for notifications and clients that don&#8217;t render blocks.
    fallback = (
        f&#8221;dbt test failure: {test_name} on {model}.{column} ({failures} failures)&#8221;
    )

    # Blocks live inside the attachment so the red sidebar spans the whole card.
    return {
        &#8220;text&#8221;: fallback,
        &#8220;attachments&#8221;: [{&#8221;color&#8221;: &#8220;#E01E5A&#8221;, &#8220;blocks&#8221;: blocks}],
    }


def is_test_failure(log: dict) -&gt; bool:
    info = log.get(&#8221;info&#8221;, {})
    data = log.get(&#8221;data&#8221;, {})
    channel = data.get(&#8221;node_info&#8221;, {}).get(&#8221;meta&#8221;, {}).get(&#8221;channel&#8221;, &#8220;&#8221;)
    return (
        info.get(&#8221;name&#8221;) == &#8220;LogTestResult&#8221;
        and data.get(&#8221;status&#8221;, &#8220;&#8221;).lower() in (&#8221;fail&#8221;, &#8220;warn&#8221;)
        and channel != &#8220;&#8221;
    )


def watch_logs(process: subprocess.Popen) -&gt; None:
    &#8220;&#8221;&#8220;Stream log lines, alerting on test failures, until run stats appear.&#8221;&#8220;&#8221;
    print(&#8221;Looping:&#8221;, timestamp())

    for line in process.stdout:
        print(&#8221;Line:&#8221;, timestamp(), line)
        try:
            log = json.loads(line)
        except json.JSONDecodeError:
            continue

        data = log.get(&#8221;data&#8221;, {})

        if &#8220;stats&#8221; in data:
            print(&#8221;breaking&#8221;, data)
            return

        if is_test_failure(log):
            print(&#8221;Data:&#8221;, data)
            send_slack_message(build_alert_message(data))

    print(&#8221;Process exited without &#8216;stats&#8217; in data&#8221;)


def main() -&gt; None:
    if len(sys.argv) &lt; 2:
        sys.exit(f&#8221;Usage: {sys.argv[0]} &lt;task_run_id&gt;&#8221;)

    task_run_id = sys.argv[1]
    print(&#8221;Logging for Task Run ID:&#8221;, task_run_id)
    print(&#8221;Starting:&#8221;, timestamp())

    task_run = fetch_task_run(task_run_id)
    result = task_run.get(&#8221;results&#8221;, [{}])[0]
    dbt_command = result.get(&#8221;taskParameters&#8221;, {}).get(&#8221;commands&#8221;)
    print(&#8221;dbt Task Status:&#8221;, result.get(&#8221;status&#8221;, &#8220;&#8221;))

    process = wait_for_log_stream(task_run_id, dbt_command)
    try:
        watch_logs(process)
    finally:
        process.wait()


if __name__ == &#8220;__main__&#8221;:
    main()</code></pre><p>In our case, we use Orchestra as a way to run dbt core. This means the logs are streamed live to a bucket, which in turn is exposed via API, allowing those logs to be streamed from any external system. This means we run a pipeline with two tasks; the dbt task and the python task in parallel, which fetches those logs as the process goes and streams live logs.</p><h2><strong>dbt Live Logs output</strong></h2><p>The output is similar to a regular alert, but received as soon as something fails.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!Ssq4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce9c0c58-068c-4a77-98df-931f5b57dc40_788x488.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!Ssq4!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce9c0c58-068c-4a77-98df-931f5b57dc40_788x488.png 424w, /__u/substackcdn.com/image/fetch/$s_!Ssq4!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce9c0c58-068c-4a77-98df-931f5b57dc40_788x488.png 848w, /__u/substackcdn.com/image/fetch/$s_!Ssq4!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce9c0c58-068c-4a77-98df-931f5b57dc40_788x488.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Ssq4!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce9c0c58-068c-4a77-98df-931f5b57dc40_788x488.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!Ssq4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce9c0c58-068c-4a77-98df-931f5b57dc40_788x488.png" width="788" height="488" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ce9c0c58-068c-4a77-98df-931f5b57dc40_788x488.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:488,&quot;width&quot;:788,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!Ssq4!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce9c0c58-068c-4a77-98df-931f5b57dc40_788x488.png 424w, /__u/substackcdn.com/image/fetch/$s_!Ssq4!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce9c0c58-068c-4a77-98df-931f5b57dc40_788x488.png 848w, /__u/substackcdn.com/image/fetch/$s_!Ssq4!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce9c0c58-068c-4a77-98df-931f5b57dc40_788x488.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Ssq4!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce9c0c58-068c-4a77-98df-931f5b57dc40_788x488.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Real-time dbt alert failures</p><p>This is extremely helpful when:</p><ul><li><p>You have a big dbt project that takes a long time</p></li><li><p>You have a lot of people that need to be alerted</p></li><li><p>You have multiple teams using dbt whose data depends on each other</p></li></ul><p>This is what running the pipeline looks like in Orchestra.</p><pre><code>version: v1
name: &#8216;dbt Databricks Simple #dbt #databricks&#8217;
pipeline:
  f16f81cf-a1cf-41af-8545-6b5dd4254600:
    tasks:
      e5aaa2cd-d1a4-4f0f-b721-11a0c78bafd8:
        integration: DBT_CORE
        integration_job: DBT_CORE_EXECUTE
        parameters:
          commands: dbt build --log-level debug --log-format json
          package_manager: PIP
          python_version: &#8216;3.12&#8217;
          use_state_orchestration: false
          branch: live-alerts-dbt
          project_dir: dbt_projects/databricks
          shallow_clone_dirs: dbt_projects/databricks
        depends_on: []
        name: dbt Build
        connection: dbt_databricks_demo_54814
      2094af7f-66e8-4a7c-ba13-752ebeec4d40:
        integration: PYTHON
        integration_job: PYTHON_EXECUTE_SCRIPT
        parameters:
          package_manager: PIP
          python_version: &#8216;3.12&#8217;
          build_command: pip install httpx orchestra-cli git+https://github.com/orchestra-hq/orchestra-cli.git@main
          set_outputs: false
          source: GIT
          command: python live-dbt-alerts.py ${{ ORCHESTRA.PIPELINE_RUN_TASKS[&#8217;e5aaa2cd-d1a4-4f0f-b721-11a0c78bafd8&#8217;].TASK_RUN_ID
            }}
          project_dir: python
          shallow_clone_dirs: python
        depends_on: []
        name: Live Alerts
        connection: python__product__dbt_bigquery__79436
    depends_on: []
    name: group
webhook:
  enabled: false</code></pre><h2><strong>dbt Live Logs Extensions</strong></h2><p>You could edit the script above to store the average task runs for the models and also flag operations in a <code>RUNNING</code> state. This would allow for real-time detection of anomalies / models that are running too long.</p><p>This would prevent cost overflow as well as make data teams even more proactive instead of reactive.</p><p>Below is some code that Claude wrote for me. I do not expect you to copy it, but more include it to demonstrate how straightforward it is to generate these sorts of sophisticated systems from scratch.</p><pre><code>#!/usr/bin/env python3
&#8220;&#8221;&#8220;Detect slow / long-running Orchestra operations and send Slack anomaly alerts.

Sibling to ``live_dbt_alerts.py``. Where that script streams a single dbt task
run and alerts on *test failures*, this script looks across *all* operations
Orchestra has recorded recently and alerts on *duration anomalies*:

A) For every operation that carries timing data, it fetches the operation
   &#8220;artifacts&#8221; from Orchestra&#8217;s public API and builds a baseline by averaging
   the durations of the last ``BASELINE_ITERATIONS`` (default 7) completed
   iterations of that operation (keyed on its stable ``externalId``).

B) An arbitrary multiplier threshold (``ANOMALY_THRESHOLD``, default 2.0x)
   defines how far above baseline counts as an anomaly. Operations that
   *completed* far slower than their baseline raise an alert.

C) Operations that are still *running* are compared against the same baseline
   using their elapsed wall-clock time, so a job stuck mid-flight is flagged
   before it ever finishes.

Run it on a schedule (e.g. an Orchestra Python task every N minutes).
&#8220;&#8221;&#8220;

import os
import sys
import time
from collections import defaultdict
from datetime import datetime, timedelta, timezone

import httpx

BASE_URL = &#8220;https://app.getorchestra.io/api/engine/public&#8221;
ORCHESTRA_API_KEY = os.environ.get(&#8221;ORCHESTRA_API_KEY&#8221;, &#8220;&#8221;)
SLACK_WEBHOOK = os.environ.get(&#8221;SLACK_WEBHOOK&#8221;, &#8220;&#8221;)

# Baseline / anomaly configuration (all overridable via environment variables).
BASELINE_ITERATIONS = int(os.environ.get(&#8221;BASELINE_ITERATIONS&#8221;, &#8220;7&#8221;))
ANOMALY_THRESHOLD = float(os.environ.get(&#8221;ANOMALY_THRESHOLD&#8221;, &#8220;2.0&#8221;))
LOOKBACK_DAYS = int(os.environ.get(&#8221;LOOKBACK_DAYS&#8221;, &#8220;7&#8221;))
# Only alert on completions that finished within this many minutes, so a single
# scheduled run does not re-alert on the same historical anomaly forever.
ALERT_WINDOW_MINUTES = int(os.environ.get(&#8221;ALERT_WINDOW_MINUTES&#8221;, &#8220;60&#8221;))
# Ignore operations whose baseline is below this many seconds: a model that
# normally runs in 0.3s will trip a 2x threshold on pure scheduling jitter.
MIN_BASELINE_SECONDS = float(os.environ.get(&#8221;MIN_BASELINE_SECONDS&#8221;, &#8220;5.0&#8221;))
# Optional comma-separated operation_type filter (e.g. &#8220;MATERIALISATION,TEST&#8221;).
OPERATION_TYPES = os.environ.get(&#8221;OPERATION_TYPES&#8221;, &#8220;&#8221;)

MAX_RETRIES = 3
HTTP_TIMEOUT_SECONDS = 30
PAGE_SIZE_GUARD = 100  # safety cap on pages fetched

# Statuses that represent a genuine execution with a meaningful duration.
# REUSED / SKIPPED nodes report no timing and must not pollute the baseline.
COMPLETED_STATUSES = {&#8221;SUCCEEDED&#8221;, &#8220;WARNING&#8221;, &#8220;FAILED&#8221;}


def timestamp() -&gt; str:
    return time.strftime(&#8221;%Y-%m-%d %H:%M:%S&#8221;)


def parse_dt(value: str) -&gt; datetime:
    &#8220;&#8221;&#8220;Parse an Orchestra ISO 8601 timestamp into an aware datetime (UTC).&#8221;&#8220;&#8221;
    dt = datetime.fromisoformat(value)
    if dt.tzinfo is None:
        dt = dt.replace(tzinfo=timezone.utc)
    return dt


def send_slack_message(payload: dict) -&gt; None:
    if not SLACK_WEBHOOK:
        print(&#8221;SLACK_WEBHOOK not set; skipping alert&#8221;)
        return
    try:
        httpx.post(SLACK_WEBHOOK, json=payload, timeout=HTTP_TIMEOUT_SECONDS)
    except httpx.HTTPError as exc:
        print(f&#8221;Failed to send Slack message: {exc}&#8221;)


def _get(path: str, params: dict) -&gt; dict:
    &#8220;&#8221;&#8220;GET an Orchestra endpoint, retrying transient HTTP errors.&#8221;&#8220;&#8221;
    for attempt in range(MAX_RETRIES):
        try:
            response = httpx.get(
                f&#8221;{BASE_URL}/{path}&#8221;,
                headers={&#8221;Authorization&#8221;: f&#8221;Bearer {ORCHESTRA_API_KEY}&#8221;},
                params=params,
                timeout=HTTP_TIMEOUT_SECONDS,
            )
            response.raise_for_status()
            return response.json()
        except httpx.HTTPError:
            if attempt == MAX_RETRIES - 1:
                raise
            time.sleep(1)
    raise RuntimeError(&#8221;unreachable&#8221;)


def fetch_operations() -&gt; list[dict]:
    &#8220;&#8221;&#8220;Fetch all operations Orchestra recorded in the lookback window.

    The public API caps a single query at 168 hours (7 days), so the lookback
    is clamped accordingly and paged through in full.
    &#8220;&#8221;&#8220;
    now = datetime.now(timezone.utc)
    lookback = min(LOOKBACK_DAYS, 7)
    time_from = (now - timedelta(days=lookback)).strftime(&#8221;%Y-%m-%dT%H:%M:%SZ&#8221;)
    time_to = now.strftime(&#8221;%Y-%m-%dT%H:%M:%SZ&#8221;)

    base_params = {&#8221;time_from&#8221;: time_from, &#8220;time_to&#8221;: time_to}
    if OPERATION_TYPES:
        base_params[&#8221;operation_type&#8221;] = OPERATION_TYPES

    operations: list[dict] = []
    page = 1
    while page &lt;= PAGE_SIZE_GUARD:
        payload = _get(&#8221;operations&#8221;, {**base_params, &#8220;page&#8221;: page})
        page_results = payload.get(&#8221;results&#8221;, [])
        if not page_results:
            break
        operations.extend(page_results)
        if len(operations) &gt;= payload.get(&#8221;total&#8221;, 0):
            break
        page += 1

    print(f&#8221;Fetched {len(operations)} operations from the last {lookback} day(s)&#8221;)
    return operations


def is_running(op: dict) -&gt; bool:
    &#8220;&#8221;&#8220;An operation is in-flight if it started but has not yet completed.&#8221;&#8220;&#8221;
    if op.get(&#8221;operationStatus&#8221;) == &#8220;RUNNING&#8221;:
        return True
    return bool(op.get(&#8221;startedAt&#8221;)) and not op.get(&#8221;completedAt&#8221;)


def operation_duration(op: dict) -&gt; float | None:
    &#8220;&#8221;&#8220;Return the operation&#8217;s recorded duration in seconds, if available.&#8221;&#8220;&#8221;
    duration = op.get(&#8221;operationDuration&#8221;)
    if duration is not None:
        return float(duration)
    started, completed = op.get(&#8221;startedAt&#8221;), op.get(&#8221;completedAt&#8221;)
    if started and completed:
        return (parse_dt(completed) - parse_dt(started)).total_seconds()
    return None


def build_baselines(operations: list[dict]) -&gt; dict[str, dict]:
    &#8220;&#8221;&#8220;Average the last N completed iterations of each operation (by externalId).

    Returns ``{external_id: {&#8221;avg&#8221;: seconds, &#8220;count&#8221;: n, &#8220;name&#8221;: ..., &#8220;type&#8221;: ...}}``.
    &#8220;&#8221;&#8220;
    history: dict[str, list[dict]] = defaultdict(list)
    for op in operations:
        key = op.get(&#8221;externalId&#8221;)
        if not key or op.get(&#8221;operationStatus&#8221;) not in COMPLETED_STATUSES:
            continue
        if operation_duration(op) is None or not op.get(&#8221;completedAt&#8221;):
            continue
        history[key].append(op)

    baselines: dict[str, dict] = {}
    for key, runs in history.items():
        # Most recent completions first, then take the last N iterations.
        runs.sort(key=lambda o: parse_dt(o[&#8221;completedAt&#8221;]), reverse=True)
        sample = runs[:BASELINE_ITERATIONS]
        durations = [operation_duration(o) for o in sample]
        avg = sum(durations) / len(durations)
        latest = sample[0]
        baselines[key] = {
            &#8220;avg&#8221;: avg,
            &#8220;count&#8221;: len(sample),
            &#8220;name&#8221;: latest.get(&#8221;operationName&#8221;) or key,
            &#8220;type&#8221;: latest.get(&#8221;operationType&#8221;) or &#8220;&#8221;,
        }
    print(f&#8221;Built baselines for {len(baselines)} distinct operations&#8221;)
    return baselines


def detect_anomalies(
    operations: list[dict], baselines: dict[str, dict]
) -&gt; list[dict]:
    &#8220;&#8221;&#8220;Flag completed-too-slow and running-too-long operations against baseline.&#8221;&#8220;&#8221;
    now = datetime.now(timezone.utc)
    anomalies: list[dict] = []

    for op in operations:
        key = op.get(&#8221;externalId&#8221;)
        baseline = baselines.get(key)
        if not baseline or baseline[&#8221;avg&#8221;] &lt; MIN_BASELINE_SECONDS:
            continue

        limit = baseline[&#8221;avg&#8221;] * ANOMALY_THRESHOLD

        if is_running(op):
            started = op.get(&#8221;startedAt&#8221;)
            if not started:
                continue
            elapsed = (now - parse_dt(started)).total_seconds()
            if elapsed &gt; limit:
                anomalies.append(
                    _anomaly(op, baseline, elapsed, &#8220;RUNNING&#8221;, &#8220;Running too long&#8221;)
                )
            continue

        # Completed operations: only alert on recent finishes to avoid
        # re-alerting on historical anomalies on every scheduled run.
        completed = op.get(&#8221;completedAt&#8221;)
        if not completed or op.get(&#8221;operationStatus&#8221;) not in COMPLETED_STATUSES:
            continue
        age = (now - parse_dt(completed)).total_seconds()
        if age &gt; ALERT_WINDOW_MINUTES * 60:
            continue
        duration = operation_duration(op)
        if duration is not None and duration &gt; limit:
            anomalies.append(
                _anomaly(
                    op, baseline, duration, op[&#8221;operationStatus&#8221;], &#8220;Completed slower than baseline&#8221;
                )
            )

    return anomalies


def _anomaly(
    op: dict, baseline: dict, duration: float, status: str, reason: str
) -&gt; dict:
    return {
        &#8220;operation_name&#8221;: op.get(&#8221;operationName&#8221;) or op.get(&#8221;externalId&#8221;),
        &#8220;operation_type&#8221;: op.get(&#8221;operationType&#8221;) or baseline[&#8221;type&#8221;],
        &#8220;external_id&#8221;: op.get(&#8221;externalId&#8221;),
        &#8220;integration&#8221;: op.get(&#8221;integration&#8221;, &#8220;&#8221;),
        &#8220;pipeline_run_id&#8221;: op.get(&#8221;pipelineRunId&#8221;, &#8220;&#8221;),
        &#8220;task_run_id&#8221;: op.get(&#8221;taskRunId&#8221;, &#8220;&#8221;),
        &#8220;status&#8221;: status,
        &#8220;duration&#8221;: duration,
        &#8220;baseline&#8221;: baseline[&#8221;avg&#8221;],
        &#8220;baseline_iterations&#8221;: baseline[&#8221;count&#8221;],
        &#8220;ratio&#8221;: duration / baseline[&#8221;avg&#8221;] if baseline[&#8221;avg&#8221;] else 0.0,
        &#8220;reason&#8221;: reason,
    }


def build_alert_message(anomaly: dict) -&gt; dict:
    &#8220;&#8221;&#8220;Build a Slack Block Kit payload styled as a duration-anomaly card.&#8221;&#8220;&#8221;
    duration = round(anomaly[&#8221;duration&#8221;], 2)
    baseline = round(anomaly[&#8221;baseline&#8221;], 2)
    ratio = round(anomaly[&#8221;ratio&#8221;], 1)
    running = anomaly[&#8221;status&#8221;] == &#8220;RUNNING&#8221;
    headline = (
        &#8220;&#9203; Operation Running Too Long&#8221; if running else &#8220;\U0001f40c Slow Operation&#8221;
    )

    blocks = [
        {
            &#8220;type&#8221;: &#8220;header&#8221;,
            &#8220;text&#8221;: {&#8221;type&#8221;: &#8220;plain_text&#8221;, &#8220;text&#8221;: headline, &#8220;emoji&#8221;: True},
        },
        {
            &#8220;type&#8221;: &#8220;section&#8221;,
            &#8220;text&#8221;: {&#8221;type&#8221;: &#8220;mrkdwn&#8221;, &#8220;text&#8221;: f&#8221;*Operation*\n`{anomaly[&#8217;operation_name&#8217;]}`&#8221;},
        },
        {
            &#8220;type&#8221;: &#8220;section&#8221;,
            &#8220;fields&#8221;: [
                {&#8221;type&#8221;: &#8220;mrkdwn&#8221;, &#8220;text&#8221;: f&#8221;*Type*\n{anomaly[&#8217;operation_type&#8217;]}&#8221;},
                {&#8221;type&#8221;: &#8220;mrkdwn&#8221;, &#8220;text&#8221;: f&#8221;*Integration*\n{anomaly[&#8217;integration&#8217;]}&#8221;},
                {&#8221;type&#8221;: &#8220;mrkdwn&#8221;, &#8220;text&#8221;: f&#8221;*Status*\n{anomaly[&#8217;status&#8217;]}&#8221;},
                {&#8221;type&#8221;: &#8220;mrkdwn&#8221;, &#8220;text&#8221;: f&#8221;*Reason*\n{anomaly[&#8217;reason&#8217;]}&#8221;},
                {
                    &#8220;type&#8221;: &#8220;mrkdwn&#8221;,
                    &#8220;text&#8221;: f&#8221;*{&#8217;Elapsed&#8217; if running else &#8216;Duration&#8217;}*\n{duration}s&#8221;,
                },
                {
                    &#8220;type&#8221;: &#8220;mrkdwn&#8221;,
                    &#8220;text&#8221;: f&#8221;*Baseline (avg of {anomaly[&#8217;baseline_iterations&#8217;]})*\n{baseline}s&#8221;,
                },
            ],
        },
        {
            &#8220;type&#8221;: &#8220;section&#8221;,
            &#8220;text&#8221;: {
                &#8220;type&#8221;: &#8220;mrkdwn&#8221;,
                &#8220;text&#8221;: (
                    f&#8221;\U0001f50e *Anomaly*\n```{ratio}x the baseline &#8220;
                    f&#8221;(threshold {ANOMALY_THRESHOLD}x)```&#8221;
                ),
            },
        },
        {
            &#8220;type&#8221;: &#8220;context&#8221;,
            &#8220;elements&#8221;: [
                {
                    &#8220;type&#8221;: &#8220;mrkdwn&#8221;,
                    &#8220;text&#8221;: (
                        f&#8221;Pipeline run `{anomaly[&#8217;pipeline_run_id&#8217;]}`  &#8226;  &#8220;
                        f&#8221;Task run `{anomaly[&#8217;task_run_id&#8217;]}`  &#8226;  &#8220;
                        f&#8221;Detected at {timestamp()}&#8221;
                    ),
                },
            ],
        },
    ]

    fallback = (
        f&#8221;Operation anomaly: {anomaly[&#8217;operation_name&#8217;]} took {duration}s &#8220;
        f&#8221;vs baseline {baseline}s ({ratio}x) &#8212; {anomaly[&#8217;reason&#8217;]}&#8221;
    )

    # Amber for in-flight warnings, red for confirmed slow completions.
    color = &#8220;#ECB22E&#8221; if running else &#8220;#E01E5A&#8221;
    return {&#8221;text&#8221;: fallback, &#8220;attachments&#8221;: [{&#8221;color&#8221;: color, &#8220;blocks&#8221;: blocks}]}


def main() -&gt; None:
    if not ORCHESTRA_API_KEY:
        sys.exit(&#8221;ORCHESTRA_API_KEY not set&#8221;)

    print(&#8221;Starting operation anomaly scan:&#8221;, timestamp())
    print(
        f&#8221;Config: baseline={BASELINE_ITERATIONS} iters, &#8220;
        f&#8221;threshold={ANOMALY_THRESHOLD}x, lookback={LOOKBACK_DAYS}d&#8221;
    )

    operations = fetch_operations()
    if not operations:
        print(&#8221;No operations returned; nothing to analyse.&#8221;)
        return

    baselines = build_baselines(operations)
    anomalies = detect_anomalies(operations, baselines)

    if not anomalies:
        print(&#8221;No anomalies detected.&#8221;)
        return

    print(f&#8221;Detected {len(anomalies)} anomalies:&#8221;)
    for anomaly in anomalies:
        print(
            f&#8221;  {anomaly[&#8217;status&#8217;]:&gt;9}  {anomaly[&#8217;operation_name&#8217;]}  &#8220;
            f&#8221;{round(anomaly[&#8217;duration&#8217;], 2)}s vs {round(anomaly[&#8217;baseline&#8217;], 2)}s &#8220;
            f&#8221;({round(anomaly[&#8217;ratio&#8217;], 1)}x)  - {anomaly[&#8217;reason&#8217;]}&#8221;
        )
        send_slack_message(build_alert_message(anomaly))


if __name__ == &#8220;__main__&#8221;:
    main()</code></pre><p>Claude Skill commentary</p><pre><code># Python workers

`python/` contains Python modules used by this repo&#8217;s demos.

Most subfolders are intended to be executed by Orchestra via Python task
integrations (i.e., Orchestra launches the Python code as part of a pipeline
run).

Platform interaction patterns live under `patterns/`.

## Contents

- Worker modules for integrations and data movement.
- Subfolders with targeted examples (for example `integration_a/`,
  `integration_b/`, and `claude_agent/`).
- Shared dependencies in `requirements.txt`.

## Live dbt Alerts

`live_dbt_alerts.py` contains a short Python script, wrapping the [Orchestra CLI](https://docs.getorchestra.io/docs/git-control-and-ci-cd/orchestra-cli), that utilises an [Orchestra Python Task](https://docs.getorchestra.io/docs/integrations/python) and dbt&#8217;s logging to send real time Slack alerts for dbt runs.

### Usage

In order to run live dbt alerting for a dbt task:

* Create Slack incoming webhook(s) - Full [docs](https://docs.slack.dev/messaging/sending-messages-using-incoming-webhooks/#getting_started)
  - Create per-channel webhook to send alerts to (just 1 in this example, but can be extended)
  - Navigate (in Slack dashboard) to <em>*Your Slack App*</em> &gt; <em>*Incoming Webhooks*</em> &gt; Copy the Webhook URL for later

* Create Orchestra Python connection:
  - Connect to repo containing `live_dbt_alerts.py`
  - Store `SLACK_WEBHOOK` in secrets containing the Webhook URL retrieved above

* Configure pipeline tasks
  - In your dbt pipeline of choice, add `--log-level debug --log-format json` to the dbt command you are running
  - Create a Python task to run in parallel:
    - Use the connection set up above
    - Set Python command to `python live-dbt-alerts.py ${{ ORCHESTRA.PIPELINE_RUN_TASKS[&#8217;&lt;dbt task ID&gt;&#8217;].TASK_RUN_ID }}` or wherever your alerting script is located
    - Add build command of `pip install httpx orchestra-cli git+https://github.com/orchestra-hq/orchestra-cli.git@main` or latest `orchestra-cli`

* Add alert config to dbt tests, field structure is as follows:
```yaml
- &lt;test_name&gt;:
    config:
      meta:
        tags:
          - &#8220;Super Urgent Data Tests&#8221;
        owner: &#8220;gary@getorchestra.io&#8221;
        channel: &#8220;#dbt-live-alerts&#8221;
        subscribers:
          - &#8220;spyro@getorchestra.io&#8221;
```

That&#8217;s it! On the next run of your dbt pipeline, Orchestra will spin up a monitoring Python task to parse your dbt failures and alert you in Slack!

## Operation Anomaly Alerts

`operation_anomaly_alerts.py` is a sibling of `live_dbt_alerts.py`. Instead of
streaming a single task run and alerting on test <em>*failures*</em>, it scans every
operation Orchestra has recorded recently (via the public `operations` API) and
alerts on <em>*duration anomalies*</em>:

- <strong>**A &#8212; Baselines from artifacts:**</strong> for each operation (keyed on its stable
  `externalId`), it averages the durations of the last `BASELINE_ITERATIONS`
  (default 7) completed iterations. `REUSED`/`SKIPPED` nodes carry no timing and
  are excluded.
- <strong>**B &#8212; Threshold:**</strong> `ANOMALY_THRESHOLD` (default `2.0`x) sets how far above
  baseline counts as an anomaly. Recently <em>*completed*</em> operations that exceed it
  raise a red Slack alert.
- <strong>**C &#8212; Long-running operations:**</strong> operations still in flight (a `startedAt`
  with no `completedAt`) are compared against the same baseline using elapsed
  wall-clock time, raising an amber &#8220;running too long&#8221; alert before they finish.

### Usage

Run it on a schedule &#8212; e.g. an Orchestra Python task firing every few minutes:

* Reuse the same Orchestra Python connection and `SLACK_WEBHOOK` secret as the
  live dbt alerts setup above.
* Set the Python command to `python operation_anomaly_alerts.py`.
* Add a build command of `pip install httpx`.

Tunable environment variables (all optional):

| Variable | Default | Purpose |
| --- | --- | --- |
| `ANOMALY_THRESHOLD` | `2.0` | Multiple of baseline that triggers an alert |
| `BASELINE_ITERATIONS` | `7` | Completed iterations averaged into the baseline |
| `LOOKBACK_DAYS` | `7` | History window to scan (API caps at 7 days) |
| `ALERT_WINDOW_MINUTES` | `60` | Only alert on completions newer than this |
| `MIN_BASELINE_SECONDS` | `5.0` | Skip fast operations where jitter dominates |
| `OPERATION_TYPES` | <em>_(all)_</em> | Comma-separated filter, e.g. `MATERIALISATION,TEST` |</code></pre><h2><strong>Summary | Don&#8217;t settle for less than live logs</strong></h2><p>I was so happy to see our <a href="https://www.youtube.com/watch?v=hDkSBK_g-as&amp;t=111s">Head of AI create a video</a> demonstrating how live dbt logs could be created. Needless to say, Tasks running in Orchestra are poll-able and run-able and therefore support this pattern &#8212; however dbt logs have always been a thorn in the side.</p><p>With this simple sidecar process, we demonstrate how data teams can easily generate better, faster, more helpful logs without breaking the architecture bank by purchasing another tool.</p><p>Key to this is metadata. By having the metadata of historical runs for specific assets, it is straightforward to make alerts more technical and targeted, avoiding alert fatigue. In the case of Orchestra, Operational Data for Data Assets is gathered and exposed via API <em>anyway</em>, proving that the combination of Orchestrator + Observability + dbt makes for a meaningful improvement in alert speed, quality, and implementation.</p><p>Check-out the Claude Skill above as well for writing a sidecar process!</p><p>Follow me on <a href="https://www.linkedin.com/in/hugo-lu-confirmed/?skipRedirect=true">Linkedin</a> if this interests you. If you&#8217;re keen to try it out, everyone gets free compute in Orchestra on the <a href="https://app.getorchestra.io/signup">Free Tier</a>.</p>]]></content:encoded></item><item><title><![CDATA[Sao Paolo by Orchestra | Open-Sourcing dbt state aware orchestration]]></title><description><![CDATA[State aware orchestration and other power tools for dbt.]]></description><link>https://dataopsleadership.substack.com/p/sao-paolo-by-orchestra-open-sourcing</link><guid isPermaLink="false">https://dataopsleadership.substack.com/p/sao-paolo-by-orchestra-open-sourcing</guid><dc:creator><![CDATA[Hugo Lu]]></dc:creator><pubDate>Tue, 16 Jun 2026 08:07:26 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!kjTZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F460a7d00-965c-467e-a9c9-405aaa17e0fb_1125x638.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="/__u/substackcdn.com/image/fetch/$s_!kjTZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F460a7d00-965c-467e-a9c9-405aaa17e0fb_1125x638.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!kjTZ!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F460a7d00-965c-467e-a9c9-405aaa17e0fb_1125x638.png 424w, /__u/substackcdn.com/image/fetch/$s_!kjTZ!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F460a7d00-965c-467e-a9c9-405aaa17e0fb_1125x638.png 848w, /__u/substackcdn.com/image/fetch/$s_!kjTZ!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F460a7d00-965c-467e-a9c9-405aaa17e0fb_1125x638.png 1272w, /__u/substackcdn.com/image/fetch/$s_!kjTZ!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F460a7d00-965c-467e-a9c9-405aaa17e0fb_1125x638.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!kjTZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F460a7d00-965c-467e-a9c9-405aaa17e0fb_1125x638.png" width="1125" height="638" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/460a7d00-965c-467e-a9c9-405aaa17e0fb_1125x638.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:638,&quot;width&quot;:1125,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!kjTZ!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F460a7d00-965c-467e-a9c9-405aaa17e0fb_1125x638.png 424w, /__u/substackcdn.com/image/fetch/$s_!kjTZ!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F460a7d00-965c-467e-a9c9-405aaa17e0fb_1125x638.png 848w, /__u/substackcdn.com/image/fetch/$s_!kjTZ!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F460a7d00-965c-467e-a9c9-405aaa17e0fb_1125x638.png 1272w, /__u/substackcdn.com/image/fetch/$s_!kjTZ!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F460a7d00-965c-467e-a9c9-405aaa17e0fb_1125x638.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Introduction</h2><p>It&#8217;s been a lot of fun adding state to dbt. Something I didn&#8217;t think was possible, our engineering team managed to find a way. It&#8217;s now used by some the most mature data teams I&#8217;ve worked with like Octopus Energy and Experian.</p><p>State of course is nothing new - data teams have been tracking state in various places for donkeys years, and more recently projects like SQLMesh added state too.</p><p>dbt Fusion added state - but state was proprietary and not public. The license, which wasn&#8217;t Apache, then subsequently became Apache (forever? Maybe). In between which, we released Sao Paolo into the wild, albeit not for free.</p><p>Over time I suspect the projects will converge. For example there are a bunch of features we have that dbt&#8217;s does not:</p><ul><li><p>Asset-Aware orchestration</p></li><li><p>Some nice optimisations around how state is fetched</p></li><li><p>Some nice optimisations around how models are selected</p></li><li><p>Support for some DBs not in dbt Cloud e.g. Motherduck</p></li></ul><p>There are some things dbt&#8217;s has we do not</p><ul><li><p>Support for some other databases</p></li><li><p>The rust compiler / the rest of the fusion engine</p></li></ul><p>We are laser focussed on helping data teams so hopefully this is a way to keep fusion honest as time goes by. They may of course, diverge, if we revert to the scenario we were in 6 months ago where core vs. Fusion was not an obvious decision due to the proprietary nature of it.</p><p>Furthermore, dbt state is still charged if you use it in Fivetran. Nothing is free.</p><p>Indeed, if you want to use State via Fivetran:</p><ul><li><p><strong>Hugos&#8217;s Friend</strong> 8:33 PM</p><p>Have you looked at dbt State pricing? In classic Fivetran fashion, it is Daily Active Target Tables (9.4 cents per). It was free 2 weeks ago for dbt Enterprise customers but now it is charged separately. </p><p><strong><a href="https://getdbt.slack.com/archives/C0B7E4W8E7M/p1781188337125049">https://getdbt.slack.com/archives/C0B7E4W8E7M/p1781188337125049</a></strong></p></li></ul><p>So if you have 1,0000 models then storing state is $90 a pop, per day. I&#8217;m not sure how much you know about state, but basically every time you run dbt you store state. And the vibe is sort of like, because you store state you can run it however frequently you want, say every 5 minutes, which would create 288*1000*0.09 instances of state&#8230;so thank god it&#8217;s active daily..?</p><p>In Orchestra, running dbt is $0.033/min to reflect the cluster and monitoring infrastructure we use to run it. No extra charge for state. Just enable it</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!0TX6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ad8c6d5-1b1a-4108-95a3-698f2e839828_618x436.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!0TX6!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ad8c6d5-1b1a-4108-95a3-698f2e839828_618x436.png 424w, /__u/substackcdn.com/image/fetch/$s_!0TX6!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ad8c6d5-1b1a-4108-95a3-698f2e839828_618x436.png 848w, /__u/substackcdn.com/image/fetch/$s_!0TX6!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ad8c6d5-1b1a-4108-95a3-698f2e839828_618x436.png 1272w, /__u/substackcdn.com/image/fetch/$s_!0TX6!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ad8c6d5-1b1a-4108-95a3-698f2e839828_618x436.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!0TX6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ad8c6d5-1b1a-4108-95a3-698f2e839828_618x436.png" width="618" height="436" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0ad8c6d5-1b1a-4108-95a3-698f2e839828_618x436.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:436,&quot;width&quot;:618,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:25302,&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://dataopsleadership.substack.com/i/202238568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ad8c6d5-1b1a-4108-95a3-698f2e839828_618x436.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!0TX6!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ad8c6d5-1b1a-4108-95a3-698f2e839828_618x436.png 424w, /__u/substackcdn.com/image/fetch/$s_!0TX6!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ad8c6d5-1b1a-4108-95a3-698f2e839828_618x436.png 848w, /__u/substackcdn.com/image/fetch/$s_!0TX6!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ad8c6d5-1b1a-4108-95a3-698f2e839828_618x436.png 1272w, /__u/substackcdn.com/image/fetch/$s_!0TX6!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ad8c6d5-1b1a-4108-95a3-698f2e839828_618x436.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Flick the switch!</figcaption></figure></div><p>In any case It feels great to be <a href="https://www.reddit.com/r/dataengineering/comments/1u6dksf/opensourcing_dbt_stateaware_orchestration/">giving back to the community</a> so please enjoy and let us know what you think.</p><p><code>pip install dbt-orchestra</code></p><h3><strong>We&#8217;re Open-Sourcing State-Aware Orchestration (Sao Paolo) for dbt core</strong></h3><p>Sao Paolo by Orchestra is going Open-Source.</p><p>State-Aware Orchestration on dbt core is available under Apache 2.0</p><p><a href="https://github.com/orchestra-hq/sao-paolo">https://github.com/orchestra-hq/sao-paolo</a></p><p>There are a few reasons we like this approach:</p><p>&#9989; Easier Scheduling: Orchestra SAO (State Aware Orchestration) means you don&#8217;t need to manually tag models, you just need to say when the models should be updated and Orchestra SAO handles the dependencies.</p><p>&#9989;Save cost: Orchestra SAO detects when there is new data and only updates models and their downstream deps if there is new data, saving money and reducing time.</p><p>&#9989;Works out of the box: no need to upgrade dbt versions to take advantage of Orchestra SAO</p><p>Being part of the dbt community was one of the things that originally brought me to data engineering back when I was working at JUUL, so it feels pretty awesome to finally contribute something back!</p><p>For those of you wondering how this compares to Fusion &#8212; we launched SAO in our proprietary solution a couple months back when the dbt Fusion license was still Elastic 2.0 and when the state APIs were proprietary.</p><p>The two projects are not currently identical, there are a couple of differences such as a nice optimisation around build_after configurations propagating up the entire DAG in Orchestra SAO for example.</p><p>Orchestra SAO will allow these two standards to converge over time to a better dbt experience with state-aware orchestration, asset-aware scheduling, and a rocket of a compiler &#8212; all available to the dbt community under Apache 2.0.</p><p>There is no requirements to use this in Orchestra. It works with your dbt repo, just requires you to configure where state is stored.</p><h2><strong>Getting Started with Orchestra state-aware orchestration</strong></h2><ul><li><p>The complete guide to SAO (<a href="https://www.getorchestra.io/blog/the-complete-guide-to-orchestra-state-aware-orchestration">read</a>)</p></li><li><p>Configuring build_after configurations (<a href="https://www.getorchestra.io/blog/dbt-build-after-configurations-reduce-dbt-costs-with-sao">read</a>)</p></li><li><p>Get your project AI Ready with Orchestra Skills (<a href="https://github.com/orchestra-hq/orchestra-skills/tree/main/skills/orchestra/skills">github</a>)</p></li><li><p><a href="https://github.com/orchestra-hq/sao-paolo">Clone the repo</a></p></li></ul>]]></content:encoded></item><item><title><![CDATA[Everything you need to know about Snowflake Summit 2026 ]]></title><description><![CDATA[Sridhar Ramaswamy and Christian Kleinerman embark on a new journey]]></description><link>https://dataopsleadership.substack.com/p/everything-you-need-to-know-about</link><guid isPermaLink="false">https://dataopsleadership.substack.com/p/everything-you-need-to-know-about</guid><dc:creator><![CDATA[Hugo Lu]]></dc:creator><pubDate>Fri, 05 Jun 2026 08:35:49 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!VQ37!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46dd280a-c455-451d-85ee-84b3d6bd140c_1280x720.jpeg" 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="/__u/substackcdn.com/image/fetch/$s_!VQ37!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46dd280a-c455-451d-85ee-84b3d6bd140c_1280x720.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!VQ37!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46dd280a-c455-451d-85ee-84b3d6bd140c_1280x720.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!VQ37!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46dd280a-c455-451d-85ee-84b3d6bd140c_1280x720.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!VQ37!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46dd280a-c455-451d-85ee-84b3d6bd140c_1280x720.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!VQ37!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46dd280a-c455-451d-85ee-84b3d6bd140c_1280x720.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!VQ37!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46dd280a-c455-451d-85ee-84b3d6bd140c_1280x720.jpeg" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/46dd280a-c455-451d-85ee-84b3d6bd140c_1280x720.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!VQ37!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46dd280a-c455-451d-85ee-84b3d6bd140c_1280x720.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!VQ37!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46dd280a-c455-451d-85ee-84b3d6bd140c_1280x720.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!VQ37!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46dd280a-c455-451d-85ee-84b3d6bd140c_1280x720.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!VQ37!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46dd280a-c455-451d-85ee-84b3d6bd140c_1280x720.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>Introduction</strong></h2><p><a href="https://getorchestra.io/">Orchestra</a> is at Summit and it&#8217;s incredible to see what&#8217;s been announced. The overarching theme relates to ease-of-use. Rather than re-create the entire data stack Snowflake are finally architecting something that is potentially capable of making developers&#8217; lives easier.</p><p>However there is a dangerous trap &#8212; integration. Building a closed-end system allows you to do a lot of awesome stuff. However, it ropes you in to using a closed-end system. The new trend &#8220;tokenmaxxing&#8221; has a Snowflake version too; &#8220;Snowmaxxing&#8221;.</p><p>That said the &#8220;elastic data warehouse&#8221; is alive and well. I said in 2024, when Shridhar joined Snowflake:</p><blockquote><p><em>The trade-off, of course, is ease of use. Using Snowflake has and will continue to be easy. It is their krpytonite to Databricks&#8217; nuclear arsenal of capability.</em></p></blockquote><h2><strong><a href="https://medium.com/@hugolu87/who-is-sridhar-ramaswamy-and-what-does-this-mean-for-snowflake-33d52785198f?source=post_page-----34bf066408eb---------------------------------------">Who is Sridhar Ramaswamy and what does this mean for Snowflake?</a></strong></h2><h3><a href="https://medium.com/@hugolu87/who-is-sridhar-ramaswamy-and-what-does-this-mean-for-snowflake-33d52785198f?source=post_page-----34bf066408eb---------------------------------------">Frank Slootman: Thank you, and goodnight</a></h3><p><a href="https://medium.com/@hugolu87/who-is-sridhar-ramaswamy-and-what-does-this-mean-for-snowflake-33d52785198f?source=post_page-----34bf066408eb---------------------------------------">medium.com</a></p><p>It is honestly pretty incredible to see the pace of integration it&#8217;s taken to action this. AI and Context in Snowflake is extraordinarily powerful. The feedback from the floor is intense &#8212; the AI is powerful, and easy to use, as billed.</p><p>Let&#8217;s dive in to what was announced.</p><h2><strong>Snowflake Datastream</strong></h2><p>Somehow without making an acquisition, they finally have their <a href="https://www.businesswire.com/news/home/20260602025358/en/Snowflake-CoCo-Redefines-Enterprise-AI-Development-as-the-Coding-Agent-Built-for-Faster-Easier-and-More-Powerful-Innovation-Anywhere">streaming solution</a>, just like I predicted.</p><p>Snowflake also introduced <strong><a href="https://cts.businesswire.com/ct/CT?id=smartlink&amp;url=https%3A%2F%2Fwww.snowflake.com%2Fen%2Fproduct%2Ffeatures%2Fdatastream&amp;esheet=54545525&amp;newsitemid=20260602025358&amp;lan=en-US&amp;anchor=Snowflake+Datastream&amp;index=4&amp;md5=aa56905b70ea8dcfb19b2f117d737aba">Snowflake Datastream</a></strong>6, a new fully managed streaming service for Apache Kafka&#174;7 that brings real-time data and AI together in a single, governed platform, giving organizations an easier way to power AI apps and agents with fresh, continuously flowing data.</p><p><em><a href="https://medium.com/@hugolu87/the-streaming-wars-2-0-b9ee4a09b74d">Predicated in March 2025</a></em></p><h2><strong>Snowflake Cowork</strong></h2><p>See <a href="https://www.snowflake.com/en/product/snowflake-cowork/">here</a>.</p><p>Snowflake CoWork is Snowflake&#8217;s AI-powered work assistant designed to help employees interact with enterprise data and applications using natural language. Rather than functioning as a simple chatbot, CoWork acts as an agent that can understand business context, retrieve information from multiple systems, perform analysis, and take action on a user&#8217;s behalf.</p><p>One of its core features is <strong>Cortex Sense</strong>, a semantic layer that provides AI agents with a shared understanding of business concepts, metrics, and organizational knowledge. This allows CoWork to deliver responses that are grounded in company-specific definitions rather than generic AI reasoning.</p><p>CoWork also includes <strong>Deep Research</strong> capabilities, enabling it to conduct multi-step investigations across both structured data in Snowflake and unstructured content such as documents, emails, and knowledge bases. Users can ask complex business questions and receive synthesized insights without manually querying multiple systems.</p><p>To make interactions more personalized, CoWork introduces <strong>User Memory</strong>, which remembers user preferences, recurring tasks, and working patterns. Over time, the assistant becomes more tailored to an individual&#8217;s role and workflows.</p><p>Another key feature is <strong>User Skills</strong>, which allows users and organizations to package frequently repeated processes into reusable workflows. These skills can be invoked through natural language, reducing the need for manual execution of routine business tasks.</p><p>CoWork is also designed to connect with a broad ecosystem of enterprise tools, including productivity, CRM, collaboration, and file-management platforms. Through these integrations, it can not only retrieve information but also perform actions such as updating records, creating tasks, sharing documents, or triggering workflows.</p><p>Finally, CoWork includes <strong>Artifacts</strong>, a feature that enables users to create and share outputs generated through AI interactions. These outputs can include reports, analyses, summaries, and collaborative work products that can be distributed across teams and embedded into existing business processes.</p><p>Together, these features position Snowflake CoWork as a unified AI workspace that combines enterprise search, business intelligence, workflow automation, and action-oriented AI within the Snowflake platform.</p><h2><strong>Snowflake Managed Agents</strong></h2><p><a href="https://www.linkedin.com/posts/hugo-lu-confirmed_its-snowflake-summit-in-1-week-and-i-have-activity-7464657795066441729-vIxa?utm_source=share&amp;utm_medium=member_desktop&amp;rcm=ACoAABPaLFUB0ubeGsSwjFqYOiFjCeDysNeBObI">We knew this was coming</a>.</p><p>Snowflake Managed Agents is a framework that allows organizations to deploy and operate AI agents directly within the Snowflake platform without having to manage the underlying infrastructure, orchestration, or lifecycle of those agents. The service is designed to help enterprises move beyond conversational AI and build agents that can reason over data, execute tasks, and automate business processes while remaining governed by Snowflake&#8217;s security and data controls.</p><p>A key feature of Managed Agents is its ability to <strong>access and reason across enterprise data stored in Snowflake</strong>. Agents can work with structured warehouse data, unstructured documents, and business metadata, enabling them to answer complex questions and perform multi-step analyses using a unified data foundation.</p><p>Managed Agents also provide <strong>built-in orchestration and planning capabilities</strong>. Rather than responding to a single prompt, agents can break a request into multiple steps, determine which tools or datasets are required, execute those steps in sequence, and return a consolidated result. This allows them to handle more sophisticated workflows such as investigations, reporting, forecasting, and operational decision support.</p><p>Another important capability is <strong>tool and application integration</strong>. Managed Agents can connect to enterprise systems and external services, allowing them to retrieve information, trigger actions, update records, and coordinate work across business applications. This enables agents to move from generating insights to executing real business tasks.</p><p>The platform includes <strong>governance, security, and observability features</strong> that align with Snowflake&#8217;s enterprise architecture. Organizations can control which data sources an agent can access, apply existing permissions and policies, monitor agent activity, and maintain auditability for compliance requirements.</p><p>Managed Agents are also designed to work with Snowflake&#8217;s broader AI ecosystem, including <strong>Snowflake Cortex</strong>, semantic models, and business context layers. This helps ensure that agents understand company-specific terminology, metrics, and business rules, reducing the risk of inaccurate or inconsistent outputs.</p><p>To accelerate adoption, Snowflake provides a <strong>fully managed operational environment</strong>. Organizations do not need to provision infrastructure, manage scaling, monitor agent runtimes, or handle updates to underlying AI services. Snowflake manages these operational concerns, allowing teams to focus on designing agent behavior and business outcomes rather than platform engineering.</p><p><strong>It is worth noting that for this to work, you need to be happy with agents running in your data warehouse or data platform. Oftentimes, folks may want this to be elsewhere for connectivity reasons or simply for architectural reasons.</strong></p><h2><strong>Snowflake Horizon Context</strong></h2><h2><strong><a href="https://www.snowflake.com/en/blog/horizon-context-governed-context/?source=post_page-----34bf066408eb---------------------------------------">Snowflake Horizon Context: The Governed Context Layer for AI, BI and Apps</a></strong></h2><h3><a href="https://www.snowflake.com/en/blog/horizon-context-governed-context/?source=post_page-----34bf066408eb---------------------------------------">Discover Horizon Context, a new capability within Horizon Catalog that delivers a connected, governed semantic&#8230;</a></h3><p><a href="https://www.snowflake.com/en/blog/horizon-context-governed-context/?source=post_page-----34bf066408eb---------------------------------------">www.snowflake.com</a></p><p>New connectors. This is what we get wth Horizon and Select *</p><h2><strong>Snowflake Migrations</strong></h2><p>Big push from CK on using COCO to migrate things like Teradata. Worth a note.</p><h2><strong>Snowflake SpaceX Models</strong></h2><p>Pretty interesting to see Grok getting made available in Snowflake. They are operating at an interesting part of the stack where they can provide models and distirbute them. This is very unique, bar the hyperscalers of course.</p><h2><strong>Agentic search (Neeva) &#8212; precise analytical results from unstructured data</strong></h2><p>Not hugely shouted about, but if you see <a href="https://docs.snowflake.com/en/user-guide/snowflake-cortex/cortex-search/cortex-search-overview">here</a> it is essentially a lot of the heavy-lifting going on behind the scenes when you ask CoCo to do something.</p><p>It&#8217;s another incentive to move towards putting all your data into Snowflake as well as a very nice dovetail into things in iceberg which may naturally be more unstructured.</p><p>Without this, the assistant would be incapable. So very foundational and interesting work.</p><h2><strong>Code Bundles &#8212; just execute code in Snowflake. Or Schedule it.</strong></h2><p>As discussed previously the ability to run any code in Snowflake, with some slightly better devex (see <a href="https://docs.snowflake.com/en/user-guide/cortex-code/bundled-skills">more</a>). Again &#8212; do we really think Snowflake is going to rip out the hyperscalers when they are committed to spending $6bn with AWS over the next 5 years &#8212; probably not.</p><p>But it&#8217;s a nice feature for sure.</p><p>c.f. Daytona</p><h2><strong>Visual Pipeline Editor &#8212; JB and noone else</strong></h2><p>Snowflake have announced a Visual Pipeline Editor. &#8220;Who&#8217;s excited for a Visual Pipeline Editor in Snowflake?!&#8221; was greeted by crickets bar someone referred to as &#8220;JB&#8221;.</p><p>As we know, the orchestration of end-to-end pipelines should be simple but at some point, most large companies look to add some form of orchestration. Now Snowflake have two orchestrators &#8212; Snowflake Tasks and the Visual pipeline editor, which is presumably a wrapper around Tasks.</p><p>To understand how modern platforms like Orchestra outperform frameworks like Airflow and Snowflake Tasks, <a href="https://www.getorchestra.io/guides/orchestra-vs-airflow-key-differences-2024">read more here</a>.</p><p>Simplify the Entire Development Experience &#8212; Snowmaxxing&#8230;</p><h2><strong>CoCo for excel, Claude Code and Microsot VSCode</strong></h2><p>Here <a href="https://www.snowflake.com/en/news/press-releases/snowflake-coco-redefines-enterprise-ai-development-as-the-coding-agent-built-for-faster-easier-and-more-powerful-innovation-anywhere/">you go</a>.</p><p>CoCo in Excel, Claude Code and VSCode.</p><p>Pretty awesome, love this as a release. Bringing Snowflake to the people. LFG.</p><h2><strong>CoCo Desktop</strong></h2><p>like Claude Code, but for CoCo. See <a href="https://www.streetinsider.com/Corporate+News/Snowflake+launches+CoCo+desktop+app+and+streaming+service/26588663.html">here</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!pvic!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf75c0d1-acd3-43bb-8cff-e1e2d61a0c3c_945x532.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!pvic!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf75c0d1-acd3-43bb-8cff-e1e2d61a0c3c_945x532.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!pvic!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf75c0d1-acd3-43bb-8cff-e1e2d61a0c3c_945x532.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!pvic!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf75c0d1-acd3-43bb-8cff-e1e2d61a0c3c_945x532.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!pvic!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf75c0d1-acd3-43bb-8cff-e1e2d61a0c3c_945x532.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!pvic!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf75c0d1-acd3-43bb-8cff-e1e2d61a0c3c_945x532.jpeg" width="945" height="532" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/df75c0d1-acd3-43bb-8cff-e1e2d61a0c3c_945x532.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:532,&quot;width&quot;:945,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!pvic!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf75c0d1-acd3-43bb-8cff-e1e2d61a0c3c_945x532.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!pvic!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf75c0d1-acd3-43bb-8cff-e1e2d61a0c3c_945x532.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!pvic!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf75c0d1-acd3-43bb-8cff-e1e2d61a0c3c_945x532.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!pvic!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf75c0d1-acd3-43bb-8cff-e1e2d61a0c3c_945x532.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>COCO Desktop announced at Snowflake Summit</p><p>It&#8217;s very interesting here to see Snowflake follow in the AI Labs&#8217; stead by building a desktop App. Given the number of Business Users who want to interact with data I think this is a smart move.</p><p>Why would you use Claude Code Desktop when you could simply use Snowflake&#8217;s? Unclear. It feels like a 50/50 &#8212; but at this point, if you never try, you never know!</p><p>Fundamentally the game is to position Snowflake as an AI Infra company and it is paying off.</p><h2><strong>Conclusion: Sridhar Ramaswamy&#8217;s investments are coming off</strong></h2><p>When Sridhar joined Snowflake I wrote this in March 2024:</p><blockquote><p><em>With the share price dwindling vs. the post IPO days, Ramaswamy has a bit of wiggle room to build. The Data and AI Arms Race is just beginning. There is no doubt, no question in my mind that Ramaswamy&#8217;s biggest priority is to build a nuclear arsenal of AI functionality. The question for us a s data practitioners will be whether the cost of using it exceeds the benefit. &#128640; (<a href="https://medium.com/@hugolu87/who-is-sridhar-ramaswamy-and-what-does-this-mean-for-snowflake-33d52785198f">Link</a>)</em></p></blockquote><p>The stock is up. The AI Features are here. And unstructured search is here too &#8212; the vision of wedging what Sridhar did at Neeva in between the users and the data is the at the crux of the Snowflake AI Platform.</p><p>In addition, the company looks like it will successfully imitate Anthropic with a suite of AI products leveraging CoCo, thereby displacing Anthropic from the Data Engineering Space, using them only for LLMs in a commoditised way.</p><p>Whether or not this extends to the Snowflake Platform itself will determine the irony. After all, with companies like Clickhouse committing to &#8220;Headless&#8221; and &#8220;Serverless&#8221; architecture, Snowflake is decidedly doing the opposite &#8212; building a suite of features around Snowflake at the expense of their partner system.</p><p>It would be ironic if those partners disintermediated Snowflake somehow by commoditising compute. For all the furor around duckdb, iceberg, and some start-ups like Bauplan and Greybeam, commoditised, multi-engine compute is yet to blow into the mainstream.</p><p>The company is growing revenue of c.$5bn at c.35% y-o-y. Sridhar Ramswamy&#8217;s investments are paying off. Companies are snowmaxxing harder than ever. CoCo appears to be the closest the company has come to executing on its AI strategy.</p><p>It&#8217;s time for a new journey for Snowflake as something more than just a data warehousing solution.</p><p><em>Want to see how teams are SnowMaxxing wiht Orchestra and Snowflake harder than ever? check-out the video below on how Experian are building a stack that is easier and more powerful than ever before.</em></p><h3><strong>Full Snowflake Summit Announcements video</strong></h3><div id="youtube2-NFTdHYp9uJo" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;NFTdHYp9uJo&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/NFTdHYp9uJo?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div>]]></content:encoded></item><item><title><![CDATA[The one industry immune to Anthropic | Claude Code Stopped ]]></title><description><![CDATA[Why Data Engineering will be a fortress well into 2030]]></description><link>https://dataopsleadership.substack.com/p/the-one-industry-immune-to-anthropic</link><guid isPermaLink="false">https://dataopsleadership.substack.com/p/the-one-industry-immune-to-anthropic</guid><dc:creator><![CDATA[Hugo Lu]]></dc:creator><pubDate>Wed, 03 Jun 2026 08:26:01 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!_Fq7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb1cab27-af5f-445a-9502-06d5f0e27adf_945x516.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2><strong>Introduction</strong></h2><p><a href="https://www.anthropic.com/">Anthropic</a> and Dario Amodei are arguably the biggest thing to happen to the corporate world in 2026. After the Citrini report heralded the <a href="https://www.anthropic.com/">SAASpocalypse</a>, companies like <a href="https://www.reddit.com/r/ExperiencedDevs/comments/1teyql0/what_we_can_learn_from_the_atlassian_layoff_video/">Atlassian</a> and Block cut employees, citing AI productivity gains. blue-chip SAAS stocks are down 30% this year.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!RwZA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e7119d9-f7a8-4427-b50c-792eef4e0242_832x643.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!RwZA!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e7119d9-f7a8-4427-b50c-792eef4e0242_832x643.png 424w, /__u/substackcdn.com/image/fetch/$s_!RwZA!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e7119d9-f7a8-4427-b50c-792eef4e0242_832x643.png 848w, /__u/substackcdn.com/image/fetch/$s_!RwZA!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e7119d9-f7a8-4427-b50c-792eef4e0242_832x643.png 1272w, /__u/substackcdn.com/image/fetch/$s_!RwZA!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e7119d9-f7a8-4427-b50c-792eef4e0242_832x643.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!RwZA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e7119d9-f7a8-4427-b50c-792eef4e0242_832x643.png" width="832" height="643" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4e7119d9-f7a8-4427-b50c-792eef4e0242_832x643.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:643,&quot;width&quot;:832,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!RwZA!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e7119d9-f7a8-4427-b50c-792eef4e0242_832x643.png 424w, /__u/substackcdn.com/image/fetch/$s_!RwZA!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e7119d9-f7a8-4427-b50c-792eef4e0242_832x643.png 848w, /__u/substackcdn.com/image/fetch/$s_!RwZA!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e7119d9-f7a8-4427-b50c-792eef4e0242_832x643.png 1272w, /__u/substackcdn.com/image/fetch/$s_!RwZA!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e7119d9-f7a8-4427-b50c-792eef4e0242_832x643.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Salesforce share price from Google</p><p>But it is not all rosy. Altman and Amodei have both recently discovered the joys of being backed by venture. Rather than stick to the bread and butter of LLM model development, a fool&#8217;s errand due to the <a href="https://www.linkedin.com/posts/hugo-lu-confirmed_snowflake-dataengineering-ai-share-7465832264443129857-7K0F/?utm_source=share&amp;utm_medium=member_desktop&amp;rcm=ACoAABPaLFUB0ubeGsSwjFqYOiFjCeDysNeBObI">Great Token Conspiracy</a>, they have branched out to seek new, greener pastures.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!z19E!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e82e24b-b360-4536-982d-6a5860164130_945x606.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!z19E!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e82e24b-b360-4536-982d-6a5860164130_945x606.png 424w, /__u/substackcdn.com/image/fetch/$s_!z19E!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e82e24b-b360-4536-982d-6a5860164130_945x606.png 848w, /__u/substackcdn.com/image/fetch/$s_!z19E!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e82e24b-b360-4536-982d-6a5860164130_945x606.png 1272w, /__u/substackcdn.com/image/fetch/$s_!z19E!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e82e24b-b360-4536-982d-6a5860164130_945x606.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!z19E!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e82e24b-b360-4536-982d-6a5860164130_945x606.png" width="945" height="606" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3e82e24b-b360-4536-982d-6a5860164130_945x606.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:606,&quot;width&quot;:945,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!z19E!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e82e24b-b360-4536-982d-6a5860164130_945x606.png 424w, /__u/substackcdn.com/image/fetch/$s_!z19E!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e82e24b-b360-4536-982d-6a5860164130_945x606.png 848w, /__u/substackcdn.com/image/fetch/$s_!z19E!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e82e24b-b360-4536-982d-6a5860164130_945x606.png 1272w, /__u/substackcdn.com/image/fetch/$s_!z19E!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e82e24b-b360-4536-982d-6a5860164130_945x606.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Source: MUFG Americas. Note Open AI&#8217;s Compute Forecast by 2030 is <a href="https://www.cnbc.com/2026/02/20/openai-resets-spend-expectations-targets-around-600-billion-by-2030.html">$600bn</a>, the total of hyperscales combined.</p><p>One such pasture is the world of design. A couple of weeks ago, <a href="https://www.anthropic.com/news/claude-design-anthropic-labs">Anthropic released Claude Design</a>, an interface where an AI helps you generate designs. These designs are code-based, and therefore port automatically to other code-based paradigms such as websites. Figma stock is down c.80% this year.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!lD5b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb62c1beb-ad4c-4472-92e3-b5a6f2973693_709x640.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!lD5b!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb62c1beb-ad4c-4472-92e3-b5a6f2973693_709x640.png 424w, /__u/substackcdn.com/image/fetch/$s_!lD5b!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb62c1beb-ad4c-4472-92e3-b5a6f2973693_709x640.png 848w, /__u/substackcdn.com/image/fetch/$s_!lD5b!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb62c1beb-ad4c-4472-92e3-b5a6f2973693_709x640.png 1272w, /__u/substackcdn.com/image/fetch/$s_!lD5b!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb62c1beb-ad4c-4472-92e3-b5a6f2973693_709x640.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!lD5b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb62c1beb-ad4c-4472-92e3-b5a6f2973693_709x640.png" width="709" height="640" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b62c1beb-ad4c-4472-92e3-b5a6f2973693_709x640.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:640,&quot;width&quot;:709,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!lD5b!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb62c1beb-ad4c-4472-92e3-b5a6f2973693_709x640.png 424w, /__u/substackcdn.com/image/fetch/$s_!lD5b!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb62c1beb-ad4c-4472-92e3-b5a6f2973693_709x640.png 848w, /__u/substackcdn.com/image/fetch/$s_!lD5b!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb62c1beb-ad4c-4472-92e3-b5a6f2973693_709x640.png 1272w, /__u/substackcdn.com/image/fetch/$s_!lD5b!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb62c1beb-ad4c-4472-92e3-b5a6f2973693_709x640.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Figma Share Price from Google.</p><p>Open AI meanwhile seem more focussed on the consumer market. Open AI <a href="https://techcrunch.com/2026/05/05/openai-releases-gpt-5-5-instant-a-new-default-model-for-chatgpt/">recently released GPT5.5</a> &#8212; a more capable model for human, individual tasks and automations.</p><p>The warning signs are already here. Anysphere, the company behind Cursor, recently <a href="https://finance.yahoo.com/sectors/technology/articles/spacex-just-cut-60b-deal-193500859.html?guccounter=1&amp;guce_referrer=aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS8&amp;guce_referrer_sig=AQAAAARNnOhmAZm-JAxDFrNJzd1Ac87ATb1-yYtXvOCwPnkaHq4XId-C8J-ar-7AcOHQbRIkC8sdT-pkm0xRyeniaNJJtY3k4OHsF2MKB6mKlIGaP8HKl4ks7wLDhyhw5u3giE9znz_hNtZjFi4tPmBX1aOWb2YQsgWmAlAQXfXS7z3n">sold </a><em><a href="https://finance.yahoo.com/sectors/technology/articles/spacex-just-cut-60b-deal-193500859.html?guccounter=1&amp;guce_referrer=aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS8&amp;guce_referrer_sig=AQAAAARNnOhmAZm-JAxDFrNJzd1Ac87ATb1-yYtXvOCwPnkaHq4XId-C8J-ar-7AcOHQbRIkC8sdT-pkm0xRyeniaNJJtY3k4OHsF2MKB6mKlIGaP8HKl4ks7wLDhyhw5u3giE9znz_hNtZjFi4tPmBX1aOWb2YQsgWmAlAQXfXS7z3n">the right </a></em><a href="https://finance.yahoo.com/sectors/technology/articles/spacex-just-cut-60b-deal-193500859.html?guccounter=1&amp;guce_referrer=aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS8&amp;guce_referrer_sig=AQAAAARNnOhmAZm-JAxDFrNJzd1Ac87ATb1-yYtXvOCwPnkaHq4XId-C8J-ar-7AcOHQbRIkC8sdT-pkm0xRyeniaNJJtY3k4OHsF2MKB6mKlIGaP8HKl4ks7wLDhyhw5u3giE9znz_hNtZjFi4tPmBX1aOWb2YQsgWmAlAQXfXS7z3n">to be acquired for $60bn</a> for an undisclosed sum. In any event, should Elon Musk <em>not </em>exercise that right, they will be paid $10bn. At a X $bn valuation previously, the Founders would have realised that lacking their own proprietary model (though they have their <a href="https://www.reddit.com/r/singularity/comments/1ryrs2w/cursors_composer_2_model_is_apparently_just_kimi/">&#8220;Own&#8221; based on Kimi</a>), they lacked the &#8220;edge&#8221; required to succeed in the Great Token War.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!GhJs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff09a05a9-a1a2-47c6-b4b7-4a5e1bc3e340_945x697.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!GhJs!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff09a05a9-a1a2-47c6-b4b7-4a5e1bc3e340_945x697.png 424w, /__u/substackcdn.com/image/fetch/$s_!GhJs!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff09a05a9-a1a2-47c6-b4b7-4a5e1bc3e340_945x697.png 848w, /__u/substackcdn.com/image/fetch/$s_!GhJs!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff09a05a9-a1a2-47c6-b4b7-4a5e1bc3e340_945x697.png 1272w, /__u/substackcdn.com/image/fetch/$s_!GhJs!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff09a05a9-a1a2-47c6-b4b7-4a5e1bc3e340_945x697.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!GhJs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff09a05a9-a1a2-47c6-b4b7-4a5e1bc3e340_945x697.png" width="945" height="697" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f09a05a9-a1a2-47c6-b4b7-4a5e1bc3e340_945x697.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:697,&quot;width&quot;:945,&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="/__u/substackcdn.com/image/fetch/$s_!GhJs!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff09a05a9-a1a2-47c6-b4b7-4a5e1bc3e340_945x697.png 424w, /__u/substackcdn.com/image/fetch/$s_!GhJs!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff09a05a9-a1a2-47c6-b4b7-4a5e1bc3e340_945x697.png 848w, /__u/substackcdn.com/image/fetch/$s_!GhJs!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff09a05a9-a1a2-47c6-b4b7-4a5e1bc3e340_945x697.png 1272w, /__u/substackcdn.com/image/fetch/$s_!GhJs!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff09a05a9-a1a2-47c6-b4b7-4a5e1bc3e340_945x697.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Token costs over time. <a href="https://www.reddit.com/r/LocalLLaMA/comments/1gpr2p4/llms_cost_is_decreasing_by_10x_each_year_for/">Source</a></p><p>With even companies like Cursor taking evasive action the only people left are Open AI and Anthropic, and these companies will do absolutely anything to sustain their valuations. The question is &#8212; who will they target first?</p><p>For all their ambitions to defeat the CRMs, ERPs, and Design Software tools, there is one industry they cannot touch. This area of engineering, often described as a &#8220;subset&#8221; of software engineering actually contains an enormous amount of context AI struggles to understand.</p><p>In this article we will dive into the particulars of this industry and why Anthropic will not be able to break into it without making an acquisition.</p><h2><strong>Historic(al?) Vendor Relationships</strong></h2><p>The Data industry is governed by historical relationships. These vary by vertical and company type, but can roughly be split as follows:</p><ul><li><p>Big Tech: do not buy that much data engineering software, and leverage AWS or GCP</p></li><li><p>&#8220;Laggards&#8221; and &#8220;Late Adopters&#8221;: Microsoft</p></li><li><p>Government in the US: palantir</p></li><li><p>GCP</p></li><li><p>Everyone else: Databricks and/or Snowflake</p></li></ul><p>What this means is the decision-makers for buying Data Engineering software already have their favourite steakhouses and their favourite reps. There is simply a level of loyalty within the C-Suite and the IT Exec that no amount of tokens can break through.</p><h3><strong>Sunk Cost Fallacy and existing architecture</strong></h3><p>I routinely speak to enterprises that are on their 4th iteration of their data platform or later. In large enterprises, bodies are buried, and lots of them. Architecture is complicated &#8212; there are many tools already procured.</p><p>This means if Anthropic were to break into the data engineering space, they woudl have two options</p><p>1) Option 1: wipe the floor clean and start-over. This is not feasible as it would require Anthropic to develop a Palantir-Foundry equivalent data solution, which we do not think is likely</p><p>2) Option 2: build something interoperable. What could this be? Perhaps an Observability tool? The data stack is already crowded, which means there is not much space for a tool like Anthropic&#8217;s</p><p>Option 1 is not likely because of sunk cost fallacy. At every enterprise there are decision-makers that have made decisions to implement data architectures that are still in progress. They are simply not aligned to any value proposition put forward by Anthropic. The wheels are in motion already, don&#8217;t stop the train!</p><h3><strong>Size of opportunity</strong></h3><p>Anthropic is a big company. It already has <a href="https://www.cnbc.com/2026/05/28/anthropic-open-ai-startup-value.html">47$bn of revenue</a>. That is 8&#8211;10x times as large as Databricks.</p><p>To meaningfully impact their revenue, the company would need to go for at least $1bn revenue opportunities. There simply are not that many companies like that in the data space. Apart from Agentic BI, where companies like Tableau and Looker hit revenue valuations of multiple hundreds of millions, the only companies at the scale of interest are Snowflake and Databricks.</p><p>One interesting area for Anthropic to look at breaking into would actually be agentic BI. Companies like Lightdash, TextQL, Omni, and Hex are all building agentic BI layers.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!5jcl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe87a0289-5637-4226-b298-a544d8adb763_480x247.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!5jcl!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe87a0289-5637-4226-b298-a544d8adb763_480x247.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!5jcl!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe87a0289-5637-4226-b298-a544d8adb763_480x247.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!5jcl!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe87a0289-5637-4226-b298-a544d8adb763_480x247.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!5jcl!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe87a0289-5637-4226-b298-a544d8adb763_480x247.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!5jcl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe87a0289-5637-4226-b298-a544d8adb763_480x247.jpeg" width="480" height="247" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e87a0289-5637-4226-b298-a544d8adb763_480x247.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:247,&quot;width&quot;:480,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!5jcl!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe87a0289-5637-4226-b298-a544d8adb763_480x247.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!5jcl!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe87a0289-5637-4226-b298-a544d8adb763_480x247.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!5jcl!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe87a0289-5637-4226-b298-a544d8adb763_480x247.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!5jcl!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe87a0289-5637-4226-b298-a544d8adb763_480x247.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Agents hit different. <a href="https://www.linkedin.com/posts/hugo-lu-confirmed_snowflake-dataengineering-ai-share-7465832264443129857-7K0F/?utm_source=share&amp;utm_medium=member_desktop&amp;rcm=ACoAABPaLFUB0ubeGsSwjFqYOiFjCeDysNeBObI">Source</a></figcaption></figure></div><p>Snowflake, GCP and Databricks are all providing these natively. Microsoft&#8217;s is distinctly lacking. This strikes me as an area Anthropic could break into, but let&#8217;s call that &#8220;analytics&#8221; and not &#8220;data engineering&#8221; (for now).</p><h3><strong>Only Human People know where the bodies are buried</strong></h3><p>Like it or not, data engineering is a multi-disciplinary domain that is generally incredibly poorly-documented. Tribal knowledge of architecture, building pipelines, and fixing data quality errors is rife. Often there is a &#8220;way&#8221; of doing things that simply exists in peoples minds.</p><p>I wrote about this at length in the complete guide to i<a href="https://medium.com/@hugolu87/the-complete-guide-to-ai-implementation-for-chief-data-ai-officers-in-2026-fae2ebaea67b">mplementing AI for CDAOs</a>. There we identified that enterprises with a large amount of tech or knowledge debt would have a greater cost of implementing AI. It would also take them a longer time.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!KyR-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ec31099-fbd5-4dcf-859c-ee958650a817_882x476.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!KyR-!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ec31099-fbd5-4dcf-859c-ee958650a817_882x476.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!KyR-!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ec31099-fbd5-4dcf-859c-ee958650a817_882x476.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!KyR-!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ec31099-fbd5-4dcf-859c-ee958650a817_882x476.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!KyR-!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ec31099-fbd5-4dcf-859c-ee958650a817_882x476.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!KyR-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ec31099-fbd5-4dcf-859c-ee958650a817_882x476.jpeg" width="882" height="476" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7ec31099-fbd5-4dcf-859c-ee958650a817_882x476.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:476,&quot;width&quot;:882,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!KyR-!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ec31099-fbd5-4dcf-859c-ee958650a817_882x476.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!KyR-!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ec31099-fbd5-4dcf-859c-ee958650a817_882x476.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!KyR-!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ec31099-fbd5-4dcf-859c-ee958650a817_882x476.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!KyR-!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ec31099-fbd5-4dcf-859c-ee958650a817_882x476.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A worked example of increasing productivity with AI. How long would this take?</p><p>For the same reason, if Anthropic produced a data engineering product they would struggle for it to become meaningful without context. For example, Snowflake recently released agents but they struggle to debug anything outside of Snowflake.</p><p>At <a href="https://getorchestra.io/">Orchestra</a>, we orchestrate everything and gather all the metadata, including lineage. This means Orchestra agents <em>can </em>fix things like broken pipelines, no matter where they fail.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!LGgs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ec9cb78-f514-45ed-ac91-4adb1191432f_1350x767.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!LGgs!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ec9cb78-f514-45ed-ac91-4adb1191432f_1350x767.png 424w, /__u/substackcdn.com/image/fetch/$s_!LGgs!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ec9cb78-f514-45ed-ac91-4adb1191432f_1350x767.png 848w, /__u/substackcdn.com/image/fetch/$s_!LGgs!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ec9cb78-f514-45ed-ac91-4adb1191432f_1350x767.png 1272w, /__u/substackcdn.com/image/fetch/$s_!LGgs!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ec9cb78-f514-45ed-ac91-4adb1191432f_1350x767.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!LGgs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ec9cb78-f514-45ed-ac91-4adb1191432f_1350x767.png" width="1350" height="767" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1ec9cb78-f514-45ed-ac91-4adb1191432f_1350x767.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:767,&quot;width&quot;:1350,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!LGgs!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ec9cb78-f514-45ed-ac91-4adb1191432f_1350x767.png 424w, /__u/substackcdn.com/image/fetch/$s_!LGgs!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ec9cb78-f514-45ed-ac91-4adb1191432f_1350x767.png 848w, /__u/substackcdn.com/image/fetch/$s_!LGgs!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ec9cb78-f514-45ed-ac91-4adb1191432f_1350x767.png 1272w, /__u/substackcdn.com/image/fetch/$s_!LGgs!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ec9cb78-f514-45ed-ac91-4adb1191432f_1350x767.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This is all it takes &#8212; fixing pipelines using agents and orchestra</p><pre><code>version: v1
name: Fix everything
pipeline:
  e1470cdc-cefe-43a2-a5c5-f449a0c361cd:
    tasks:
      fdc77498-4023-45a4-a4c0-bda95e88358f:
        integration: ORCHESTRA
        integration_job: RUN_AGENT
        parameters:
          agent_id: Fix Pipeline
          prompt: &#8216;Using the Skill and the relevant Pipeline data below, fix the pipeline.


            ${{ inputs.pipeline }}&#8217;
        depends_on: []
        name: Fix everything
    depends_on: []
    name: group
trigger_events:
- type: pipeline
  pipeline_id: &#8216;*&#8217;
  statuses:
  - FAILED
  run_inputs:
    pipeline: ${{ outputs.pipeline_run }}
webhook:
  enabled: false
inputs:
  pipeline:
    type: string
    default: &#8216;[]&#8217;</code></pre><p>For an Anthropic Data Engineering product to takeoff, it would need access to all the human documentation that individuals have about the business. While documenting this in totality is not that far fetched (AI writes great docs) whether or not the privilege of implementing Anthropic would provide a great enough incentive remains to be seen.</p><h2><strong>What Claude is good at: writing code</strong></h2><p>Undeniably, as a data engineer, Claude, Copilot and Codex are all incredibly good at writing code. Whether that is a dbt model, an orchestra pipeline, or python code to move data from an API, agents know what they are doing.</p><p>While it means we are all customers of Anthropic, I would not say it really constitutes a move into the data engineering market. After all, I might use Claude to generate my code, Codex to write my documentation and another model for a chatbot to serve analytics requests &#8212; does this mean AI is taking over Data Enginering?</p><p>Far from it. In Data Engineering, the effect of agents and LLMs is to speed-up AI-augmented workflows, rather than replace them. While there is some talk of agentic analytics completely replacing enterprise data architectures, the need for faster, more efficient, and more reliable answers inevitably will prevail.</p><p>Moreover, in a world where the human cost of writing code is close to nil, wherein do Anthropic win bar tokens? After all, data engineers have their patterns already &#8212; be it running code in managed services like Orchestra, deploying custom on a Kubernetes cluster or perhaps even another provider like Modal &#8212; Anthropic does not drive its own compute. it does not own hardware &#8212; despite its size, it is not a <a href="https://nebius.com/stock-data">neocloud</a> just yet.</p><h2><strong><a href="https://medium.com/@hugolu87/the-ghost-in-the-shell-how-nebius-is-taking-on-databricks-snowflake-and-everyone-else-1a648a05b224?source=post_page-----11a4f23a8821---------------------------------------">The Ghost in the Shell | How Nebius is taking on Databricks, Snowflake, and Everyone else</a></strong></h2><h3><a href="https://medium.com/@hugolu87/the-ghost-in-the-shell-how-nebius-is-taking-on-databricks-snowflake-and-everyone-else-1a648a05b224?source=post_page-----11a4f23a8821---------------------------------------">The Rise of AI Clouds hinges on talent, ambition, streaming, and a few strategically placed bets</a></h3><p><a href="https://medium.com/@hugolu87/the-ghost-in-the-shell-how-nebius-is-taking-on-databricks-snowflake-and-everyone-else-1a648a05b224?source=post_page-----11a4f23a8821---------------------------------------">medium.com</a></p><h2><strong>Analytics Engineers are not safe</strong></h2><p>I believe there are two breeds of Analytics Engineer. There are those that excel at answering questions for the business and those that simply want to tweak dbt models, happy to have finally found a well-paying semi-technical job.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!_Fq7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb1cab27-af5f-445a-9502-06d5f0e27adf_945x516.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!_Fq7!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb1cab27-af5f-445a-9502-06d5f0e27adf_945x516.png 424w, /__u/substackcdn.com/image/fetch/$s_!_Fq7!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb1cab27-af5f-445a-9502-06d5f0e27adf_945x516.png 848w, /__u/substackcdn.com/image/fetch/$s_!_Fq7!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb1cab27-af5f-445a-9502-06d5f0e27adf_945x516.png 1272w, /__u/substackcdn.com/image/fetch/$s_!_Fq7!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb1cab27-af5f-445a-9502-06d5f0e27adf_945x516.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!_Fq7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb1cab27-af5f-445a-9502-06d5f0e27adf_945x516.png" width="945" height="516" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fb1cab27-af5f-445a-9502-06d5f0e27adf_945x516.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:516,&quot;width&quot;:945,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!_Fq7!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb1cab27-af5f-445a-9502-06d5f0e27adf_945x516.png 424w, /__u/substackcdn.com/image/fetch/$s_!_Fq7!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb1cab27-af5f-445a-9502-06d5f0e27adf_945x516.png 848w, /__u/substackcdn.com/image/fetch/$s_!_Fq7!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb1cab27-af5f-445a-9502-06d5f0e27adf_945x516.png 1272w, /__u/substackcdn.com/image/fetch/$s_!_Fq7!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb1cab27-af5f-445a-9502-06d5f0e27adf_945x516.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Create a simple hand drawn image of two types of analytics engineer to illustrate the below: I believe there are two breeds of Analytics Engineer. There are those that excel at answering questions for the business and those that simply want to tweak dbt models, happy to have finally found a well-paying semi-technical job.</p><p>AI makes managing a dbt project <em>very easy</em>. Agents can be integrated with CI/CD that automatically catch errors. Documentation becomes automatic. Writing incremental models a given. State Aware Orchestration exists in both dbt Cloud and Orchestra, and who knows where else, which makes scheduling even simpler.</p><p>The cost of having a well-organised dbt project has already become extremely low. The price however, of speaking to Stakeholders, understanding requirements, reading between the lines, and knowing how to translate these into SQL is higher than ever.</p><p>In fact, that <em>knowledge </em>must be documented for AI insight generators to have any meaning at all.</p><p>Analytics engineers capable of driving real change should be safe from AI. They will act as a translator between the business and the AI. They will provide an important part of the feedback loop for anyone building agentic analytics. Technical AEs &#8212; not so much.</p><h2><strong>Conclusion: Anthropic should look to agentic BI</strong></h2><p>We have seen there are numerous compelling reasons for Anthropic to avoid trying to break into the data engineering market. Aside from go-to-market considerations and the huge level of inertia and tech debt inherent in IT organisations, data engineering itself is not a practice that lends itsef well to AI. This is because reliable data engineering depends on a huge amount of context that may not be systematically documented.</p><p>Despite this, AI is disrupting data engineering by reducing the cost of writing and maintaining good code. In tandem, developments like the &#8220;codifying&#8221; of all pipelines and state-aware orchestration make it easier than ever to build effective systems quickly.</p><p>AI has the ability to severely disrupt analytics engineers. Those that have specialised in a niche area of writing code (dbt) are no longer required, as AI probably knows more dbt than we do. It has completed its dbt certification.</p><p>If Anthropic are to break into the data space, a serious cost benefit analysis should be done. However for the sake of this article, we can give them one for free.</p><p>Figma is a $1.4bn revenue business. While Claude Design is pretty, it lacks the maturity of Figma, that essentially acts as a content-management system for marketing assets.</p><p>Furthermore, the editability of Figma makes it an attractive option for designers seeking for patterns where AI may not &#8220;one-shot&#8221; designs consistently. Therefore, a company like Figma has strong barriers to entry, as well as a technological moat in the form of the content CMS Anthropic appears to have overlooked.</p><p>By contrast, the <a href="https://www.fortunebusinessinsights.com/business-intelligence-bi-market-103742">Analytics Space is a $34bn business</a>. The fundamental product is a multi-tenanted system with a number of integrations to data warehouses and other systems with query engines. The core functionality includes the ability to generate charts, reports, and dashboards.</p><p>However, the secret sauce for many taking off are <strong>AI insights assistants</strong>. These are on-demand agents that understand your data and can easily and consistently answer questions about your data.</p><p>Furthermore, Analytics Products occupy an interesting space in the IT budget. Where tools like Figma may fall within their relevant domain&#8217;s budet (Marketing), BI tools are typically reserved for the entire organisation (after all, who needs data &#8212; everyone).</p><p>For this reason, companies like Tableau, Looker, Omni, Sigma and Hex have all managed to grow revenues comparatively easily, by selling not just to IT, but the business.</p><p>Anthropic sells to the C-Suite, and is therefore ideally poised to have this conversation. &#8220;You don&#8217;t need to spend $400k on Tableau, why not take some of your $1m Anthropic budget for the year and put it towards our AI Insights agent?&#8221;. This is a conversation you can see happening.</p><p>Claude is not replacing Data Engineers anytime soon. There is definitely an element of guarding the guardians. Data infrastructure must exist. Infrastructure must exist. Even with the most powerful model cannot replace a cluster. That is why Anthropic cannot touch Data Engineering.</p><p><em><a href="https://www.linkedin.com/in/hugo-lu-confirmed/?skipRedirect=true">Hugo Lu</a> is the CEO of <a href="https://www.getorchestra.io/">Orchestra</a>, the AI and Data Infrastructure Company.</em></p>]]></content:encoded></item><item><title><![CDATA[The Rise of Multi-Query Engines | How AI opens up more options for better querying]]></title><description><![CDATA[Why Data Leaders Should Start Caring About Multi-Engine]]></description><link>https://dataopsleadership.substack.com/p/the-rise-of-multi-query-engines-how</link><guid isPermaLink="false">https://dataopsleadership.substack.com/p/the-rise-of-multi-query-engines-how</guid><dc:creator><![CDATA[Hugo Lu]]></dc:creator><pubDate>Thu, 28 May 2026 08:39:54 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!9Tuk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf836359-6230-423e-97cd-a075469e2eb0_1504x775.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>This is a guest post by <a href="https://www.linkedin.com/in/cheung-kyle/">Kyle Cheung</a>, CEO at <a href="https://www.greybeam.ai/?utm_source=Hugolu&amp;utm_medium=referral&amp;utm_campaign=multiengine&amp;utm_content=riseofmultiqueryengines">Greybeam</a></em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!MIDk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2f1c0fc-a865-4217-994f-12cf9ffc7fda_2334x766.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!MIDk!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2f1c0fc-a865-4217-994f-12cf9ffc7fda_2334x766.png 424w, /__u/substackcdn.com/image/fetch/$s_!MIDk!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2f1c0fc-a865-4217-994f-12cf9ffc7fda_2334x766.png 848w, /__u/substackcdn.com/image/fetch/$s_!MIDk!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2f1c0fc-a865-4217-994f-12cf9ffc7fda_2334x766.png 1272w, /__u/substackcdn.com/image/fetch/$s_!MIDk!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2f1c0fc-a865-4217-994f-12cf9ffc7fda_2334x766.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!MIDk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2f1c0fc-a865-4217-994f-12cf9ffc7fda_2334x766.png" width="1456" height="478" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a2f1c0fc-a865-4217-994f-12cf9ffc7fda_2334x766.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:478,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;How Greybeam fits into the BI stack.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="How Greybeam fits into the BI stack." title="How Greybeam fits into the BI stack." srcset="/__u/substackcdn.com/image/fetch/$s_!MIDk!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2f1c0fc-a865-4217-994f-12cf9ffc7fda_2334x766.png 424w, /__u/substackcdn.com/image/fetch/$s_!MIDk!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2f1c0fc-a865-4217-994f-12cf9ffc7fda_2334x766.png 848w, /__u/substackcdn.com/image/fetch/$s_!MIDk!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2f1c0fc-a865-4217-994f-12cf9ffc7fda_2334x766.png 1272w, /__u/substackcdn.com/image/fetch/$s_!MIDk!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2f1c0fc-a865-4217-994f-12cf9ffc7fda_2334x766.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">How query engines like Greybeam can move queries across</figcaption></figure></div><h2>Introduction</h2><p>Something shifted in the data stack this year, and the signals are hard to ignore.</p><p><a href="https://www.linkedin.com/posts/barrymccardel_there-are-many-fun-charts-illustrating-how-activity-7444771751726673920-eNQi?utm_source=share&amp;utm_medium=member_desktop&amp;rcm=ACoAABPaLFUB0ubeGsSwjFqYOiFjCeDysNeBObI">Hex</a> hit a milestone on March 10: agents now create more cells on the platform than humans do. Agent messages per user doubled from about 5.5 to 12 per week in just three months, and agent weekly active usage is compounding at over 10% week over week. Barry McCardel, Hex&#8217;s CEO, called it &#8220;the fastest usage takeoff for any data tool, ever.&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!V3r5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbb841f3-692b-4275-8c3a-a5fbee9687e7_800x575.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!V3r5!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbb841f3-692b-4275-8c3a-a5fbee9687e7_800x575.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!V3r5!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbb841f3-692b-4275-8c3a-a5fbee9687e7_800x575.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!V3r5!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbb841f3-692b-4275-8c3a-a5fbee9687e7_800x575.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!V3r5!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbb841f3-692b-4275-8c3a-a5fbee9687e7_800x575.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!V3r5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbb841f3-692b-4275-8c3a-a5fbee9687e7_800x575.jpeg" width="800" height="575" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bbb841f3-692b-4275-8c3a-a5fbee9687e7_800x575.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:575,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;chart, line chart&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="chart, line chart" title="chart, line chart" srcset="/__u/substackcdn.com/image/fetch/$s_!V3r5!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbb841f3-692b-4275-8c3a-a5fbee9687e7_800x575.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!V3r5!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbb841f3-692b-4275-8c3a-a5fbee9687e7_800x575.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!V3r5!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbb841f3-692b-4275-8c3a-a5fbee9687e7_800x575.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!V3r5!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbb841f3-692b-4275-8c3a-a5fbee9687e7_800x575.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>On the same timeline, MotherDuck published a piece titled &#8220;<a href="https://motherduck.com/blog/dont-fear-the-agents-ai-on-the-data-lakehouse/">Don&#8217;t Fear the Agents</a>&#8221; that opens with 1,000 agents running queries on a data lakehouse, this is a future that&#8217;s not too far and is a workload pattern they&#8217;re preparing for. Tools like Fabi AI and Zenlytic are putting natural language interfaces directly on top of warehouses, turning your average business user, who doesn&#8217;t even know what SQL stands for, into someone who can wrangle data confidently.</p><p>This is the trend: AI agents are becoming the primary consumers of your data infrastructure. Not your data analysts. Not your analytics engineers. Not your dbt jobs. Agents, running discovery queries, writing SQL, validating results, iterating, and drilling down.</p><p>For data leaders, this changes the calculus on your data stack in ways that optimization alone can&#8217;t fix.</p><div class="pullquote"><p><strong>The bottom line</strong>: The architecture question in front of you isn&#8217;t &#8220;how do we optimize our data warehouse.&#8221; It&#8217;s &#8220;will the architecture we&#8217;re running today hold up when every business user has an agent?&#8221; Multi-engine is the ability to route each query to the best execution engine over the same underlying data. Multi-engine is how you keep costs from scaling linearly with usage. The technology to do this exists today.</p></div><h2>The Cost Trajectory No Leader Wants to Defend</h2><p>The math on agentic workloads is brutal for per-credit billing models.</p><p>A single user asking &#8220;why did revenue drop in APAC last week?&#8221; doesn&#8217;t trigger one query. The agent behind that question fires 6 to 12 queries: metadata discovery, schema inspection, candidate SQL generation, execution, validation, follow-ups, drill-downs. All before the user sees an answer.</p><p>Data warehouses like Snowflake has billing mechanics that make this particularly painful. There&#8217;s a 60-second minimum billing window. If the warehouse auto-suspends between bursts, each burst of short queries triggers a new billing window. You pay for 60 seconds of compute to run 3 seconds of work, repeatedly.</p><div id="youtube2-qBCibNEEEJA" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;qBCibNEEEJA&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/qBCibNEEEJA?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Scale that to 50 users asking questions throughout the day, and your warehouse bill grows disproportionately to the value generated. Not because the queries are hard, but because there are so many of them. These are small, read-heavy aggregations and lookups. The kind of queries that don&#8217;t need distributed compute.</p><p>Now imagine defending that line item to your CFO two quarters from now, after agentic adoption has compounded across product, ops, and executive teams.</p><h2>Why &#8220;Optimize Harder&#8221; and &#8220;Migrate Off&#8221; Both Fail</h2><p>Picking on Snowflake here, but this pattern tends to happen when a data leader sees rising costs.</p><h3>Instinct one: optimize Snowflake.</h3><p>Right-size warehouses, update auto-suspend timers, consolidate workloads, reduce refresh cadence. All good moves. Every one of them has a ceiling. The floor is your cost per credit, and no amount of optimization can change that.</p><h3>Instinct two: migrate to another warehouse or query engine.</h3><p>DuckDB is fast, cheap, and handles analytical queries beautifully. But DuckDB is a query engine, not a platform. No RBAC. No governance UI. No data sharing. No marketplace integrations, no Snowpark, no ecosystem your team has built workflows around. To use DuckDB as a primary engine, you&#8217;d need to build all of that infrastructure yourself. On the flipside, migrating to another warehouse is a multi-quarter migration, and there&#8217;s no guarantee it&#8217;ll be cheaper.</p><p>Neither path gives a data leader what they truly want: meaningful cost savings at scale.</p><h2>Multi-Engine Is the AI Architectural Bet Leaders Are Making Now</h2><p>Multi-engine is not &#8220;replace Snowflake with DuckDB.&#8221; It&#8217;s the ability to use the right tool for the job, or in this case, use the best engine for each query. Data teams should keep the great developer experience they&#8217;re familiar with on Snowflake while leveraging the capabilities of DuckDB, Clickhouse, StarRocks, or any other engine.</p><p>Three things made this practical instead of theoretical:</p><p>Open table formats crossed the adoption threshold. Apache Iceberg is no longer just conference material. Fivetran has devoted significant resources to moving customers to Iceberg-backed data lakes. Snowflake managed Iceberg tables let you store data in open formats while using Snowflake&#8217;s catalog. When your tables are Iceberg, any engine can read them.</p><p>The workload data supports it. In Fivetran&#8217;s analysis of Snowflake and Redshift usage, the 99.9th-percentile query scanned about 300 GB. In MotherDuck&#8217;s analysis of the Redset benchmark, roughly 99% of queries scanned under 100 GB. Agent-generated queries are exactly this profile: small, read-heavy, analytical. The vast majority never needed a distributed warehouse.</p><p>Routing infrastructure matured. Companies like <a href="https://www.greybeam.ai?utm_source=Hugolu&amp;utm_medium=referral&amp;utm_campaign=multiengine&amp;utm_content=riseofmultiqueryengines">Greybeam</a> are building the plumbing to make multi-engine seamless: proxy layers, SQL dialect translation, catalog resolution, result compatibility. You don&#8217;t need your team to build it from scratch.</p><p>This is the decision in front of data leaders: agent-generated traffic could 5x your query volume. On a single engine, your bill scales with it. On multi-engine, it doesn&#8217;t.</p><p>Furthermore, AI is making agent query patterns far more bursty and unpredictable.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!9Tuk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf836359-6230-423e-97cd-a075469e2eb0_1504x775.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!9Tuk!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf836359-6230-423e-97cd-a075469e2eb0_1504x775.png 424w, /__u/substackcdn.com/image/fetch/$s_!9Tuk!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf836359-6230-423e-97cd-a075469e2eb0_1504x775.png 848w, /__u/substackcdn.com/image/fetch/$s_!9Tuk!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf836359-6230-423e-97cd-a075469e2eb0_1504x775.png 1272w, /__u/substackcdn.com/image/fetch/$s_!9Tuk!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf836359-6230-423e-97cd-a075469e2eb0_1504x775.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!9Tuk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf836359-6230-423e-97cd-a075469e2eb0_1504x775.png" width="1456" height="750" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/df836359-6230-423e-97cd-a075469e2eb0_1504x775.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:750,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:128145,&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://dataopsleadership.substack.com/i/195252047?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf836359-6230-423e-97cd-a075469e2eb0_1504x775.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!9Tuk!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf836359-6230-423e-97cd-a075469e2eb0_1504x775.png 424w, /__u/substackcdn.com/image/fetch/$s_!9Tuk!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf836359-6230-423e-97cd-a075469e2eb0_1504x775.png 848w, /__u/substackcdn.com/image/fetch/$s_!9Tuk!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf836359-6230-423e-97cd-a075469e2eb0_1504x775.png 1272w, /__u/substackcdn.com/image/fetch/$s_!9Tuk!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf836359-6230-423e-97cd-a075469e2eb0_1504x775.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Source: Orchestra&#8217;s webinar with motherduck</figcaption></figure></div><p>If agents need to suddenly send 10 times as many queries, not only will token costs potentially run rampant, but where they&#8217;re running becomes more important too. Especially if multiple people are asking similar questions, a caching layer and the ability to help agents route queries to the best engine becomes imperative.</p><h2>What Multi-Engine Should Look Like in Practice</h2><p>Here&#8217;s the bar: if your team has to think about which engine runs a query, multi-engine isn&#8217;t working.</p><p>Data teams shouldn&#8217;t need to learn a new SQL dialect. They shouldn&#8217;t need to validate that results match across engines. They shouldn&#8217;t need to spin up DuckDB clusters on AWS, manage infrastructure, or figure out which queries are &#8220;eligible&#8221; for routing. The whole point of multi-engine is that the complexity lives in the routing layer.</p><p>What data folks should expect from a multi-engine setup:</p><ul><li><p> No new SQL to learn. Your team writes Snowflake SQL. The system handles dialect translation automatically.</p></li><li><p> No manual routing decisions. The system knows which queries benefit from a cheaper engine and which should stay on Snowflake. Writes, large scans, and engine-specific syntax stay where they belong.</p></li><li><p> No infrastructure to manage. Your team isn&#8217;t provisioning clusters, tuning memory, or debugging container orchestration. Compute is fully managed.</p></li><li><p>No result discrepancies to chase. Query results are identical regardless of which engine executed them. Downstream dashboards, reports, and models don&#8217;t know or care.</p></li><li><p>Performance gets better, not worse. Single-node analytical engines like DuckDB are often faster than a distributed warehouse for the small, read-heavy queries that make up the bulk of agent-driven traffic.</p></li></ul><p>Early adopters of this approach are already seeing results. Headset, a cannabis data and analytics company serving 2,500+ embedded analytics users, reduced Snowflake costs by 92% after routing eligible queries to DuckDB through <a href="https://www.greybeam.ai?utm_source=Hugolu&amp;utm_medium=referral&amp;utm_campaign=multiengine&amp;utm_content=riseofmultiqueryengines">Greybeam</a>.</p><h2>The window for Multiple Query Engines is now</h2><p>Multi-engine is not a future architecture. The pieces are here: Iceberg for storage, DuckDB and others for cheap analytical compute, and routing infrastructure like <a href="https://www.greybeam.ai?utm_source=Hugolu&amp;utm_medium=referral&amp;utm_campaign=multiengine&amp;utm_content=riseofmultiqueryengines">Greybeam</a> to make it seamless.</p><p>The teams moving early aren&#8217;t doing it because multi-engine is interesting. They&#8217;re doing it because the cost and performance gap between running everything on one engine versus routing to the right engine is too large to ignore.</p><p><em>See more <a href="https://www.linkedin.com/posts/cheung-kyle_%F0%9D%97%A0%F0%9D%98%82%F0%9D%97%B9%F0%9D%98%81%F0%9D%97%B6-%F0%9D%97%B2%F0%9D%97%BB%F0%9D%97%B4%F0%9D%97%B6%F0%9D%97%BB%F0%9D%97%B2-%F0%9D%97%95%F0%9D%97%9C-%F0%9D%98%84%F0%9D%97%BC%F0%9D%97%BF%F0%9D%97%B8%F0%9D%97%B9%F0%9D%97%BC-activity-7297633962175209472-Sa1Z/">here</a></em></p><p>Your data stack is about to serve a lot more queries from a lot more agents. The question for data leaders is whether you set up the architecture now &#8212; while it&#8217;s a proactive decision &#8212; or retrofit later, when costs are sky high and the board is asking why.</p><p></p><p><em>We just wrote a comprehensive guide on 10 core checks for every Snowflake account. The fastest way to cut 30-60% of your Snowflake costs. <a href="https://www.linkedin.com/feed/update/urn:li:activity:7453094085042683904/?commentUrn=urn%3Ali%3Acomment%3A(activity%3A7453094085042683904%2C7453100156125736962)&amp;dashCommentUrn=urn%3Ali%3Afsd_comment%3A(7453100156125736962%2Curn%3Ali%3Aactivity%3A7453094085042683904)&amp;dashReplyUrn=urn%3Ali%3Afsd_comment%3A(7453103927828570112%2Curn%3Ali%3Aactivity%3A7453094085042683904)&amp;replyUrn=urn%3Ali%3Acomment%3A(activity%3A7453094085042683904%2C7453103927828570112)">Message us here</a> if you enjoyed this to see it!</em></p>]]></content:encoded></item><item><title><![CDATA[Building an AI-Native ELT Pipeline with MotherDuck, Orchestra and Claude]]></title><description><![CDATA[I did a webinar and it was great fun &#8212; AI Native ELT is here!]]></description><link>https://dataopsleadership.substack.com/p/building-an-ai-native-elt-pipeline</link><guid isPermaLink="false">https://dataopsleadership.substack.com/p/building-an-ai-native-elt-pipeline</guid><dc:creator><![CDATA[Hugo Lu]]></dc:creator><pubDate>Wed, 20 May 2026 08:01:03 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/QIuqav7a9kI" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div><hr></div><h3></h3><h4>Substack note</h4><p>Yes I am excited to report that agentic data engineering is actually here.</p><p>You see, with agents you should be able to go from 0 to 100 without lifting a finger. </p><p>For that, you kind of need all the scaffolding around alerting, orchestration, CI/CD and environments set-up already.</p><p>It is easy to use claude to generate some python, run it, and land it in a dev database. But what happens next?</p><p>This demo takes it further. We also generate the staging environment and the scaffolding to run the pipeline securely in staging and promote it from staging to prod using zero copy clones which is more efficient and faster</p><p>rather than run this from a git action post PR creation, we basically mock that by just getting claude to do it. In reality, you would <em>already </em>have a git action, Claude would then create a PR, give you a link to it, and then everything would be the same</p><p>We are closely getting to the point where you can just get this to work. Super cool. Skip the presentation to see the demo.</p><h3>Introduction</h3><p>I recently ran a webinar showing something I think is fundamentally different from most &#8220;AI for data engineering&#8221; demos.</p><div id="youtube2-QIuqav7a9kI" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;QIuqav7a9kI&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/QIuqav7a9kI?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>A lot of demos today follow the same pattern:</p><blockquote><p>Claude generates some Python, everyone claps, and the session ends</p></blockquote><p>That&#8217;s interesting&#8202;&#8212;&#8202;but it&#8217;s not production engineering.</p><p>In this webinar with <a href="https://motherduck.com?utm_source=chatgpt.com">MotherDuck</a> and <a href="https://www.getorchestra.io?utm_source=chatgpt.com">Orchestra</a>, I wanted to show what happens when AI is connected to an actual operational stack:</p><ul><li><p>orchestration</p></li><li><p>deployments</p></li><li><p>branching</p></li><li><p>serverless compute</p></li><li><p>database promotion workflows</p></li><li><p>sandboxing</p></li><li><p>observability</p></li><li><p>BI</p></li></ul><p>The result was a fully automated ELT pipeline built end-to-end by AI&#8202;&#8212;&#8202;safely deployed into production infrastructure.</p><p>And honestly, this feels like the direction modern data engineering is heading.</p><h3>The Goal&#8202;&#8212;&#8202;AI generating a proper ELT workflow with production capability</h3><p>The challenge was simple:</p><blockquote><p><em>Use AI to create and deploy a production-grade pipeline from scratch.</em></p></blockquote><p>Specifically, we wanted AI to:</p><ol><li><p>Create a staging environment in MotherDuck</p></li><li><p>Generate Python ingestion code</p></li><li><p>Build an orchestration DAG</p></li><li><p>Deploy the pipeline through Orchestra</p></li><li><p>Execute it serverlessly</p></li><li><p>Create analytics automatically</p></li><li><p>Keep the entire workflow sandboxed and safe</p></li></ol><p>No manual DAG writing.<br>No manually provisioning infra.<br>No hand-written deployment steps.</p><p>Just AI operating against a well-defined engineering system.</p><div><hr></div><h3>Step 1: Defining the Claude Skill</h3><p>The key to making this work was not prompting.</p><p>It was defining a <strong>skill</strong>.</p><p>The skill acts as a structured operational framework for the AI agent. Instead of vaguely asking Claude to &#8220;build a pipeline,&#8221; we give it rules, conventions, deployment instructions, and safety guarantees.</p><p>One of the first things the skill enforces is:</p><blockquote><p><em>Every load happens in staging first.</em></p></blockquote><p>This matters enormously.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!uxhp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5125515c-c225-415f-a2d7-58f837e01dcb_900x969.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!uxhp!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5125515c-c225-415f-a2d7-58f837e01dcb_900x969.png 424w, /__u/substackcdn.com/image/fetch/$s_!uxhp!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5125515c-c225-415f-a2d7-58f837e01dcb_900x969.png 848w, /__u/substackcdn.com/image/fetch/$s_!uxhp!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5125515c-c225-415f-a2d7-58f837e01dcb_900x969.png 1272w, /__u/substackcdn.com/image/fetch/$s_!uxhp!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5125515c-c225-415f-a2d7-58f837e01dcb_900x969.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!uxhp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5125515c-c225-415f-a2d7-58f837e01dcb_900x969.png" width="900" height="969" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5125515c-c225-415f-a2d7-58f837e01dcb_900x969.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:969,&quot;width&quot;:900,&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="/__u/substackcdn.com/image/fetch/$s_!uxhp!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5125515c-c225-415f-a2d7-58f837e01dcb_900x969.png 424w, /__u/substackcdn.com/image/fetch/$s_!uxhp!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5125515c-c225-415f-a2d7-58f837e01dcb_900x969.png 848w, /__u/substackcdn.com/image/fetch/$s_!uxhp!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5125515c-c225-415f-a2d7-58f837e01dcb_900x969.png 1272w, /__u/substackcdn.com/image/fetch/$s_!uxhp!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5125515c-c225-415f-a2d7-58f837e01dcb_900x969.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A visual description of the skill</figcaption></figure></div><p>Without staging, an AI agent could accidentally overwrite production datasets or mutate live systems unexpectedly. That&#8217;s unacceptable in a real data platform.</p><p>So before any ingestion code is generated, the workflow creates a sandboxed MotherDuck staging database.</p><p>This is where <a href="https://motherduck.com/docs/sql-reference/motherduck-sql-reference/create-snapshot/?utm_source=chatgpt.com">MotherDuck Snapshots</a> become incredibly powerful.</p><p>Snapshots make it trivial to create isolated, reproducible environments without copying huge datasets around manually.</p><p>That single capability changes how safe AI-driven engineering can be. The skill is included at the bottom.</p><div><hr></div><h3>Step 2: AI Generates the Ingestion Layer</h3><p>Once the environment existed, the agent generated the ingestion logic.</p><p>In the demo, the pipeline moved data from Linear into MotherDuck.</p><p>But importantly, the AI wasn&#8217;t just generating arbitrary Python.</p><p>The skill told the model:</p><ul><li><p>where secrets live</p></li><li><p>how functions should be structured</p></li><li><p>how environment variables should work</p></li><li><p>how deployments are parameterised</p></li><li><p>how orchestration integrates with execution</p></li></ul><p>This is the difference between &#8220;AI code generation&#8221; and &#8220;AI software systems.&#8221;</p><p>The generated pipeline already understood operational concerns before it even ran.</p><p>We actually used dlt for this and the source didn&#8217;t even exist, and now it does:</p><pre><code>&#8220;&#8221;&#8220;Run the Linear cycles -&gt; MotherDuck dlt pipeline.

Environment variables consumed:
    LINEAR_API_KEY                       Linear personal API key.
    MOTHERDUCK_API_TOKEN                 MotherDuck service token (alias of MOTHERDUCK_TOKEN).
    LINEAR_CYCLES_SINCE_DAYS             Lookback window in days for ``updatedAt`` (default 7).
    LINEAR_CYCLES_MD_STAGING_DATABASE    MotherDuck staging database (default ``my_db_staging``).
    LINEAR_CYCLES_MD_DATASET             Target schema / dlt dataset_name (default ``dlt_linear_cycles``).
&#8220;&#8221;&#8220;

import os

import dlt
from dlt.destinations import motherduck

from linear_cycles import linear_cycles_source


def run_pipeline(since_days: int = 7) -&gt; None:
    api_key = os.environ.get(&#8221;LINEAR_API_KEY&#8221;)
    if not api_key:
        raise EnvironmentError(&#8221;LINEAR_API_KEY must be set.&#8221;)

    token = os.environ.get(&#8221;MOTHERDUCK_API_TOKEN&#8221;) or os.environ.get(
        &#8220;MOTHERDUCK_TOKEN&#8221;
    )
    if not token:
        raise EnvironmentError(
            &#8220;MOTHERDUCK_API_TOKEN (or MOTHERDUCK_TOKEN) must be set.&#8221;
        )

    database = os.environ.get(&#8221;LINEAR_CYCLES_MD_STAGING_DATABASE&#8221;, &#8220;my_db_staging&#8221;)
    dataset = os.environ.get(&#8221;LINEAR_CYCLES_MD_DATASET&#8221;, &#8220;dlt_linear_cycles&#8221;)

    destination = motherduck(
        credentials={&#8221;database&#8221;: database, &#8220;password&#8221;: token},
    )

    pipeline = dlt.pipeline(
        pipeline_name=&#8221;linear_cycles&#8221;,
        dataset_name=dataset,
        destination=destination,
    )

    source = linear_cycles_source(api_key=api_key, since_days=since_days)
    info = pipeline.run(source)
    print(info)


if __name__ == &#8220;__main__&#8221;:
    days = int(os.getenv(&#8221;LINEAR_CYCLES_SINCE_DAYS&#8221;, &#8220;7&#8221;))
    run_pipeline(since_days=days)
  


</code></pre><pre><code>&#8220;&#8221;&#8220;Linear cycles source for dlt.

Fetches cycles from the Linear GraphQL API. The ``cycles`` resource is filtered
server-side by ``updatedAt`` so callers can request only a recent window
(e.g. the last 7 days) without scanning the entire workspace.
&#8220;&#8221;&#8220;

from datetime import datetime, timedelta, timezone
from typing import Any, Dict, Iterator, Optional

import dlt
from dlt.sources.helpers import requests


LINEAR_API_URL = &#8220;https://api.linear.app/graphql&#8221;

CYCLES_QUERY = &#8220;&#8221;&#8220;
query Cycles($filter: CycleFilter, $after: String) {
  cycles(filter: $filter, first: 100, after: $after) {
    pageInfo { hasNextPage endCursor }
    nodes {
      id
      number
      name
      description
      startsAt
      endsAt
      completedAt
      autoArchivedAt
      archivedAt
      createdAt
      updatedAt
      progress
      scopeHistory
      completedScopeHistory
      inProgressScopeHistory
      issueCountHistory
      completedIssueCountHistory
      team { id key name }
    }
  }
}
&#8220;&#8221;&#8220;


def _post(api_key: str, query: str, variables: Dict[str, Any]) -&gt; Dict[str, Any]:
    response = requests.post(
        LINEAR_API_URL,
        json={&#8221;query&#8221;: query, &#8220;variables&#8221;: variables},
        headers={&#8221;Authorization&#8221;: api_key, &#8220;Content-Type&#8221;: &#8220;application/json&#8221;},
        timeout=60,
    )
    response.raise_for_status()
    payload = response.json()
    if payload.get(&#8221;errors&#8221;):
        raise RuntimeError(f&#8221;Linear API error: {payload[&#8217;errors&#8217;]}&#8221;)
    return payload[&#8221;data&#8221;]


@dlt.source(name=&#8221;linear_cycles&#8221;)
def linear_cycles_source(
    api_key: str = dlt.secrets.value,
    since_days: Optional[int] = 7,
):
    &#8220;&#8221;&#8220;Linear cycles dlt source.

    Args:
        api_key: Linear personal API key (header: ``Authorization: &lt;key&gt;``).
        since_days: Only emit cycles whose ``updatedAt`` is within this many
            days. Pass ``None`` to fetch the full history.
    &#8220;&#8221;&#8220;

    @dlt.resource(
        name=&#8221;cycles&#8221;,
        write_disposition=&#8221;merge&#8221;,
        primary_key=&#8221;id&#8221;,
    )
    def cycles() -&gt; Iterator[Dict[str, Any]]:
        variables: Dict[str, Any] = {&#8221;after&#8221;: None}
        if since_days is not None:
            since = datetime.now(timezone.utc) - timedelta(days=since_days)
            variables[&#8221;filter&#8221;] = {&#8221;updatedAt&#8221;: {&#8221;gte&#8221;: since.isoformat()}}

        while True:
            data = _post(api_key, CYCLES_QUERY, variables)
            page = data[&#8221;cycles&#8221;]
            for node in page[&#8221;nodes&#8221;]:
                yield node
            if not page[&#8221;pageInfo&#8221;][&#8221;hasNextPage&#8221;]:
                break
            variables[&#8221;after&#8221;] = page[&#8221;pageInfo&#8221;][&#8221;endCursor&#8221;]

    return cycles</code></pre><h3>Step 3: AI Builds the Orchestration DAG</h3><p>This is the point where most demos usually stop.</p><p>Instead, we continued all the way through deployment.</p><p>The agent generated an Orchestra pipeline YAML file describing the workflow end-to-end.</p><p>That YAML defined:</p><ul><li><p>the Python execution step</p></li><li><p>environment variables</p></li><li><p>dependencies</p></li><li><p>MotherDuck promotion logic</p></li><li><p>staging &#8594; production movement</p></li><li><p>snapshot creation</p></li><li><p>orchestration configuration</p></li></ul><p>See here:</p><pre><code>version: v1
name: &#8216;Linear cycles to MotherDuck #dlt #motherduck #linear&#8217;
pipeline:
  3a1f8b40-77c2-4d18-9e2a-6b0c5d7f8a11:
    tasks:
      6c4d9e22-8a3b-4f51-bd07-2e1a4f6b9c23:
        integration: PYTHON
        integration_job: PYTHON_EXECUTE_SCRIPT
        parameters:
          package_manager: PIP
          python_version: &#8216;3.11&#8217;
          build_command: pip install -r requirements.txt
          source: GIT
          branch: ${{ inputs.branch }}
          command: python -m linear_cycles_pipeline
          project_dir: python/dlt
          shallow_clone_dirs: python/dlt
          environment_variables: &#8216;{ &#8220;LINEAR_CYCLES_SINCE_DAYS&#8221;: &#8220;${{ inputs.since_days
            }}&#8221;, &#8220;LINEAR_CYCLES_MD_STAGING_DATABASE&#8221;: &#8220;${{ inputs.md_staging_database
            }}&#8221;, &#8220;LINEAR_CYCLES_MD_PROD_DATABASE&#8221;:    &#8220;${{ inputs.md_prod_database
            }}&#8221;, &#8220;LINEAR_CYCLES_MD_DATASET&#8221;:          &#8220;${{ inputs.md_dataset }}&#8221; }&#8217;
          set_outputs: true
        depends_on: []
        name: Run linear cycles dlt
        connection: python__production__blueprints__19239
    depends_on: []
    name: &#8216;&#8217;
  5e9a3c14-2b6d-4f7e-8c91-1a3b5d7e9f02:
    tasks:
      a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d:
        integration: MOTHERDUCK
        integration_job: MOTHERDUCK_EXECUTE_QUERY
        parameters:
          query: CREATE SNAPSHOT ${{ inputs.snapshot_name }} OF ${{ inputs.md_staging_database
            }}
          set_outputs: false
        depends_on: []
        name: Create snapshot of prod
    depends_on:
    - d15d7c8a-e4b8-4cbc-a19f-b9be813a782d
    name: &#8216;&#8217;
  8d2f5a91-4b7c-4e83-9d1a-3f6b8c2e7a45:
    tasks:
      b2d3c4e5-6f7a-8b9c-0d1e-2f3a4b5c6d7e:
        integration: MOTHERDUCK
        integration_job: MOTHERDUCK_EXECUTE_QUERY
        parameters:
          query: COPY FROM DATABASE ${{ inputs.md_staging_database }}  (OVERWRITE,
            SNAPSHOT_NAME ${{ inputs.snapshot_name }}, OVERWRITE) TO ${{ inputs.md_prod_database
            }}
          set_outputs: false
        depends_on: []
        name: Promote staging to prod
    depends_on:
    - 5e9a3c14-2b6d-4f7e-8c91-1a3b5d7e9f02
    name: &#8216;&#8217;
  d15d7c8a-e4b8-4cbc-a19f-b9be813a782d:
    tasks:
      9c8bb4c1-352f-48e9-a31e-5192c57fc6e1:
        integration: DBT_CORE
        integration_job: DBT_CORE_EXECUTE
        parameters:
          commands: dbt build --select models_i_just_did
          package_manager: PIP
          python_version: &#8216;3.12&#8217;
        depends_on: []
        name: dbt modelling
    depends_on:
    - 3a1f8b40-77c2-4d18-9e2a-6b0c5d7f8a11
    name: group
webhook:
  enabled: false
inputs:
  branch:
    type: string
    default: feat/dlt-linear-cycles
  since_days:
    type: string
    default: &#8216;7&#8217;
  md_staging_database:
    type: string
    default: my_db_staging
  md_prod_database:
    type: string
    default: my_db
  md_dataset:
    type: string
    default: dlt_linear_cycles
  snapshot_name:
    type: string
    default: dlt_linear_cycles

</code></pre><p>Because Orchestra pipelines are declarative YAML, they become highly compatible with AI systems. The model can reason about dependencies, execution order, parameters, and deployment states in a way that&#8217;s much harder with imperative orchestration code.</p><p>The <a href="https://docs.getorchestra.io/docs/git-control-and-ci-cd/orchestra-cli#orchestra-cli">Orchestra CLI</a> is used to push this code to Orchestra and run it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!lIaa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb934ecbf-5748-49b6-8db7-dbdfa31f47ef_1350x775.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!lIaa!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb934ecbf-5748-49b6-8db7-dbdfa31f47ef_1350x775.png 424w, /__u/substackcdn.com/image/fetch/$s_!lIaa!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb934ecbf-5748-49b6-8db7-dbdfa31f47ef_1350x775.png 848w, /__u/substackcdn.com/image/fetch/$s_!lIaa!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb934ecbf-5748-49b6-8db7-dbdfa31f47ef_1350x775.png 1272w, /__u/substackcdn.com/image/fetch/$s_!lIaa!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb934ecbf-5748-49b6-8db7-dbdfa31f47ef_1350x775.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!lIaa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb934ecbf-5748-49b6-8db7-dbdfa31f47ef_1350x775.png" width="1350" height="775" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b934ecbf-5748-49b6-8db7-dbdfa31f47ef_1350x775.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:775,&quot;width&quot;:1350,&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="/__u/substackcdn.com/image/fetch/$s_!lIaa!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb934ecbf-5748-49b6-8db7-dbdfa31f47ef_1350x775.png 424w, /__u/substackcdn.com/image/fetch/$s_!lIaa!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb934ecbf-5748-49b6-8db7-dbdfa31f47ef_1350x775.png 848w, /__u/substackcdn.com/image/fetch/$s_!lIaa!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb934ecbf-5748-49b6-8db7-dbdfa31f47ef_1350x775.png 1272w, /__u/substackcdn.com/image/fetch/$s_!lIaa!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb934ecbf-5748-49b6-8db7-dbdfa31f47ef_1350x775.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The Orchestra pipeline with its definition as code</figcaption></figure></div><div><hr></div><h3>Step 4: Everything Happens on a Branch</h3><p>Another critical detail:</p><p>The AI opens a feature branch automatically.</p><p>This matters more than people realise.</p><p>The branch becomes the isolated deployment target for the generated pipeline. Orchestra can execute directly against that branch before anything reaches <code>main</code>.</p><p>That means:</p><ul><li><p>safe experimentation</p></li><li><p>isolated testing</p></li><li><p>reproducible deployments</p></li><li><p>rollback protection</p></li><li><p>production-grade CI/CD patterns</p></li></ul><p>Again&#8202;&#8212;&#8202;this is the difference between a toy demo and a real engineering workflow. You can see when it&#8217;s running below the branch we are running too</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!bTsT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5945fe5c-73ef-41fa-a4b7-f0a9a6913787_1350x758.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!bTsT!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5945fe5c-73ef-41fa-a4b7-f0a9a6913787_1350x758.png 424w, /__u/substackcdn.com/image/fetch/$s_!bTsT!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5945fe5c-73ef-41fa-a4b7-f0a9a6913787_1350x758.png 848w, /__u/substackcdn.com/image/fetch/$s_!bTsT!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5945fe5c-73ef-41fa-a4b7-f0a9a6913787_1350x758.png 1272w, /__u/substackcdn.com/image/fetch/$s_!bTsT!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5945fe5c-73ef-41fa-a4b7-f0a9a6913787_1350x758.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!bTsT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5945fe5c-73ef-41fa-a4b7-f0a9a6913787_1350x758.png" width="1350" height="758" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5945fe5c-73ef-41fa-a4b7-f0a9a6913787_1350x758.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:758,&quot;width&quot;:1350,&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="/__u/substackcdn.com/image/fetch/$s_!bTsT!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5945fe5c-73ef-41fa-a4b7-f0a9a6913787_1350x758.png 424w, /__u/substackcdn.com/image/fetch/$s_!bTsT!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5945fe5c-73ef-41fa-a4b7-f0a9a6913787_1350x758.png 848w, /__u/substackcdn.com/image/fetch/$s_!bTsT!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5945fe5c-73ef-41fa-a4b7-f0a9a6913787_1350x758.png 1272w, /__u/substackcdn.com/image/fetch/$s_!bTsT!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5945fe5c-73ef-41fa-a4b7-f0a9a6913787_1350x758.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Running from a feature branch on a staging db</figcaption></figure></div><div><hr></div><h3>Step 5: AI Deploys the Pipeline</h3><p>Once the code and orchestration existed, Claude used the Orchestra CLI to register the pipeline automatically.</p><p>This was one of the most exciting parts of the demo.</p><p>The workflow looked like this:</p><ol><li><p>AI generates Python</p></li><li><p>AI generates orchestration YAML</p></li><li><p>AI commits to Git</p></li><li><p>AI registers the pipeline through Orchestra</p></li><li><p>Orchestra executes the pipeline serverlessly</p></li></ol><p>The deployment process itself became programmable. That&#8217;s a major shift. This we ran from Claude, but in practice you could run this from a git action too.</p><div><hr></div><h3>Why Orchestra Serverless Matters</h3><p>A huge reason this works smoothly is <a href="https://www.getorchestra.io?utm_source=chatgpt.com">Orchestra Serverless</a>.</p><p>When Orchestra executes Python code, it:</p><ul><li><p>connects to the Git repository</p></li><li><p>pulls the branch</p></li><li><p>installs dependencies</p></li><li><p>runs the pipeline on ephemeral infrastructure</p></li></ul><p>No Kubernetes setup. No Airflow workers. No infrastructure management.</p><p>This removes one of the biggest blockers preventing AI-generated systems from becoming operationally viable as infrastructure requirements go away. Very important for autonomous engineering workflows.</p><div><hr></div><h3>Why MotherDuck Fits So Well</h3><p><a href="https://motherduck.com?utm_source=chatgpt.com">MotherDuck</a> also played a huge role in making the experience smooth.</p><p>Writing data into MotherDuck is extremely lightweight. There&#8217;s no complicated warehouse provisioning process. No heavyweight setup. No operational burden.</p><p>Combined with snapshots, you get something very powerful:</p><ul><li><p>isolated staging environments</p></li><li><p>instant cloning</p></li><li><p>rollback capability</p></li><li><p>sandboxed AI experimentation</p></li></ul><p>This creates a surprisingly elegant foundation for AI-native data engineering. Personally-speaking (not the AI), I had quite a lot of things to figure out:</p><ol><li><p>motherduck MCP Server: no issues here. Easy to query docs and work out how to clone things</p></li><li><p>Snapshots and overrides: again, clear docs, commands all &#8220;just work&#8221;</p></li><li><p>Checking things with system tables: easy to see snapshot history, query history</p></li></ol><p>Everything genuinely seemless, as evidenced by the smooth demo!</p><p>Some refs:</p><p><a href="https://motherduck.com/docs/sql-reference/motherduck-sql-reference/create-snapshot/#:~:text=The%20CREATE%20SNAPSHOT%20statement%20creates,to%20create%20a%20named%20snapshot.&amp;text=This%20statement%20applies%20to%20native,manage%20snapshots%20through%20auto%20maintenance">https://motherduck.com/docs/sql-reference/motherduck-sql-reference/create-snapshot</a></p><p><a href="https://motherduck.com/docs/sql-reference/motherduck-sql-reference/copy-database-overwrite/">https://motherduck.com/docs/sql-reference/motherduck-sql-reference/copy-database-overwrite/</a></p><div><hr></div><h3>Extending the System Further</h3><p>One thing I emphasised during the webinar is that this architecture is extensible. The ingestion pipeline was only the beginning.</p><p>For example:</p><ul><li><p>the agent could also generate dbt models</p></li><li><p>AI could create tests automatically</p></li><li><p>downstream transformations could be orchestrated</p></li><li><p>documentation could be generated</p></li><li><p>lineage could be updated</p></li><li><p>monitoring rules could be authored</p></li></ul><p>Once the deployment substrate exists, AI can operate across the entire analytics lifecycle. We decided to do this in the demo for <a href="https://motherduck.com/product/dives/">Dives</a>, a code-first BI capability that exists in Motherduck</p><h4>Introducing Dives: BI as Code</h4><p>The final part of the demo focused on something I&#8217;m personally very excited about:</p><p><strong>Dives</strong>.</p><p>A Dive is essentially &#8220;BI as code.&#8221;</p><p>Instead of manually editing dashboards, the dashboard itself becomes programmable and parameterised.</p><p>In the demo, AI automatically updated the Dive with:</p><ul><li><p>the latest data refresh timestamp</p></li><li><p>a direct link back to Orchestra lineage</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!UGoq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75b299df-37b4-4355-8499-4b97a7874f37_1350x741.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!UGoq!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75b299df-37b4-4355-8499-4b97a7874f37_1350x741.png 424w, /__u/substackcdn.com/image/fetch/$s_!UGoq!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75b299df-37b4-4355-8499-4b97a7874f37_1350x741.png 848w, /__u/substackcdn.com/image/fetch/$s_!UGoq!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75b299df-37b4-4355-8499-4b97a7874f37_1350x741.png 1272w, /__u/substackcdn.com/image/fetch/$s_!UGoq!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75b299df-37b4-4355-8499-4b97a7874f37_1350x741.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!UGoq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75b299df-37b4-4355-8499-4b97a7874f37_1350x741.png" width="1350" height="741" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/75b299df-37b4-4355-8499-4b97a7874f37_1350x741.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:741,&quot;width&quot;:1350,&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="/__u/substackcdn.com/image/fetch/$s_!UGoq!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75b299df-37b4-4355-8499-4b97a7874f37_1350x741.png 424w, /__u/substackcdn.com/image/fetch/$s_!UGoq!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75b299df-37b4-4355-8499-4b97a7874f37_1350x741.png 848w, /__u/substackcdn.com/image/fetch/$s_!UGoq!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75b299df-37b4-4355-8499-4b97a7874f37_1350x741.png 1272w, /__u/substackcdn.com/image/fetch/$s_!UGoq!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75b299df-37b4-4355-8499-4b97a7874f37_1350x741.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The dive with some dummy data and links to the data freshness and the Orchestra run</figcaption></figure></div><p>Sounds simple, but it solves a real operational problem. Anyone viewing the dashboard can instantly answer:</p><ul><li><p>Is this data fresh?</p></li><li><p>When did the pipeline last run?</p></li><li><p>What happened upstream?</p></li><li><p>Where can I inspect failures?</p></li></ul><p>So very fun to easily get Claude to build these gnarly little things.</p><h3>Conclusion | Embrace change!</h3><p>The interesting part of the webinar wasn&#8217;t really that Claude could generate Python. We&#8217;ve all seen that before. What felt more useful was seeing what happens when you connect code generation to actual deployment infrastructure.</p><p>Most AI demos stop before the operational parts begin. There&#8217;s no branching strategy, no staging environment, no orchestration layer, no deployment process. The generated code exists in isolation.</p><p>In this workflow, the important thing was the surrounding system:</p><ul><li><p>staging databases in <a href="https://motherduck.com?utm_source=chatgpt.com">MotherDuck</a></p></li><li><p>orchestration through <a href="https://www.getorchestra.io?utm_source=chatgpt.com">Orchestra</a></p></li><li><p>feature branches</p></li><li><p>snapshots</p></li><li><p>declarative pipelines</p></li><li><p>serverless execution</p></li><li><p>lineage and observability</p></li></ul><p>Those things sound boring compared to &#8220;AI&#8221;, but they&#8217;re actually the parts that make the workflow usable. Without them, you mostly end up with generated scripts that still need a human to operationalise everything around them.</p><p>With them, you can start treating generated code like a normal engineering workflow: branch it, deploy it, run it safely, inspect it, roll it back if needed.</p><h3>Final Recap</h3><p>In the demo, the agent created a staging database in MotherDuck, wrote the ingestion code, generated the orchestration pipeline, opened a branch, deployed the workflow through Orchestra, and ran the pipeline serverlessly.</p><p>After the load completed, we used a Dive to inspect the data and expose some operational metadata like freshness timestamps and links back to the pipeline lineage.</p><p>It&#8217;s cool to see AI maturing a bit and making data engineering easier. Definitely a win for the Seniors. As for the juniors..what juniors?!</p><h4>The Skill</h4><p>Note&#8202;&#8212;&#8202;it is way too long and way too verbose. Some work needed.</p><pre><code>---
name: dlt-source-via-orchestra
description: Build a new dlt source that lands API data into MotherDuck, then ship it through Orchestra. Use this when the user wants to &#8220;pull X from &lt;API&gt; into MotherDuck&#8221; or &#8220;add a new dlt source and run it on Orchestra&#8221;. Walks the full lifecycle on a feature branch &#8212; author the source, register an Orchestra pipeline that invokes it, trigger the pipeline against that branch, and poll until done.
---

# Build &amp; ship a dlt &#8594; MotherDuck source via Orchestra

Use this end-to-end when adding a new API &#8594; MotherDuck source. The dlt code goes
in `python/dlt/`; the Orchestra pipeline that runs it goes in `orchestra/`. The
pipeline must be runnable against the feature branch before it lands on `main`,
so every step is parameterised by the branch created in step 1.

## Steps

### 1. Create a feature branch
From `main`, cut a branch named `feat/dlt-&lt;source&gt;` (e.g. `feat/dlt-linear`).
Save the branch name verbatim &#8212; you will pass it to `start_pipeline` in step 7
and substitute it into the Python task in step 4. Step 8 promotes the staged
load into prod, so make sure the prod DB name set in step 3 is the one the user
actually wants overwritten.

```bash
git checkout main &amp;&amp; git pull
git checkout -b feat/dlt-&lt;source&gt;
```

**If the source already exists on `main`** (i.e. you&#8217;re &#8220;rebuilding&#8221; or
re-running a previously merged pipeline): cut a `-v2`/`-rerun` branch and
**keep the existing `python/dlt/&lt;source&gt;/`, `&lt;source&gt;_pipeline.py`, and
`orchestra/&lt;source&gt;_to_motherduck.yml` files as-is** &#8212; skip ahead to step 5.
&#8220;Rebuild&#8221; in this context means re-register and re-trigger on a fresh branch,
not delete and re-author working code. Only rewrite files if the user
explicitly says the existing code is broken or that they want it replaced.

### 2. Identify the source endpoints
Read the source&#8217;s API docs (or call `WebFetch` on them) to determine:
- Which endpoint(s) yield the entities the user asked for.
- Pagination style: cursor (`pageInfo.endCursor`), offset, link headers, or `next` URLs.
- Server-side filtering for the requested window (e.g. `updatedAt &gt;= now-7d`). Do
  the filter in the API request, not client-side &#8212; keeps the load small.
- Auth mechanism: header name (`Authorization: &lt;token&gt;` vs `Bearer &lt;token&gt;`),
  query-string token, OAuth.

Write these down before coding &#8212; guessing pagination or filter syntax wastes a
full dlt run.

### 3. Locate credentials and set destination env vars
Both the source API and MotherDuck must be reachable from env vars (Orchestra
injects them via the Python integration&#8217;s `environment_variables`). Probe for
likely names before writing code:

```powershell
[Environment]::GetEnvironmentVariables(&#8217;User&#8217;).Keys |
  Where-Object { $_ -match &#8216;&lt;source&gt;|motherduck|md_&#8217; }
```

**Credential env vars (must already exist &#8212; never hardcode):**
- MotherDuck: `MOTHERDUCK_API_TOKEN` (also accepted as `MOTHERDUCK_TOKEN`).
- Source API: e.g. `LINEAR_API_KEY`, `HUBSPOT_API_KEY`.

If a credential is missing, stop and ask the user &#8212; do not hardcode.

**Destination env vars (set defaults if unset, then promote to the Process env
so the local validation in step 7 and the Orchestra task config pick them up).
The pattern is: dlt lands into a **staging** database, prod is overwritten by
the step-8 COPY only after the load looks clean:**

| Var | Purpose | Default |
| --- | ------- | ------- |
| `&lt;SOURCE&gt;_MD_PROD_DATABASE`    | Final destination (overwritten by step 8) | `my_db` |
| `&lt;SOURCE&gt;_MD_STAGING_DATABASE` | Where dlt lands first | `&lt;prod&gt;_staging` (e.g. `my_db_staging`) |
| `&lt;SOURCE&gt;_MD_DATASET`          | Target schema (dlt `dataset_name`) | `dlt_&lt;source&gt;` |
| `&lt;SOURCE&gt;_MD_SNAPSHOT_NAME`          | Name fo the snapshot of the staging database  | e.g. `linear_19052026` |

PowerShell &#8212; set only if not already present:

```powershell
if (-not $env:&lt;SOURCE&gt;_MD_PROD_DATABASE)    { $env:&lt;SOURCE&gt;_MD_PROD_DATABASE    = &#8216;my_db&#8217; }
if (-not $env:&lt;SOURCE&gt;_MD_STAGING_DATABASE) { $env:&lt;SOURCE&gt;_MD_STAGING_DATABASE = &#8220;$($env:&lt;SOURCE&gt;_MD_PROD_DATABASE)_staging&#8221; }
if (-not $env:&lt;SOURCE&gt;_MD_DATASET)          { $env:&lt;SOURCE&gt;_MD_DATASET          = &#8216;dlt_&lt;source&gt;&#8217; }
if (-not $env:&lt;SOURCE&gt;_MD_SNAPSHOT_NAME)    { $env:&lt;SOURCE&gt;_MD_SNAPSHOT_NAME    = &#8216;dlt_&lt;source&gt;_pre_&lt;YYYYMMDD_HHMMSS&gt;&#8217; }
```

These three env vars flow through all the later steps unchanged &#8212; step 6
snapshots `&lt;SOURCE&gt;_MD_PROD_DATABASE`, the Python script in step 4a writes to
`&lt;SOURCE&gt;_MD_STAGING_DATABASE` to create a snapshot called $env:&lt;SOURCE&gt;_MD_SNAPSHOT_NAME,
the Orchestra task in step 4c passes all three
through `environment_variables`, and step 8 reads both database names when
building the `COPY FROM DATABASE` SQL. Keep the names consistent across local
shell, Python script, YAML task, and MCP calls.

### 4. Author the dlt source AND the Orchestra YAML

**4a. Code under `python/dlt/&lt;source&gt;/`:**

- `python/dlt/&lt;source&gt;/__init__.py` &#8212; `@dlt.source` and `@dlt.resource` definitions,
  using `dlt.sources.helpers.requests` for HTTP. Resource should be
  `write_disposition=&#8221;merge&#8221;` with the API&#8217;s stable primary key, and accept a
  `since_days` argument that translates into the server-side filter.
- `python/dlt/&lt;source&gt;_pipeline.py` &#8212; wires env vars and runs the pipeline:
  - Pulls `MOTHERDUCK_API_TOKEN` and the source token from `os.environ`.
  - Reads destination from env:
    `database = os.environ.get(&#8221;&lt;SOURCE&gt;_MD_STAGING_DATABASE&#8221;, &#8220;my_db_staging&#8221;)`,
    `dataset  = os.environ.get(&#8221;&lt;SOURCE&gt;_MD_DATASET&#8221;, &#8220;dlt_&lt;source&gt;&#8221;)`.
  - Sets `DESTINATION__MOTHERDUCK__CREDENTIALS=md:&lt;staging_database&gt;?motherduck_token=&lt;token&gt;`.
  - Calls `dlt.pipeline(pipeline_name=&#8221;&lt;source&gt;&#8221;, dataset_name=dataset, destination=&#8221;motherduck&#8221;)`.
  - `LINEAR_SINCE_DAYS`-style env var for the window (default 7 in `__main__`).

The script writes to **staging** only &#8212; it must never read `&lt;SOURCE&gt;_MD_PROD_DATABASE`.
Prod is touched exclusively by the step-8 COPY task; keeping that separation
means a half-failed load only corrupts staging, and step 6&#8217;s snapshot of prod
is a clean rollback point.

**4b. Add any new packages to `python/dlt/requirements.txt`:**

Orchestra&#8217;s Python integration runs `pip install -r requirements.txt` in the
checked-out repo. The dlt MotherDuck extra is mandatory for this pattern and is
not pulled in by `dlt[bigquery]`:

```
dlt[motherduck]==1.16.0
```

Pin the version to the same line as the other `dlt[...]` extras so the resolver
picks one consistent dlt build. If the source needs a vendor SDK (e.g.
`hubspot-api-client`), add it here too.

**4c. Orchestra pipeline at `orchestra/&lt;source&gt;_to_motherduck.yml`:**

The pipeline has a single PYTHON_EXECUTE_SCRIPT task. The two non-obvious bits:

1. **Top-level `inputs.branch.default: main`** declares a branch override that
   defaults to `main`, so a scheduled run on `main` keeps working.
2. **`branch: ${{ inputs.branch }}`** on the Python task wires that override
   into the integration. At trigger time, `start_pipeline(branch=&lt;feature&gt;)`
   replaces it.

Skeleton (let the `orchestra-pipeline` skill generate the full YAML; this is
just the shape). Two stages: Python load &#8594; MotherDuck promote. The promote is
wired into the pipeline as a `MOTHERDUCK_EXECUTE_QUERY` task that depends on
the Python stage, so prod is updated atomically as part of each run and there
is no separate manual MCP `COPY FROM DATABASE` step. CHECK to see if the `COPY FROM DATABASE` syntax is correct for your version of MotherDuck &#8212; the example below uses `OVERWRITE` to copy data from staging snapshot into the prod database. If not, update the orchestra pipeline.yml.

```yaml
version: v1
name: &#8216;Linear cycles to MotherDuck #dlt #motherduck #linear&#8217;
pipeline:
  3a1f8b40-77c2-4d18-9e2a-6b0c5d7f8a11:
    tasks:
      6c4d9e22-8a3b-4f51-bd07-2e1a4f6b9c23:
        integration: PYTHON
        integration_job: PYTHON_EXECUTE_SCRIPT
        parameters:
          package_manager: PIP
          python_version: &#8216;3.11&#8217;
          build_command: pip install -r requirements.txt
          source: GIT
          branch: ${{ inputs.branch }}
          command: python -m linear_cycles_pipeline
          project_dir: python/dlt
          shallow_clone_dirs: python/dlt
          environment_variables: &#8216;{
            &#8220;LINEAR_CYCLES_SINCE_DAYS&#8221;: &#8220;${{ inputs.since_days }}&#8221;,
            &#8220;LINEAR_CYCLES_MD_STAGING_DATABASE&#8221;: &#8220;${{ inputs.md_staging_database }}&#8221;,
            &#8220;LINEAR_CYCLES_MD_PROD_DATABASE&#8221;:    &#8220;${{ inputs.md_prod_database }}&#8221;,
            &#8220;LINEAR_CYCLES_MD_DATASET&#8221;:          &#8220;${{ inputs.md_dataset }}&#8221;
            }&#8217;
          set_outputs: true
        depends_on: []
        name: Run linear cycles dlt
        connection: python__production__blueprints__19239
    depends_on: []
    name: &#8216;&#8217;
  5e9a3c14-2b6d-4f7e-8c91-1a3b5d7e9f02:
    tasks:
      a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d:
        integration: MOTHERDUCK
        integration_job: MOTHERDUCK_EXECUTE_QUERY
        parameters:
          query: &#8216;CREATE SNAPSHOT ${{ inputs.snapshot_name }} OF ${{ inputs.md_staging_database }}&#8217;
          set_outputs: false
        depends_on: []
        name: Create snapshot of prod
    depends_on:
    - 3a1f8b40-77c2-4d18-9e2a-6b0c5d7f8a11
    name: &#8216;&#8217;
  8d2f5a91-4b7c-4e83-9d1a-3f6b8c2e7a45:
    tasks:
      b2d3c4e5-6f7a-8b9c-0d1e-2f3a4b5c6d7e:
        integration: MOTHERDUCK
        integration_job: MOTHERDUCK_EXECUTE_QUERY
        parameters:
          query: &#8220;COPY FROM DATABASE ${{ inputs.md_staging_database }}  (OVERWRITE, SNAPSHOT_NAME ${{ inputs.snapshot_name }}, OVERWRITE) TO ${{ inputs.md_prod_database }}&#8221;
          set_outputs: false
        depends_on: []
        name: Promote staging to prod
    depends_on:
    - 5e9a3c14-2b6d-4f7e-8c91-1a3b5d7e9f02
    name: &#8216;&#8217;
inputs:
  branch:
    type: string
    default: feat/dlt-linear-cycles
  since_days:
    type: string
    default: &#8216;7&#8217;
  md_staging_database:
    type: string
    default: my_db_staging
  md_prod_database:
    type: string
    default: my_db
  md_dataset:
    type: string
    default: dlt_linear_cycles
  snapshot_name:
    type: string
    default: dlt_linear_cycles

```

Tokens (`MOTHERDUCK_API_TOKEN`, source key) come from the connection&#8217;s
environment, not `environment_variables` in the YAML &#8212; never inline secrets.

### 5. Register the pipeline with Orchestra
Commit the YAML + Python code to the feature branch and push. Then use the
Orchestra MCP `import_pipeline` tool with the YAML contents to register it. The
tool returns the pipeline UUID &#8212; save it (you need it for step 7 and for any
future re-runs).

```
mcp__orchestramcp__import_pipeline(yaml=&#8221;&lt;contents of orchestra/&lt;source&gt;_to_motherduck.yml&gt;&#8221;)
```

If the pipeline already exists at the same alias, this updates it in place.

### 6. Prepare staging and snapshot prod
Two MotherDuck MCP `query_rw` calls before the pipeline runs:

```
mcp__MotherDuck__query_rw(
  sql=&#8221;CREATE DATABASE IF NOT EXISTS &lt;md_staging_database&gt;&#8221;
)


```

The first ensures dlt has somewhere to land &#8212; MotherDuck will not auto-create
the database, only schemas within it. 

Database names come from the env vars set in step 3 &#8212; substitute them
into the SQL string before sending to MCP. If either call fails (database
doesn&#8217;t exist, snapshot name collision), stop and surface the error. Don&#8217;t
proceed to a load that has no rollback point.

### 7. Trigger on the feature branch and poll
Trigger the pipeline against the branch from step 1, then poll until terminal.

```
mcp__orchestramcp__start_pipeline(alias=&#8221;&lt;pipeline-uuid&gt;&#8221;, branch=&#8221;&lt;feature-branch&gt;&#8221;, snapshot_name=&#8221;snapshot_name&#8221;)
mcp__orchestramcp__get_pipeline_run_status(pipeline_run_id=&#8221;&lt;run-uuid&gt;&#8221;)
```

Poll `get_pipeline_run_status` until the status is not `RUNNING` or `CREATED`.
Report the terminal status and surface the Orchestra UI link:

```
https://app.getorchestra.io/pipeline-runs/&lt;run-uuid&gt;/lineage
```

On failure, call `list_task_runs` (filtered by the run UUID) to find the FAILED
task, then `download_task_run_log` for its log. The most common causes:
- `requirements.txt` missing the new extra (e.g. `dlt[motherduck]`) &#8594; the
  `motherduck` destination import errors out. Fix step 4b and retrigger.
- Env var name mismatch between the script and the connection&#8217;s env config &#8594;
  rename in `&lt;source&gt;_pipeline.py` to match the connection. Applies to credential
  vars and `&lt;SOURCE&gt;_MD_STAGING_DATABASE` / `&lt;SOURCE&gt;_MD_PROD_DATABASE` /
  `&lt;SOURCE&gt;_MD_DATASET`.
- API rate-limit / 401 &#8594; token is missing from the connection&#8217;s env config, not
  a code bug.
- Load partially corrupted an existing dataset &#8594; `RESTORE` from the snapshot
  created in step 6, then fix the bug and re-run.

Once the run is green on the feature branch, the staging database holds the
fresh load. Prod is still untouched &#8212; promote it in step 8.

### 8. Verify the promote

First create a snapshot of the promote in staging

```
mcp__MotherDuck__query_rw(
  sql=&#8221;CREATE SNAPSHOT &lt;source&gt;_pre_&lt;YYYYMMDD_HHMMSS&gt; OF &lt;md_staging_database&gt;&#8221;
)
```

Once the pipeline run is green end-to-end (Python stage SUCCEEDED, promote
stage SUCCEEDED), spot-check the prod result via the MotherDuck MCP:

```
mcp__MotherDuck__query(database=&#8221;&lt;md_prod_database&gt;&#8221;,
  sql=&#8221;SELECT COUNT(*) FROM &lt;md_dataset&gt;.&lt;main_table&gt;&#8221;)
mcp__MotherDuck__query(database=&#8221;&lt;md_prod_database&gt;&#8221;,
  sql=&#8221;SELECT MIN(updated_at), MAX(updated_at) FROM &lt;md_dataset&gt;.&lt;main_table&gt;&#8221;)
```

If the promote stage failed but the Python stage succeeded, staging holds the
correct data and prod is untouched &#8212; re-run only the promote stage from the
Orchestra UI (or re-trigger the whole pipeline; `OVERWRITE` is idempotent). If
the COPY itself corrupted prod, `RESTORE` from the snapshot taken in step 6.

Once both stages are green on the feature branch, the YAML and Python code are
ready to merge to `main`.

## Notes
- The promote in step 8 is wired into the pipeline as a
  `MOTHERDUCK_EXECUTE_QUERY` task that depends on the Python stage &#8212; it runs
  automatically on every trigger, no manual MCP call required. The pre-load
  snapshot in step 6 is still a manual MCP step; consider promoting it into
  the YAML as a third `MOTHERDUCK_EXECUTE_QUERY` task (no `depends_on`, with
  the Python task gaining `depends_on: [&lt;snapshot-stage&gt;]`) once the pattern
  is proven on the source.
- Staging vs prod: dlt should never write directly to prod. The split exists
  so a half-failed load only corrupts staging (which is rebuilt every run),
  and prod only changes via the atomic `COPY FROM DATABASE &#8230; (OVERWRITE)` in
  step 8. If you find yourself reaching for `&lt;SOURCE&gt;_MD_PROD_DATABASE` in
  the Python script, stop &#8212; that&#8217;s the smell that the split is being bypassed.
- The Python task uses `shallow_clone_dirs: python/dlt` so the integration only
  pulls that subtree &#8212; adding files outside `python/dlt/` won&#8217;t slow checkout.
- `branch` on the Python task is the canonical way to scope a run to a feature
  branch. `start_pipeline`&#8217;s `branch` argument overrides the whole pipeline&#8217;s
  `inputs.branch`, including the dbt and other Git-aware tasks if you later add
  them. Don&#8217;t try to override per-task.
- See `fix-and-rerun-pipeline` for the failure-diagnosis loop once the pipeline
  exists. See `orchestra-pipeline` (built-in) for full YAML generation against
  the documented schema.</code></pre>]]></content:encoded></item><item><title><![CDATA[Escaping the Valley of Choice in BI | How Agentic BI will kill Data Analysts]]></title><description><![CDATA[Why Agentic BI threatens an entire profession]]></description><link>https://dataopsleadership.substack.com/p/escaping-the-valley-of-choice-in</link><guid isPermaLink="false">https://dataopsleadership.substack.com/p/escaping-the-valley-of-choice-in</guid><dc:creator><![CDATA[Hugo Lu]]></dc:creator><pubDate>Sun, 17 May 2026 18:21:20 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!38LF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1939d1a-5ec2-42a7-a64c-28fdf23e49d0_2600x1462.jpeg" 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="/__u/substackcdn.com/image/fetch/$s_!38LF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1939d1a-5ec2-42a7-a64c-28fdf23e49d0_2600x1462.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!38LF!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1939d1a-5ec2-42a7-a64c-28fdf23e49d0_2600x1462.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!38LF!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1939d1a-5ec2-42a7-a64c-28fdf23e49d0_2600x1462.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!38LF!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1939d1a-5ec2-42a7-a64c-28fdf23e49d0_2600x1462.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!38LF!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1939d1a-5ec2-42a7-a64c-28fdf23e49d0_2600x1462.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!38LF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1939d1a-5ec2-42a7-a64c-28fdf23e49d0_2600x1462.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d1939d1a-5ec2-42a7-a64c-28fdf23e49d0_2600x1462.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!38LF!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1939d1a-5ec2-42a7-a64c-28fdf23e49d0_2600x1462.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!38LF!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1939d1a-5ec2-42a7-a64c-28fdf23e49d0_2600x1462.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!38LF!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1939d1a-5ec2-42a7-a64c-28fdf23e49d0_2600x1462.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!38LF!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1939d1a-5ec2-42a7-a64c-28fdf23e49d0_2600x1462.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="https://unsplash.com/@dusk_cicada?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Tomoe Steineck</a> on <a href="https://unsplash.com/photos/landscape-photography-of-mountain-pass-E9eZxxwxW-w?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><div id="youtube2-kxxlCEKdrvI" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;kxxlCEKdrvI&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/kxxlCEKdrvI?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h3>Introduction</h3><p>Dashboards have never been killed because they operate within the Valley of Choice in BI.</p><p>The Valley of Choice describes the perfect ratio between the complexity of a problem and the effort we are willing to put in to solve it.</p><p>For example, a business critical question about how revenue is formed, and why different versions of revenue changed over time can warrant manual exploration. It can warrant deep discovery facilitated by multiple SQL queries and manually writing down the results and tracing through lineage.</p><p>This is High Effort, High Accuracy.</p><p>By contrast, simple questions on simple datasets like &#8220;How many sign-ups did I get yesterday?&#8221; can be satisfied by lower effort, simpler methods such as basic Text to SQL, as seen in tools like Thoughtspot.</p><p>In the centre are dashboards. Dashboards provide a moderate effort solution to a moderate complexity problem. They are capable of answering multiple questions and pivoting data to explain anomalies and forecast trends. They do not help <em>discover </em>insights, but help you <em>deliver </em>insights you have already found.</p><p>When something becomes asked frequently enough, it becomes worthy of a dashboard, and immediately graduates from a tricky, one-off, manually provided insight to something simpler and more repatable.</p><p>Agentic Analytics offers a new way to discover, and to serve insights. That is Text-to-SQL. This new way means that hitherto moderately complex queries can now be answered instantly.</p><p>Tools like Hex incorporate memory into their platforms, that mean that even complex queries, when combined with memory, allow Text-to-SQL to solve complex problems.</p><p>This changes the necessary ratio of effort to complexity and will reshape how we think of analytics. Let&#8217;s see how.</p><h3>Explaining the Valley of Choice in BI</h3><p>The Valley of Choice can be pictured below.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!pFQD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb39f499e-ea78-4fba-8baa-0d38f8f4b120_657x479.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!pFQD!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb39f499e-ea78-4fba-8baa-0d38f8f4b120_657x479.png 424w, /__u/substackcdn.com/image/fetch/$s_!pFQD!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb39f499e-ea78-4fba-8baa-0d38f8f4b120_657x479.png 848w, /__u/substackcdn.com/image/fetch/$s_!pFQD!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb39f499e-ea78-4fba-8baa-0d38f8f4b120_657x479.png 1272w, /__u/substackcdn.com/image/fetch/$s_!pFQD!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb39f499e-ea78-4fba-8baa-0d38f8f4b120_657x479.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!pFQD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb39f499e-ea78-4fba-8baa-0d38f8f4b120_657x479.png" width="657" height="479" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b39f499e-ea78-4fba-8baa-0d38f8f4b120_657x479.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:479,&quot;width&quot;:657,&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="/__u/substackcdn.com/image/fetch/$s_!pFQD!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb39f499e-ea78-4fba-8baa-0d38f8f4b120_657x479.png 424w, /__u/substackcdn.com/image/fetch/$s_!pFQD!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb39f499e-ea78-4fba-8baa-0d38f8f4b120_657x479.png 848w, /__u/substackcdn.com/image/fetch/$s_!pFQD!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb39f499e-ea78-4fba-8baa-0d38f8f4b120_657x479.png 1272w, /__u/substackcdn.com/image/fetch/$s_!pFQD!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb39f499e-ea78-4fba-8baa-0d38f8f4b120_657x479.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The Valley of Choice in BI</figcaption></figure></div><p>It describes a tradeoff between speed and accuracy which is determined by the nature of the demand or insight. Holding all things constant, the most important questions demand the highest degree of accuracy, which in turn justifies more time-consuming (High effort) methods.</p><p>It is a bit like saying that you can buy a delicious sandwich from your deli for $20 or go to 11 Madison Park for $500. Two different products, two different options, two different price points. Dashboards are like a meal out at a normal restaurant. $100 per person, but not suitable if you&#8217;re an eligible bachelor in New York.</p><p>Now: Imagine there is a new restuarant. The New Restuarant is very exclusive. The food is incredible; everything is organic. The service excellent. And lots of celebrities go there. It is very desirable. You can get a delicious 3 course meal for $40. We can call it Hugo&#8217;s Diner.</p><p>In fact it is part of a new trend. Hugo has a vast restaurant empire. There is Hugo&#8217;s Diner, but there is also Casa Hugo, Chez Hugo, Hugo&#8217;s table, and even Hugo-San. Hugo-San offers the best omakase in the city for $39.50.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!K9jt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadc3ec1f-0b9f-4cec-9c72-25621f62c024_1350x736.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!K9jt!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadc3ec1f-0b9f-4cec-9c72-25621f62c024_1350x736.png 424w, /__u/substackcdn.com/image/fetch/$s_!K9jt!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadc3ec1f-0b9f-4cec-9c72-25621f62c024_1350x736.png 848w, /__u/substackcdn.com/image/fetch/$s_!K9jt!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadc3ec1f-0b9f-4cec-9c72-25621f62c024_1350x736.png 1272w, /__u/substackcdn.com/image/fetch/$s_!K9jt!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadc3ec1f-0b9f-4cec-9c72-25621f62c024_1350x736.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!K9jt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadc3ec1f-0b9f-4cec-9c72-25621f62c024_1350x736.png" width="1350" height="736" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/adc3ec1f-0b9f-4cec-9c72-25621f62c024_1350x736.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:736,&quot;width&quot;:1350,&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="/__u/substackcdn.com/image/fetch/$s_!K9jt!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadc3ec1f-0b9f-4cec-9c72-25621f62c024_1350x736.png 424w, /__u/substackcdn.com/image/fetch/$s_!K9jt!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadc3ec1f-0b9f-4cec-9c72-25621f62c024_1350x736.png 848w, /__u/substackcdn.com/image/fetch/$s_!K9jt!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadc3ec1f-0b9f-4cec-9c72-25621f62c024_1350x736.png 1272w, /__u/substackcdn.com/image/fetch/$s_!K9jt!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadc3ec1f-0b9f-4cec-9c72-25621f62c024_1350x736.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">This could be you</figcaption></figure></div><p>What do you do? Where do you dine? 11 Madison Park is suddenly not so busy anymore. And this is what is happening with BI.</p><p>Simply put, the cost, and speed of running a query through new-age text-to-sql is incredibly low. It means there is essentially no reason to ever do anything else, unless of course you absolutely have to. In any case, you certainly aren&#8217;t moving <em>downmarket</em>.</p><p>Yes&#8202;&#8212;&#8202;sometimes you might need to do something manually. <em>Just to be sure</em>. And in the same way, nothing quite hits date (data?) night like Dorsia.</p><h3>The Shifting Valley: The bar for Analytics just got higher</h3><p>Imagine you don&#8217;t need to work hard to get the semantic layer going and Text to SQL can solve, reliably, repeatably, 95% of your questions.</p><p>An analyst becomes almost like a super analyst. They are only going to be asked the really gnarly questions. They are probably the person that designed the semantic layer in the first place.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!v4Tl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07600865-0187-46c5-a131-63bd9b1b94d5_1350x878.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!v4Tl!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07600865-0187-46c5-a131-63bd9b1b94d5_1350x878.png 424w, /__u/substackcdn.com/image/fetch/$s_!v4Tl!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07600865-0187-46c5-a131-63bd9b1b94d5_1350x878.png 848w, /__u/substackcdn.com/image/fetch/$s_!v4Tl!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07600865-0187-46c5-a131-63bd9b1b94d5_1350x878.png 1272w, /__u/substackcdn.com/image/fetch/$s_!v4Tl!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07600865-0187-46c5-a131-63bd9b1b94d5_1350x878.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!v4Tl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07600865-0187-46c5-a131-63bd9b1b94d5_1350x878.png" width="1350" height="878" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/07600865-0187-46c5-a131-63bd9b1b94d5_1350x878.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:878,&quot;width&quot;:1350,&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="/__u/substackcdn.com/image/fetch/$s_!v4Tl!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07600865-0187-46c5-a131-63bd9b1b94d5_1350x878.png 424w, /__u/substackcdn.com/image/fetch/$s_!v4Tl!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07600865-0187-46c5-a131-63bd9b1b94d5_1350x878.png 848w, /__u/substackcdn.com/image/fetch/$s_!v4Tl!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07600865-0187-46c5-a131-63bd9b1b94d5_1350x878.png 1272w, /__u/substackcdn.com/image/fetch/$s_!v4Tl!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07600865-0187-46c5-a131-63bd9b1b94d5_1350x878.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The New Valley of Choice in BI</figcaption></figure></div><p>The price of accuracy has become much higher. To do something manually, you had better be asking an extremely important question.</p><p>What does this mean for Analysts? Well, much the same as it means for software engineers. It now means that the proportion of folks <em>actually </em>being useful just got a lot smaller&#8202;&#8212;&#8202;in a meritocratic way, of course.</p><p>An Analyst that cannot be a semantic architect will be useless in 12 months. They will be replaced by insights agents. And if they persist, then CTOs are doing something wrong and should probably bring in Service Partners to help them implement their semantic layer.</p><p>The bar for working in Analytics just got higher. There&#8217;s a new competitor on the block and their name is A. Gent. Just like software engineering&#8202;&#8212;&#8202;juniors are out, and seniors are in.</p><h3>What about token costs?</h3><p>Token costs is an interesting point. Token costs have generally decreased <a href="https://introl.com/blog/inference-unit-economics-true-cost-per-million-tokens-guide">by 95% since the first models</a>. The cost of inference continues to fall, and is <a href="https://www.ciodive.com/news/ai-inference-costs-drop-2030-gartner/815725/">expected to be reduced by a further 95%</a> over the next few years.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!XO9c!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdbce668-0a44-4a1c-a8dd-d7a3df4775e8_900x512.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!XO9c!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdbce668-0a44-4a1c-a8dd-d7a3df4775e8_900x512.png 424w, /__u/substackcdn.com/image/fetch/$s_!XO9c!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdbce668-0a44-4a1c-a8dd-d7a3df4775e8_900x512.png 848w, /__u/substackcdn.com/image/fetch/$s_!XO9c!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdbce668-0a44-4a1c-a8dd-d7a3df4775e8_900x512.png 1272w, /__u/substackcdn.com/image/fetch/$s_!XO9c!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdbce668-0a44-4a1c-a8dd-d7a3df4775e8_900x512.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!XO9c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdbce668-0a44-4a1c-a8dd-d7a3df4775e8_900x512.png" width="900" height="512" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bdbce668-0a44-4a1c-a8dd-d7a3df4775e8_900x512.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:900,&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="/__u/substackcdn.com/image/fetch/$s_!XO9c!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdbce668-0a44-4a1c-a8dd-d7a3df4775e8_900x512.png 424w, /__u/substackcdn.com/image/fetch/$s_!XO9c!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdbce668-0a44-4a1c-a8dd-d7a3df4775e8_900x512.png 848w, /__u/substackcdn.com/image/fetch/$s_!XO9c!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdbce668-0a44-4a1c-a8dd-d7a3df4775e8_900x512.png 1272w, /__u/substackcdn.com/image/fetch/$s_!XO9c!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbdbce668-0a44-4a1c-a8dd-d7a3df4775e8_900x512.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Source: Epoch AI</figcaption></figure></div><p>Despite this, companies like <a href="https://www.briefs.co/news/uber-torches-entire-2026-ai-budget-on-claude-code-in-four-months/">Uber are steaming through their credit bills</a>. After all, credits are fun. Claude is addictive. <a href="https://en.wikipedia.org/wiki/Token_maxxing">Tokenmaxxing</a> is encouraged.</p><p>Indeed, the price of <em>frontier models </em>has not fallen dramatically. Claude costs in 2023 were c.$32/million output tokens. Now it is still $25.</p><p>In fact, <a href="/__u/gradientflow.substack.com/p/why-your-ai-bills-are-going-up-even">token use is expected to rise exponentially </a>as systems get more complicated&#8212; it is not clear when, if at all, benefits will arise. For example 1 million output tokens for Claude is about $25. Let&#8217;s say running a few queries through an agent is 1,000 tokens. This means the cost of a query is 0.025 of 2.5 cents.</p><p>10,000 people doing one of these a day for 365 days a year is $91k. Not bad.</p><p>If the cost of analysts was say 10 analysts at $100k each, then again the ROI starts to look good. It looks even better if inference costs reduce, which they must.</p><p>I have a suspicion that assumption (1,000 tokens per &#8220;insight&#8221;) is too low. However, reducing inference costs and improvements in technology will inevitably continue to reduce it.</p><p>For example, suppose initially it takes an agent a long time to learn that when marketing says &#8220;show me revenue&#8221; it is a different set of queries to when finance say &#8220;show me revenue&#8221;.</p><p>Once this is codified, and done repeatably, this should be minimal tokens. It should become a dashboard, or persistent query, or perhaps even a <em>skill </em>of the agent. We do not need a million output tokens when people ask the same questions every week.</p><p>And of course generally, people do ask similar questions as time goes by.</p><p>I am therefore, <strong>bullish on token costs</strong>. While there is an inevitably strange moment in the market at the moment, whereby the cost of inference is probably <em>too high, I do believe the cost of inference will decrease</em>. The number of tokens required to produce insights reliably and repeatably will also decrease as people build more reliable and repeatable systems.</p><h3>Which BI vendors win and lose?</h3><p>There are a few factors at play</p><ol><li><p>Strength of agent</p></li><li><p>Market Positioning</p></li><li><p>Size and Estate</p></li></ol><h4>Strength of Agent (Agentic Analytics)</h4><p>It should go without saying the strength of the agent is imperative. There are currently a handful of companies with powerful analytics agents.</p><ol><li><p>Lightdash</p></li><li><p>Omni</p></li><li><p>Hex</p></li><li><p>TextQL</p></li></ol><p>These companies are all succeeding for different reasons. Lightdash have a tight integration with the dbt semantic layer. Omni have their own, being ex-Looker, and understand the space very well. Hex have an incredible agent infrastructure and memory, while TextQL is simply one of those things that has to be used to be believed.</p><p>It is worth noting data warehouses have their own versions of this too. Snowflake Cortex Intelligence and Databricks Genie are both products with a lot of investment behind them. If good enough, customers will use these.</p><h4>Market Positioning</h4><p>Not every BI vendor is really in a position to care, or worry about these factors. For example, Tableau will continue to accrue revenue through its livelihood through Salesforce. Its success will be determined by the stickiness of Salesforce.</p><p>Standalone BI tools without an edge are in trouble here. The Sisenses, the Qliks and the Lookers have very little reason to continue being chosen if they cannot develop a better agentic analytics layer&#8202;&#8212;&#8202;and they do not have a big brother in the Boardroom to look after them.</p><p>Companies like Sigma, who have historically been very close to companies like Snowflake, now compete with them directly. So they are in a tricky spot to see who can build the best AI Data Analyst.</p><h4>Size and Estate</h4><p>Some companies may simply have too much size and estate to be fully displaced. For example, both Tableau, Sigma and Power BI have enormous estates that cannot be removed easily.</p><p>If dashboards are serving their purpose, reliably, they will remain. Remember&#8202;&#8212;&#8202;dashboards exist in the Valley of Choice. This is because clicking into a known, reliable dashboard will <em>still </em>be lower effort than formulating a question, typing it into a chat window, waiting, asking for graphs to be drawn, and so on.</p><p>This means that companies that have implemented dashboards will likely keep them. However, expect there to be heavy pricing pressure as agentic BI forces out user-based pricing models.</p><h3>Conclusion&#8202;&#8212;&#8202;BI will consolidate in 3 years</h3><p>The logical conclusion is more consolidation.</p><p>AI means building Dashboards becomes exceptionally easy.</p><p>The shift of the BI Valley from uncanny to canny means the cost tradeoff between agentic analytics, dashboards, and manual work has shifted dramatically.</p><p>Practically, usage-based models of consumption directly counter legacy user-based pricing models, if not on structure then at minimum on cost. While companies may be willing to pay a small user fee for an agentic BI tool like Hex, they are certainly not willing to pay $5,000 for the privilege of making some Tableau Dashboards.</p><p><strong><a href="https://medium.com/@hugolu87/the-final-voyage-of-the-modern-data-stack-aad8e324a1b4">The Final Voyage of the Modern Data Stack</a></strong><a href="https://medium.com/@hugolu87/the-final-voyage-of-the-modern-data-stack-aad8e324a1b4"><br></a><em><a href="https://medium.com/@hugolu87/the-final-voyage-of-the-modern-data-stack-aad8e324a1b4">Can the Context Layer for AI provide catalogs with the last chopper out of Saigon?</a></em><a href="https://medium.com/@hugolu87/the-final-voyage-of-the-modern-data-stack-aad8e324a1b4">medium.com</a></p><p>All the while, companies will compete directly with the largest, most well-capitalised, and most research-heavy companies in the space: hyperscalers and data warehose providers. There is no reason not to leverage tools like Snowflake Cortex Intelligence and Databricks Genie if they are sufficiently good.</p><p>This means the industry will continue to consolidate around BI and Analytics agents. The space will become increasingly commoditised unless the standalone vendors can continue to make better and better products faster than the warehouses can catch-up.</p><p>At <a href="https://getorchestra.io">Orchestra</a>, we&#8217;re building the Agentic Layer for the engineers. <a href="https://www.linkedin.com/company/orchestra-go/?viewAsMember=true">Follow-us to find out more</a>.</p>]]></content:encoded></item><item><title><![CDATA[The complete guide to state-aware dbt Orchestration | Orchestra dbt]]></title><description><![CDATA[How State-Aware Orchestration is the next evolution in running dbt]]></description><link>https://dataopsleadership.substack.com/p/the-complete-guide-to-state-aware</link><guid isPermaLink="false">https://dataopsleadership.substack.com/p/the-complete-guide-to-state-aware</guid><dc:creator><![CDATA[Hugo Lu]]></dc:creator><pubDate>Thu, 07 May 2026 08:02:19 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Kd0I!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa38e0735-9d9e-4a02-b15c-f5e2924b2567_3144x2000.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="/__u/substackcdn.com/image/fetch/$s_!Kd0I!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa38e0735-9d9e-4a02-b15c-f5e2924b2567_3144x2000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!Kd0I!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa38e0735-9d9e-4a02-b15c-f5e2924b2567_3144x2000.png 424w, /__u/substackcdn.com/image/fetch/$s_!Kd0I!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa38e0735-9d9e-4a02-b15c-f5e2924b2567_3144x2000.png 848w, /__u/substackcdn.com/image/fetch/$s_!Kd0I!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa38e0735-9d9e-4a02-b15c-f5e2924b2567_3144x2000.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Kd0I!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa38e0735-9d9e-4a02-b15c-f5e2924b2567_3144x2000.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!Kd0I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa38e0735-9d9e-4a02-b15c-f5e2924b2567_3144x2000.png" width="1456" height="926" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a38e0735-9d9e-4a02-b15c-f5e2924b2567_3144x2000.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:926,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:8753279,&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://dataopsleadership.substack.com/i/196751767?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa38e0735-9d9e-4a02-b15c-f5e2924b2567_3144x2000.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!Kd0I!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa38e0735-9d9e-4a02-b15c-f5e2924b2567_3144x2000.png 424w, /__u/substackcdn.com/image/fetch/$s_!Kd0I!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa38e0735-9d9e-4a02-b15c-f5e2924b2567_3144x2000.png 848w, /__u/substackcdn.com/image/fetch/$s_!Kd0I!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa38e0735-9d9e-4a02-b15c-f5e2924b2567_3144x2000.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Kd0I!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa38e0735-9d9e-4a02-b15c-f5e2924b2567_3144x2000.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>Introduction to dbt Orchestration</strong></h2><p>dbt core has been downloaded <a href="https://www.linkedin.com/posts/dbtlabs_dbt-core-just-hit-1-billion-downloads-10-activity-7450910102066237440-UJIH/">over 1 billion times</a>. Over 30,000 organisations <a href="https://www.hpcwire.com/bigdatawire/2023/10/17/dbt-labs-tackles-data-project-complexity-with-mesh-at-coalesce/">use dbt in production</a>, the number grows every day. Around 5% of the install base have <a href="https://www.hpcwire.com/bigdatawire/2023/10/17/dbt-labs-tackles-data-project-complexity-with-mesh-at-coalesce/">over 5,000 models</a>.</p><p>While learning dbt is easy, maintaining it is not. Analytics Engineering is a new profession and with it there is more dbt code being generated than ever before &#8212; <a href="https://www.linkedin.com/posts/tristan-mckinnon_hot-take-dbt-has-created-an-army-of-yaml-activity-7408728548355710976-jRow/">taming spaghetti lineage</a> has become a full time job for many, and with AI rising faster than you can say &#8220;dbt run&#8221;, this problem only seems to be getting worse.</p><p>One key area of concern is scheduling. Where a simple daily &#8220;dbt run&#8221; suffices to begin with, as companies and data teams grow quickly, the dbt estate gets more complicated. Before long, models must be tagged in different ways such as &#8220;tag:hourly&#8221; or &#8220;tag:daily&#8221;, which quickly becomes difficult to maintain.</p><p>Furthermore, as many growth stage companies expand, monitoring and cleaning up old models can be painful. What should data engineers do with contacts_hubspot and opportunities_salesforce as the company migrates to contacts_new_ai_powered_crm? It is difficult to balance the needs of the business while retaining sanity within a dbt project.</p><p>This problem is not unique to growth-stage companies, either. Large enterprises who feel the pain of decades of technical debt may and &#8220;self-serve analytics&#8221; may observe that the estate of SQL models <em>is simply too large</em>, but that refactoring is not a plausible option.</p><p>One solution to this is <em>state-aware orchestration for dbt </em>or &#8220;SAO&#8221;. While dbt fusion already has an impressive <a href="https://github.com/dbt-labs/dbt-fusion">500+ Github Stars</a>, the traction for dbt core is unparalleled. We wanted to help solve these gnarly problems for dbt practitioners in a way that finally contributed back to the dbt community.</p><p>In this guide, we&#8217;ll cover some common dbt FAQs</p><h3><strong>Common dbt FAQs</strong></h3><ul><li><p>What is State-Aware Orchestration and what does it do?</p></li><li><p>Why State-Aware Orchestration matters for data teams</p></li><li><p>How dbt State-Aware Orchestration works</p></li><li><p>How to configure dbt State-Aware Orchestration locally</p></li><li><p>How to configure dbt State-Aware Orchestration in Orchestra</p></li><li><p>Managing state in Orchestra</p></li><li><p>Monitoring the impact of State-Aware Orchestration</p></li></ul><p>By the end of this guide, you&#8217;ll be a certified dbt SAO practitioner!</p><p>Let&#8217;s dive in.</p><p><em>Want to get started? Check-out the resources below.</em></p><p>&#128218; Read the <a href="https://docs.getorchestra.io/">Docs</a></p><p>&#128640; <a href="https://app.getorchestra.io/signup">Create an Orchestra account</a></p><h3><strong>What does dbt State-Aware Orchestration do?</strong></h3><p>By default, dbt projects take a fairly unopinionated approach to transforming your data, with &#8220;run everything every hour and pray&#8221; being a popular approach to keeping analytics fresh within a business.<br>But, with time and scale, this translates into run times creeping up, larger warehouse instances, and days spent refactoring your projects.<br>Perhaps a better way would be to:</p><blockquote><p><em>Transform the data that&#8217;s needed, when it&#8217;s needed</em></p></blockquote><p>That&#8217;s where state-aware orchestration comes in.</p><p>Your orchestrator already sees everything that&#8217;s going on in your DAG, so tracking the state of each model &#8212; when it was last built, whether anything upstream has actually changed &#8212; is very much within its wheelhouse, and that information can be used to <strong>decide what needs building and what can be skipped entirely</strong>.</p><p>dbt freshness checks tell us when new data is available in our sources, but why not extend this to models? When is data available at the end of my pipeline?<br>Conversely, our stakeholders have processes designed around consuming that data, so why not ensure we&#8217;re updating those tables for when they&#8217;re needed? And why update them when they&#8217;re not needed?</p><p>This is state aware orchestration.</p><p>No new data? Don&#8217;t update that staging table, use it as is.</p><p>Upstream models haven&#8217;t changed? Neither will this one.</p><p>Daily mart table already built this morning? <em>If a dbt model updates, and nobody&#8217;s around to use it&#8230;</em></p><h2><strong>Why does state-aware orchestration matter for data teams?</strong></h2><p>Faster, more predicatable, less computationally intensive job runs are an easy sell to any data engineering team, but where else do we gain by dbt&#8217;s saving?We&#8217;ll start with the headliner, then check out some other benefits.</p><p><strong>Less reprocessed data<br></strong>Not reprocessing the same data again and again is a clear win here, freeing up time in all services, reducing the amount of compute required each time, and ultimately taking the edge off the bills that keep Platform Engineers and Managers awake at night.</p><p><strong>Incremental Improvements<br></strong>Increments in dbt are extremely powerful, and one of the top ways to make a dbt project more efficient, but it&#8217;s not always a case of adding a simple Jinja block.<br>State aware orchestration doesn&#8217;t eliminate the need for them either, but rather than executing a huge query only to find out in the last filter that there&#8217;s actually no data to insert isn&#8217;t the most efficient use of your warehouse, whereas state aware would have skipped the query entirely. Although this doesn&#8217;t eliminate increments, it helps teams be more efficient with their dbt runs, before getting into the nitty-gritty.</p><p><strong>Cleanup Days and Fire Drills<br></strong>If you&#8217;re lucky enough not to have done this, congrats. When bills start edging up and it&#8217;s getting closer to the end of a financial period, dbt spend can be suspect number one for interrogation.<br>This results in teams setting aside hours or even days to &#8220;reduce spend&#8221; by combing through their project, deciding what to run when, where an increment can go, how to rejig the scheduling, etc.<br>State aware orchestration provides a bunch of that out of the box, meaning dbt runs are just more inline with the amount of data you&#8217;re receiving, processing what you need, and ultimately leading to less time spent combing your IDE.</p><p><strong>Defined Deliveries<br></strong>Even when you&#8217;re running an hourly dbt project with increments everywhere, sometimes you just have models that need running at given times to meet the needs of the consumer, or conversely, you&#8217;re running a model all the time for that Tableau dashboard referenced in a meeting once.<br>By bringing SLAs into your dbt project, state aware orchestration limits the need for &#8220;special runs for special data&#8221; or needlessly refreshing the enormous table nobody uses, which brings more predictability to dbt&#8217;s delivery times, and ultimately to those who use your data.<br>On top of this, the data function now has a data point that provides an alignment with another part of the business, and that&#8217;s a win-win.</p><p>But this is just our opinion, the proof is in the pudding, so why not try it out for yourself and see how state aware orchestration benefits your team?!</p><h2><strong>How does it work</strong></h2><p>There is a <a href="https://docs.getorchestra.io/docs/guides/dbt-core-state-management/guide#example">worked example in the docs</a>, but let&#8217;s look at some common dbt scenarios you may encounter in your pipelines, and how they would look with state aware orchestration enabled.</p><h2><strong>Common Scenarios</strong></h2><ol><li><p>No changes &#8212; The easiest scenario, all models and sources are stale, seeds and snapshots still run, triggering the <code>final_model</code> and reusing the existing model data.</p></li><li><p>Source receives data and refreshes &#8212; A source refreshes and rebuilds its stage, but not all <code>dim_orders</code> upstreams refreshed, so it does not build.</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!9nt8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffc60fb4-d289-4b3e-a244-aaf4066d8a99_1125x589.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!9nt8!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffc60fb4-d289-4b3e-a244-aaf4066d8a99_1125x589.png 424w, /__u/substackcdn.com/image/fetch/$s_!9nt8!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffc60fb4-d289-4b3e-a244-aaf4066d8a99_1125x589.png 848w, /__u/substackcdn.com/image/fetch/$s_!9nt8!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffc60fb4-d289-4b3e-a244-aaf4066d8a99_1125x589.png 1272w, /__u/substackcdn.com/image/fetch/$s_!9nt8!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffc60fb4-d289-4b3e-a244-aaf4066d8a99_1125x589.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!9nt8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffc60fb4-d289-4b3e-a244-aaf4066d8a99_1125x589.png" width="1125" height="589" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ffc60fb4-d289-4b3e-a244-aaf4066d8a99_1125x589.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:589,&quot;width&quot;:1125,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!9nt8!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffc60fb4-d289-4b3e-a244-aaf4066d8a99_1125x589.png 424w, /__u/substackcdn.com/image/fetch/$s_!9nt8!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffc60fb4-d289-4b3e-a244-aaf4066d8a99_1125x589.png 848w, /__u/substackcdn.com/image/fetch/$s_!9nt8!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffc60fb4-d289-4b3e-a244-aaf4066d8a99_1125x589.png 1272w, /__u/substackcdn.com/image/fetch/$s_!9nt8!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffc60fb4-d289-4b3e-a244-aaf4066d8a99_1125x589.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Scenario 1: Nothing to transform</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!omcP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe70f2080-d62e-4821-930f-b36801efea2f_1125x589.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!omcP!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe70f2080-d62e-4821-930f-b36801efea2f_1125x589.png 424w, /__u/substackcdn.com/image/fetch/$s_!omcP!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe70f2080-d62e-4821-930f-b36801efea2f_1125x589.png 848w, /__u/substackcdn.com/image/fetch/$s_!omcP!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe70f2080-d62e-4821-930f-b36801efea2f_1125x589.png 1272w, /__u/substackcdn.com/image/fetch/$s_!omcP!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe70f2080-d62e-4821-930f-b36801efea2f_1125x589.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!omcP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe70f2080-d62e-4821-930f-b36801efea2f_1125x589.png" width="1125" height="589" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e70f2080-d62e-4821-930f-b36801efea2f_1125x589.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:589,&quot;width&quot;:1125,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!omcP!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe70f2080-d62e-4821-930f-b36801efea2f_1125x589.png 424w, /__u/substackcdn.com/image/fetch/$s_!omcP!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe70f2080-d62e-4821-930f-b36801efea2f_1125x589.png 848w, /__u/substackcdn.com/image/fetch/$s_!omcP!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe70f2080-d62e-4821-930f-b36801efea2f_1125x589.png 1272w, /__u/substackcdn.com/image/fetch/$s_!omcP!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe70f2080-d62e-4821-930f-b36801efea2f_1125x589.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Scenario 2: Single source receives data</p><p>3. Model code changed &#8212; <code>stg_customers</code> had a code change, which may indicate new logic, so was rebuilt, along with the downstream <code>final_model</code> , <code>dim_orders</code> still skipped.</p><p>4. Orders source has new data, <code>dim_orders</code> within <code>build_after</code> SLA &#8212; The orders source received new data, but the inherited SLA of 1 hour from <code>dim_orders</code> tells <code>stg_orders</code> not to rebuild.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!yG3D!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71686eac-f94b-45f7-8944-d0a15a08f82d_1125x589.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!yG3D!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71686eac-f94b-45f7-8944-d0a15a08f82d_1125x589.png 424w, /__u/substackcdn.com/image/fetch/$s_!yG3D!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71686eac-f94b-45f7-8944-d0a15a08f82d_1125x589.png 848w, /__u/substackcdn.com/image/fetch/$s_!yG3D!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71686eac-f94b-45f7-8944-d0a15a08f82d_1125x589.png 1272w, /__u/substackcdn.com/image/fetch/$s_!yG3D!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71686eac-f94b-45f7-8944-d0a15a08f82d_1125x589.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!yG3D!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71686eac-f94b-45f7-8944-d0a15a08f82d_1125x589.png" width="1125" height="589" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/71686eac-f94b-45f7-8944-d0a15a08f82d_1125x589.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:589,&quot;width&quot;:1125,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!yG3D!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71686eac-f94b-45f7-8944-d0a15a08f82d_1125x589.png 424w, /__u/substackcdn.com/image/fetch/$s_!yG3D!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71686eac-f94b-45f7-8944-d0a15a08f82d_1125x589.png 848w, /__u/substackcdn.com/image/fetch/$s_!yG3D!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71686eac-f94b-45f7-8944-d0a15a08f82d_1125x589.png 1272w, /__u/substackcdn.com/image/fetch/$s_!yG3D!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71686eac-f94b-45f7-8944-d0a15a08f82d_1125x589.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Scenario 3: Model code changed</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!OCvp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb714eaa-5af8-4073-bbd1-4eed03e24175_1125x589.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!OCvp!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb714eaa-5af8-4073-bbd1-4eed03e24175_1125x589.png 424w, /__u/substackcdn.com/image/fetch/$s_!OCvp!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb714eaa-5af8-4073-bbd1-4eed03e24175_1125x589.png 848w, /__u/substackcdn.com/image/fetch/$s_!OCvp!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb714eaa-5af8-4073-bbd1-4eed03e24175_1125x589.png 1272w, /__u/substackcdn.com/image/fetch/$s_!OCvp!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb714eaa-5af8-4073-bbd1-4eed03e24175_1125x589.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!OCvp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb714eaa-5af8-4073-bbd1-4eed03e24175_1125x589.png" width="1125" height="589" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cb714eaa-5af8-4073-bbd1-4eed03e24175_1125x589.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:589,&quot;width&quot;:1125,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!OCvp!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb714eaa-5af8-4073-bbd1-4eed03e24175_1125x589.png 424w, /__u/substackcdn.com/image/fetch/$s_!OCvp!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb714eaa-5af8-4073-bbd1-4eed03e24175_1125x589.png 848w, /__u/substackcdn.com/image/fetch/$s_!OCvp!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb714eaa-5af8-4073-bbd1-4eed03e24175_1125x589.png 1272w, /__u/substackcdn.com/image/fetch/$s_!OCvp!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb714eaa-5af8-4073-bbd1-4eed03e24175_1125x589.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Scenario 4: New data with inherited SLA</p><p>5. Data is stale, SLA breached &#8212; Over 1 hours has passed since <code>dim_orders</code> last ran, no new data has been received, but models are rebuilt based on inherited SLAs.</p><p>6. Seed file updated &#8212; Seeds always run, behaves as usual.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!U0KL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3547fe48-6aa9-46fe-ac9e-fe34a5079a3d_1125x589.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!U0KL!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3547fe48-6aa9-46fe-ac9e-fe34a5079a3d_1125x589.png 424w, /__u/substackcdn.com/image/fetch/$s_!U0KL!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3547fe48-6aa9-46fe-ac9e-fe34a5079a3d_1125x589.png 848w, /__u/substackcdn.com/image/fetch/$s_!U0KL!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3547fe48-6aa9-46fe-ac9e-fe34a5079a3d_1125x589.png 1272w, /__u/substackcdn.com/image/fetch/$s_!U0KL!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3547fe48-6aa9-46fe-ac9e-fe34a5079a3d_1125x589.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!U0KL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3547fe48-6aa9-46fe-ac9e-fe34a5079a3d_1125x589.png" width="1125" height="589" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3547fe48-6aa9-46fe-ac9e-fe34a5079a3d_1125x589.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:589,&quot;width&quot;:1125,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!U0KL!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3547fe48-6aa9-46fe-ac9e-fe34a5079a3d_1125x589.png 424w, /__u/substackcdn.com/image/fetch/$s_!U0KL!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3547fe48-6aa9-46fe-ac9e-fe34a5079a3d_1125x589.png 848w, /__u/substackcdn.com/image/fetch/$s_!U0KL!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3547fe48-6aa9-46fe-ac9e-fe34a5079a3d_1125x589.png 1272w, /__u/substackcdn.com/image/fetch/$s_!U0KL!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3547fe48-6aa9-46fe-ac9e-fe34a5079a3d_1125x589.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Scenario 5: Stale data but SLA has passed</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!-0Hk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc562f9c-18ea-418a-a804-5a7ce0d6ee3e_1125x589.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!-0Hk!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc562f9c-18ea-418a-a804-5a7ce0d6ee3e_1125x589.png 424w, /__u/substackcdn.com/image/fetch/$s_!-0Hk!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc562f9c-18ea-418a-a804-5a7ce0d6ee3e_1125x589.png 848w, /__u/substackcdn.com/image/fetch/$s_!-0Hk!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc562f9c-18ea-418a-a804-5a7ce0d6ee3e_1125x589.png 1272w, /__u/substackcdn.com/image/fetch/$s_!-0Hk!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc562f9c-18ea-418a-a804-5a7ce0d6ee3e_1125x589.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!-0Hk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc562f9c-18ea-418a-a804-5a7ce0d6ee3e_1125x589.png" width="1125" height="589" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fc562f9c-18ea-418a-a804-5a7ce0d6ee3e_1125x589.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:589,&quot;width&quot;:1125,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!-0Hk!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc562f9c-18ea-418a-a804-5a7ce0d6ee3e_1125x589.png 424w, /__u/substackcdn.com/image/fetch/$s_!-0Hk!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc562f9c-18ea-418a-a804-5a7ce0d6ee3e_1125x589.png 848w, /__u/substackcdn.com/image/fetch/$s_!-0Hk!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc562f9c-18ea-418a-a804-5a7ce0d6ee3e_1125x589.png 1272w, /__u/substackcdn.com/image/fetch/$s_!-0Hk!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc562f9c-18ea-418a-a804-5a7ce0d6ee3e_1125x589.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Scenario 6: Seed file update</p><p>7. Seed file unchanged, <code>final_model</code> outside SLA &#8212; Nothing happened to the seed, but <code>final_model</code> has passed it&#8217;s 1 hour SLA, so is rebuilt.</p><p>8. Seed file updated, <code>final_model</code> inside SLA &#8212; The seed file was changed and rebuilt, but <code>final_model</code> is inside it&#8217;s 1 hour SLA, so is not rebuilt.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!sJP4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29c968ef-6494-4e77-9123-ea8f214524be_1125x589.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!sJP4!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29c968ef-6494-4e77-9123-ea8f214524be_1125x589.png 424w, /__u/substackcdn.com/image/fetch/$s_!sJP4!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29c968ef-6494-4e77-9123-ea8f214524be_1125x589.png 848w, /__u/substackcdn.com/image/fetch/$s_!sJP4!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29c968ef-6494-4e77-9123-ea8f214524be_1125x589.png 1272w, /__u/substackcdn.com/image/fetch/$s_!sJP4!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29c968ef-6494-4e77-9123-ea8f214524be_1125x589.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!sJP4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29c968ef-6494-4e77-9123-ea8f214524be_1125x589.png" width="1125" height="589" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/29c968ef-6494-4e77-9123-ea8f214524be_1125x589.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:589,&quot;width&quot;:1125,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!sJP4!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29c968ef-6494-4e77-9123-ea8f214524be_1125x589.png 424w, /__u/substackcdn.com/image/fetch/$s_!sJP4!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29c968ef-6494-4e77-9123-ea8f214524be_1125x589.png 848w, /__u/substackcdn.com/image/fetch/$s_!sJP4!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29c968ef-6494-4e77-9123-ea8f214524be_1125x589.png 1272w, /__u/substackcdn.com/image/fetch/$s_!sJP4!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29c968ef-6494-4e77-9123-ea8f214524be_1125x589.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Scenario 7: Seed unchanged, final_model outside SLA</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!DO0t!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50908b24-ac78-46b0-a523-aef46d01c886_1125x589.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!DO0t!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50908b24-ac78-46b0-a523-aef46d01c886_1125x589.png 424w, /__u/substackcdn.com/image/fetch/$s_!DO0t!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50908b24-ac78-46b0-a523-aef46d01c886_1125x589.png 848w, /__u/substackcdn.com/image/fetch/$s_!DO0t!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50908b24-ac78-46b0-a523-aef46d01c886_1125x589.png 1272w, /__u/substackcdn.com/image/fetch/$s_!DO0t!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50908b24-ac78-46b0-a523-aef46d01c886_1125x589.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!DO0t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50908b24-ac78-46b0-a523-aef46d01c886_1125x589.png" width="1125" height="589" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/50908b24-ac78-46b0-a523-aef46d01c886_1125x589.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:589,&quot;width&quot;:1125,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!DO0t!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50908b24-ac78-46b0-a523-aef46d01c886_1125x589.png 424w, /__u/substackcdn.com/image/fetch/$s_!DO0t!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50908b24-ac78-46b0-a523-aef46d01c886_1125x589.png 848w, /__u/substackcdn.com/image/fetch/$s_!DO0t!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50908b24-ac78-46b0-a523-aef46d01c886_1125x589.png 1272w, /__u/substackcdn.com/image/fetch/$s_!DO0t!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50908b24-ac78-46b0-a523-aef46d01c886_1125x589.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Scenario 8: Seed changed, final_model inside SLA</p><h2><strong>What about in Slim CI or with state:modified?</strong></h2><p>When running Slim CI or any <code>state:modified</code> style dbt command in Orchestra, you may be wondering how State Aware Orchestration might impact your builds?</p><p>Well, the short answer is, it doesn&#8217;t (mostly).</p><p>For the state comparison, Orchestra will still fetch the actual dbt artifacts from the run you wish to defer to, meaning the state comparison still happens in dbt all the same, and the difference as calculated as usual, so no updates are required here.</p><p>But, what if this is in CI, and we&#8217;re making commits after opening a change request?<br>As above, dbt will still be using the actual <code>manifest.json</code> to determine your changes, but when those are sent to built, Orchestra will compare the models from your branch to those it has a current state for, which will be <strong>those built from the previous commit</strong>, not production tables (as they&#8217;re stored with their full location, i.e. <code>MY_CI_DB.PR_123.TABLE_NAME</code>).</p><p>So, the above scenarios apply again, if the model code has changed, it will be rebuilt, otherwise Orchestra will try to reuse the data asset built in the previous CI run &#8212; there&#8217;s performance gains to be had there too!</p><h2><strong>Configuring it for yourself</strong></h2><p>Orchestra needs a few things from dbt to be able to run state aware orchestration, so let&#8217;s get those configured, this consists of:</p><ul><li><p>Source Freshness (Required)</p></li><li><p>dbt Core Task Setting in Orchestra (Required)</p></li><li><p>Model Build After (Optional)</p></li></ul><h2><strong>Source freshness config (Required)</strong></h2><p>Check-out how to configure <a href="https://www.getorchestra.io/blog/dbt-state-aware-orchestration-dbt-source-freshness">source freshness here</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!-UTL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef135d56-0104-468d-ad33-05849583085f_788x509.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!-UTL!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef135d56-0104-468d-ad33-05849583085f_788x509.png 424w, /__u/substackcdn.com/image/fetch/$s_!-UTL!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef135d56-0104-468d-ad33-05849583085f_788x509.png 848w, /__u/substackcdn.com/image/fetch/$s_!-UTL!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef135d56-0104-468d-ad33-05849583085f_788x509.png 1272w, /__u/substackcdn.com/image/fetch/$s_!-UTL!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef135d56-0104-468d-ad33-05849583085f_788x509.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!-UTL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef135d56-0104-468d-ad33-05849583085f_788x509.png" width="788" height="509" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ef135d56-0104-468d-ad33-05849583085f_788x509.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:509,&quot;width&quot;:788,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!-UTL!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef135d56-0104-468d-ad33-05849583085f_788x509.png 424w, /__u/substackcdn.com/image/fetch/$s_!-UTL!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef135d56-0104-468d-ad33-05849583085f_788x509.png 848w, /__u/substackcdn.com/image/fetch/$s_!-UTL!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef135d56-0104-468d-ad33-05849583085f_788x509.png 1272w, /__u/substackcdn.com/image/fetch/$s_!-UTL!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef135d56-0104-468d-ad33-05849583085f_788x509.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Likely the one you&#8217;ve seen before, or perhaps already have in your dbt project, this lives in your sources YAML under a <code>freshness</code> block, and is used to monitor when your source tables were last updated, compared to your defined expectations.<br>For this, our options are:</p><p><code>loaded_at_field</code> &#8212; the timestamp column dbt inspects.<br>Sits on the table <code>config</code>, not inside the <code>freshness</code> block. Typically a metadata column such as <code>_fivetran_synced</code> for ingestion tooling, or a datetime like <code>created_at</code> or <code>order_date</code> for source-system data.</p><p><code>warn_after</code><strong> / </strong><code>error_after</code> &#8212; tolerances for freshness.<br>Each takes a <code>count</code> and a <code>period</code> (<code>minute</code>, <code>hour</code>, <code>day</code>). Both are optional independently &#8212; you can set just one. Setting only <code>error_after</code> skips the warning and fails immediately once past the threshold.</p><p><code>filter</code> &#8212; a SQL predicate applied before dbt evaluates the max timestamp. Useful for excluding soft-deleted rows that would skew the reading, i.e. <code>filter: _fivetran_deleted = false</code> .</p><p><code>loaded_at_query</code> &#8212; replaces the default freshness check with a fully custom query. Must return a timestamp in the expected format.</p><blockquote><p><em><strong>Metadata-based freshness</strong> &#8212; on Snowflake, Redshift, BigQuery, and Databricks, you can omit </em><code>loaded_at_field</code><em> entirely and let dbt infer freshness from the warehouse&#8217;s own table metadata. Platform-specific caveats apply</em></p></blockquote><p><strong>Full Example</strong></p><p>So, to give a full example of this, we have a Fivetran-managed source syncing every 30 minutes:</p><pre><code>sources:
  - name: my_source
    tables:
      - name: oil_data
        config:
          loaded_at_field: _fivetran_synced
          freshness:
            warn_after: {count: 30, period: minute}
            error_after: {count: 60, period: minute}
            filter: _fivetran_deleted = false</code></pre><p>The thresholds here map directly to the ingestion schedule &#8212; one missed cycle warns, two missed cycles errors.<br>You can adjust these to match the actual SLA of the source: tighter for real-time feeds, looser for daily batch loads.<br>For non-critical sources, configuring only <code>warn_after</code> avoids hard failures.</p><h2><strong>Task setting on dbt Core (Required)</strong></h2><p>Once your dbt project has all the configuration it needs, it&#8217;s time to enable this on your Orchestra pipelines.<br>To do this:</p><ul><li><p>Navigate to a dbt Core Task in Pipeline Edit mode</p></li><li><p>Open the Task Parameters window, and toggle on &#8220;Use state orchestration&#8221;</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!mS21!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c358f36-dcc8-44dc-882c-d707f4f2b9c6_558x152.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!mS21!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c358f36-dcc8-44dc-882c-d707f4f2b9c6_558x152.png 424w, /__u/substackcdn.com/image/fetch/$s_!mS21!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c358f36-dcc8-44dc-882c-d707f4f2b9c6_558x152.png 848w, /__u/substackcdn.com/image/fetch/$s_!mS21!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c358f36-dcc8-44dc-882c-d707f4f2b9c6_558x152.png 1272w, /__u/substackcdn.com/image/fetch/$s_!mS21!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c358f36-dcc8-44dc-882c-d707f4f2b9c6_558x152.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!mS21!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c358f36-dcc8-44dc-882c-d707f4f2b9c6_558x152.png" width="558" height="152" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2c358f36-dcc8-44dc-882c-d707f4f2b9c6_558x152.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:152,&quot;width&quot;:558,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!mS21!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c358f36-dcc8-44dc-882c-d707f4f2b9c6_558x152.png 424w, /__u/substackcdn.com/image/fetch/$s_!mS21!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c358f36-dcc8-44dc-882c-d707f4f2b9c6_558x152.png 848w, /__u/substackcdn.com/image/fetch/$s_!mS21!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c358f36-dcc8-44dc-882c-d707f4f2b9c6_558x152.png 1272w, /__u/substackcdn.com/image/fetch/$s_!mS21!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c358f36-dcc8-44dc-882c-d707f4f2b9c6_558x152.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>As simple as toggling it on, as it should be. <strong>YOU DO NOT NEED TO UPGRADE FROM DBT CORE TO ANOTHER PACKAGE.</strong></p><p>That&#8217;s it!</p><p>Orchestra will now begin monitoring the state of the data assets in this task when the next run kicks off, and from then on, it&#8217;s a case of letting the magic go to work! &#10024;</p><h2><strong>build_after config (Optional)</strong></h2><p><em>To learn more about the build_after config, <a href="https://www.getorchestra.io/blog/dbt-build-after-configurations-reduce-dbt-costs-with-sao">check out this article</a>.</em></p><p>Source freshness covers your ingestion layer, but what about the models further down your DAG?That incremental staging model can run every 30 minutes just fine, but if <code>mart_customers</code> takes 5 minutes to build and the CRM team only pulls it twice a day, rebuilding it on every dbt run is just burning compute for nothing!</p><p><code>build_after</code> lets you define model-level SLAs &#8212; a minimum time that must elapse before dbt considers rebuilding a model.<br>This sits within a model&#8217;s <code>config.freshness</code> block and takes three arguments:</p><p><code>count</code><strong> and </strong><code>period</code> &#8212; the minimum time since the model was last built. <code>period</code> accepts <code>minute</code>, <code>hour</code>, or <code>day</code>.</p><p><code>updates_on</code> &#8212; <code>any</code> or <code>all</code>. Controls whether the model rebuilds when <em>any</em> upstream dependency has new data, or only when <em>all</em> of them do.</p><p>The important thing to understand is that <strong>both conditions must be true simultaneously</strong>: the time window has elapsed <em>and</em> new upstream data is present. If either is false, the model sits tight and the existing table gets reused.<br>Let&#8217;s check out a worked example:</p><pre><code>models:
  - name: stg_customers
    config:
      freshness:
        build_after:
          count: 2
          period: hour
          updates_on: any</code></pre><pre><code>  - name: mart_customers
      config:
        freshness:
          build_after:
            count: 6
            period: hour
            updates_on: all</code></pre><p><code>stg_customers</code> rebuilds after two hours as soon as any upstream has something new.<br><code>mart_customers</code> waits six hours <em>and</em> requires all upstreams to be fresh &#8212; a reasonable trade-off for an expensive full refresh that&#8217;s only consumed a couple of times a day.</p><p><strong>One thing to keep in mind: </strong><code>build_after</code> configs tend to sit towards the right-hand side of the DAG, but they have implications moving left. If <code>mart_customers</code> needs fresh data every six hours, everything upstream of it needs to be feeding it data at least that often &#8212; otherwise the window will arrive with nothing new to process.</p><p>Combined with source freshness, this gives you SLAs at both ends of the pipeline &#8212; the ingestion layer and the model layer &#8212; which is the foundation state-aware orchestration is built on.</p><h2><strong>Managing state in Orchestra</strong></h2><p>Here is how we manage state in Orchestra (<a href="https://docs.getorchestra.io/docs/guides/dbt-core-state-management/guide">docs</a>).</p><p>Once state orchestration has been enabled on a task within a workspace, Orchestra will begin tracking the data assets as they&#8217;re built.</p><p>Mostly, this is going to be for dbt&#8217;s benefit, but sometimes we may want to peek behind the curtain and see what&#8217;s going on.</p><h2><strong>The Orchestra State</strong></h2><blockquote><p><em>Orchestra manages this state at the Workspace level</em></p></blockquote><p>In each workspace, Orchestra stores a minimal state of when each asset was last updated, where each asset is represented by its qualified location, i.e. database.schema.table, in most cases, like below.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!8TdO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71bd3e25-e470-4bb7-95fc-4b53b4ca5745_788x142.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!8TdO!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71bd3e25-e470-4bb7-95fc-4b53b4ca5745_788x142.png 424w, /__u/substackcdn.com/image/fetch/$s_!8TdO!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71bd3e25-e470-4bb7-95fc-4b53b4ca5745_788x142.png 848w, /__u/substackcdn.com/image/fetch/$s_!8TdO!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71bd3e25-e470-4bb7-95fc-4b53b4ca5745_788x142.png 1272w, /__u/substackcdn.com/image/fetch/$s_!8TdO!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71bd3e25-e470-4bb7-95fc-4b53b4ca5745_788x142.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!8TdO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71bd3e25-e470-4bb7-95fc-4b53b4ca5745_788x142.png" width="788" height="142" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/71bd3e25-e470-4bb7-95fc-4b53b4ca5745_788x142.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:142,&quot;width&quot;:788,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!8TdO!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71bd3e25-e470-4bb7-95fc-4b53b4ca5745_788x142.png 424w, /__u/substackcdn.com/image/fetch/$s_!8TdO!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71bd3e25-e470-4bb7-95fc-4b53b4ca5745_788x142.png 848w, /__u/substackcdn.com/image/fetch/$s_!8TdO!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71bd3e25-e470-4bb7-95fc-4b53b4ca5745_788x142.png 1272w, /__u/substackcdn.com/image/fetch/$s_!8TdO!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71bd3e25-e470-4bb7-95fc-4b53b4ca5745_788x142.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Last update times of &#8220;model&#8221; in production and staging</p><p>This allows the different dbt pipelines in the same workspace to have a unified understanding of the state of a dbt model, so Pipeline A won&#8217;t try and update a model Pipeline B finished 2 minutes ago, unless specified.</p><h2><strong>Resetting State</strong></h2><p>But what if we want to do the equivalent of a &#8220;full refresh&#8221;?</p><p>Well, we&#8217;d either need to get Orchestra to ignore the state, or delete the state itself, which is as follows:</p><ol><li><p>Navigate to <a href="https://app.getorchestra.io/settings/workspace/state-management">State Management</a> in Orchestra, via <strong>Settings &gt; Workspace &gt; Asset management</strong><br>Here, you can see how many models are currently being tracked.</p></li><li><p>To reset state, click the <strong>Purge state</strong> button. The next run will rebuild all models.</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!-5Cc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac3a758a-cace-434d-9ef1-f8423cd97262_788x233.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!-5Cc!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac3a758a-cace-434d-9ef1-f8423cd97262_788x233.png 424w, /__u/substackcdn.com/image/fetch/$s_!-5Cc!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac3a758a-cace-434d-9ef1-f8423cd97262_788x233.png 848w, /__u/substackcdn.com/image/fetch/$s_!-5Cc!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac3a758a-cace-434d-9ef1-f8423cd97262_788x233.png 1272w, /__u/substackcdn.com/image/fetch/$s_!-5Cc!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac3a758a-cace-434d-9ef1-f8423cd97262_788x233.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!-5Cc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac3a758a-cace-434d-9ef1-f8423cd97262_788x233.png" width="788" height="233" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ac3a758a-cace-434d-9ef1-f8423cd97262_788x233.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:233,&quot;width&quot;:788,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!-5Cc!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac3a758a-cace-434d-9ef1-f8423cd97262_788x233.png 424w, /__u/substackcdn.com/image/fetch/$s_!-5Cc!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac3a758a-cace-434d-9ef1-f8423cd97262_788x233.png 848w, /__u/substackcdn.com/image/fetch/$s_!-5Cc!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac3a758a-cace-434d-9ef1-f8423cd97262_788x233.png 1272w, /__u/substackcdn.com/image/fetch/$s_!-5Cc!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac3a758a-cace-434d-9ef1-f8423cd97262_788x233.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Purging dbt state for a workspace</p><p>After doing this, any dbt pipelines in the workspace will begin rebuilding all of their models from scratch on the next run.<br>If this was just for one dbt pipeline in the workspace, it would be equivalent to running with <code>--full-refresh</code> .</p><h2><strong>Exploring dbt Metadata</strong></h2><p>Orchestra Assets already contains information from monitoring all your data assets, and state aware orchestration enriches that with further details about the asset state.</p><ol><li><p>Navigate to <a href="https://app.getorchestra.io/assets">Assets</a> in Orchestra</p></li><li><p>Search for one a model, i.e. <code>dim_orders</code></p></li></ol><p>Which will lead to 2 tabs containing rich details about the asset, as in the display below.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!ti1s!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf13edf6-0ba8-4309-9bad-6a233e15862a_788x180.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!ti1s!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf13edf6-0ba8-4309-9bad-6a233e15862a_788x180.png 424w, /__u/substackcdn.com/image/fetch/$s_!ti1s!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf13edf6-0ba8-4309-9bad-6a233e15862a_788x180.png 848w, /__u/substackcdn.com/image/fetch/$s_!ti1s!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf13edf6-0ba8-4309-9bad-6a233e15862a_788x180.png 1272w, /__u/substackcdn.com/image/fetch/$s_!ti1s!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf13edf6-0ba8-4309-9bad-6a233e15862a_788x180.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!ti1s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf13edf6-0ba8-4309-9bad-6a233e15862a_788x180.png" width="788" height="180" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/df13edf6-0ba8-4309-9bad-6a233e15862a_788x180.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:180,&quot;width&quot;:788,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!ti1s!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf13edf6-0ba8-4309-9bad-6a233e15862a_788x180.png 424w, /__u/substackcdn.com/image/fetch/$s_!ti1s!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf13edf6-0ba8-4309-9bad-6a233e15862a_788x180.png 848w, /__u/substackcdn.com/image/fetch/$s_!ti1s!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf13edf6-0ba8-4309-9bad-6a233e15862a_788x180.png 1272w, /__u/substackcdn.com/image/fetch/$s_!ti1s!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf13edf6-0ba8-4309-9bad-6a233e15862a_788x180.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Summary data for a table in a state aware dbt pipeline</p><p><strong>Metrics</strong> tab &#8212; Analytics related to this asset, and the latest operations and pipeline runs linked to it, useful for quickly seeing when and how an asset was last materialised</p><p><strong>Configuration</strong> tab &#8212; dbt-specific configuration collected for this asset, such as its freshness configuration, SQL, and associated tests</p><h3><strong>Extra Debug Logs</strong></h3><p>Sometimes it&#8217;s more useful to inspect a particular job or run, for this it&#8217;s possible to enable additional logging for debugging.</p><p>Enabling this is simple, just update your dbt task to run with the <strong>environment variable </strong><code>ORCHESTRA_DBT_DEBUG=true</code> .</p><h3><strong>Monitoring the impact of state-aware orchestration</strong></h3><p>The impact of state-aware Orchestration can be put into three buckets.</p><ol><li><p>Fresher Data</p></li><li><p>Saved costs</p></li><li><p>Saved time</p></li></ol><p>Let&#8217;s deal with these in turn.</p><h2><strong>Saved Time</strong></h2><h3><strong>Before State-Aware Orchestration</strong></h3><p>Let&#8217;s suppose you have a small dbt project that starts out as a single dbt build once a day.</p><p>Over time this turns into a thousand model behemoth with dozens of different tags. Taking an example below, if you want to change the schedule for the DEALS_DAILY_ATTIO table you will need to edit two schema.yml files and 5 models.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!G9Xf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff53bf276-977d-4aca-ba02-a0598fb0aff5_1654x689.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!G9Xf!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff53bf276-977d-4aca-ba02-a0598fb0aff5_1654x689.png 424w, /__u/substackcdn.com/image/fetch/$s_!G9Xf!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff53bf276-977d-4aca-ba02-a0598fb0aff5_1654x689.png 848w, /__u/substackcdn.com/image/fetch/$s_!G9Xf!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff53bf276-977d-4aca-ba02-a0598fb0aff5_1654x689.png 1272w, /__u/substackcdn.com/image/fetch/$s_!G9Xf!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff53bf276-977d-4aca-ba02-a0598fb0aff5_1654x689.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!G9Xf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff53bf276-977d-4aca-ba02-a0598fb0aff5_1654x689.png" width="1456" height="607" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f53bf276-977d-4aca-ba02-a0598fb0aff5_1654x689.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:607,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!G9Xf!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff53bf276-977d-4aca-ba02-a0598fb0aff5_1654x689.png 424w, /__u/substackcdn.com/image/fetch/$s_!G9Xf!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff53bf276-977d-4aca-ba02-a0598fb0aff5_1654x689.png 848w, /__u/substackcdn.com/image/fetch/$s_!G9Xf!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff53bf276-977d-4aca-ba02-a0598fb0aff5_1654x689.png 1272w, /__u/substackcdn.com/image/fetch/$s_!G9Xf!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff53bf276-977d-4aca-ba02-a0598fb0aff5_1654x689.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">State-aware orchestration</figcaption></figure></div><h3><strong>After State-Aware Orchestration</strong></h3><p>With State-Aware Orchestration in Orchestra, you only need to be make one code change.</p><pre><code>sources:
  - name: raw
    schema: raw
    tables:
      - name: src_orders
        config:
          freshness:
            warn_after: { count: 24, period: hour }
          loaded_at_field: order_date
      - name: src_customers</code></pre><pre><code>sources:
  - name: raw
    schema: raw
    tables:
      - name: src_orders
        config:
          freshness:
            warn_after: { count: 24, period: hour }
          loaded_at_query: &#8220;select max(order_date) from table where order_date &gt; dateadd(DAY, -7, current_date())&#8221;
      - name: src_customers</code></pre><p>You should evaluate how long your team spends tweaking schedules and orchestrating dbt and assign a value to it.</p><h2><strong>Fresher Data</strong></h2><p><strong>Before State-Aware Orchestration</strong></p><p>dbt runs on separate schedules; some processes run daily and some may run hourly. This means that if anything lands in between the fifteen minute and hourly runs, data gets stale. If an hourly process fails, stakeholders need to wait another hour to get data.</p><p>After State-Aware Orchestration</p><p>dbt runs every fifteen minutes or perhaps even more frequently at a <strong>scheduling frequency</strong>. The data is processed as soon as it arrives. Transformations take time; each model has a <strong>processing duration </strong>(the time it takes to process the model). This means that the freshness lag equals the scheduling frequency + processing duration, greatly simplifying the formula for data freshness.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!VtOe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce0df7b2-6c2d-4e39-82e1-014364951729_788x412.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!VtOe!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce0df7b2-6c2d-4e39-82e1-014364951729_788x412.png 424w, /__u/substackcdn.com/image/fetch/$s_!VtOe!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce0df7b2-6c2d-4e39-82e1-014364951729_788x412.png 848w, /__u/substackcdn.com/image/fetch/$s_!VtOe!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce0df7b2-6c2d-4e39-82e1-014364951729_788x412.png 1272w, /__u/substackcdn.com/image/fetch/$s_!VtOe!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce0df7b2-6c2d-4e39-82e1-014364951729_788x412.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!VtOe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce0df7b2-6c2d-4e39-82e1-014364951729_788x412.png" width="788" height="412" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ce0df7b2-6c2d-4e39-82e1-014364951729_788x412.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:412,&quot;width&quot;:788,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!VtOe!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce0df7b2-6c2d-4e39-82e1-014364951729_788x412.png 424w, /__u/substackcdn.com/image/fetch/$s_!VtOe!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce0df7b2-6c2d-4e39-82e1-014364951729_788x412.png 848w, /__u/substackcdn.com/image/fetch/$s_!VtOe!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce0df7b2-6c2d-4e39-82e1-014364951729_788x412.png 1272w, /__u/substackcdn.com/image/fetch/$s_!VtOe!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce0df7b2-6c2d-4e39-82e1-014364951729_788x412.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>How Orchestra and Estuary make activation faster</p><p>In the example above, we can see that different data feeds from a real-time streaming too like Estuary result in data landing in a data warehouse environment. Rather than scheduling separate dbt jobs, dbt simply runs on a regular cadence, processing data as it arrives.</p><p>You should evaluate the benefits of fresher and more reliable data, as well as the potential gains to <em>stakeholder trust </em>from implementing SAO.</p><h2><strong>Reduced cost</strong></h2><p>We save the best until last! With Orchestra SAO, you can reduce data warehouse costs substantially in the correct conditions.</p><p>Best Case Scenario: many unused sources, many schedules, minimal SLAs.</p><p>Before State-Aware Orchestration, the company runs everything hourly. This results in 1,000 model builds an hour an 24,000 builds a day.</p><p><strong>Minimal SLAs</strong>: It turns out that key models only need to be run daily. Build_after configurations are added to models. This reduces the number of hourly models from 1000 to 500.</p><p><strong>Many schedules</strong>: data lands in the day at different times. By running everything hourly, everything gets picked up, but models are run unnecessarily. By moving to SAO, an additional 100 models are skipped in every hourly run.</p><p><strong>Unused sources</strong>: it turns out that there are many sources that are not updated. These relate to an incremental 200 additional models every hour.</p><p><strong>Result</strong>: the hourly job remains, but only 200 models run each time. Once a day, there is a a run of 500 models. This results in 23*200 + 500 = 5,100 model runs vs. 24,000 previously. Assuming an even distribution of models and serverless compute under-the-hood, this will reduce costs by over 75%</p><p>Worst Case Scenario: regular, reliable, infrequent data</p><p>Before SAO, data lands daily and regularly. It is reliable and almost never breaks. A single dbt build is run once a day, and it rarely fails. There are no plans to change the structuring or scheduling of dbt jobs.</p><p>After SAO, this will remain broadly the same. Adding in build_after configurations is unlikely to impact an already-infrequently running pipeline. Data is always fresh when it is processed, so this aspect does not change either.</p><p>However, what SAO opens up is the <em>possibility </em>of going faster. What would the Data Function be able to do if they didn&#8217;t <em>need </em>to promise only daily data? What if they could promise more or less real-time data?</p><h2><strong>How to find the reduced cost using the Metadata API</strong></h2><p>Using the <a href="https://docs.getorchestra.io/docs/api">Orchestra Metadata API</a>, we can fetch and analyse the improvements in both the duration of tasks and warehouse cost savings. To get started, review our <a href="https://github.com/orchestra-hq/orchestra-blueprints/tree/main/analytics/warehouse_savings">&#8216;blueprints&#8217; GitHub repository</a>, and follow the instructions in the README provided.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!Q1NB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff098b177-5788-4266-8760-9b6395c1acf4_1125x750.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!Q1NB!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff098b177-5788-4266-8760-9b6395c1acf4_1125x750.png 424w, /__u/substackcdn.com/image/fetch/$s_!Q1NB!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff098b177-5788-4266-8760-9b6395c1acf4_1125x750.png 848w, /__u/substackcdn.com/image/fetch/$s_!Q1NB!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff098b177-5788-4266-8760-9b6395c1acf4_1125x750.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Q1NB!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff098b177-5788-4266-8760-9b6395c1acf4_1125x750.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!Q1NB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff098b177-5788-4266-8760-9b6395c1acf4_1125x750.png" width="1125" height="750" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f098b177-5788-4266-8760-9b6395c1acf4_1125x750.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:750,&quot;width&quot;:1125,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!Q1NB!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff098b177-5788-4266-8760-9b6395c1acf4_1125x750.png 424w, /__u/substackcdn.com/image/fetch/$s_!Q1NB!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff098b177-5788-4266-8760-9b6395c1acf4_1125x750.png 848w, /__u/substackcdn.com/image/fetch/$s_!Q1NB!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff098b177-5788-4266-8760-9b6395c1acf4_1125x750.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Q1NB!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff098b177-5788-4266-8760-9b6395c1acf4_1125x750.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Reductions in cost from Orchestra SAO</p><h2><strong>Next Steps for SAO</strong></h2><p>Congratulations! You&#8217;ve completed our guide on SAO. You learned:</p><ul><li><p>What is State-Aware Orchestration and what does it do?</p></li><li><p>Why State-Aware Orchestration matters for data teams</p></li><li><p>How dbt State-Aware Orchestration works</p></li><li><p>How to configure dbt State-Aware Orchestration locally</p></li><li><p>How to configure dbt State-Aware Orchestration in Orchestra</p></li><li><p>Managing state in Orchestra</p></li><li><p>Monitoring the impact of State-Aware Orchestration</p></li></ul><p>In terms of helpful resources, we recommend getting started with what&#8217;s below:</p><ul><li><p><a href="https://app.getorchestra.io/signup">Create a Free Account with SAO Now</a> &#11088;&#65039;</p></li><li><p><a href="https://docs.getorchestra.io/">Read the Documentation</a> &#128218;</p></li><li><p><a href="https://www.linkedin.com/company/orchestra-go/?viewAsMember=true">Follow us on Linkedin</a> &#128116;</p></li></ul><p>We can&#8217;t wait to see what you build!</p><p><strong>Orchestra Team</strong></p>]]></content:encoded></item><item><title><![CDATA[Announcing Orchestra State-Aware Orchestration for dbt Core™]]></title><description><![CDATA[state management is going mainstream]]></description><link>https://dataopsleadership.substack.com/p/announcing-orchestra-state-aware</link><guid isPermaLink="false">https://dataopsleadership.substack.com/p/announcing-orchestra-state-aware</guid><dc:creator><![CDATA[Hugo Lu]]></dc:creator><pubDate>Wed, 29 Apr 2026 12:55:55 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!_OtL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F268585fb-c553-4504-bdb7-430729bbc833_1200x675.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Very excited about this feature. state management makes it so much easier to run dbt. It opens up some incredible data architecture patterns where you can still get full lineage without needing to necessarily couple everything end to end. Super cool feature and awesome to build this from the ground-up around my favourite OS Package - dbt Core.</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!_OtL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F268585fb-c553-4504-bdb7-430729bbc833_1200x675.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!_OtL!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F268585fb-c553-4504-bdb7-430729bbc833_1200x675.png 424w, /__u/substackcdn.com/image/fetch/$s_!_OtL!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F268585fb-c553-4504-bdb7-430729bbc833_1200x675.png 848w, /__u/substackcdn.com/image/fetch/$s_!_OtL!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F268585fb-c553-4504-bdb7-430729bbc833_1200x675.png 1272w, /__u/substackcdn.com/image/fetch/$s_!_OtL!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F268585fb-c553-4504-bdb7-430729bbc833_1200x675.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!_OtL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F268585fb-c553-4504-bdb7-430729bbc833_1200x675.png" width="1200" height="675" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/268585fb-c553-4504-bdb7-430729bbc833_1200x675.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:675,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:282225,&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://dataopsleadership.substack.com/i/195846835?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F268585fb-c553-4504-bdb7-430729bbc833_1200x675.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!_OtL!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F268585fb-c553-4504-bdb7-430729bbc833_1200x675.png 424w, /__u/substackcdn.com/image/fetch/$s_!_OtL!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F268585fb-c553-4504-bdb7-430729bbc833_1200x675.png 848w, /__u/substackcdn.com/image/fetch/$s_!_OtL!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F268585fb-c553-4504-bdb7-430729bbc833_1200x675.png 1272w, /__u/substackcdn.com/image/fetch/$s_!_OtL!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F268585fb-c553-4504-bdb7-430729bbc833_1200x675.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>Introduction</strong></h2><p>Today we&#8217;re excited to announce the official launch of State-Aware Orchestration (&#8220;SAO&#8221;) in <a href="https://getorchestra.io/">Orchestra</a>.</p><p>SAO is an Orchestra-managed python package built for dbt Core&#8482; that allows users to store and use the state of models. This helps to orchestrate dbt Core&#8482; more intelligently and only run models when certain conditions are met.</p><p>With Orchestra SAO, Orchestra users can:</p><ul><li><p><strong>Save cost and speed-up runs</strong>: the state of dbt models is stored using <code>source_freshness</code> checks which means models are skipped if there is no new data and no code has changed</p></li><li><p><strong>Stop wasting time tagging models</strong>: adding <code>build_after</code> configurations allow for declarative scheduling. There is no need to manual tagging</p></li><li><p><strong>Move to real-time</strong>: dbt state-aware can run every 10 or 5 minutes, enabling close-to-realtime patterns with leading ELT tools like <a href="https://www.getorchestra.io/technology/estuary">Estuary</a></p></li></ul><p>Users of dbt do not need to upgrade to a proprietary engine. Orchestra leverages the Sao Paolo repo. Simply enable Orchestra SAO with one line of code:</p><p></p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;fa83b2f5-be65-45a7-bce5-22ba4d06a5ed&quot;,&quot;duration&quot;:null}"></div><pre><code>tasks:
      execute_dbt:
        integration: DBT_CORE
        integration_job: DBT_CORE_EXECUTE
        parameters:
          commands: dbt  build
          package_manager: PIP
          python_version: &#8216;3.12&#8217;
          use_state_orchestration: true // &lt;-- this line
.
.
.</code></pre><p>Some of the biggest and most advanced data teams are already leveraging State-Aware Orchestra in Orchesta. <a href="https://www.experian.co.uk/">Experian</a> use Orchestra State-Aware Orchestration to power dozens of analysts across multiple domains, to easily build SQL models powering marketing analytics.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!GnnE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F497ed067-7f7a-4160-a725-41bdb4f579c6_788x418.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!GnnE!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F497ed067-7f7a-4160-a725-41bdb4f579c6_788x418.png 424w, /__u/substackcdn.com/image/fetch/$s_!GnnE!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F497ed067-7f7a-4160-a725-41bdb4f579c6_788x418.png 848w, /__u/substackcdn.com/image/fetch/$s_!GnnE!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F497ed067-7f7a-4160-a725-41bdb4f579c6_788x418.png 1272w, /__u/substackcdn.com/image/fetch/$s_!GnnE!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F497ed067-7f7a-4160-a725-41bdb4f579c6_788x418.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!GnnE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F497ed067-7f7a-4160-a725-41bdb4f579c6_788x418.png" width="788" height="418" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/497ed067-7f7a-4160-a725-41bdb4f579c6_788x418.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:418,&quot;width&quot;:788,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!GnnE!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F497ed067-7f7a-4160-a725-41bdb4f579c6_788x418.png 424w, /__u/substackcdn.com/image/fetch/$s_!GnnE!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F497ed067-7f7a-4160-a725-41bdb4f579c6_788x418.png 848w, /__u/substackcdn.com/image/fetch/$s_!GnnE!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F497ed067-7f7a-4160-a725-41bdb4f579c6_788x418.png 1272w, /__u/substackcdn.com/image/fetch/$s_!GnnE!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F497ed067-7f7a-4160-a725-41bdb4f579c6_788x418.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The largest energy provider in the UK, <a href="https://octopus.energy/">Octopus Energy</a>, used to maintain a custom fork of Airflow 2.0. Rather than spend resources upgrading to 3.0 and training their 10+ business units to learn an antiquated python framework, they leverage Orchestra SAO on Databricks to easily power a multi-tenanted project with over 5,000 dbt models.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!mvFd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b6e9df9-f6cf-4c08-a4b9-ed5fe3e68403_3377x1926.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!mvFd!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b6e9df9-f6cf-4c08-a4b9-ed5fe3e68403_3377x1926.png 424w, /__u/substackcdn.com/image/fetch/$s_!mvFd!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b6e9df9-f6cf-4c08-a4b9-ed5fe3e68403_3377x1926.png 848w, /__u/substackcdn.com/image/fetch/$s_!mvFd!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b6e9df9-f6cf-4c08-a4b9-ed5fe3e68403_3377x1926.png 1272w, /__u/substackcdn.com/image/fetch/$s_!mvFd!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b6e9df9-f6cf-4c08-a4b9-ed5fe3e68403_3377x1926.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!mvFd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b6e9df9-f6cf-4c08-a4b9-ed5fe3e68403_3377x1926.png" width="1456" height="830" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5b6e9df9-f6cf-4c08-a4b9-ed5fe3e68403_3377x1926.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:830,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!mvFd!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b6e9df9-f6cf-4c08-a4b9-ed5fe3e68403_3377x1926.png 424w, /__u/substackcdn.com/image/fetch/$s_!mvFd!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b6e9df9-f6cf-4c08-a4b9-ed5fe3e68403_3377x1926.png 848w, /__u/substackcdn.com/image/fetch/$s_!mvFd!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b6e9df9-f6cf-4c08-a4b9-ed5fe3e68403_3377x1926.png 1272w, /__u/substackcdn.com/image/fetch/$s_!mvFd!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b6e9df9-f6cf-4c08-a4b9-ed5fe3e68403_3377x1926.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Running dbt SAO in Orchestra</figcaption></figure></div><p>We can&#8217;t wait to see what you build! To learn more, check-out the resources below. While SAO is GA, we need to turn it on for you. So if you want to try it, message us at support@getorchestra.io.</p><p><strong>Video Resources</strong></p><p>&#128218; <a href="https://docs.getorchestra.io/docs/guides/dbt-core-state-management/tutorial">Docs</a></p><p>&#128640; <a href="https://app.getorchestra.io/signup">Try State-Aware Orchestration</a></p><p>&#11088;&#65039; <a href="https://getorchestra.io/">Learn more about Orchestra</a></p><p><strong>Awesome Blogs</strong></p><ul><li><p>Configuring dbt Source Freshness (read <a href="https://www.getorchestra.io/blog/dbt-state-aware-orchestration-dbt-source-freshness">here</a>)</p></li><li><p>Configuring the <code>build_after</code> configurations (read <a href="https://www.getorchestra.io/blog/dbt-build-after-configurations-reduce-dbt-costs-with-sao">here</a>)</p></li></ul><h2><strong>The Problem with dbt</strong></h2><p>I remember my first <code>dbt run</code> I really do. It was a magical thing. Within the week I had alread submitted multiple queries with multiple union statements and cost the analytics team $1053.21 dollars in bigquery &#8212; which I was swiftly reprimanded for.</p><p>You see, the Problem with dbt is that it is <em>too good. </em>It makes things <em>too easy. </em>Indeed, &#8220;dbt spaghetti&#8221; is a common term used to describe the lineage people see.</p><p>I used to believe this was down to poor domain design, and poor organisational practices. However, as I have started working more and more with fast-moving organisations at scale &#8212; I have realised many of these things can sometimes be inevitable.</p><p>Therefore, dbt SAO in Orchestra is a way to solve many problems at once.</p><h3><strong>The Problem with dbt Project Growth</strong></h3><p>dbt Project GRowth becomes complicated as organisations grow:</p><ul><li><p><strong>SAAS migrations</strong>: when organisations change SAAS tools like CRMs, Analytics Folks need to remember to remove and turn off old models</p></li><li><p><strong>First versions</strong>: when Data Teams are building the first versions of data products, models may swiftly become out of date as requirements change quickly. Old models get deprecated</p></li><li><p><strong>High turnover</strong>: companies may turn over staff quickly, leading to a lack of documentation and scheduling awareness of dbt models</p></li></ul><p>This means that keeping track of models that need to run and models that don&#8217;t.</p><h3><strong>The Problem with dbt Scheduling</strong></h3><p>As dbt projects get larger, people have different data needs. For example yu may run dbt on three schedules</p><ul><li><p>Business Critical: <code>dbt run --select models tag:fifteen_minutes</code></p></li><li><p>Important: <code>dbt run --select models tag:hourly</code></p></li><li><p>Daily: <code>dbt run --select models tag:daily</code></p></li></ul><p>This becomes difficult to maintain. What if someone adds a new model that should be daily? What if it changes to Every fifteen minutes? You must remember to change the schema.yml files for all upstream dependencies and manually add those. This is arduous, time-consuming and annoying</p><h3><strong>The Problem with dbt cost</strong></h3><p>What happens if you do not have well-architected, reliable pipelines? Data sometimes arrives, but sometimes it doesn&#8217;t. dbt is not aware of whether or not data has arrived.</p><p>While <a href="https://www.getorchestra.io/product/orchestration">end-to-end Orchestration</a> solves some of this problem (Orchestra only triggers dbt if all upstream processes succeed) it may not be suitable for larger organisations with multiple teams.</p><p>For example, what if the Data Engineering Team look after landing data, while the Analytics Team look after it in the warehouse? What if there is a failure?</p><p>The result is many models are re-run despite there being no new data. This makes projects run slower, and become more expensive</p><h2><strong>The solution: dbt State-Aware Orchestration in Orchestra</strong></h2><p>Orchestra&#8217;s dbt Core&#8482; integration allows users to store the state of models from their DAGs, allowing for more optimised runs that avoid rebuilding models that have no upstream changes.</p><p>This is very useful for large workflows, and for organisations where additional configuration can be added to generate further warehouse cost savings.A standard dbt Core&#8482; run will not take into account the last time upstream data was refreshed, or when the models were last built.</p><p>This means that if a model has not changed, and the upstream data is stale, it will be rebuilt unnecessarily.<a href="https://docs.getorchestra.io/docs/guides/dbt-core-state-management/guide#features">&#8203;</a></p><h3><strong>Features</strong></h3><ul><li><p>Orchestra dbt Core&#8482; runs will load in the previous known state of models in the DAG.</p></li><li><p>Users can <a href="https://docs.getorchestra.io/docs/guides/dbt-core-state-management/tutorial#models">define &#8216;freshness&#8217; configurations on models</a>, and have them propagated to parent models.</p></li><li><p>Orchestra will only rebuild models that have been edited since the last run, or have fresh upstream data (respecting any additional configuration in the model defined by the user).</p></li><li><p>Models that are reused will be clearly highlighted in the resulting lineage view, in the logs, and in the analytics pages.</p></li><li><p>The state will be updated after the dbt Core&#8482; run has successfully completed. This state can be reset by users if required via the Orchestra UI. Only models built successfully will be updated.</p></li><li><p>State is managed at the Orchestra workspace level. For details on how state is stored and managed, see <a href="https://docs.getorchestra.io/docs/guides/dbt-core-state-management/guide#how-state-is-stored">How state is stored</a>.<a href="https://docs.getorchestra.io/docs/guides/dbt-core-state-management/guide#how-state-is-fetched">&#8203;</a></p></li></ul><h2><strong>How state is fetched</strong></h2><p>Stateful reuse uses dbt source freshness results. When a source defines <code>loaded_at_field</code> or <code>loaded_at_query</code>, dbt&#8217;s normal freshness logic runs on every adapter Orchestra supports through dbt Core&#8482;.When both are omitted, Orchestra can still run adapter-specific SQL to infer <code>max_loaded_at</code> for some warehouses. Only the adapters below register that path today.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!pkL1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff05d89cc-f8fe-486e-9904-1246edebad5d_788x505.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!pkL1!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff05d89cc-f8fe-486e-9904-1246edebad5d_788x505.png 424w, /__u/substackcdn.com/image/fetch/$s_!pkL1!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff05d89cc-f8fe-486e-9904-1246edebad5d_788x505.png 848w, /__u/substackcdn.com/image/fetch/$s_!pkL1!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff05d89cc-f8fe-486e-9904-1246edebad5d_788x505.png 1272w, /__u/substackcdn.com/image/fetch/$s_!pkL1!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff05d89cc-f8fe-486e-9904-1246edebad5d_788x505.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!pkL1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff05d89cc-f8fe-486e-9904-1246edebad5d_788x505.png" width="788" height="505" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f05d89cc-f8fe-486e-9904-1246edebad5d_788x505.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:505,&quot;width&quot;:788,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!pkL1!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff05d89cc-f8fe-486e-9904-1246edebad5d_788x505.png 424w, /__u/substackcdn.com/image/fetch/$s_!pkL1!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff05d89cc-f8fe-486e-9904-1246edebad5d_788x505.png 848w, /__u/substackcdn.com/image/fetch/$s_!pkL1!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff05d89cc-f8fe-486e-9904-1246edebad5d_788x505.png 1272w, /__u/substackcdn.com/image/fetch/$s_!pkL1!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff05d89cc-f8fe-486e-9904-1246edebad5d_788x505.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Warehouse Adapters</p><p>For adapters without a registered fallback, if both <code>loaded_at</code> settings are missing, Orchestra follows dbt&#8217;s <code>FreshnessRunner</code> behavior (which may surface as warnings or a non-actionable result depending on dbt and the warehouse).State is fetched for the entire project on every run to keep the state cache fresh.<a href="https://docs.getorchestra.io/docs/guides/dbt-core-state-management/guide#how-state-is-stored">&#8203;</a></p><h2><strong>How state is stored</strong></h2><p>State is managed at the Orchestra workspace level &#8212; a single state store is shared across all pipelines and dbt Core&#8482; tasks within a workspace. This means that if the same model is built by multiple pipelines in the same workspace, they all read from and write to the same state.Within that store, state is tracked at the asset level, using the fully-qualified name of each materialised model. For example:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!sCSS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94c12024-166a-4ee3-9d26-4a1d2b99dd77_788x135.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!sCSS!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94c12024-166a-4ee3-9d26-4a1d2b99dd77_788x135.png 424w, /__u/substackcdn.com/image/fetch/$s_!sCSS!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94c12024-166a-4ee3-9d26-4a1d2b99dd77_788x135.png 848w, /__u/substackcdn.com/image/fetch/$s_!sCSS!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94c12024-166a-4ee3-9d26-4a1d2b99dd77_788x135.png 1272w, /__u/substackcdn.com/image/fetch/$s_!sCSS!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94c12024-166a-4ee3-9d26-4a1d2b99dd77_788x135.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!sCSS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94c12024-166a-4ee3-9d26-4a1d2b99dd77_788x135.png" width="788" height="135" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/94c12024-166a-4ee3-9d26-4a1d2b99dd77_788x135.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:135,&quot;width&quot;:788,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!sCSS!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94c12024-166a-4ee3-9d26-4a1d2b99dd77_788x135.png 424w, /__u/substackcdn.com/image/fetch/$s_!sCSS!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94c12024-166a-4ee3-9d26-4a1d2b99dd77_788x135.png 848w, /__u/substackcdn.com/image/fetch/$s_!sCSS!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94c12024-166a-4ee3-9d26-4a1d2b99dd77_788x135.png 1272w, /__u/substackcdn.com/image/fetch/$s_!sCSS!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94c12024-166a-4ee3-9d26-4a1d2b99dd77_788x135.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>An example ofthe State Table</p><p>Two tasks writing to different databases or schemas are tracked independently, even if they build the same dbt models. This is how Orchestra distinguishes between environments.</p><p>Tables should not be shared across environmentsBecause state is keyed by fully-qualified table name, each environment must write to its own distinct tables. If a production and a staging task both materialise models to the same database and schema (e.g. both writing to <code>db.schema.model</code>), they share a single state entry &#8212; and a run in one environment could incorrectly skip a rebuild in the other.<a href="https://docs.getorchestra.io/docs/guides/dbt-core-state-management/guide#example">&#8203;</a></p><h2><strong>Orchestra State-Aware Orchestration Example</strong></h2><p>Consider the DAG below with the following items:</p><ul><li><p>sources: <code>orders</code> and <code>customers</code>.</p></li><li><p>seeds: <code>locations</code>.</p></li><li><p>models: <code>stg_orders</code>, <code>stg_customers</code>, <code>dim_orders</code>, and <code>final_model</code>. There are some linked tests on selected models.</p></li><li><p>snapshots: <code>snapshot_x</code>.</p></li></ul><p>On a standard dbt Core&#8482; run, all of the nodes will run as usual. Once state management is enabled for the task, it is possible to begin reusing models. Currently, seeds, snapshots, and tests will always run regardless of any upstream changes. The graph below shows some example configs attached to the models.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!WXQr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa30cfaad-08dd-4561-89e3-aef90670a1c2_641x321.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!WXQr!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa30cfaad-08dd-4561-89e3-aef90670a1c2_641x321.png 424w, /__u/substackcdn.com/image/fetch/$s_!WXQr!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa30cfaad-08dd-4561-89e3-aef90670a1c2_641x321.png 848w, /__u/substackcdn.com/image/fetch/$s_!WXQr!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa30cfaad-08dd-4561-89e3-aef90670a1c2_641x321.png 1272w, /__u/substackcdn.com/image/fetch/$s_!WXQr!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa30cfaad-08dd-4561-89e3-aef90670a1c2_641x321.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!WXQr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa30cfaad-08dd-4561-89e3-aef90670a1c2_641x321.png" width="641" height="321" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a30cfaad-08dd-4561-89e3-aef90670a1c2_641x321.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:321,&quot;width&quot;:641,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!WXQr!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa30cfaad-08dd-4561-89e3-aef90670a1c2_641x321.png 424w, /__u/substackcdn.com/image/fetch/$s_!WXQr!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa30cfaad-08dd-4561-89e3-aef90670a1c2_641x321.png 848w, /__u/substackcdn.com/image/fetch/$s_!WXQr!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa30cfaad-08dd-4561-89e3-aef90670a1c2_641x321.png 1272w, /__u/substackcdn.com/image/fetch/$s_!WXQr!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa30cfaad-08dd-4561-89e3-aef90670a1c2_641x321.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Visualisation of the DAG outlined above.</p><p>Based on the configs in the diagram, the following table illustrates which models get rebuilt based on different scenarios:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!QhNH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ed7db39-dab3-43e2-b4d7-c39e2535067f_788x770.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!QhNH!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ed7db39-dab3-43e2-b4d7-c39e2535067f_788x770.png 424w, /__u/substackcdn.com/image/fetch/$s_!QhNH!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ed7db39-dab3-43e2-b4d7-c39e2535067f_788x770.png 848w, /__u/substackcdn.com/image/fetch/$s_!QhNH!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ed7db39-dab3-43e2-b4d7-c39e2535067f_788x770.png 1272w, /__u/substackcdn.com/image/fetch/$s_!QhNH!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ed7db39-dab3-43e2-b4d7-c39e2535067f_788x770.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!QhNH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ed7db39-dab3-43e2-b4d7-c39e2535067f_788x770.png" width="788" height="770" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6ed7db39-dab3-43e2-b4d7-c39e2535067f_788x770.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:770,&quot;width&quot;:788,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!QhNH!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ed7db39-dab3-43e2-b4d7-c39e2535067f_788x770.png 424w, /__u/substackcdn.com/image/fetch/$s_!QhNH!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ed7db39-dab3-43e2-b4d7-c39e2535067f_788x770.png 848w, /__u/substackcdn.com/image/fetch/$s_!QhNH!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ed7db39-dab3-43e2-b4d7-c39e2535067f_788x770.png 1272w, /__u/substackcdn.com/image/fetch/$s_!QhNH!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ed7db39-dab3-43e2-b4d7-c39e2535067f_788x770.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The result of State</p><h2><strong><a href="https://docs.getorchestra.io/docs/guides/dbt-core-state-management/guide#setting-up-in-orchestra">&#8203;</a></strong></h2><h2><strong>Setting up in SAO in Orchestra for running dbt</strong></h2><p><strong>Detailed tutorial</strong><br>For a step by step guide to setting up and using state management in Orchestra, please see our <a href="https://docs.getorchestra.io/docs/guides/dbt-core-state-management/tutorial">tutorial</a>.</p><p>To configure this in Orchestra&#8217;s dbt Core&#8482; integration:</p><ol><li><p>Go to any dbt Core&#8482; task in any Orchestra pipeline</p></li><li><p>Open the task parameters, and enable <code>Use state orchestration</code></p></li></ol><p>You may wish to update your dbt&#8482; code to enhance the capabilities of this system. For example, additional configuration can be defined on any model. Likewise, source freshness accuracy depends on the warehouse being utilised, and if any freshness config has been applied or not.</p><p>By default, if no config is added to a source, Orchestra assumes it always has new data.If you are seeing any issues during a run, you can enable additional debug logging by setting the <code>ORCHESTRA_DBT_DEBUG</code> environment variable to the string <code>true</code>, or set <code>debug = true</code> under <code>[tool.orchestra_dbt]</code> in <code>pyproject.toml</code> when using the <a href="https://docs.getorchestra.io/docs/guides/dbt-core-state-management/guide#running-locally">dbt-orchestra CLI</a>.<a href="https://docs.getorchestra.io/docs/guides/dbt-core-state-management/guide#analysing-warehouse-savings">&#8203;</a></p><h2><strong>Analysing warehouse savings</strong></h2><p>Warehouse savings analysis We are looking to natively provide this information in Orchestra in Q1 2026. Please use the information below in the meantime to analyse your metadata.</p><p>Using the <a href="https://docs.getorchestra.io/docs/api">Orchestra Metadata API</a>, we can fetch and analyse the improvements in both the duration of tasks and warehouse cost savings. To get started, review our <a href="https://github.com/orchestra-hq/orchestra-blueprints/tree/main/analytics/warehouse_savings">&#8216;blueprints&#8217; GitHub repository</a>, and follow the instructions in the README provided.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!pjC_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0817333a-2efc-449b-b3ac-44ff307b10aa_788x525.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!pjC_!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0817333a-2efc-449b-b3ac-44ff307b10aa_788x525.png 424w, /__u/substackcdn.com/image/fetch/$s_!pjC_!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0817333a-2efc-449b-b3ac-44ff307b10aa_788x525.png 848w, /__u/substackcdn.com/image/fetch/$s_!pjC_!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0817333a-2efc-449b-b3ac-44ff307b10aa_788x525.png 1272w, /__u/substackcdn.com/image/fetch/$s_!pjC_!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0817333a-2efc-449b-b3ac-44ff307b10aa_788x525.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!pjC_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0817333a-2efc-449b-b3ac-44ff307b10aa_788x525.png" width="788" height="525" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0817333a-2efc-449b-b3ac-44ff307b10aa_788x525.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:525,&quot;width&quot;:788,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!pjC_!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0817333a-2efc-449b-b3ac-44ff307b10aa_788x525.png 424w, /__u/substackcdn.com/image/fetch/$s_!pjC_!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0817333a-2efc-449b-b3ac-44ff307b10aa_788x525.png 848w, /__u/substackcdn.com/image/fetch/$s_!pjC_!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0817333a-2efc-449b-b3ac-44ff307b10aa_788x525.png 1272w, /__u/substackcdn.com/image/fetch/$s_!pjC_!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0817333a-2efc-449b-b3ac-44ff307b10aa_788x525.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Notice the decrease in total duration of operations for a task run when models are reused.<a href="https://docs.getorchestra.io/docs/guides/dbt-core-state-management/guide#viewing-and-resetting-state">&#8203;</a></p><h2><strong>Viewing and resetting state</strong></h2><p>If there are some issues running dbt Core&#8482; with state orchestration, such as models not being rebuilt when they should be, you can reset the state. Currently, this can only be done at the workspace level, but per model support should be introduced by Q1 2026. Click the <code>Purge state</code> button when <a href="https://app.getorchestra.io/settings/workspace/state-management">viewing state management</a>.</p><p><em>dbt Core, dbt and dbt Labs are all Trademarks of dbt Labs, Inc.</em></p>]]></content:encoded></item><item><title><![CDATA[Is it the end for Fivetran? Claude isn't so sure]]></title><description><![CDATA[Why managed ELT remains one of the last great innovations of the Modern Data Stack]]></description><link>https://dataopsleadership.substack.com/p/is-it-the-end-for-fivetran-claude</link><guid isPermaLink="false">https://dataopsleadership.substack.com/p/is-it-the-end-for-fivetran-claude</guid><dc:creator><![CDATA[Hugo Lu]]></dc:creator><pubDate>Tue, 28 Apr 2026 08:41:14 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/cMDJwsom-iE" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Modern Data Stack is obviously cooked following consolidation and acquisitions. But what about Fivetran?</p><div id="youtube2-cMDJwsom-iE" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;cMDJwsom-iE&quot;,&quot;startTime&quot;:&quot;66s&quot;,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/cMDJwsom-iE?start=66s&amp;rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>I cover this in the video but I think Fivetran is far from cooked and there are sound technical reasons for this.</p><ol><li><p>The scripts are hard, but not that hard</p></li></ol><p>Writing good ELT means you need a pattern like the below, at a minimum, at scale:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;f5423a1b-a0c6-4ff5-8d10-cc06419beb06&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">from datetime import date
from typing import Literal, Dict, Any, Optional


def extract_from_api(
    endpoint: str,
    start_date: date,
    end_date: date,
    params: Optional[Dict[str, Any]] = None
) -&gt; Dict[str, Any]:
    """
    Dummy API extraction function.
    """
    return {
        "endpoint": endpoint,
        "start_date": str(start_date),
        "end_date": str(end_date),
        "params": params or {},
        "records": [
            {"id": 1, "value": "example"},
            {"id": 2, "value": "example"}
        ]
    }


def build_s3_file_path(
    bucket: str,
    prefix: str,
    file_path_type: Literal["date_partitioned", "flat", "custom"],
    start_date: date,
    custom_path: Optional[str] = None
) -&gt; str:
    """
    Builds destination S3 file path.
    """
    if file_path_type == "date_partitioned":
        return f"s3://{bucket}/{prefix}/year={start_date.year}/month={start_date.month}/day={start_date.day}/data.json"

    if file_path_type == "flat":
        return f"s3://{bucket}/{prefix}/data.json"

    if file_path_type == "custom" and custom_path:
        return f"s3://{bucket}/{custom_path}"

    raise ValueError("Invalid file_path_type or missing custom_path")


def load_to_s3_staging(
    data: Dict[str, Any],
    s3_path: str,
    write_mode: Literal["incremental", "full_refresh"]
) -&gt; None:
    """
    Dummy S3 load function.
    """
    if write_mode == "full_refresh":
        print(f"Deleting existing data at {s3_path}")
        print(f"Writing full refresh data to {s3_path}")

    elif write_mode == "incremental":
        print(f"Appending incremental data to {s3_path}")

    else:
        raise ValueError("write_mode must be incremental or full_refresh")

    print(f"Loaded {len(data['records'])} records")


def run_api_to_s3_staging_elt(
    endpoint: str,
    bucket: str,
    prefix: str,
    start_date: date,
    end_date: date,
    arbitrary_json: Dict[str, Any],
    refresh_type: Literal["incremental", "full_refresh"],
    file_path_type: Literal["date_partitioned", "flat", "custom"],
    custom_path: Optional[str] = None
) -&gt; None:
    """
    Main ELT orchestration function:
    API &#8594; S3 staging area
    """

    data = extract_from_api(
        endpoint=endpoint,
        start_date=start_date,
        end_date=end_date,
        params=arbitrary_json
    )

    s3_path = build_s3_file_path(
        bucket=bucket,
        prefix=prefix,
        file_path_type=file_path_type,
        start_date=start_date,
        custom_path=custom_path
    )

    load_to_s3_staging(
        data=data,
        s3_path=s3_path,
        write_mode=refresh_type
    )


# Example usage
run_api_to_s3_staging_elt(
    endpoint="https://api.example.com/orders",
    bucket="my-staging-bucket",
    prefix="staging/orders",
    start_date=date(2025, 1, 1),
    end_date=date(2025, 1, 31),
    arbitrary_json={
        "region": "EU",
        "status": ["completed", "refunded"],
        "include_metadata": True
    },
    refresh_type="incremental",
    file_path_type="date_partitioned"
)</code></pre></div><p>This is actually quite hard to do and hard to manage. It is not as simple as &#8220;AI one-shots this and you&#8217;re done&#8221;. AI can perhaps one-shot the logic, but you need to maintain the framework, and the UI.</p><ol start="2"><li><p>Infrastructure</p></li></ol><p>Moving data takes a lot of infrastructure! not everyone wants to manage it</p><ol start="3"><li><p>CDC</p></li></ol><p>Fivetran does CDC too (like all the other providers) which again is not just a python script AI can one-shot</p><ol start="4"><li><p>Destination types</p></li></ol><p>Adding types of destination like iceberg is non-trivial. There is basically a new connector for every iceberg catalog you use.</p><ol start="5"><li><p>Networking permutations</p></li></ol><p>This is the real killer. There are so many options</p><ol><li><p>Fivetran all in cloud</p></li><li><p>Fivetran control plane in cloud, worker in your network</p></li><li><p>[2] but the network is a VPC so you connect via Private Link</p><ol><li><p>x3 for GCP, AWS, and Azure</p></li></ol></li><li><p>on-premise deployment with control planein the cloud</p></li><li><p>on-premise air-gapped</p></li></ol><p>and then again, the destinations themselves may also have similar locations. Which creates quite a lot of permutations</p><p>Massive pain to configure yourself&#8230;</p><h2>Conclusion: moving data is here to stay!</h2><p>I believe moving data is here to stay.</p><p>However - there are signs that Fivetran and the old pattern could be disrupted</p><ol><li><p>Clickhouse offers a native suite of tools like Clickhouse Postrges and Clickhouse joined via ClickPipe that basically means all the ELT is handled for you. We leverage this at </p></li><li><p>Deveoper-first: people do not want to have to spin up a SAAS tool to sync data between places. It would be much nicer if there was just a package that could be run &#8220;somewhere&#8221; that moved data from place to place. The thing I&#8217;ve seen that is closest to this is dlthub, though I wonder if there is yet an even smoother abstraction for moving data that could exist</p></li></ol><p>Beyond this we do not believe AI can disrupt players like Fivetran and that managed ELT remains one of the most cost-effective ways for data teams to buy back their time.</p><p><em>To read more about how to manage Fivetran syncs from Orchestra, check-out our Fivetran page here. </em></p><p></p><p></p><p> </p>]]></content:encoded></item><item><title><![CDATA[Building the ultimate metadata-driven ETL pipelines on Snowflake with AI]]></title><description><![CDATA[Yes of course we'll be building Metadata-driven pipelines on Snowflake with AI]]></description><link>https://dataopsleadership.substack.com/p/building-the-ultimate-metadata-driven</link><guid isPermaLink="false">https://dataopsleadership.substack.com/p/building-the-ultimate-metadata-driven</guid><dc:creator><![CDATA[Hugo Lu]]></dc:creator><pubDate>Tue, 21 Apr 2026 07:58:41 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!wSRW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fa8b7a6-33bd-43aa-aec0-acdca74685d5_1350x1467.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The only thing a Consultancy Accelerator is going to speed-up is tech debt!</p><p>I&#8217;ve been astonished at how many people have built overly complicated metadata-driven frameworks over the years. Unfortunately, these form the foundations of all the data in the platform, and mean that accessing data and easily identifying what data is fresh is impossible.</p><p>Despite this, some CDOs still insist on chasing AI despite not laying the foundations for it - a tale as old as time.</p><p>We recently added support for <a href="https://docs.getorchestra.io/docs/core-concepts/tasks/matrix#matrix-engine-tasks">sequential tasks in the MetaEngine</a>. It might seem like a small thing but it allows for parallelisation of thousands of data processing tasks at once. This is super powerful, not just data data pipelining but also AI use-cases.</p><p>In this article we cover some approaches to making the most of this feature in Snowflake. Hopefully it gives an insight into how simple things has become - and provides a deterrent to anyone considering using an &#8220;Accelerator&#8221;!</p><h3>Introduction</h3><p>Having a simple set of pipelines works until it doesn&#8217;t. Managing a small sample set of sources and destinations is something a one or two person data team deal with comfortably. It&#8217;s scale that changes this.</p><p>When hundreds of tables become thousands, a &#8220;Lean team&#8221; operating &#8220;super efficiently&#8221; suddenly becomes &#8220;tech debt&#8221; and &#8220;tribal knowledge&#8221;. Work leads to cancelled vacations which leads to burn-out. Eventually, Kevin isn&#8217;t on holiday&#8202;&#8212;&#8202;Kevin&#8217;s quit his job.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!oOvp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbeb537cd-5cc3-496b-b19f-04730657bd8f_900x541.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!oOvp!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbeb537cd-5cc3-496b-b19f-04730657bd8f_900x541.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!oOvp!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbeb537cd-5cc3-496b-b19f-04730657bd8f_900x541.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!oOvp!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbeb537cd-5cc3-496b-b19f-04730657bd8f_900x541.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!oOvp!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbeb537cd-5cc3-496b-b19f-04730657bd8f_900x541.jpeg 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!oOvp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbeb537cd-5cc3-496b-b19f-04730657bd8f_900x541.jpeg" width="900" height="541" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/beb537cd-5cc3-496b-b19f-04730657bd8f_900x541.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:541,&quot;width&quot;:900,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!oOvp!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbeb537cd-5cc3-496b-b19f-04730657bd8f_900x541.jpeg 424w, /__u/substackcdn.com/image/fetch/$s_!oOvp!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbeb537cd-5cc3-496b-b19f-04730657bd8f_900x541.jpeg 848w, /__u/substackcdn.com/image/fetch/$s_!oOvp!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbeb537cd-5cc3-496b-b19f-04730657bd8f_900x541.jpeg 1272w, /__u/substackcdn.com/image/fetch/$s_!oOvp!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbeb537cd-5cc3-496b-b19f-04730657bd8f_900x541.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Don&#8217;t be like Kevin!</figcaption></figure></div><p>One approach to curtail some of this from the technical angle are <strong><a href="https://www.getorchestra.io/guides/how-to-implement-a-metadata-framework-in-adf">Metadata driven frameworks</a></strong>.</p><p>In a metadata-driven framework, <strong>modular components</strong> are assembled that are parameterised at runtime. Instead of having a pipeline for moving <code>table_a</code> and a pipeline for moving <code>table_b</code> , there is a single pipeline <em>capable of moving both tables</em>. At runtime, the pipeline is parameterised with both <code>table_a</code> and <code>table_b</code> , and is therefore <strong>metadata-driven</strong>.</p><p>However, metadata-driven frameworks are frought with complexity. Many consultants have been paid millions of dollars to implement layers, and layers of metadata. Typically this involves Azure Data Factory pipelines calling pipelines, which in turn call more pipelines and more pipelines.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!jYcE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8f60771-8578-4b5a-bb09-c4976eedb420_900x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!jYcE!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8f60771-8578-4b5a-bb09-c4976eedb420_900x608.png 424w, /__u/substackcdn.com/image/fetch/$s_!jYcE!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8f60771-8578-4b5a-bb09-c4976eedb420_900x608.png 848w, /__u/substackcdn.com/image/fetch/$s_!jYcE!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8f60771-8578-4b5a-bb09-c4976eedb420_900x608.png 1272w, /__u/substackcdn.com/image/fetch/$s_!jYcE!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8f60771-8578-4b5a-bb09-c4976eedb420_900x608.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!jYcE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8f60771-8578-4b5a-bb09-c4976eedb420_900x608.png" width="900" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e8f60771-8578-4b5a-bb09-c4976eedb420_900x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:608,&quot;width&quot;:900,&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="/__u/substackcdn.com/image/fetch/$s_!jYcE!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8f60771-8578-4b5a-bb09-c4976eedb420_900x608.png 424w, /__u/substackcdn.com/image/fetch/$s_!jYcE!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8f60771-8578-4b5a-bb09-c4976eedb420_900x608.png 848w, /__u/substackcdn.com/image/fetch/$s_!jYcE!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8f60771-8578-4b5a-bb09-c4976eedb420_900x608.png 1272w, /__u/substackcdn.com/image/fetch/$s_!jYcE!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8f60771-8578-4b5a-bb09-c4976eedb420_900x608.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">An overly-complex Metadata-driven pipeline in Synapse ADF</figcaption></figure></div><p>This endless sea of recursion is the enemy of metadata-driven frameworks, as such patterns are complex to build, maintain, and unravel. They are emblematic of the &#8220;Fortress&#8221; that the &#8220;Data person&#8221; may seek to build around themselves.</p><p>In this article, I&#8217;ll walk through a practical example of building the ultimate metadata-driven ELT Pipeline on Snowflake.</p><h3>Step 1: Identify your sources</h3><p>The first step involves identifying your sources and identifying common data ingestion patterns. As a rule of thumb, one API means one script. Where APIs are complex, you may have a separate script for the API (for example if one set of endpoints supports incrementality but another doesn&#8217;t).</p><p>There is always a tradeoff between abstraction and complexity. Of course, you could have one &#8220;Master script&#8221; that triggers <em>any job.</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!Qr3o!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce193df7-78cb-48a9-afde-9a795af5148e_1350x468.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!Qr3o!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce193df7-78cb-48a9-afde-9a795af5148e_1350x468.png 424w, /__u/substackcdn.com/image/fetch/$s_!Qr3o!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce193df7-78cb-48a9-afde-9a795af5148e_1350x468.png 848w, /__u/substackcdn.com/image/fetch/$s_!Qr3o!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce193df7-78cb-48a9-afde-9a795af5148e_1350x468.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Qr3o!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce193df7-78cb-48a9-afde-9a795af5148e_1350x468.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!Qr3o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce193df7-78cb-48a9-afde-9a795af5148e_1350x468.png" width="1350" height="468" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ce193df7-78cb-48a9-afde-9a795af5148e_1350x468.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:468,&quot;width&quot;:1350,&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="/__u/substackcdn.com/image/fetch/$s_!Qr3o!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce193df7-78cb-48a9-afde-9a795af5148e_1350x468.png 424w, /__u/substackcdn.com/image/fetch/$s_!Qr3o!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce193df7-78cb-48a9-afde-9a795af5148e_1350x468.png 848w, /__u/substackcdn.com/image/fetch/$s_!Qr3o!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce193df7-78cb-48a9-afde-9a795af5148e_1350x468.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Qr3o!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce193df7-78cb-48a9-afde-9a795af5148e_1350x468.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Approaches to building a metadata-driven framework on Snowflake</figcaption></figure></div><p>This is illustrated above. On the far left hand side you have a completely abstracted entrypoint that accepts a wide range of parameters. Depending on the parameters, it runs different scripts. These scripts could range from pulling incremental structure data from an API to pulling unstructured one-off .wav files from an SFTP Server.</p><ul><li><p>Complex</p></li><li><p>Very scalable</p></li></ul><p>The far right example is the opposite. There is no abstraction at all, and no metadata drives the pipelines. There is a pipeline for every script.</p><ul><li><p>Not complex and easy to edit code on a case-by-case basis</p></li><li><p>Can be difficult to scale / standardise</p></li></ul><p>The middle example is the best. There is a set of common scripts that understand how to move data for different sources and types of data. For example, one for SQL Server, one for MYSQL and one for the Workday API.</p><p>These individual Tasks can be parameterised with different things like the table or object names.</p><ul><li><p>Balanced level of complexity</p></li><li><p>Very scalable and less dependencies between jobs</p></li></ul><h3>Step 2 identify your destination</h3><p>For Snowflake you should basically choose one of S3, GCS or Azure Data Lake Storage.</p><p>Writing in Iceberg format is not a bad idea either, though it is not required.</p><h4>Example</h4><p>Writing these types of scripts is easy now. Just use a prompt like this:</p><blockquote><p>Write me a basic script that takes data from workday and drops it in S3 in python. The script should be parameterisable for the following parameters<br>1. Object name or API endpoint<br>2. The date from and date to<br>3. Should handle pagination<br>4. S3 bucket syntax should be /workday/object/date_from_date_to.json<br>5. Should acept a param for full or incremental loading.</p></blockquote><p>Workday was not a good example. The API seems quite gross. but:</p><pre><code>import os
import json
import argparse
from typing import Any, Dict, List, Optional

import requests
import boto3


def parse_args() -&gt; argparse.Namespace:
    parser = argparse.ArgumentParser(description=&#8221;Extract data from Workday API and load to S3&#8221;)

    parser.add_argument(&#8221;--base-url&#8221;, required=True, help=&#8221;Workday API base URL&#8221;)
    parser.add_argument(&#8221;--object-name&#8221;, required=True, help=&#8221;Logical object name, e.g. workers&#8221;)
    parser.add_argument(
        &#8220;--endpoint&#8221;,
        required=True,
        help=&#8221;API endpoint path, e.g. /workers or /customreport2/tenant/report&#8221;
    )
    parser.add_argument(&#8221;--date-from&#8221;, required=True, help=&#8221;Start date in YYYY-MM-DD format&#8221;)
    parser.add_argument(&#8221;--date-to&#8221;, required=True, help=&#8221;End date in YYYY-MM-DD format&#8221;)
    parser.add_argument(
        &#8220;--load-type&#8221;,
        required=True,
        choices=[&#8221;full&#8221;, &#8220;incremental&#8221;],
        help=&#8221;Whether to run a full or incremental load&#8221;
    )
    parser.add_argument(&#8221;--s3-bucket&#8221;, required=True, help=&#8221;Target S3 bucket name&#8221;)

    # Auth parameters
    parser.add_argument(&#8221;--auth-type&#8221;, default=&#8221;bearer&#8221;, choices=[&#8221;bearer&#8221;, &#8220;basic&#8221;])
    parser.add_argument(&#8221;--token&#8221;, default=os.getenv(&#8221;WORKDAY_TOKEN&#8221;), help=&#8221;Bearer token&#8221;)
    parser.add_argument(&#8221;--username&#8221;, default=os.getenv(&#8221;WORKDAY_USERNAME&#8221;), help=&#8221;Basic auth username&#8221;)
    parser.add_argument(&#8221;--password&#8221;, default=os.getenv(&#8221;WORKDAY_PASSWORD&#8221;), help=&#8221;Basic auth password&#8221;)

    # Optional pagination tuning
    parser.add_argument(&#8221;--page-size&#8221;, type=int, default=100, help=&#8221;Number of records per page&#8221;)
    parser.add_argument(&#8221;--timeout&#8221;, type=int, default=60, help=&#8221;HTTP timeout in seconds&#8221;)

    return parser.parse_args()


def build_auth(args: argparse.Namespace):
    if args.auth_type == &#8220;bearer&#8221;:
        if not args.token:
            raise ValueError(&#8221;Bearer auth selected but no token provided&#8221;)
        return None, {&#8221;Authorization&#8221;: f&#8221;Bearer {args.token}&#8221;}

    if args.auth_type == &#8220;basic&#8221;:
        if not args.username or not args.password:
            raise ValueError(&#8221;Basic auth selected but username/password not provided&#8221;)
        return (args.username, args.password), {}

    raise ValueError(f&#8221;Unsupported auth type: {args.auth_type}&#8221;)


def build_initial_params(args: argparse.Namespace) -&gt; Dict[str, Any]:
    &#8220;&#8221;&#8220;
    Generic params.
    You may need to rename these to match your Workday endpoint,
    for example updatedFrom / updatedTo or effectiveDate, etc.
    &#8220;&#8221;&#8220;
    params = {
        &#8220;limit&#8221;: args.page_size
    }

    if args.load_type == &#8220;incremental&#8221;:
        params[&#8221;dateFrom&#8221;] = args.date_from
        params[&#8221;dateTo&#8221;] = args.date_to

    return params


def extract_records_from_response(payload: Dict[str, Any]) -&gt; List[Dict[str, Any]]:
    &#8220;&#8221;&#8220;
    Tries common response structures.
    Adjust this for your specific Workday response shape.
    &#8220;&#8221;&#8220;
    if isinstance(payload, list):
        return payload

    for key in [&#8221;data&#8221;, &#8220;items&#8221;, &#8220;records&#8221;, &#8220;results&#8221;]:
        if key in payload and isinstance(payload[key], list):
            return payload[key]

    return []


def get_next_page_info(payload: Dict[str, Any]) -&gt; Optional[Dict[str, Any]]:
    &#8220;&#8221;&#8220;
    Generic pagination handler.

    Supports:
    - next page URL in payload[&#8217;next&#8217;]
    - next page token in payload[&#8217;nextPage&#8217;]
    - offset/total/limit style paging

    Adjust as needed for your Workday endpoint.
    &#8220;&#8221;&#8220;
    if not isinstance(payload, dict):
        return None

    if payload.get(&#8221;next&#8221;):
        return {&#8221;type&#8221;: &#8220;url&#8221;, &#8220;value&#8221;: payload[&#8221;next&#8221;]}

    if payload.get(&#8221;nextPage&#8221;):
        return {&#8221;type&#8221;: &#8220;token&#8221;, &#8220;value&#8221;: payload[&#8221;nextPage&#8221;]}

    if all(k in payload for k in [&#8221;offset&#8221;, &#8220;total&#8221;, &#8220;limit&#8221;]):
        offset = int(payload[&#8221;offset&#8221;])
        total = int(payload[&#8221;total&#8221;])
        limit = int(payload[&#8221;limit&#8221;])

        next_offset = offset + limit
        if next_offset &lt; total:
            return {&#8221;type&#8221;: &#8220;offset&#8221;, &#8220;value&#8221;: next_offset}

    return None


def fetch_all_pages(args: argparse.Namespace) -&gt; List[Dict[str, Any]]:
    auth, extra_headers = build_auth(args)

    headers = {
        &#8220;Accept&#8221;: &#8220;application/json&#8221;,
        **extra_headers
    }

    base_endpoint = f&#8221;{args.base_url.rstrip(&#8217;/&#8217;)}/{args.endpoint.lstrip(&#8217;/&#8217;)}&#8221;
    params = build_initial_params(args)

    all_records: List[Dict[str, Any]] = []
    next_request_url: Optional[str] = base_endpoint
    next_request_params: Optional[Dict[str, Any]] = params.copy()

    while next_request_url:
        response = requests.get(
            next_request_url,
            headers=headers,
            auth=auth,
            params=next_request_params,
            timeout=args.timeout
        )
        response.raise_for_status()

        payload = response.json()
        records = extract_records_from_response(payload)
        all_records.extend(records)

        next_page = get_next_page_info(payload)

        if not next_page:
            break

        if next_page[&#8221;type&#8221;] == &#8220;url&#8221;:
            next_request_url = next_page[&#8221;value&#8221;]
            next_request_params = None

        elif next_page[&#8221;type&#8221;] == &#8220;token&#8221;:
            next_request_url = base_endpoint
            next_request_params = params.copy()
            next_request_params[&#8221;pageToken&#8221;] = next_page[&#8221;value&#8221;]

        elif next_page[&#8221;type&#8221;] == &#8220;offset&#8221;:
            next_request_url = base_endpoint
            next_request_params = params.copy()
            next_request_params[&#8221;offset&#8221;] = next_page[&#8221;value&#8221;]

        else:
            break

    return all_records


def upload_to_s3(bucket: str, object_name: str, date_from: str, date_to: str, records: List[Dict[str, Any]]) -&gt; str:
    s3 = boto3.client(&#8221;s3&#8221;)

    key = f&#8221;workday/{object_name}/{date_from}_{date_to}.json&#8221;
    body = json.dumps(records, indent=2).encode(&#8221;utf-8&#8221;)

    s3.put_object(
        Bucket=bucket,
        Key=key,
        Body=body,
        ContentType=&#8221;application/json&#8221;
    )

    return f&#8221;s3://{bucket}/{key}&#8221;


def main() -&gt; None:
    args = parse_args()

    records = fetch_all_pages(args)
    s3_path = upload_to_s3(
        bucket=args.s3_bucket,
        object_name=args.object_name,
        date_from=args.date_from,
        date_to=args.date_to,
        records=records
    )

    print(f&#8221;Loaded {len(records)} records to {s3_path}&#8221;)


if __name__ == &#8220;__main__&#8221;:
    main()</code></pre><p>With example usage:</p><pre><code>python workday_to_s3.py \
  --base-url https://wd2-impl-services1.workday.com/ccx/api/v1/your_tenant \
  --object-name workers \
  --endpoint /workers \
  --date-from 2026-04-01 \
  --date-to 2026-04-20 \
  --load-type incremental \
  --s3-bucket my-raw-bucket \
  --auth-type bearer \
  --token YOUR_WORKDAY_TOKEN</code></pre><p>The alternative here would be to have those parameters above set as environment variables in the code.</p><h3>Step 3: Create and set-up an external stage</h3><p>You can actually wrap the entire creation and incremental execution in a single set of statements.</p><pre><code>USE DATABASE WORKDAY;
USE SCHEMA RAW;

-- =========================================================
-- File format
-- =========================================================
CREATE FILE FORMAT IF NOT EXISTS WORKDAY_JSON_FF
  TYPE = JSON
  STRIP_OUTER_ARRAY = TRUE;

-- =========================================================
-- External stage
-- =========================================================
CREATE STAGE IF NOT EXISTS WORKDAY_WORKERS_STAGE
  URL = &#8216;s3://my-raw-bucket/workday/workers/&#8217;
  STORAGE_INTEGRATION = MY_S3_INTEGRATION
  FILE_FORMAT = WORKDAY_JSON_FF;

-- =========================================================
-- Table
-- =========================================================
CREATE TABLE IF NOT EXISTS WORKDAY.RAW.WORKERS
(
    RAW_PAYLOAD VARIANT,
    SOURCE_FILE STRING,
    LOAD_TYPE   STRING,
    DATE_FROM   DATE,
    DATE_TO     DATE,
    LOADED_AT   TIMESTAMP_NTZ DEFAULT CURRENT_TIMESTAMP()
);

-- =========================================================
-- Load
-- =========================================================
COPY INTO WORKDAY.RAW.WORKERS
  (RAW_PAYLOAD, SOURCE_FILE, LOAD_TYPE, DATE_FROM, DATE_TO)
FROM
(
  SELECT
    $1,
    METADATA$FILENAME,
    &#8216;incremental&#8217;,
    TO_DATE(&#8217;2026-04-01&#8217;),
    TO_DATE(&#8217;2026-04-20&#8217;)
  FROM @WORKDAY_WORKERS_STAGE
)
FILES = (&#8217;2026-04-01_2026-04-20.json&#8217;)
ON_ERROR = &#8216;ABORT_STATEMENT&#8217;;</code></pre><p>This will load the data into the stage. The above should be parameterised, obviously</p><h3>Step 4: Test the data</h3><p>The next step should be to test the data. You can confirm there are at least &gt;0 rows in the table. This is a straightforward check.</p><pre><code>Select * from table
where date_from = &#8220;&lt;date_from&gt;&#8221;
and date_to= &#8220;&lt;date_to&gt;&#8221;</code></pre><h4><strong>Optional Step&#8202;&#8212;&#8202;cleaning transformations</strong></h4><p>Every raw table may want to run a view that cleans the data. For example, something like:</p><pre><code>-- table_a_clean.sql

select
badly_named____column as badly_named_column,
cast(timestamp_column as date) as data_column,
case when bad_values = &#8216;good&#8217; as &#8216;bad&#8217; else bad_values end as good_values
from table</code></pre><p>Every model should ideally have a standard file name to ensure consistency. You could even wrap this as a python task, or perhaps a stored procedure or Snowflake Task called <code>table_name_clean_task</code> or similar.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!Lp5p!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b0b72d6-91c9-4534-aa39-bc0abfde9fa4_1338x636.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!Lp5p!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b0b72d6-91c9-4534-aa39-bc0abfde9fa4_1338x636.png 424w, /__u/substackcdn.com/image/fetch/$s_!Lp5p!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b0b72d6-91c9-4534-aa39-bc0abfde9fa4_1338x636.png 848w, /__u/substackcdn.com/image/fetch/$s_!Lp5p!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b0b72d6-91c9-4534-aa39-bc0abfde9fa4_1338x636.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Lp5p!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b0b72d6-91c9-4534-aa39-bc0abfde9fa4_1338x636.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!Lp5p!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b0b72d6-91c9-4534-aa39-bc0abfde9fa4_1338x636.png" width="1338" height="636" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0b0b72d6-91c9-4534-aa39-bc0abfde9fa4_1338x636.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:636,&quot;width&quot;:1338,&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="/__u/substackcdn.com/image/fetch/$s_!Lp5p!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b0b72d6-91c9-4534-aa39-bc0abfde9fa4_1338x636.png 424w, /__u/substackcdn.com/image/fetch/$s_!Lp5p!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b0b72d6-91c9-4534-aa39-bc0abfde9fa4_1338x636.png 848w, /__u/substackcdn.com/image/fetch/$s_!Lp5p!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b0b72d6-91c9-4534-aa39-bc0abfde9fa4_1338x636.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Lp5p!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b0b72d6-91c9-4534-aa39-bc0abfde9fa4_1338x636.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The Metadata-driven framework in full flight</figcaption></figure></div><p>The flow is summarised in this nice diagram above.</p><h3>Step 5: Data Transformations</h3><p>Now that the data is landing, it&#8217;s time to transform data and break the metadata-driven approach in favour of something more declarative.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!vufs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8229f796-fa8b-46ff-8041-0d4d83c17a20_1350x831.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!vufs!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8229f796-fa8b-46ff-8041-0d4d83c17a20_1350x831.png 424w, /__u/substackcdn.com/image/fetch/$s_!vufs!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8229f796-fa8b-46ff-8041-0d4d83c17a20_1350x831.png 848w, /__u/substackcdn.com/image/fetch/$s_!vufs!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8229f796-fa8b-46ff-8041-0d4d83c17a20_1350x831.png 1272w, /__u/substackcdn.com/image/fetch/$s_!vufs!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8229f796-fa8b-46ff-8041-0d4d83c17a20_1350x831.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!vufs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8229f796-fa8b-46ff-8041-0d4d83c17a20_1350x831.png" width="1350" height="831" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8229f796-fa8b-46ff-8041-0d4d83c17a20_1350x831.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:831,&quot;width&quot;:1350,&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="/__u/substackcdn.com/image/fetch/$s_!vufs!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8229f796-fa8b-46ff-8041-0d4d83c17a20_1350x831.png 424w, /__u/substackcdn.com/image/fetch/$s_!vufs!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8229f796-fa8b-46ff-8041-0d4d83c17a20_1350x831.png 848w, /__u/substackcdn.com/image/fetch/$s_!vufs!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8229f796-fa8b-46ff-8041-0d4d83c17a20_1350x831.png 1272w, /__u/substackcdn.com/image/fetch/$s_!vufs!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8229f796-fa8b-46ff-8041-0d4d83c17a20_1350x831.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">dbt lineage that is relatively complicated</figcaption></figure></div><p>When there are many tables with multiple dependencies, managing these dependencies can be hard.</p><p>Furthermore, what happens when different tables land at different times, but dependencies depend on multiple pieces of data? At some point&#8202;&#8212;&#8202;the linearity of metadata-driven frameworks breaks.</p><p>At this point, you should leverage a <a href="https://www.getorchestra.io/technology/orchestra-dbt-core-tm">state-orchestration framework</a>. A state-orchestration framework only runs data when new data arrives. This means it can be run continuously and relied upon to update the data that is required.</p><p>This could ideally run as a separate pipeline, or within the same pipeline. Sensors can be enabled in between the data landing and transformation steps, depending on how quickly data needs to land.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!wSRW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fa8b7a6-33bd-43aa-aec0-acdca74685d5_1350x1467.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!wSRW!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fa8b7a6-33bd-43aa-aec0-acdca74685d5_1350x1467.png 424w, /__u/substackcdn.com/image/fetch/$s_!wSRW!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fa8b7a6-33bd-43aa-aec0-acdca74685d5_1350x1467.png 848w, /__u/substackcdn.com/image/fetch/$s_!wSRW!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fa8b7a6-33bd-43aa-aec0-acdca74685d5_1350x1467.png 1272w, /__u/substackcdn.com/image/fetch/$s_!wSRW!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fa8b7a6-33bd-43aa-aec0-acdca74685d5_1350x1467.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!wSRW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fa8b7a6-33bd-43aa-aec0-acdca74685d5_1350x1467.png" width="1350" height="1467" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6fa8b7a6-33bd-43aa-aec0-acdca74685d5_1350x1467.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1467,&quot;width&quot;:1350,&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="/__u/substackcdn.com/image/fetch/$s_!wSRW!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fa8b7a6-33bd-43aa-aec0-acdca74685d5_1350x1467.png 424w, /__u/substackcdn.com/image/fetch/$s_!wSRW!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fa8b7a6-33bd-43aa-aec0-acdca74685d5_1350x1467.png 848w, /__u/substackcdn.com/image/fetch/$s_!wSRW!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fa8b7a6-33bd-43aa-aec0-acdca74685d5_1350x1467.png 1272w, /__u/substackcdn.com/image/fetch/$s_!wSRW!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fa8b7a6-33bd-43aa-aec0-acdca74685d5_1350x1467.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Different Patterns for Data Transformations</figcaption></figure></div><h3>Step 6: piecing it together in your orchestrator</h3><p>This is perhaps the hardest part if you&#8217;re not using a declarative Orchestrator, since piecing this together in a tool like ADF Is a fool&#8217;s errand&#8202;&#8212;&#8202;the reason &#8220;Databricks Accelerators&#8221; are so expensive and time-consuming.</p><p>However if you are, the process is really quite simple. Here is an example using Orchestra:</p><pre><code>version: v1
name: &#8216;#snowflake #dlt #matrix&#8217;
pipeline:
  3459fb19-f081-43ca-8997-f7f2d54d331d:
    tasks:
      c581252f-2975-4af6-8caf-a42e30527088:
        integration: PYTHON
        integration_job: PYTHON_EXECUTE_SCRIPT
        parameters:
          package_manager: PIP
          python_version: &#8216;3.12&#8217;
          build_command: pip install -r requirements.txt
          environment_variables: &#8216;{

            &#8220;SHEET_NAME&#8221;: &#8220;${{ MATRIX.gsheets[&#8217;&#8216;SHEET_NAME&#8217;&#8216;] }}&#8221;,


            &#8220;TABLE_NAME&#8221;:&#8221;${{ MATRIX.gsheets[&#8217;&#8216;TABLE_NAME&#8217;&#8216;] }}&#8221;,

            &#8220;RANGE_NAME&#8221;:&#8221;dlt_range&#8221;


            }&#8217;
          set_outputs: true
          source: GIT
          command: python -m run_dlt_pipelines_snowflake
          project_dir: dlt
          shallow_clone_dirs: dlt
        depends_on: []
        name: Execute parallel dlt
        connection: python__production__blueprints__19239
        treat_failure_as_warning: true
      00a86786-65c4-48df-8074-a2dfdd4e7dbb:
        integration: SNOWFLAKE
        integration_job: SNOWFLAKE_RUN_TEST
        parameters:
          statement: &#8216;select * from ${{ MATRIX.gsheets[&#8217;&#8216;TABLE_NAME&#8217;&#8216;] }}

            limit 1&#8217;
          error_threshold_expression: &lt;0
          warn_threshold_expression: &lt;1
          database: BIGQUERY_SAMPLE
          schema: PUBLIC
        depends_on:
        - c581252f-2975-4af6-8caf-a42e30527088
        name: Check data
        connection: snowflake__prod__80122
        treat_failure_as_warning: true
      2eb82923-5892-4c14-921d-a8a85afde545:
        integration: SNOWFLAKE
        integration_job: SNOWFLAKE_RUN_QUERY
        parameters:
          statement: execute task ${{ MATRIX.gsheets[&#8217;TABLE_NAME&#8217;] }}_TASK;
          set_outputs: false
        depends_on:
        - 00a86786-65c4-48df-8074-a2dfdd4e7dbb
        name: Insert Data
        treat_failure_as_warning: true
    depends_on: []
    name: &#8216;&#8217;
    matrix:
      inputs:
        gsheets:
        - SHEET_NAME: 1H0UnZ1vJ6WSsZgiVkg96zq52p7qaXkhvodlO1Mzoj6s
          TABLE_NAME: dbt_leads
        - SHEET_NAME: 1TMNhQFZbmaBsa1vIehQzh3vdyfc05damwJ_PIKDF14A
          TABLE_NAME: social_leads
        - SHEET_NAME: 1tImqLq_zLNthL7DDUkTUjU0xHoV_PhdM1zpuJ-TB0kk
          TABLE_NAME: unstructured_feedback
  e3e7d5bf-8c8c-400e-94d8-28a584fc638e:
    tasks:
      0f480822-0044-49b5-9635-eb9987978eab:
        integration: DBT_CORE
        integration_job: DBT_CORE_EXECUTE
        parameters:
          commands: dbt build
          package_manager: PIP
          python_version: &#8216;3.12&#8217;
          use_state_orchestration: true
          project_dir: dbt_projects/snowflake
          shallow_clone_dirs: dbt_projects/snowflake
        depends_on: []
        name: run dbt
        connection: dbt_snowflake_blueprints_prod_07025
    depends_on:
    - 3459fb19-f081-43ca-8997-f7f2d54d331d
    name: group
schedule:
- name: Daily at 8am
  cron: 0 8 ? * * *
  timezone: Europe/London
webhook:
  enabled: false
inputs:
  dbt_command:
    type: string
    default: build
  dbt_branch:
    type: string
    default: main
alerts:
- name: Failures
  statuses:
  - FAILED
  destinations:
  - integration: SLACK
    destination: alert-testing</code></pre><p>This is less than 100 lines of code and event accounts for things such as alerting.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!VmM_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9835a5b5-7a8a-49a9-a1f5-39c1d9c16142_1350x684.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!VmM_!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9835a5b5-7a8a-49a9-a1f5-39c1d9c16142_1350x684.png 424w, /__u/substackcdn.com/image/fetch/$s_!VmM_!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9835a5b5-7a8a-49a9-a1f5-39c1d9c16142_1350x684.png 848w, /__u/substackcdn.com/image/fetch/$s_!VmM_!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9835a5b5-7a8a-49a9-a1f5-39c1d9c16142_1350x684.png 1272w, /__u/substackcdn.com/image/fetch/$s_!VmM_!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9835a5b5-7a8a-49a9-a1f5-39c1d9c16142_1350x684.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!VmM_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9835a5b5-7a8a-49a9-a1f5-39c1d9c16142_1350x684.png" width="1350" height="684" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9835a5b5-7a8a-49a9-a1f5-39c1d9c16142_1350x684.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:684,&quot;width&quot;:1350,&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="/__u/substackcdn.com/image/fetch/$s_!VmM_!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9835a5b5-7a8a-49a9-a1f5-39c1d9c16142_1350x684.png 424w, /__u/substackcdn.com/image/fetch/$s_!VmM_!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9835a5b5-7a8a-49a9-a1f5-39c1d9c16142_1350x684.png 848w, /__u/substackcdn.com/image/fetch/$s_!VmM_!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9835a5b5-7a8a-49a9-a1f5-39c1d9c16142_1350x684.png 1272w, /__u/substackcdn.com/image/fetch/$s_!VmM_!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9835a5b5-7a8a-49a9-a1f5-39c1d9c16142_1350x684.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A visualisation of the metadata-driven pipeline</figcaption></figure></div><p>This is what it looks like when it runs:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!vmi9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c7534da-5014-4cb8-bad8-1c5ecec6f434_2600x1318.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!vmi9!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c7534da-5014-4cb8-bad8-1c5ecec6f434_2600x1318.png 424w, /__u/substackcdn.com/image/fetch/$s_!vmi9!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c7534da-5014-4cb8-bad8-1c5ecec6f434_2600x1318.png 848w, /__u/substackcdn.com/image/fetch/$s_!vmi9!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c7534da-5014-4cb8-bad8-1c5ecec6f434_2600x1318.png 1272w, /__u/substackcdn.com/image/fetch/$s_!vmi9!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c7534da-5014-4cb8-bad8-1c5ecec6f434_2600x1318.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!vmi9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c7534da-5014-4cb8-bad8-1c5ecec6f434_2600x1318.png" width="1456" height="738" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9c7534da-5014-4cb8-bad8-1c5ecec6f434_2600x1318.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:738,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!vmi9!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c7534da-5014-4cb8-bad8-1c5ecec6f434_2600x1318.png 424w, /__u/substackcdn.com/image/fetch/$s_!vmi9!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c7534da-5014-4cb8-bad8-1c5ecec6f434_2600x1318.png 848w, /__u/substackcdn.com/image/fetch/$s_!vmi9!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c7534da-5014-4cb8-bad8-1c5ecec6f434_2600x1318.png 1272w, /__u/substackcdn.com/image/fetch/$s_!vmi9!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c7534da-5014-4cb8-bad8-1c5ecec6f434_2600x1318.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Running the metadata framework end to end</figcaption></figure></div><p>This an incredibly simple but an incredibly powerful way to structure your data pipelines on Snowflake. Notice how all the business logic for moving data, transforming etc. is completely separate from the orchestration code, meaning domain experts can do what they do best without getting bogged down in complex tools like Apache Airflow or other python based orchestrators.</p><h3>Step 7: Store data in a database (Bonus)</h3><p>What happens if your database configurations are too large to be stored in a .yml file?</p><p>No problem! You can store the data in a database and pass these to your metadata framework instead.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!ZaPF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1ba644b-7989-496d-8a0f-3cc4acbbd695_1350x429.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!ZaPF!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1ba644b-7989-496d-8a0f-3cc4acbbd695_1350x429.png 424w, /__u/substackcdn.com/image/fetch/$s_!ZaPF!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1ba644b-7989-496d-8a0f-3cc4acbbd695_1350x429.png 848w, /__u/substackcdn.com/image/fetch/$s_!ZaPF!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1ba644b-7989-496d-8a0f-3cc4acbbd695_1350x429.png 1272w, /__u/substackcdn.com/image/fetch/$s_!ZaPF!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1ba644b-7989-496d-8a0f-3cc4acbbd695_1350x429.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!ZaPF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1ba644b-7989-496d-8a0f-3cc4acbbd695_1350x429.png" width="1350" height="429" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f1ba644b-7989-496d-8a0f-3cc4acbbd695_1350x429.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:429,&quot;width&quot;:1350,&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="/__u/substackcdn.com/image/fetch/$s_!ZaPF!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1ba644b-7989-496d-8a0f-3cc4acbbd695_1350x429.png 424w, /__u/substackcdn.com/image/fetch/$s_!ZaPF!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1ba644b-7989-496d-8a0f-3cc4acbbd695_1350x429.png 848w, /__u/substackcdn.com/image/fetch/$s_!ZaPF!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1ba644b-7989-496d-8a0f-3cc4acbbd695_1350x429.png 1272w, /__u/substackcdn.com/image/fetch/$s_!ZaPF!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1ba644b-7989-496d-8a0f-3cc4acbbd695_1350x429.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">An additional fetch metadata step</figcaption></figure></div><p>The code will get shorter, as all the configs are stored elsewhere in a Snowflake table.</p><pre><code>version: v1
name: &#8216;#snowflake #dlt #matrix&#8217;
pipeline:
  3459fb19-f081-43ca-8997-f7f2d54d331d:
    tasks:
      c581252f-2975-4af6-8caf-a42e30527088:
        integration: PYTHON
        integration_job: PYTHON_EXECUTE_SCRIPT
        parameters:
          package_manager: PIP
          python_version: &#8216;3.12&#8217;
          build_command: pip install -r requirements.txt
          environment_variables: &#8216;{

            &#8220;SHEET_NAME&#8221;: &#8220;${{ MATRIX.gsheets[&#8217;&#8216;SHEET_NAME&#8217;&#8216;] }}&#8221;,


            &#8220;TABLE_NAME&#8221;:&#8221;${{ MATRIX.gsheets[&#8217;&#8216;TABLE_NAME&#8217;&#8216;] }}&#8221;,

            &#8220;RANGE_NAME&#8221;:&#8221;dlt_range&#8221;


            }&#8217;
          set_outputs: true
          source: GIT
          command: python -m run_dlt_pipelines_snowflake
          project_dir: dlt
          shallow_clone_dirs: dlt
        depends_on: []
        name: Execute parallel dlt
        connection: python__production__blueprints__19239
        treat_failure_as_warning: true
      00a86786-65c4-48df-8074-a2dfdd4e7dbb:
        integration: SNOWFLAKE
        integration_job: SNOWFLAKE_RUN_TEST
        parameters:
          statement: &#8216;select * from ${{ MATRIX.gsheets[&#8217;&#8216;TABLE_NAME&#8217;&#8216;] }}

            limit 1&#8217;
          error_threshold_expression: &lt;0
          warn_threshold_expression: &lt;1
          database: BIGQUERY_SAMPLE
          schema: PUBLIC
        depends_on:
        - c581252f-2975-4af6-8caf-a42e30527088
        name: Check data
        connection: snowflake__prod__80122
        treat_failure_as_warning: true
      2eb82923-5892-4c14-921d-a8a85afde545:
        integration: SNOWFLAKE
        integration_job: SNOWFLAKE_RUN_QUERY
        parameters:
          statement: execute task ${{ MATRIX.gsheets[&#8217;TABLE_NAME&#8217;] }}_TASK;
          set_outputs: false
        depends_on:
        - 00a86786-65c4-48df-8074-a2dfdd4e7dbb
        name: Insert Data
        treat_failure_as_warning: true
    depends_on: []
    name: &#8216;&#8217;
    matrix:
      inputs:
        gsheets:
        - SHEET_NAME: 1H0UnZ1vJ6WSsZgiVkg96zq52p7qaXkhvodlO1Mzoj6s
          TABLE_NAME: dbt_leads
        - SHEET_NAME: 1TMNhQFZbmaBsa1vIehQzh3vdyfc05damwJ_PIKDF14A
          TABLE_NAME: social_leads
        - SHEET_NAME: 1tImqLq_zLNthL7DDUkTUjU0xHoV_PhdM1zpuJ-TB0kk
          TABLE_NAME: unstructured_feedback
  e3e7d5bf-8c8c-400e-94d8-28a584fc638e:
    tasks:
      0f480822-0044-49b5-9635-eb9987978eab:
        integration: DBT_CORE
        integration_job: DBT_CORE_EXECUTE
        parameters:
          commands: dbt build
          package_manager: PIP
          python_version: &#8216;3.12&#8217;
          use_state_orchestration: true
          project_dir: dbt_projects/snowflake
          shallow_clone_dirs: dbt_projects/snowflake
        depends_on: []
        name: run dbt
        connection: dbt_snowflake_blueprints_prod_07025
    depends_on:
    - 3459fb19-f081-43ca-8997-f7f2d54d331d
    name: group
schedule:
- name: Daily at 8am
  cron: 0 8 ? * * *
  timezone: Europe/London
webhook:
  enabled: false
inputs:
  dbt_command:
    type: string
    default: build
  dbt_branch:
    type: string
    default: main
alerts:
- name: Failures
  statuses:
  - FAILED
  destinations:
  - integration: SLACK
    destination: alert-testing</code></pre><h3>Conclusion: Metadata Frameworks on Snowflake easier to use than ever before</h3><p>It is worth noting that throughout this process, I didn&#8217;t actually write a single line of code. I just got AI to do it for me.</p><p><a href="/__u/dataopsleadership.substack.com/p/everything-must-be-code-in-the-age">Everything must be code in the age of AI</a>, which means that having orchestration pipelines as code as well opens up a ton of new possibilities. When paired with a simple declarative framework built for scale like a MetaEngine, this is a breeze for AI to take control of.</p><p>This also avoids complex set-ups with multiple layers of nesting that data engineers struggle to break free from&#8202;&#8212;&#8202;the only things Databricks accelerators do is accelerate technical debt!</p><p>This pattern of load &#8594; object storage &#8594; test &#8594; possible clean &#8594; transformation is the ultimate metadata-driven approach on Snowflake.</p><p>It provides for any number of patterns. It is clean, uniform, has the perfect level of abstraction, and above all&#8202;&#8212;&#8202;it scales. This is not a system you implement that is complex to understand. The architecture is simple&#8202;&#8212;&#8202;but there is beauty in simplicity.</p><p>I hope you think so too!</p><p><em>Hugo Lu is the Founder of <a href="https://getorchestra.io">Orchestra</a>, the Single Pane of Glass for AI and Data.</em></p>]]></content:encoded></item><item><title><![CDATA[Is it the end for Data Observability Tools? Claude thinks so]]></title><description><![CDATA[How to easily build a data quality testing framework with Caude]]></description><link>https://dataopsleadership.substack.com/p/is-it-the-end-for-data-observability</link><guid isPermaLink="false">https://dataopsleadership.substack.com/p/is-it-the-end-for-data-observability</guid><dc:creator><![CDATA[Hugo Lu]]></dc:creator><pubDate>Mon, 20 Apr 2026 12:55:55 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/cJcBfzNipog" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2><strong>Introduction</strong></h2><p>Been having a lot of fun recenty with Claude, and this weekend I thought I&#8217;d try something new.</p><p>What if we used Claude and our existing Data Stack to do all the discovery that we do with data quality testing and observability.</p><p>Rather than rely on a complex testing framework and separate tool, we can leverage Claude and documentation to build a simple system that surfaces observability.</p><p>The results were surprisingly good. <strong>Claude successfully inspected the underlying data and recommended appropriate tests with little input</strong>.</p><p>The full video is below, but I&#8217;ve written it up too. <strong>If you&#8217;re a Head of Data constantly getting bothered by people like me trying to sell you software, this one&#8217;s for you</strong>.</p><div id="youtube2-cJcBfzNipog" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;cJcBfzNipog&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/cJcBfzNipog?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2><strong>Methodology for creating your observability | Claude Tester</strong></h2><p>The methodology is actually really simple.</p><h3><strong>1. Create a Data Quality Node</strong></h3><p>A data quality node or Task is a job in your orchestrator that knows how to run a SQL Query with some parameters.</p><p>You could just trigger Lambdas.</p><p>Here is an <a href="https://airflow.apache.org/docs/apache-airflow-providers-common-sql/stable/operators.html">example in Apache Airflow</a>, which uses the SQLThreshldHoldCheck Task.</p><pre><code>column_mapping = {
    &#8220;col_name&#8221;: {
        &#8220;null_check&#8221;: {&#8221;equal_to&#8221;: 0, &#8220;partition_clause&#8221;: &#8220;other_col LIKE &#8216;this&#8217;&#8221;},
        &#8220;min&#8221;: {
            &#8220;greater_than&#8221;: 5,
            &#8220;leq_to&#8221;: 10,
            &#8220;tolerance&#8221;: 0.2,
        },
        &#8220;max&#8221;: {&#8221;less_than&#8221;: 1000, &#8220;geq_to&#8221;: 10, &#8220;tolerance&#8221;: 0.01},
    }
}</code></pre><h3><strong>2. Create your Claude Skill | Knowledge dump</strong></h3><p>A common objection I&#8217;ve recevied is:</p><p>&#8220;Oh but Claude knows nothing about Governance&#8221;</p><p>No you&#8217;re right, it doesn&#8217;t. So why don&#8217;t you write it down?</p><p>It turns out that when you write down</p><p>&#8220;The Data is more or less uniform and as you expect it, but so and so column has this one particular quirk that means when you [check daily data] you need to [add 5 minus 10 and times it by a million]&#8221; Claude is actually pretty good at interpreting this arbitrary logic.</p><p>What&#8217;s best is that by <em>writing it down </em>somewhere you actually document it &#8212; magic!</p><p>It could be something as simple as:</p><pre><code>----- name:data-quality-test-writer ------
----- description: you are an agent designed to inspect data, work out errors in it, and write tests to catch errors 


1. You should expect to see credentials in your evnironment for &lt;WAREHOUSE&gt;
2. Find the tables, schema, and databases in the warehouse. For each table figure out what data is in there
(You can sample the data) and devise quality tests to assess the DQ
3. &lt;YOUR CUSTOM GNARLY LOGIC HERE&gt;
4. Below is an example of a pipeline you can PR into the repo for running the DQ Tests
5. When you PR it, create new branch and add relevant comments


```yml
version: v1
name: &#8216;Snowflake Timestamp Data Quality Tests #snowflake #dataquality&#8217;
pipeline:
  timestamp_not_null_tests:
    tasks:
      check_timestamp_not_null:
        integration: SNOWFLAKE
        integration_job: SNOWFLAKE_RUN_TEST
        parameters:
          statement: &#8216;select * from BIGQUERY_SAMPLE.${{ MATRIX.dq_inputs[&#8217;&#8216;schema&#8217;&#8216;]
            }}.${{ MATRIX.dq_inputs[&#8217;&#8216;table&#8217;&#8216;] }}

            where ${{ MATRIX.dq_inputs[&#8217;&#8216;column&#8217;&#8216;] }} is null

            limit 100&#8217;
          error_threshold_expression: &#8216;&gt; 0&#8217;
          warn_threshold_expression: &#8216;&gt; 0&#8217;
        depends_on: []
        name: Timestamp Not Null Check
        connection: ${{ ENV.SNOWFLAKE_CONNECTION }}
    depends_on: []
    name: Timestamp Not Null Tests
    matrix:
      inputs:
        dq_inputs:
        - schema: ORCHESTRA_METADATA
          table: PIPELINE_RUNS
          column: CREATED_AT
        - schema: ORCHESTRA_METADATA
          table: TASK_RUNS
          column: CREATED_AT
        - schema: PUBLIC
          table: ISSUES
          column: CREATED_AT
  timestamp_year_bounds_tests:
    tasks:
      check_timestamp_year_bounds:
        integration: SNOWFLAKE
        integration_job: SNOWFLAKE_RUN_TEST
        parameters:
          statement: &#8216;select * from BIGQUERY_SAMPLE.${{ MATRIX.dq_inputs[&#8217;&#8216;schema&#8217;&#8216;]
            }}.${{ MATRIX.dq_inputs[&#8217;&#8216;table&#8217;&#8216;] }}

            where year(${{ MATRIX.dq_inputs[&#8217;&#8216;column&#8217;&#8216;] }}) &lt; 2000

            or year(${{ MATRIX.dq_inputs[&#8217;&#8216;column&#8217;&#8216;] }}) &gt; 2030

            limit 100&#8217;
          error_threshold_expression: &#8216;&gt; 0&#8217;
          warn_threshold_expression: &#8216;&gt; 0&#8217;
        depends_on: []
        name: Timestamp Anomalous Year Check
        connection: ${{ ENV.SNOWFLAKE_CONNECTION }}
    depends_on:
    - timestamp_not_null_tests
    name: Timestamp Year Bounds Tests
    matrix:
      inputs:
        dq_inputs:
        - schema: ORCHESTRA_METADATA
          table: PIPELINE_RUNS
          column: CREATED_AT
        - schema: ORCHESTRA_METADATA
          table: TASK_RUNS
          column: CREATED_AT
        - schema: PUBLIC
          table: ISSUES
          column: CREATED_AT
schedule:
- name: Daily at 8am
  cron: 0 8 ? * MON-FRI *
  timezone: Europe/London
webhook:
  enabled: false
alerts:
- name: Failures
  statuses:
  - FAILED
  destinations:
  - integration: SLACK
    destination: alert-testing
```</code></pre><h3><strong>3. Run your Claude Skill | Let the magic happen</strong></h3><p>You might want to play around with the Skill a bit first.</p><p>For example, the first time I ran it, all my tests were green.</p><p>I want to find errors! Not be the emperor with no clothes!</p><p>But more or less, you can run this and perhaps even run it in a staging evironment as part of your testing.</p><p>As part of my Claude Skill, it generated the yml included in the skill above.</p><p>I then Pr&#8217;d it and ran it and this happened.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!rjp0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff45bd036-fd0a-4dfb-bba1-2c40656bf8f3_1125x615.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!rjp0!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff45bd036-fd0a-4dfb-bba1-2c40656bf8f3_1125x615.png 424w, /__u/substackcdn.com/image/fetch/$s_!rjp0!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff45bd036-fd0a-4dfb-bba1-2c40656bf8f3_1125x615.png 848w, /__u/substackcdn.com/image/fetch/$s_!rjp0!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff45bd036-fd0a-4dfb-bba1-2c40656bf8f3_1125x615.png 1272w, /__u/substackcdn.com/image/fetch/$s_!rjp0!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_webp, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff45bd036-fd0a-4dfb-bba1-2c40656bf8f3_1125x615.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!rjp0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff45bd036-fd0a-4dfb-bba1-2c40656bf8f3_1125x615.png" width="1125" height="615" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f45bd036-fd0a-4dfb-bba1-2c40656bf8f3_1125x615.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:615,&quot;width&quot;:1125,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!rjp0!, /__u/dataopsleadership.substack.com/w_424, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff45bd036-fd0a-4dfb-bba1-2c40656bf8f3_1125x615.png 424w, /__u/substackcdn.com/image/fetch/$s_!rjp0!, /__u/dataopsleadership.substack.com/w_848, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff45bd036-fd0a-4dfb-bba1-2c40656bf8f3_1125x615.png 848w, /__u/substackcdn.com/image/fetch/$s_!rjp0!, /__u/dataopsleadership.substack.com/w_1272, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff45bd036-fd0a-4dfb-bba1-2c40656bf8f3_1125x615.png 1272w, /__u/substackcdn.com/image/fetch/$s_!rjp0!, /__u/dataopsleadership.substack.com/w_1456, /__u/dataopsleadership.substack.com/c_limit, /__u/dataopsleadership.substack.com/f_auto, /__u/dataopsleadership.substack.com/q_auto:good, /__u/dataopsleadership.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff45bd036-fd0a-4dfb-bba1-2c40656bf8f3_1125x615.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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"><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"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Running Snowflake Data Quality Tests written by Claude in <a href="https://app.getorchestra.io/">Orchestra</a></p><p>Pretty cool right?</p><h2><strong>Conclusion | Let Claude be your leverage</strong></h2><p>This is by far the biggest tip I can give to you &#8212; but it&#8217;s to start thinking of Claude not as the end but as the leverage.</p><p>We all have data architectures out there. How can we &#8220;sweat&#8221; these assets and make them even more powerful?</p><p>In this context, it may a case of getting Claude to run things in the orchestrator. It may be getting it to configure <a href="https://docs.snowflake.com/en/user-guide/data-quality-intro">Snowflake Data Quality Checks</a> or <a href="https://docs.databricks.com/aws/en/data-governance/unity-catalog/data-quality-monitoring/">Databricks Quality Monitors</a>. The point is, AI Agents remove the friction that once existed around this particular problem.</p><p>They also offer a fantastic way to finally capture the tribal knowledge people have about how the data is the way it is.</p><p>As I wrote in the Youtube Video:</p><blockquote><p><em>Data Observability Tools always occupied a difficult space in the stack. Often thought of as &#8220;nice to have&#8221; and blindingly expensive, the great SAASPocalypse of 2026 (as well as tightening IT budgets globally) have Heads of Data considering what is critical and what is &#8220;nice to have&#8221;.</em></p><p><em>The most compelling reason was simply that many &#8220;data quality issues&#8221; are caused by things outside of a tool&#8217;s control. Poor processes and inputs at the source (human problems), failures in ingestion or orchestration code, or perhaps a simple lack of education for the end user all result in &#8220;data quality issues&#8221; &#8212; albeit ones that cannot be solved or even improved by ex-post testing.</em></p><p><em>Despite this, Data Observability Tools&#8217; customers are staunch, often due to their success in &#8220;identifying&#8221; the issue. A company with thousands or hundreds of thousands of tables simply needs a consolidated view, a job that would otherwise take multiple engineers. I believe AI is the straw that breaks the camel&#8217;s back. AI makes it easier than ever to construct systems of data quality testing.</em></p><p><em>The problem has never been the infrastructure. Other orchestrators, including Orchestra, Airflow and others all offer ways to run data quality tests. The issue has been in finding the time to write these tests.</em></p><p><em>With an Observability Tool, Data Governance Professionals could go in, decide what tests need to be run, and press play. AI makes it easier than ever to do this. In fact, it makes it so easy that perhaps, the Data Governance Professional isn&#8217;t needed either.</em></p></blockquote><p>To learn more about me and Orchestra, head to getorchestra dot io.</p>]]></content:encoded></item></channel></rss>