<?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[Data Creation]]></title><description><![CDATA[A blog on all things data products, data applications, and all things data - from me - Yali - cofounder at Snowplow - open source tech for creating data]]></description><link>https://datacreation.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!hp9Y!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fdatacreation.substack.com%2Fimg%2Fsubstack.png</url><title>Data Creation</title><link>https://datacreation.substack.com</link></image><generator>Substack</generator><lastBuildDate>Wed, 04 Nov 2026 18:04:21 GMT</lastBuildDate><atom:link href="iframe.php?url=https%3A%2F%2Fdatacreation.substack.com%2Ffeed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Yali Sassoon]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[datacreation@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[datacreation@substack.com]]></itunes:email><itunes:name><![CDATA[Yali Sassoon]]></itunes:name></itunes:owner><itunes:author><![CDATA[Yali Sassoon]]></itunes:author><googleplay:owner><![CDATA[datacreation@substack.com]]></googleplay:owner><googleplay:email><![CDATA[datacreation@substack.com]]></googleplay:email><googleplay:author><![CDATA[Yali Sassoon]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[What agents need to learn from their decisions]]></title><description><![CDATA[Autonomous agents could make companies faster, more agile and more effective. Getting there means designing them to author context as well as consume it.]]></description><link>https://datacreation.substack.com/p/what-agents-need-to-learn-from-their</link><guid isPermaLink="false">https://datacreation.substack.com/p/what-agents-need-to-learn-from-their</guid><dc:creator><![CDATA[Yali Sassoon]]></dc:creator><pubDate>Fri, 16 Oct 2026 11:16:24 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%215P8m%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F3e8dfa19-8df3-4957-b479-04ed2c1b65dc_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%215P8m%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F3e8dfa19-8df3-4957-b479-04ed2c1b65dc_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5P8m!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e8dfa19-8df3-4957-b479-04ed2c1b65dc_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!5P8m!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e8dfa19-8df3-4957-b479-04ed2c1b65dc_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!5P8m!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e8dfa19-8df3-4957-b479-04ed2c1b65dc_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!5P8m!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e8dfa19-8df3-4957-b479-04ed2c1b65dc_1672x941.png 1456w" sizes="100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%215P8m%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F3e8dfa19-8df3-4957-b479-04ed2c1b65dc_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3e8dfa19-8df3-4957-b479-04ed2c1b65dc_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2561096,&quot;alt&quot;:&quot;Two agents work along a shared ledger, preserving context from the agent creating it to the agent using it later.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://datacreation.substack.com/i/220679987?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e8dfa19-8df3-4957-b479-04ed2c1b65dc_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Two agents work along a shared ledger, preserving context from the agent creating it to the agent using it later." title="Two agents work along a shared ledger, preserving context from the agent creating it to the agent using it later." srcset="https://substackcdn.com/image/fetch/$s_!5P8m!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e8dfa19-8df3-4957-b479-04ed2c1b65dc_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!5P8m!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e8dfa19-8df3-4957-b479-04ed2c1b65dc_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!5P8m!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e8dfa19-8df3-4957-b479-04ed2c1b65dc_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!5P8m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e8dfa19-8df3-4957-b479-04ed2c1b65dc_1672x941.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Agents will do more of our analysis. Some will answer questions we ask; others will ask and answer their own questions while pursuing a goal. <a href="iframe.php?url=https%3A%2F%2Froundup.getdbt.com%2Fp%2Ffive-things-i-believe-about-the-future">Tristan Handy calls the second kind agent-initiated analytics</a>, and suggests those queries could outnumber human-initiated ones by a hundred to one within three years.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datacreation.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Data Creation! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Agent-initiated analytics is exciting because the agent can act on what it finds. It can power a self-learning loop: investigate, act, measure and use what it learns to decide what to do next. Companies able to run these loops across their operations could move much faster, learn more systematically and adapt more effectively as customers and markets change.</p><p>Autonomy is what makes this so consequential. Within agreed objectives and constraints, the agent can take the next step without waiting for a person to interpret each result and authorize each action. People still decide where that autonomy is appropriate. To earn it, the agent must use the right data and definitions, distinguish an effect from noise, and recognize when the evidence is too weak to act.</p><p>That is why I think we need to build agents that author context as well as consume it. As an agent works, it should record what it tried and why, and connect that account to what actually ran and what happened next. That gives the same agent, or a different one, a history it can learn from. The challenge is carrying the meaning of that context from creation to use.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21sTbs%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fd0ded3c0-e183-4fc9-ba34-938678bdf4c4_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sTbs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0ded3c0-e183-4fc9-ba34-938678bdf4c4_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!sTbs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0ded3c0-e183-4fc9-ba34-938678bdf4c4_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!sTbs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0ded3c0-e183-4fc9-ba34-938678bdf4c4_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!sTbs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0ded3c0-e183-4fc9-ba34-938678bdf4c4_1672x941.png 1456w" sizes="100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21sTbs%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fd0ded3c0-e183-4fc9-ba34-938678bdf4c4_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d0ded3c0-e183-4fc9-ba34-938678bdf4c4_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1768436,&quot;alt&quot;:&quot;Human-initiated analytics returns an answer to a person; agent-initiated analytics uses data to take action and feed a goal-directed loop.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://datacreation.substack.com/i/220679987?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0ded3c0-e183-4fc9-ba34-938678bdf4c4_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Human-initiated analytics returns an answer to a person; agent-initiated analytics uses data to take action and feed a goal-directed loop." title="Human-initiated analytics returns an answer to a person; agent-initiated analytics uses data to take action and feed a goal-directed loop." srcset="https://substackcdn.com/image/fetch/$s_!sTbs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0ded3c0-e183-4fc9-ba34-938678bdf4c4_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!sTbs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0ded3c0-e183-4fc9-ba34-938678bdf4c4_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!sTbs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0ded3c0-e183-4fc9-ba34-938678bdf4c4_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!sTbs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0ded3c0-e183-4fc9-ba34-938678bdf4c4_1672x941.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h2>What agents that pursue goals unlock</h2><p>Autonomous agents can run these loops in parallel across campaigns, features and customer experiences, with each decision building on previous attempts. By learning, I mean retaining what happened and using it to improve subsequent decisions. That could change the agent&#8217;s operating policy, the evidence it consults or, in some systems, the model&#8217;s weights. An enterprise could build and run thousands of these loops, making systematic learning part of how it operates.</p><p>Advertising gives us a precedent for handing the optimization of a loop to a computer. Google made <a href="iframe.php?url=https%3A%2F%2Fblog.google%2Fproducts%2Fads-commerce%2Fperformance-max%2F">Performance Max generally available in November 2021</a>; Meta introduced <a href="iframe.php?url=https%3A%2F%2Fabout.fb.com%2Fnews%2F2022%2F08%2Fintroducing-new-automation-tools-to-increase-sales-and-drive-growth%2F">Advantage+ Shopping in 2022</a>. The advertiser sets a budget and objective; the system handles ongoing optimization. Google describes budgets and bids being optimized across channels in real time. Machines can make these repetitive decisions far faster than people, applying a policy consistently at a scale no team could manage by hand. Meta told investors in July that its Advantage+ end-to-end solutions had passed a <a href="iframe.php?url=https%3A%2F%2Fs21.q4cdn.com%2F399680738%2Ffiles%2Fdoc_financials%2F2026%2Fq2%2FMETA-Q2-2026-Earnings-Call-Transcript.pdf">$75 billion annual revenue run-rate</a>, an indication of how widely advertisers have adopted this way of working.</p><p>The opportunity I see with agents is to extend that autonomy to much more of the work. An agent can formulate a new question, combine tools and change the intervention itself: create a different offer, build a landing page or investigate why a segment responds differently. More of the work between setting a goal and pursuing it can happen without a human specifying steps in advance.</p><p>The strongest candidates for autonomous agents have measurable goals, controllable actions and feedback that can distinguish improvement from noise, arriving soon enough to inform the next decision. <a href="iframe.php?url=https%3A%2F%2Fthreadreaderapp.com%2Fthread%2F1990116666194456651.html">Andrej Karpathy&#8217;s rule</a>, &#8220;Software 2.0 easily automates what you can verify,&#8221; is critical here. For a business loop, the challenge is verifying progress toward the actual goal, and then diagnosing <em>why</em> that happened. That is a data and analytics challenge.</p><h2>What this looks like in marketing and product development</h2><p>Consider a mid-sized e-commerce company. Channel managers optimize within their channels; the CMO periodically reallocates budget between them. Analysis informs those decisions, but moving from a finding to a coordinated change takes work.</p><p>Now imagine an agent tasked with growing incremental revenue at a target incremental cost of acquisition. It has constraints: brand requirements, a minimum budget per channel and a maximum daily change. It monitors performance hourly and reallocates when the evidence justifies it. It commissions incrementality tests when attribution alone cannot answer the question. Within those constraints, the agent can act on its analysis without waiting for someone to review it.</p><p>The components already exist, with different levels of autonomy. <a href="iframe.php?url=https%3A%2F%2Fwww.haus.io%2Farticle%2Fwhat-is-agentic-media-buying">Haus</a> describes execution after approval; <a href="iframe.php?url=https%3A%2F%2Fgetrecast.com%2Fintroducing-recast-apis%2F">Recast</a> exposes planning and optimization tools through APIs; <a href="iframe.php?url=https%3A%2F%2Fsellforte.com%2Fblog%2Fthe-rise-of-agentic-mmm">Sellforte</a> offers autonomous and assisted media buying. The harder question is when the evidence is reliable enough to let the system move money <em>autonomously</em>.</p><p>Product development offers a similar possibility. A team ships a feature to move a metric, runs an experiment and decides whether to roll it out. In September, <a href="iframe.php?url=https%3A%2F%2Faws.amazon.com%2Fblogs%2Fdevops%2Fautomating-the-experimentation-lifecycle-with-kiro-aws-devops-agent-and-launchdarkly%2F">AWS and LaunchDarkly published a reference implementation</a> connecting code changes, experiments and guarded rollout, including a scheduled agent that can advance a winning treatment autonomously. The demonstration uses synthetic traffic: it shows that the steps can be connected, but does not establish how quickly a real business can learn.</p><p>Automatic safeguards are also available. <a href="iframe.php?url=https%3A%2F%2Fwww.datadoghq.com%2Fblog%2Fguardrail-metrics%2F">Datadog&#8217;s guardrail metrics</a> can trigger rollback when a release breaches a threshold. But detecting harm and establishing a commercial benefit are different jobs. The <a href="iframe.php?url=https%3A%2F%2Fbooking.ai%2Fa-recap-of-the-2026-experimentation-conference-at-booking-com-f43d48698fcd">Booking.com conference recap</a> draws the lesson from Marcel Toben&#8217;s talk that cheaper software changes make rigorous evaluation more important. Knowing whether a feature worked still takes a correctly designed experiment, enough traffic, appropriate guardrails and a valid stopping rule.</p><h2>What it costs when the analysis is wrong</h2><p>Giving an agent the levers makes an analytical mistake expensive. The same mistaken interpretation can drive repeated changes across campaigns, features or customers before someone notices.</p><p>Zillow&#8217;s experience shows how costly it can be to discover that a forecast is unreliable after capital has already been committed. In Q3 2021 it recorded a <a href="iframe.php?url=https%3A%2F%2Fwww.sec.gov%2FArchives%2Fedgar%2Fdata%2F1617640%2F000161764021000085%2Fexhibit993.htm">$304 million inventory write-down</a>. Forecasting uncertainty and renovation and resale capacity constraints contributed to its difficulties. The company announced in <a href="iframe.php?url=https%3A%2F%2Fwww.npr.org%2F2021%2F11%2F03%2F1051941654%2Fzillow-will-stop-buying-and-renovating-homes-and-cut-25-of-its-workforce">November that it would wind down Zillow Offers</a>. An observable outcome does not guarantee timely feedback.</p><p>Feedback can also reward the wrong behavior. A marketing agent optimizing a biased attribution metric might report success while generating little incremental business. <a href="iframe.php?url=https%3A%2F%2Fwww.measured.com%2Ffaq%2Fdo-you-still-need-mmm-platforms-in-the-age-of-ai%2F">Measured&#8217;s Trevor Testwuide puts it sharply</a>: &#8220;Automation does not remove attribution bias. It industrializes it.&#8221; The agent can improve its assigned measure and still miss the business goal.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21Jr7J%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F064e6148-9e45-44b0-b6dd-e2b2a8841ce1_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Jr7J!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F064e6148-9e45-44b0-b6dd-e2b2a8841ce1_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!Jr7J!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F064e6148-9e45-44b0-b6dd-e2b2a8841ce1_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!Jr7J!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F064e6148-9e45-44b0-b6dd-e2b2a8841ce1_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!Jr7J!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F064e6148-9e45-44b0-b6dd-e2b2a8841ce1_1672x941.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21Jr7J%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F064e6148-9e45-44b0-b6dd-e2b2a8841ce1_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/064e6148-9e45-44b0-b6dd-e2b2a8841ce1_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2288366,&quot;alt&quot;:&quot;A decide, build, customers respond and measure loop spirals inward, illustrating repeated decisions based on unreliable analysis.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://datacreation.substack.com/i/220679987?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F064e6148-9e45-44b0-b6dd-e2b2a8841ce1_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A decide, build, customers respond and measure loop spirals inward, illustrating repeated decisions based on unreliable analysis." title="A decide, build, customers respond and measure loop spirals inward, illustrating repeated decisions based on unreliable analysis." srcset="https://substackcdn.com/image/fetch/$s_!Jr7J!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F064e6148-9e45-44b0-b6dd-e2b2a8841ce1_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!Jr7J!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F064e6148-9e45-44b0-b6dd-e2b2a8841ce1_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!Jr7J!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F064e6148-9e45-44b0-b6dd-e2b2a8841ce1_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!Jr7J!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F064e6148-9e45-44b0-b6dd-e2b2a8841ce1_1672x941.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>These problems require different remedies. Better records alone cannot guarantee timely feedback or turn a biased metric into a valid measure of success. But without reliable records of actions and outcomes, the agent also lacks the evidence to discover what went wrong.</p><h2>What an agent needs in order to learn</h2><p><strong>For agents to learn reliably from their actions, the system needs to preserve what they tried, what actually ran and what happened next, with enough context to connect and interpret those records.</strong></p><p>A marketing agent&#8217;s work leaves three kinds of data behind:</p><ol><li><p>The decision and its context: which budget moved, when, and which reading of which numbers justified it.</p></li><li><p>The campaign that actually ran: its creative, landing page, offer and version.</p></li><li><p>The customer behavior that followed: who saw it, clicked and converted.</p></li></ol><p>A product agent needs the equivalent: the hypothesis and chosen cohort, the feature actually delivered, and how users engaged with it. The agent can supply its intention and rationale. Instrumentation should independently record execution and outcomes. A convincing account of what the agent meant to do is not evidence that it happened.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21tiTm%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fa9d73d86-0d2d-4612-9fa4-444051906adb_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tiTm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9d73d86-0d2d-4612-9fa4-444051906adb_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!tiTm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9d73d86-0d2d-4612-9fa4-444051906adb_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!tiTm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9d73d86-0d2d-4612-9fa4-444051906adb_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!tiTm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9d73d86-0d2d-4612-9fa4-444051906adb_1672x941.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21tiTm%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fa9d73d86-0d2d-4612-9fa4-444051906adb_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a9d73d86-0d2d-4612-9fa4-444051906adb_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1779846,&quot;alt&quot;:&quot;Decisions, campaigns or features, and customer behavior feed enterprise context, which informs the next decision in a continuous learning loop.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://datacreation.substack.com/i/220679987?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9d73d86-0d2d-4612-9fa4-444051906adb_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Decisions, campaigns or features, and customer behavior feed enterprise context, which informs the next decision in a continuous learning loop." title="Decisions, campaigns or features, and customer behavior feed enterprise context, which informs the next decision in a continuous learning loop." srcset="https://substackcdn.com/image/fetch/$s_!tiTm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9d73d86-0d2d-4612-9fa4-444051906adb_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!tiTm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9d73d86-0d2d-4612-9fa4-444051906adb_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!tiTm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9d73d86-0d2d-4612-9fa4-444051906adb_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!tiTm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9d73d86-0d2d-4612-9fa4-444051906adb_1672x941.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Suppose the marketing agent changes a campaign&#8217;s offer as well as its budget. Conversions rise. If the record contains only channel spend and total conversions, the next analysis may credit the budget move for a change caused by the offer. Recording both changes against the campaign version makes that competing explanation visible. An experiment or credible causal model is still needed to separate their effects.</p><p>The pieces often exist in different systems: an agent trace, a campaign or feature record, and customer events. Learning needs reliable connections between them, with shared identifiers, versions and definitions. Outcomes arrive later, and one intervention can affect many customers.</p><p>Observability tools such as <a href="iframe.php?url=https%3A%2F%2Fdocs.langchain.com%2Flangsmith%2Fobservability">LangSmith</a> and <a href="iframe.php?url=https%3A%2F%2Flangfuse.com%2F">Langfuse</a> support tracing, evaluations, feedback and additional context. They provide useful foundations, but the business connection between a budget decision, a campaign version and customer behavior still has to be designed and maintained across systems.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%2174O7%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fb5d652f0-ed4a-4567-b16c-6da86595a85b_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!74O7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5d652f0-ed4a-4567-b16c-6da86595a85b_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!74O7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5d652f0-ed4a-4567-b16c-6da86595a85b_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!74O7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5d652f0-ed4a-4567-b16c-6da86595a85b_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!74O7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5d652f0-ed4a-4567-b16c-6da86595a85b_1672x941.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%2174O7%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fb5d652f0-ed4a-4567-b16c-6da86595a85b_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b5d652f0-ed4a-4567-b16c-6da86595a85b_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1828240,&quot;alt&quot;:&quot;An agent trace records prompts, tool calls and timing; linked business records connect a decision, its campaign and the outcome for later analysis.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://datacreation.substack.com/i/220679987?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5d652f0-ed4a-4567-b16c-6da86595a85b_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="An agent trace records prompts, tool calls and timing; linked business records connect a decision, its campaign and the outcome for later analysis." title="An agent trace records prompts, tool calls and timing; linked business records connect a decision, its campaign and the outcome for later analysis." srcset="https://substackcdn.com/image/fetch/$s_!74O7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5d652f0-ed4a-4567-b16c-6da86595a85b_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!74O7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5d652f0-ed4a-4567-b16c-6da86595a85b_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!74O7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5d652f0-ed4a-4567-b16c-6da86595a85b_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!74O7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5d652f0-ed4a-4567-b16c-6da86595a85b_1672x941.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>The meaning must survive too. <a href="iframe.php?url=https%3A%2F%2Fclaude.com%2Fresources%2Farticles%2Fhow-anthropic-enables-self-service-data-analytics-with-claude">Anthropic reports</a> that its analytics agent achieved no more than 21% accuracy without skills and over 95% with them on its internal evaluations. The skills supplied procedural guidance, retrieval, governed data and validation. Pointing the agent at existing SQL files alone improved accuracy by less than a percentage point. The account also describes offline accuracy falling from 95% toward 65% within a month as context became stale. Maintained context mattered as much as access to data.</p><p><a href="iframe.php?url=https%3A%2F%2Fengineering.atspotify.com%2F2026%2F6%2Fencoding-your-domain-expert-the-context-layer-behind-spotifys-data-assistant">Spotify&#8217;s data assistant team</a> and <a href="iframe.php?url=https%3A%2F%2Fcareersatdoordash.com%2Fblog%2Finside-vera-doordashs-data-agent%2F">DoorDash&#8217;s Vera team</a> describe the importance of domain expertise, context and evaluations too. Their work supports a practical conclusion: reliable analysis requires more than giving a model a database connection. It does not require a domain expert to sit beside the agent for every query.</p><p>For new data we control, we can reduce the reconstruction work by capturing meaning when the data is created. <a href="iframe.php?url=https%3A%2F%2Fwww.dataengineeringweekly.com%2Fp%2Fdata-engineering-after-ai">Ananth Packkildurai describes early binding</a> as capturing semantic intent at production through data contracts. He also stresses that this alone is insufficient: context must survive downstream transformations, and sources outside our control may need later contextualization. For autonomous agents, my proposal is to make authoring enterprise context part of the work itself.</p><p>Return to the marketing agent. When it proposes a budget move, it can record the channels, amounts, campaign version, evidence and hypothesis. The execution system can record whether the move actually happened. Customer events can carry identifiers that connect them to the campaign and offer customers saw, using agreed definitions of a click or conversion. A week later, an agent investigating the result can recover that history instead of guessing what changed.</p><p>As agents take responsibility for more work, they can author more of the context that makes it understandable. If they do this reliably, each campaign, feature and experiment leaves a usable history for other agents, including those introduced later. The more work agents do this way, the easier it becomes for their successors to learn from what has already been tried.</p><p>They need not author every record themselves: historical data and independently measured transactions remain useful evidence. But the campaign version, metric definitions, evidence and assumptions must remain connected and interpretable as records move between systems and agents. Definitions still need owners, validation and maintenance; an assumption must remain distinguishable from an observed outcome.</p><p>People therefore remain responsible for the standards of evidence and for evaluating the system. They can inspect exceptions without interpreting every routine result. When the evidence is inconclusive, the correct decision may be to keep the current policy, gather more data or escalate. An agent that knows when to wait is more useful than one that always finds a reason to act.</p><p>I must note that I am not a neutral observer: this is the problem we are working on at Snowplow. Our focus is agents that build applications, deliver marketing and shape user experiences in real time. We want the context they author to remain connected to what actually ran and how customers behaved, ready for the same agent reviewing yesterday&#8217;s campaign or a different agent designing next month&#8217;s experience.</p><p><strong>Context must retain its meaning from the moment an agent authors it to the moment that agent, or another agent, consumes it to learn. Carrying context from creation to use lets future decisions build on what earlier agents tried and what actually happened.</strong></p><p>With that foundation, autonomous agents can act quickly, learn systematically and pass those lessons on, helping the business become more agile and effective with each cycle.</p><p>People will still read analysis: to learn what agents found and to check how they reached their conclusions. What that does to the people whose profession is analysis is the next post.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datacreation.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Data Creation! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Does decision gravity follow data gravity?]]></title><description><![CDATA[Agents need to create, not just consume, enterprise context]]></description><link>https://datacreation.substack.com/p/does-decision-gravity-follow-data</link><guid isPermaLink="false">https://datacreation.substack.com/p/does-decision-gravity-follow-data</guid><dc:creator><![CDATA[Yali Sassoon]]></dc:creator><pubDate>Tue, 13 Oct 2026 07:33:58 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21QOUP%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F0418ffc5-bc3b-4b12-bf6e-2e5304be9191_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21QOUP%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F0418ffc5-bc3b-4b12-bf6e-2e5304be9191_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QOUP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0418ffc5-bc3b-4b12-bf6e-2e5304be9191_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!QOUP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0418ffc5-bc3b-4b12-bf6e-2e5304be9191_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!QOUP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0418ffc5-bc3b-4b12-bf6e-2e5304be9191_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!QOUP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0418ffc5-bc3b-4b12-bf6e-2e5304be9191_1672x941.png 1456w" sizes="100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21QOUP%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F0418ffc5-bc3b-4b12-bf6e-2e5304be9191_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0418ffc5-bc3b-4b12-bf6e-2e5304be9191_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2490806,&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://datacreation.substack.com/i/218940413?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0418ffc5-bc3b-4b12-bf6e-2e5304be9191_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!QOUP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0418ffc5-bc3b-4b12-bf6e-2e5304be9191_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!QOUP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0418ffc5-bc3b-4b12-bf6e-2e5304be9191_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!QOUP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0418ffc5-bc3b-4b12-bf6e-2e5304be9191_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!QOUP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0418ffc5-bc3b-4b12-bf6e-2e5304be9191_1672x941.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I ended <a href="iframe.php?url=https%3A%2F%2Fdatacreation.substack.com%2Fp%2Fthe-modern-data-stacks-boldest-prediction">my last post</a> with the wrong question.</p><p>In that post, I argued that traditional multi-tenanted SaaS applications could not rearchitect on cloud data platforms because they could not work on a data layer they did not control: the integration costs were simply too high. The next generation of operational systems will be agentic, and a set of agents working in one tenant can learn to use the data in the customer&#8217;s own cloud data platform without worrying that the data in the next tenant looks completely different. That is what has created the opportunity for the cloud data platforms to become the foundation the next generation of operational systems is built on.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datacreation.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Data Creation! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>The question I asked was &#8220;does <a href="iframe.php?url=http%3A%2F%2Fsourceoftruth.substack.com%2Fp%2Fdatabricks-just-announced-customerlake">decision gravity</a> follow data gravity?&#8221; Will the next generation of agentic applications run natively on the cloud data platforms? I framed it as a question about compute: if I build an agent that uses my data in Snowflake, do I build it with CoCo (formerly Cortex Code), or do I just as easily reach for Claude Code, OpenAI Codex or some other agent-and-harness combination, given that any of them can help themselves to that enterprise context via MCP?</p><p>It was reading Brett Queener&#8217;s excellent <a href="iframe.php?url=https%3A%2F%2Fqueener.substack.com%2Fp%2Fthe-harness-the-horse-or-the-hay">The Harness, the Horse or the Hay</a> that made me realize it was the wrong question. Queener imposes a devastating simplicity on the agentic application stack. He boils it down to three types of solution:</p><ul><li><p><strong>The horse.</strong> This is the LLM.</p></li><li><p><strong>The harness.</strong> This is the agentic application. A harness is built for a specific persona or business function, and it needs to do <em>everything</em> that persona needs. Harvey for lawyers and Cursor for software developers are both harnesses (they are two of Queener&#8217;s own examples). Harnesses that are not built for a specific specialism end up being built and owned by the horse: that is what we are seeing with the spread of Claude Cowork and ChatGPT Work across all generic knowledge work. It matters here because it leaves the specialist harnesses, and whatever they are built on, as the ground the platforms could still take.</p></li><li><p><strong>The hay.</strong> This is everything else: ingestion, serving, memory, evals, observability, and the data platforms themselves. Queener puts data platforms like Databricks and Snowflake here.</p></li></ul><p>So the question is: who will own the harnesses the next generation of enterprise business applications are built on? Do the cloud data platforms have the opportunity to become harnesses for one or more business functions as they work their way up into the application layer? Or could they become something more useful, a <strong>meta-harness</strong>: the thing other companies, including their own customers, build their business-focused harnesses on top of?</p><p>If they can, the compute and the billing that goes with it will follow. I believe that they have the opportunity, but that today they are missing at least one primitive they need to seize it, and probably more: the ability for agents to <em>create enterprise context</em>.</p><h2>The naive argument for decision gravity following data gravity</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21yYK5%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F09946f20-e175-4cf3-8391-19482b9254c7_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yYK5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09946f20-e175-4cf3-8391-19482b9254c7_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!yYK5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09946f20-e175-4cf3-8391-19482b9254c7_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!yYK5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09946f20-e175-4cf3-8391-19482b9254c7_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!yYK5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09946f20-e175-4cf3-8391-19482b9254c7_1672x941.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21yYK5%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F09946f20-e175-4cf3-8391-19482b9254c7_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/09946f20-e175-4cf3-8391-19482b9254c7_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1461588,&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://datacreation.substack.com/i/218940413?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09946f20-e175-4cf3-8391-19482b9254c7_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yYK5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09946f20-e175-4cf3-8391-19482b9254c7_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!yYK5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09946f20-e175-4cf3-8391-19482b9254c7_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!yYK5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09946f20-e175-4cf3-8391-19482b9254c7_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!yYK5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09946f20-e175-4cf3-8391-19482b9254c7_1672x941.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Agentic applications are loops. The agent has a goal. To pursue it, it observes, orients, decides and acts, and then does it again with what it has learned. A marketing agent that shipped an offer to 40,000 lapsed subscribers and saw 2% of them come back should behave differently tomorrow, and a support agent allowed to refund anything under $50 without escalation should learn which of those refunds come back as chargebacks.</p><p>Enterprise context is the pre-requisite for these loops. It powers the observe and orient phases, because it gives agents broad and deep visibility into what has changed across the enterprise. And it should enable the learning, because it ought to be possible to read from the data every decision made in the past along with what actually happened.</p><p>The speed with which these applications learn will be critical. Learning compounds, and as a buyer you would be mad to buy a solution that learns more slowly than the alternative. Putting the decision next to the data is one way to make the loop run faster. So, the argument goes, rather than bring your enterprise context to your agent, bring your agent to your enterprise context and build it natively in Snowflake, Databricks, BigQuery, Fabric or ClickHouse. That is the platforms&#8217; long-running pitch, &#8220;bring AI to your data&#8221;, and it makes a lot of sense.</p><h2>To learn effectively, agents need to be able to <em>create enterprise context</em></h2><p>There are two overlapping problems for the naive argument.</p><p>The first is that important context about the past is not in the enterprise data platform. The best example is the decision trace: the record of who decided what, on what grounds, with which exceptions. Jaya Gupta and Ashu Garg at Foundation Capital set out both the gap and the value of this data in their excellent <a href="iframe.php?url=https%3A%2F%2Ffoundationcapital.com%2Fideas%2Fcontext-graphs-ais-trillion-dollar-opportunity">Context graphs: AI&#8217;s trillion-dollar opportunity</a>. Those traces, in their words, live today &#8220;in Slack threads, deal desk conversations, escalation calls, and people&#8217;s heads&#8221;, and &#8220;by the time data lands in Snowflake, the decision context is gone.&#8221;</p><p>The second is that effective agents are going to change the future of the organizations they run in, quite literally transforming the context in which they operate. That new context needs to be captured and used to power learning. <strong>Agents need to be able to create enterprise context.</strong> The ELT pipelines, dbt jobs and human-curated semantic layers that today&#8217;s data stacks are built on are not fit for this, for two reasons. They record the state of source systems, not decisions or the grounds for them: a Salesforce sync tells you the opportunity closed, not why the discount was approved. And they change on a human release cycle, one pull request at a time, while agents will be deciding and learning continuously. Nor will throwing hundreds of agents at the data exhaust and hoping they assemble it work.</p><p>What does &#8220;create enterprise context&#8221; mean in practice? Writing <em>data</em> is not the hard part: an INSERT over MCP into Snowflake is a solved problem. Take the agent that shipped the offer to 40,000 lapsed subscribers. For the next decision in the business to be better for it, human or agent, in marketing or outside it, the record has to say who the 40,000 were and by what definition; what the offer was and why it was chosen over the alternatives; what happened, against which baseline; and what the agent concluded. The audience definition has to reconcile with the one the finance team uses for the same customers. The outcome has to be attributed in a way the sales agent will not contradict next quarter. That is an editorial act on the enterprise&#8217;s shared description of itself, and there is no governed path for it today, in the platforms or in the applications.</p><p>That record, not the underlying data, is the asset with gravity: the governed, continuously written account of what the business knew, decided and learned, in terms the whole business shares. I am going to call the pull it exerts <strong>context gravity</strong>, to distinguish it from data gravity, which MCP has made weak, and from decision gravity, which is the prize rather than the contest. Agents will end up where their context can be written, not merely where the data can be read.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21UzMz%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F569c5899-86b1-4eed-8ba3-ad4674469716_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UzMz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F569c5899-86b1-4eed-8ba3-ad4674469716_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!UzMz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F569c5899-86b1-4eed-8ba3-ad4674469716_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!UzMz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F569c5899-86b1-4eed-8ba3-ad4674469716_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!UzMz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F569c5899-86b1-4eed-8ba3-ad4674469716_1672x941.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21UzMz%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F569c5899-86b1-4eed-8ba3-ad4674469716_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/569c5899-86b1-4eed-8ba3-ad4674469716_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1423974,&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://datacreation.substack.com/i/218940413?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F569c5899-86b1-4eed-8ba3-ad4674469716_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!UzMz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F569c5899-86b1-4eed-8ba3-ad4674469716_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!UzMz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F569c5899-86b1-4eed-8ba3-ad4674469716_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!UzMz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F569c5899-86b1-4eed-8ba3-ad4674469716_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!UzMz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F569c5899-86b1-4eed-8ba3-ad4674469716_1672x941.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>What the Foundation Capital argument gets right, but why I think it is wrong</h2><p>For Gupta and Garg, the fact that the cloud data platforms are missing some of the most valuable context agents need, <em>and</em> have no clear path to acquiring it, means that decision gravity will not follow data gravity. Instead, a new breed of agentic startups will be where the decisions take place, capturing the traces &#8220;at decision time&#8212;not after the fact via ETL, but in the moment, as a first-class record&#8221;. Their examples are Regie in sales engagement, Maximor in the finance close and PlayerZero in L2/L3 support. Sierra is the clearest case in the wild: last December it announced an <a href="iframe.php?url=https%3A%2F%2Fsierra.ai%2Fblog%2Fsiriusxm-adp-announcement">Agent Data Platform</a> with SiriusXM to give its customer-service agent &#8220;the context to know not just what a listener is asking for today, but what will make them smile tomorrow&#8221;. No warehouse is named. Sierra is building its own data layer, and what its agent learns about SiriusXM&#8217;s listeners stays inside it.</p><p>I don&#8217;t buy the argument. Agents, and therefore their harnesses, need access to all the data required to do their jobs. If that data were siloed in the domain the agent serves, the private-context model would be workable. But enterprises are interconnected systems: things that happen in one domain have consequences in others. Foundation Capital&#8217;s own illustrative workflow concedes this, with an agent checking ARR in Salesforce, escalations in Zendesk and churn signals in Slack: the context that matters is cross-system by their own account, and a graph inside one vendor&#8217;s execution path sees one role&#8217;s slice of it. One of the strengths of the cloud data platforms is that, set up right, every domain contributes its own data and has visibility of everyone else&#8217;s.</p><p>Suppose the private-context model wins. Sierra builds a context store for the support agent; the marketing harness builds one for the marketing agent; the sales and finance harnesses each build their own. Five agents, five private world-models of the same customers, each getting better in isolation, none of them correcting the others. That is the SaaS data sprawl of my last post, recreated in the new agentic paradigm. Twenty years ago every department bought the tool with the best UX for its workflow and the business&#8217;s data fragmented across a hundred vendors; the warehouse was supposed to end it. The agentic version is worse, because what fragments this time is not the data but the learned judgment.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%211FtW%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fbb2cfd9d-86ca-49d7-bc8f-903bf9f01fda_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1FtW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb2cfd9d-86ca-49d7-bc8f-903bf9f01fda_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!1FtW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb2cfd9d-86ca-49d7-bc8f-903bf9f01fda_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!1FtW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb2cfd9d-86ca-49d7-bc8f-903bf9f01fda_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!1FtW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb2cfd9d-86ca-49d7-bc8f-903bf9f01fda_1672x941.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%211FtW%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fbb2cfd9d-86ca-49d7-bc8f-903bf9f01fda_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bb2cfd9d-86ca-49d7-bc8f-903bf9f01fda_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1600913,&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://datacreation.substack.com/i/218940413?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb2cfd9d-86ca-49d7-bc8f-903bf9f01fda_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1FtW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb2cfd9d-86ca-49d7-bc8f-903bf9f01fda_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!1FtW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb2cfd9d-86ca-49d7-bc8f-903bf9f01fda_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!1FtW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb2cfd9d-86ca-49d7-bc8f-903bf9f01fda_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!1FtW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb2cfd9d-86ca-49d7-bc8f-903bf9f01fda_1672x941.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>So at minimum the harness will need read access to the data platform. But what sort of enterprise is going to give a vendor&#8217;s agent access to its data and then not own the resulting enterprise context, all those decisions and all that learning, because it lives in the vendor&#8217;s harness? I think they will insist on it being written back. If it isn&#8217;t, they don&#8217;t own their own intelligence, or their own data.</p><p>That is a prediction rather than a finding. In the deals I see, buyers have started refusing software that will not expose its data and functions over MCP; in about a year it has become a procurement line item, and it applies to the agentic vendors as much as to the incumbents. That is a demand to <em>read data </em>and<em> call functions</em>. The demand for write-back, for the vendor&#8217;s agent to record what it learned in the customer&#8217;s shared model rather than in the vendor&#8217;s private one, is complementary and critical: a business cannot run on N agents each learning privately from N divergent pictures of the same customers. Foundation Capital have identified the asset correctly. But they are wrong about who gets to keep it.</p><h2>What we can learn from aircraft engineering</h2><p>There is a much older industry that I think is instructive. An airliner is on a stand three thousand miles from its airline&#8217;s own hangar. A contractor&#8217;s engineer, employed by a maintenance organization the airline has never dealt with, replaces a hydraulic pump. Before the aircraft flies, the engineer records what was found, what was done and why in the aircraft&#8217;s technical log, and signs it. The log stays with the aircraft, not the contractor. Under EASA&#8217;s technical-log rules (Part-M M.A.306) and FAA Part 121 (&#167;121.709), the aircraft may not be operated after maintenance without a signed airworthiness release or log entry. And the next engineer to open a panel, at another airport, employed by another company, reads that entry before deciding what to do.</p><p>The record belongs to the asset&#8217;s owner, not to whoever did the work. Writing to it is governed: there is a format, an authorization and a signature. And the record is the mechanism by which the next decision is better than it would otherwise have been. Contractors are interchangeable precisely because the log is shared. An airline that let each contractor keep a private log of what it had done to the fleet would not know the state of its own aircraft. Nobody proposes the private-log model for aircraft. It is exactly what the harness vendors are proposing for the enterprise.</p><h2>So what are the missing primitives the cloud data platforms need to provide?</h2><p>Two, one for each half of the loop.</p><p><strong>The ability for agents to create enterprise context.</strong> A governed write path by which an agent, including one the platform did not build and does not bill for, records what it knew, decided and learned, in the customer&#8217;s shared model of the business rather than in a private store. Governed the way the technical log is governed: a schema for the record, versioning so that the definition of a customer or an outcome can evolve without breaking the agents that depend on it, and an authorization so that a marketing agent cannot silently redefine what the finance team means by revenue. This is a primitive the data platforms are missing, and it is the one that decides whether they are the meta-harness or the hay.</p><p><strong>The ability to use that context to power systematic learning.</strong> Decisions joined to outcomes, searchable as precedent, and a grading and feedback substrate that a harness builder can use rather than build privately: the machinery by which a graded outcome changes the agent&#8217;s future behavior without an engineer deciding what to change. Foundation Capital are right that this is where the value compounds; the question is whether it compounds in one vendor&#8217;s silo or in the enterprise&#8217;s shared context. How agents actually learn, and what the platforms owe the people building harnesses on them, is an area I plan to explore in future posts.</p><p>The platforms are moving in this direction, and it is worth being exact about how far. Snowflake now describes its ambition as being &#8220;the control plane for the agentic enterprise&#8221; and says Snowflake Intelligence &#8220;adapts over time by learning individual preferences and workflows&#8221;. Databricks announced in June a managed memory service in which agents &#8220;manage their own context, session history, and persist them across sessions&#8221;, says of agents&#8217; reasoning traces and memory writes that &#8220;that data should be governed in the Lakehouse alongside the rest of your data&#8221;, and has added to Unity Catalog &#8220;all agents, models, MCPs, Skills, and external agents&#8221;. Memory, write-back and a registry of third-party agents are the parts. The question is whom they are for. A memory service for the platform&#8217;s own agents is a feature. A write path that a rival&#8217;s harness is invited to use, in the customer&#8217;s shared model, under the customer&#8217;s governance, is a meta-harness. The test of intent is whether it works for an agent the platform does not bill for, because that is the case that does not obviously increase consumption, and it is the case the customer needs.</p><p>I should say what my own interest is. At Snowplow we have spent more than a decade learning how hard it is to create behavioral context well: to write a description of what a customer did that is accurate, versioned, governed and still means the same thing to the marketing team, the product team and the model that consumes it. We are now working on what it takes to write that context back for agents, and the write-back problem for decisions has the same shape as the creation problem we started with. The hard part is agreeing what the row means: which customers count as lapsed, which outcome counts as a return, and whether finance uses the same definitions.</p><h2>Does decision gravity follow data gravity? Maybe, but not necessarily</h2><p>Will the data platforms get to own the meta-harness on which the next generation of agentic, vertical-focused apps are built? Maybe, but only if they build all the required capabilities. Any agent can read the data over MCP, and the learning loop is pulling context out of the data platform toward the harness, which may or may not be running natively in the data platform. Decision gravity follows context gravity, and context gravity accrues to whoever provides the governed, shared path for <em>writing</em> what the agent <em>learns </em>on behalf of the business. The cloud data platforms are the natural home for that path, because they already hold the data the context describes and because the customer will not tolerate a private log per vendor. But they have to build it, and Sierra is not waiting; nor are Foundation Capital&#8217;s companies. If the platforms build a write path only for their own agents, the harnesses will keep their own logs, the enterprise will fragment again, and the platforms will have won the data and lost the decisions. There is a lot to play for.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datacreation.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Data Creation! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The modern data stack’s boldest prediction might finally come true]]></title><description><![CDATA[Do agents mean that business applications will now be rebuilt on the cloud data platforms?]]></description><link>https://datacreation.substack.com/p/the-modern-data-stacks-boldest-prediction</link><guid isPermaLink="false">https://datacreation.substack.com/p/the-modern-data-stacks-boldest-prediction</guid><dc:creator><![CDATA[Yali Sassoon]]></dc:creator><pubDate>Fri, 04 Sep 2026 07:46:48 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%210XIu%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F3b645477-915b-4f72-b7ea-8a55d716e4a0_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%210XIu%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F3b645477-915b-4f72-b7ea-8a55d716e4a0_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0XIu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b645477-915b-4f72-b7ea-8a55d716e4a0_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!0XIu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b645477-915b-4f72-b7ea-8a55d716e4a0_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!0XIu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b645477-915b-4f72-b7ea-8a55d716e4a0_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!0XIu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b645477-915b-4f72-b7ea-8a55d716e4a0_1672x941.png 1456w" sizes="100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%210XIu%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F3b645477-915b-4f72-b7ea-8a55d716e4a0_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3b645477-915b-4f72-b7ea-8a55d716e4a0_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2074026,&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://datacreation.substack.com/i/213991833?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b645477-915b-4f72-b7ea-8a55d716e4a0_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0XIu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b645477-915b-4f72-b7ea-8a55d716e4a0_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!0XIu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b645477-915b-4f72-b7ea-8a55d716e4a0_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!0XIu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b645477-915b-4f72-b7ea-8a55d716e4a0_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!0XIu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b645477-915b-4f72-b7ea-8a55d716e4a0_1672x941.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In 2022, Matt Bornstein, Jennifer Li and Martin Casado of a16z updated their much-cited map of <a href="iframe.php?url=https%3A%2F%2Fa16z.com%2Femerging-architectures-for-modern-data-infrastructure%2F">modern data infrastructure</a> and made a bold claim they called <strong>the data platform hypothesis</strong>. The claim: the cloud data platforms (Snowflake, Databricks, BigQuery) were becoming platforms in the proper sense of the word, things that other developers build on. &#8220;A single customer may buy and build many applications on top of one core data system,&#8221; they wrote. And then the line that matters: &#8220;We&#8217;re even starting to see traditional enterprise systems, like financial or product analytics, being rebuilt with a &#8216;warehouse-native&#8217; architecture.&#8221; The point was driven home with the following diagram:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21oa3x%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fdb69dffe-b52b-412a-8328-3112b9a20d04_2000x1977.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oa3x!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb69dffe-b52b-412a-8328-3112b9a20d04_2000x1977.png 424w, https://substackcdn.com/image/fetch/$s_!oa3x!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb69dffe-b52b-412a-8328-3112b9a20d04_2000x1977.png 848w, https://substackcdn.com/image/fetch/$s_!oa3x!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb69dffe-b52b-412a-8328-3112b9a20d04_2000x1977.png 1272w, https://substackcdn.com/image/fetch/$s_!oa3x!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb69dffe-b52b-412a-8328-3112b9a20d04_2000x1977.png 1456w" sizes="100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21oa3x%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fdb69dffe-b52b-412a-8328-3112b9a20d04_2000x1977.png" width="1456" height="1439" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/db69dffe-b52b-412a-8328-3112b9a20d04_2000x1977.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1439,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:140483,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://datacreation.substack.com/i/213991833?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb69dffe-b52b-412a-8328-3112b9a20d04_2000x1977.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!oa3x!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb69dffe-b52b-412a-8328-3112b9a20d04_2000x1977.png 424w, https://substackcdn.com/image/fetch/$s_!oa3x!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb69dffe-b52b-412a-8328-3112b9a20d04_2000x1977.png 848w, https://substackcdn.com/image/fetch/$s_!oa3x!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb69dffe-b52b-412a-8328-3112b9a20d04_2000x1977.png 1272w, https://substackcdn.com/image/fetch/$s_!oa3x!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb69dffe-b52b-412a-8328-3112b9a20d04_2000x1977.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>Source: <a href="iframe.php?url=https%3A%2F%2Fa16z.com%2Femerging-architectures-for-modern-data-infrastructure%2F">a16z, Emerging Architectures for Modern Data Infrastructure</a> (2022 update)</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datacreation.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Data Creation! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>That was the maximal version of the modern data stack dream. Not just that analytics would consolidate onto the warehouse, but that business applications i.e. operational systems, the software companies actually run on, would rearchitect around it. The platform vendors said the quiet part out loud. &#8220;We want to make Snowflake the iPhone of data applications,&#8221; Beno&#238;t Dageville <a href="iframe.php?url=https%3A%2F%2Fwww.itpro.com%2Fbusiness%2Fdata-and-insights%2Fsnowflake-we-want-to-be-the-iphone-of-data-applications">told ITPro</a> in June 2023, the same month Databricks launched <a href="iframe.php?url=https%3A%2F%2Fwww.databricks.com%2Fcompany%2Fnewsroom%2Fpress-releases%2Fdatabricks-announces-lakehouse-apps-and-expands-databricks">Lakehouse Apps</a>.</p><p>It did not happen. What we saw was SaaS vendors build improved integrations with the cloud vendors - with clearly documented approaches for users to export data from the application into the data platform, and ingest information from the data platform into the application. But bar a handful of notable exceptions (Snowplow being one of them), the vast majority of business applications preserved their own backend systems and with it their own version of the data.</p><p>I think the claim is finally going to come true and the reason is AI. In this piece I&#8217;m going to explain why. However, I don&#8217;t think that necessarily means that the agents and agentic systems that do that operational work are necessarily going to run natively in the data platforms. Whether that &#8220;decision gravity&#8221; (to use <a href="iframe.php?url=https%3A%2F%2Fsourceoftruth.substack.com%2Fp%2Fdatabricks-just-announced-customerlake">Alex Dean&#8217;s phrase</a>) follows data gravity and accrues to the data platforms is something I&#8217;ll explore further in the next post.</p><h3>A (thankfully brief) history of SaaS</h3><p>If we want to understand what might upend the current status quo we need to start by understanding the status quo that AI is steadily disrupting.</p><p>SaaS as we know it was invented by two companies: NetLedger (which became NetSuite), which launched a general ledger on the web in 1999, followed a year later by Salesforce, which launched its SaaS CRM in February 2000.</p><p>The first two SaaS solutions offered broad propositions: general ledger and CRM, competing in two large traditional software markets. They were followed by an explosion of new SaaS vendors, VC-backed, offering increasingly narrower propositions, focused on helping specific business buyers solve specific (often one single) problems or workflows. We need to understand why - because as I will argue, this narrowing of SaaS propositions is what created the data fragmentation problem that the data platforms have been so effective in solving, and has left many SaaS solutions vulnerable to disruption by AI today.</p><h3>Why did SaaS solutions become so narrow and specialized?</h3><p>SaaS drove a number of significant changes in the way software was built and sold:</p><ul><li><p>SaaS solutions were bought by the lines of business, rather than IT. Because the lines of business did not need IT to deliver the solution, they were free to buy what they wanted, with their own budget. This was a significant shift from traditional software, where if the procurement was not led by IT they were at least a significant secondary stakeholder</p></li><li><p>Ease of use, time to value, user experience and ease of buying became the moats</p></li></ul><p>SaaS was dominated by VC backed startups, that ruthlessly focused on winning their categories. An effective strategy to winning a category was to define a very narrow category, ideally one that no one has focused relentlessly on, and then build the most compelling (fastest time to value, delightful UX) solution for it. Being a compelling CRM requires an enormous surface of functionality. Being a great email marketing tool does not. A narrower category means a faster build, a clearer pitch to a more specific buyer, and a much better chance of being the winner that takes most of it. Tomasz Tunguz <a href="iframe.php?url=https%3A%2F%2Ftomtunguz.com%2Fsuites-point-solutions%2F">described the result in 2015</a>: teams now &#8220;purchase best-of-breed point solutions, try them, and quickly cycle through all the different offerings&#8221;, selecting &#8220;precisely the products that offer the features that meet their specific needs.&#8221;</p><p>The slices got thinner, decade by decade. Mailchimp (2001) carved email off the marketing suite; Klaviyo (2012) re-carved it for online stores specifically. Zendesk (2007) was just tickets, Expensify (2008) just expense reports, Calendly (2013) just the scheduling link, Gong (2015) just recording and mining sales calls. Each is a real business, some of them very large, each built around one tidy workflow for one person.</p><p>The clearest record we have of where this ends is Scott Brinker&#8217;s marketing technology landscape: <a href="iframe.php?url=https%3A%2F%2Fchiefmartec.com%2F2026%2F05%2F2026-marketing-technology-landscape-supergraphic-peak-martech-achieved-maybe%2F">about 150 vendors in 2011, 15,505 by 2026</a>, a hundredfold increase in one function&#8217;s tooling in fifteen years.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21FmEF%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F0b3c7bcc-7063-4643-a2d4-5e59d3392c11_2560x1440.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FmEF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b3c7bcc-7063-4643-a2d4-5e59d3392c11_2560x1440.png 424w, https://substackcdn.com/image/fetch/$s_!FmEF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b3c7bcc-7063-4643-a2d4-5e59d3392c11_2560x1440.png 848w, https://substackcdn.com/image/fetch/$s_!FmEF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b3c7bcc-7063-4643-a2d4-5e59d3392c11_2560x1440.png 1272w, https://substackcdn.com/image/fetch/$s_!FmEF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b3c7bcc-7063-4643-a2d4-5e59d3392c11_2560x1440.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21FmEF%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F0b3c7bcc-7063-4643-a2d4-5e59d3392c11_2560x1440.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0b3c7bcc-7063-4643-a2d4-5e59d3392c11_2560x1440.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;:131327,&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://datacreation.substack.com/i/213991833?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b3c7bcc-7063-4643-a2d4-5e59d3392c11_2560x1440.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FmEF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b3c7bcc-7063-4643-a2d4-5e59d3392c11_2560x1440.png 424w, https://substackcdn.com/image/fetch/$s_!FmEF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b3c7bcc-7063-4643-a2d4-5e59d3392c11_2560x1440.png 848w, https://substackcdn.com/image/fetch/$s_!FmEF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b3c7bcc-7063-4643-a2d4-5e59d3392c11_2560x1440.png 1272w, https://substackcdn.com/image/fetch/$s_!FmEF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b3c7bcc-7063-4643-a2d4-5e59d3392c11_2560x1440.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>Products on Scott Brinker&#8217;s annual martech landscape, 2011-2026. Source: <a href="iframe.php?url=https%3A%2F%2Fmartechmap.com%2F">chiefmartec.com / martechmap.com</a> (Scott Brinker with Frans Riemersma)</em></p><h3>The trouble with SaaS was it drove widespread data fragmentation</h3><p>The price of a thousand tools, each optimised around helping a different team member do their job, is that the data ends up fragmented across all of them. The conversations live in Gong, the forecast in Clari, the engagement history in Klaviyo, the tickets in Zendesk. SaaS optimized UX at the expense of data.</p><p>Marketing, the function that bought most enthusiastically, felt it first and worst, and an entire category was invented to patch the damage: the customer data platform, whose founding purpose was to reassemble the customer that a hundred marketing tools had shredded.</p><h3>The warehouse to the rescue</h3><p>This is the problem the cloud data warehouses walked into, with an offer that was very hard to argue with: bring it all here. Unify it. Build the single customer view, the single source of truth, and use it for analysis first and operations next. It worked; that consolidation is what we spent a decade calling data gravity, and it is why the modern data stack existed at all.</p><p>The data platform hypothesis was the logical endpoint: if all the data is here, why shouldn&#8217;t the applications be? But it was not uncontested. Casado himself, on <a href="iframe.php?url=https%3A%2F%2Fa16z.com%2Fpodcast%2Fa16z-podcast-the-great-data-debate%2F">the Great Data Debate podcast</a> in 2020, warned that &#8220;we look at an architecture, and we&#8217;re like, oh, that can do all of these things, therefore it will be pushed into service to do all of these things. And that&#8217;s just not how technology evolves.&#8221; And for five years it seemed that he was right.</p><p>The trouble with rearchitecting SaaS applications on the data platform was that <strong>building an application on a data foundation that you do not control is incredibly difficult</strong>. Every customer&#8217;s warehouse is different: different data coverage, different schemas, different semantics, different quality. The attraction of building an application on the data warehouse is that you can leverage all the data, but the cost of using all that data is prohibitively high: it takes real integration work to map that sprawl into a standard schema that an application can work with, and graceful fallback where parts of that data are necessarily missing. The cost scales with the value, so there is never a point of pay-off.</p><h3>Agents fundamentally change the economics of building applications on the modern data stack</h3><p>When software changes from a UX to make it easier for a human to perform a workflow, to an agent that will do whatever it takes to drive a business goal, that cost benefit analysis inverts.</p><p>Previously, SaaS systems optimized UX at the expense of data fragmentation. Agents care little for UX, and a lot about good data. It is a struggle to build traditional multi-tenanted SaaS applications on top of data layers where the schema, semantics, quality and ownership vary from tenant to tenant. But an agent working in one tenant that has access to accurate metadata (context) can navigate that data effectively, and does not care one bit if another agent working in another tenant is working with a data set that looks completely different. Agents do not make the integration cost zero, but they dramatically reduce it to the point it is no longer a barrier.</p><p>And if the value of a SaaS application is in providing a delightful UX for a human completing a narrow task, agents drain that moat pretty quickly. Enterprise companies and marketing teams in particular might be very happy to buy 100 different point solutions to optimize 100s of different workflows for lots of different people - but agents would much rather have access to a finite set of broad tools that enable them to take all the actions that they need.</p><p>So the conditions are ripe for a new breed of agentic application that runs directly on the cloud data platforms.</p><h3>And we are now seeing a new generation of agentic application emerge on the cloud data platforms</h3><p>In June 2026 Databricks launched <a href="iframe.php?url=https%3A%2F%2Fwww.databricks.com%2Fcompany%2Fnewsroom%2Fpress-releases%2Fdatabricks-enters-marketing-industry-customerlake-agentic-customer">CustomerLake</a>, a customer data platform rebuilt natively on the lakehouse, with campaign agents that build audiences and run campaigns directly on the customer&#8217;s own data foundation. <a href="iframe.php?url=https%3A%2F%2Fhightouch.com%2Fplatform%2Fai-decisioning">Hightouch&#8217;s AI Decisioning</a> lets a marketer &#8220;assign a goal like &#8216;drive customers who buy in-store to download our app and order ahead&#8217;&#8221; and hands execution to agents that run on the customer&#8217;s warehouse; PetSmart is using it across a loyalty programme of more than 70 million members.</p><p>Nor is the pattern confined to marketing. Wolfspeed, the semiconductor manufacturer, has <a href="iframe.php?url=https%3A%2F%2Fwww.snowflake.com%2Fen%2Fnews%2Fpress-releases%2Fsnowflake-expands-snowflake-intelligence-and-cortex-code-to-power-the-control-plane-for-the-agentic-enterprise%2F">deployed dozens of AI agents across manufacturing, quality, supply chain and finance</a> on Snowflake, and its CIO describes exactly the arc this piece has been tracing: first consolidating &#8220;200+ SQL reporting silos into a unified, governed data ecosystem&#8221;, then putting agents on top, &#8220;troubleshooting equipment issues in two minutes instead of two hours&#8221;. United Rentals is <a href="iframe.php?url=https%3A%2F%2Fwww.snowflake.com%2Fen%2Fnews%2Fpress-releases%2Fsnowflake-expands-snowflake-intelligence-and-cortex-code-to-power-the-control-plane-for-the-agentic-enterprise%2F">building agents on Snowflake &#8220;to accelerate sales growth and improve fleet availability&#8221;</a> across more than 1,600 locations. <a href="iframe.php?url=https%3A%2F%2Fwww.databricks.com%2Fen%2Fblog%2Fhow-7-eleven-transformed-maintenance-technician-knowledge-access-databricks-agent-bricks">7-Eleven built its maintenance technician assistant</a> on Databricks Agent Bricks, over its own documents in Unity Catalog. And enterprises are building fully bespoke agents too: AIG has <a href="iframe.php?url=https%3A%2F%2Fwww.anthropic.com%2Fnews%2Fclaude-for-financial-services">built underwriting agents with Anthropic</a> over its own data estate, compressing underwriting review timelines by more than five times.</p><p>A CDP on the lakehouse, goal-driven marketing agents on the warehouse, factory and sales agents on Snowflake, underwriting agents over the enterprise data estate. That is the &#8220;warehouse-native&#8221; rebuild Bornstein, Li and Casado described in 2022, arriving four years late and wearing an agent&#8217;s badge.</p><h3>But it is not clear <em>whose</em> agents these will be, or <em>where</em> they will run</h3><p>The argument that operational systems would rearchitect around the cloud data platforms was hugely exciting for the cloud data platforms and their investors, because the assumption was that meant all the compute for those applications would run on those data platforms.</p><p>It is not obvious that that is the case though. If I want to build an agentic application on my data in Snowflake, I could leverage Cortex. But I could also leverage Claude, OpenAI, AWS or many other providers, and enable that agent access to the data via MCP. So it is not a given that &#8220;Decision Gravity&#8221; will follow &#8220;Data Gravity&#8221;. That is something I will explore in a lot more detail in my next post.</p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datacreation.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Data Creation! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Claude says]]></title><description><![CDATA[AI has done more to democratize data than every data literacy program put together. But the mistakes it makes are the ones analysts were trained to catch, and there is no longer an analyst in the room]]></description><link>https://datacreation.substack.com/p/claude-says</link><guid isPermaLink="false">https://datacreation.substack.com/p/claude-says</guid><dc:creator><![CDATA[Yali Sassoon]]></dc:creator><pubDate>Fri, 28 Aug 2026 14:53:18 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%212tgD%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fd7be6799-80f1-4884-acec-3a74cc075a9a_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%212tgD%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fd7be6799-80f1-4884-acec-3a74cc075a9a_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2tgD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7be6799-80f1-4884-acec-3a74cc075a9a_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!2tgD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7be6799-80f1-4884-acec-3a74cc075a9a_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!2tgD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7be6799-80f1-4884-acec-3a74cc075a9a_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!2tgD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7be6799-80f1-4884-acec-3a74cc075a9a_1672x941.png 1456w" sizes="100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%212tgD%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fd7be6799-80f1-4884-acec-3a74cc075a9a_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d7be6799-80f1-4884-acec-3a74cc075a9a_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2087828,&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://datacreation.substack.com/i/213156300?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7be6799-80f1-4884-acec-3a74cc075a9a_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!2tgD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7be6799-80f1-4884-acec-3a74cc075a9a_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!2tgD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7be6799-80f1-4884-acec-3a74cc075a9a_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!2tgD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7be6799-80f1-4884-acec-3a74cc075a9a_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!2tgD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7be6799-80f1-4884-acec-3a74cc075a9a_1672x941.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In <a href="iframe.php?url=https%3A%2F%2Fdatacreation.substack.com%2Fp%2Ftwenty-years-of-blaming-our-customers">my last piece</a> I argued that for twenty years we in data were wrong. We believed that culture and data literacy were what held back data democratization. Then AI arrived as a new interface onto the same data, democratization happened anyway, and it happened just as fast in the organizations that had never run a literacy program. It was never culture. It was that the tooling was not usable by anyone who was not a data person.</p><p>So the gap I have spent my career worrying about, between the data people and everyone else, has stopped being a gap in access. Anybody can now ask a question of the data and get an answer back in seconds. What has not changed is that using data well is difficult, and the people doing it now were never taught the ways it goes wrong. They are exposed to a whole category of mistakes that neither they nor the people they present to can easily spot, because a wrong answer arrives looking exactly like a right one.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datacreation.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Data Creation! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>There is still a job here for culture, and I want to be precise about what it is, because it is much smaller and more specific than the thing we spent two decades demanding.</p><p>Mostly, though, this piece is about what to do about it. The mistake we made with data was to decide that the problem lay with the people using it, and that the job was therefore to fix them rather than to empower them with better technology. We are at risk of making that exact mistake again with AI. By the end of this you will have a single question you can ask of your own AI plans this quarter that tells you whether you are making it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21lYPk%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F50463801-9ddd-41e9-a9b2-36290fac6fa9_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lYPk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50463801-9ddd-41e9-a9b2-36290fac6fa9_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!lYPk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50463801-9ddd-41e9-a9b2-36290fac6fa9_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!lYPk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50463801-9ddd-41e9-a9b2-36290fac6fa9_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!lYPk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50463801-9ddd-41e9-a9b2-36290fac6fa9_1672x941.png 1456w" sizes="100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21lYPk%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F50463801-9ddd-41e9-a9b2-36290fac6fa9_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/50463801-9ddd-41e9-a9b2-36290fac6fa9_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1867997,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://datacreation.substack.com/i/213156300?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50463801-9ddd-41e9-a9b2-36290fac6fa9_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lYPk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50463801-9ddd-41e9-a9b2-36290fac6fa9_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!lYPk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50463801-9ddd-41e9-a9b2-36290fac6fa9_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!lYPk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50463801-9ddd-41e9-a9b2-36290fac6fa9_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!lYPk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50463801-9ddd-41e9-a9b2-36290fac6fa9_1672x941.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h2>The gap is now between answers you can defend and answers you cannot</h2><p>The gap I described in the last piece is between two groups of people: those with real analytics experience and expertise, and those without it. For twenty years it decided whether you could get an answer out of the data at all. With the expertise, or the attention of someone who had it, you got answers. Without it, you got a dashboard and a training course.</p><p>Everyone can get an answer now. What twenty years of experience buys you today is not the answer, it is the ability to tell whether the answer is right. And on the slide, in the meeting, an answer produced by someone with that experience is indistinguishable from one produced by someone without it.</p><h2>What happened when I asked about our sales calls</h2><p>A few months ago I asked Claude a question about our Gong data. I wanted to know how often a particular selling strategy showed up in the calls on our open opportunities. Worth saying what that requires, because it is not universal yet: a warehouse with the Gong data in it, and Claude given access to query that warehouse directly. If your business data is not somewhere an agent can reach it, none of what follows has happened to you yet.</p><p>Claude came back quickly and confidently with a percentage. Fifty-seven percent! Two significant figures.</p><p>I pushed on it and the number fell apart. It had looked at a handful of opportunities and reported the proportion as though it had checked them all. The precision was spurious, and the spurious precision is what made it convincing: nobody reports 57% unless they have counted something.</p><p>What I ended up asking for was a spreadsheet: one row per opportunity, the categorization for each, and a link to the section of the Gong call that justified it. Then I could see it really had been through every account, and that the arithmetic was arithmetic rather than an impression.</p><p>It is not that I am unusually rigorous. I knew where the number was going: into a meeting with colleagues who would ask me how I got it. Twenty years in data has left me with the reflex of being ready to defend any number I put in front of anyone.</p><p>Most people asking these questions have not spent their careers in data and have never needed that reflex. The number goes into a slide, the slide goes into a meeting, and the room takes it.</p><p>It is worth being clear about which part of that went wrong. My question was fine: how often does this selling strategy appear in the calls on our open opportunities. What broke was the answer, and I caught it because a suspiciously round-sounding 57% is the specific thing twenty years teaches you to poke at. There is a second failure that is harder to catch, where the question itself is wrong and the answer to it is entirely correct. Nothing about that one looks wrong, because nothing about it is wrong except the question.</p><h2>&#8220;Claude says&#8221;</h2><p>There is a phrase I now hear most weeks, and I would guess you do too. &#8220;Claude says.&#8221; Sometimes it is Claude, sometimes another name, but the sentence is always built the same way: a number arrives in a meeting or a Slack thread attributed to an AI, and that is the end of the discussion. Nobody asks which opportunities were included, over what period, or how the behavior was identified. Six months ago somebody would have asked at least one of those.</p><p>The mistakes underneath are not new ones. The wrong dataset. A sample reported as though it were the population, which is exactly what happened to me. A correlation narrated as a cause. An answer to a question slightly different from the one asked. What is new is that they now arrive dozens of times a day, within seconds, and pass nobody whose job it was to catch them.</p><p>Writing the query was only the visible half of what an analyst did. The other half was saying &#8220;that is a vanity metric&#8221;, or &#8220;you have the causation backwards&#8221;, or &#8220;we cannot answer that with the data we have.&#8221; No BI tool ever did that half. A person did it, and in most of these workflows there is no longer a person in the path.</p><p>The really valuable thing a good analyst does is ask a good question. The technical work of answering it is the easier half, and AI has shown that it can do that half well, even if, as with my 57%, it sometimes does it wrong. I have yet to see AI do a good job of asking the right question.</p><p>So there are two problems here, not one, and they want different answers.</p><p>The first is that AI lets people produce analysis that is wrong in ways they cannot see. That is the 57%: a good question, a bad answer, and nobody in the room equipped to notice.</p><p>The second is that AI lets people ask the wrong question and get a flawless answer to it. Nothing about that output looks wrong, because nothing about it is wrong except the question.</p><p>I think I know what to do about the first. I am much less sure about the second, and I will say so plainly when I get there.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21GV7V%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fe7bfc9f7-171f-420b-82a8-b97f1c4a46de_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GV7V!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7bfc9f7-171f-420b-82a8-b97f1c4a46de_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!GV7V!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7bfc9f7-171f-420b-82a8-b97f1c4a46de_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!GV7V!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7bfc9f7-171f-420b-82a8-b97f1c4a46de_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!GV7V!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7bfc9f7-171f-420b-82a8-b97f1c4a46de_1672x941.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21GV7V%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fe7bfc9f7-171f-420b-82a8-b97f1c4a46de_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e7bfc9f7-171f-420b-82a8-b97f1c4a46de_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1846330,&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://datacreation.substack.com/i/213156300?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7bfc9f7-171f-420b-82a8-b97f1c4a46de_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!GV7V!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7bfc9f7-171f-420b-82a8-b97f1c4a46de_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!GV7V!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7bfc9f7-171f-420b-82a8-b97f1c4a46de_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!GV7V!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7bfc9f7-171f-420b-82a8-b97f1c4a46de_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!GV7V!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7bfc9f7-171f-420b-82a8-b97f1c4a46de_1672x941.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h2>Problem one: teaching people to be more skeptical will not fix it</h2><p>The obvious response is the one I reached for first, and the one I keep hearing: teach people to be skeptical. Get them to ask the AI to show its working. Challenge it step by step. Treat AI literacy the way we treated data literacy.</p><p>I no longer think that works as the primary answer, and the reason is uncomfortable.</p><p>Ethan Mollick has <a href="iframe.php?url=https%3A%2F%2Fwww.oneusefulthing.org%2Fp%2F15-times-to-use-ai-and-5-not-to">described the problem</a> more sharply than anyone: &#8220;AI is often most useful where we&#8217;re already expert enough to spot its mistakes, yet least helpful in the deep work that made us experts in the first place.&#8221; On why we do not catch the errors: &#8220;Hallucinations are therefore very hard to spot, and research suggests that people don&#8217;t even try, &#8216;falling asleep at the wheel&#8217; and not paying attention.&#8221;</p><p>There is evidence for the mechanism. A <a href="iframe.php?url=https%3A%2F%2Fwww.microsoft.com%2Fen-us%2Fresearch%2Fwp-content%2Fuploads%2F2025%2F01%2Flee_2025_ai_critical_thinking_survey.pdf">2025 study</a> from Microsoft Research and Carnegie Mellon surveyed 319 knowledge workers about 936 real uses of generative AI and found that &#8220;higher confidence in GenAI is associated with less critical thinking, while higher self-confidence is associated with more critical thinking.&#8221;</p><p>And Stancil closes the last escape route, in <a href="iframe.php?url=https%3A%2F%2Fbenn.substack.com%2Fp%2Fcan-analysis-ever-be-automated">the best thing I have read on this</a>: &#8220;There&#8217;s no way to know if a chart &#8216;works&#8217; unless you understand how it was built; the validity of the external product depends on the validity of its internals.&#8221; Software can be tested by running it. Analysis cannot. &#8220;All you can do is either read through the code, line by tedious line, or recreate the whole thing yourself. And if you have to do that, what exactly are we automating here?&#8221;</p><p>So &#8220;ask it to show its working and challenge each step&#8221; asks someone who is not an analyst to evaluate work they could not have produced, using judgement they were never given, on output engineered to look careful. It puts the entire burden back on the person, which is precisely what we did for twenty years.</p><p>That is the same prescription we wrote for twenty years, with &#8220;AI literacy&#8221; in the place where &#8220;data literacy&#8221; used to be.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21PUVL%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F0c506c33-aa93-43f8-8038-4584252741b9_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PUVL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c506c33-aa93-43f8-8038-4584252741b9_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!PUVL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c506c33-aa93-43f8-8038-4584252741b9_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!PUVL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c506c33-aa93-43f8-8038-4584252741b9_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!PUVL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c506c33-aa93-43f8-8038-4584252741b9_1672x941.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21PUVL%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F0c506c33-aa93-43f8-8038-4584252741b9_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0c506c33-aa93-43f8-8038-4584252741b9_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1846330,&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://datacreation.substack.com/i/213156300?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c506c33-aa93-43f8-8038-4584252741b9_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PUVL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c506c33-aa93-43f8-8038-4584252741b9_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!PUVL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c506c33-aa93-43f8-8038-4584252741b9_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!PUVL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c506c33-aa93-43f8-8038-4584252741b9_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!PUVL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c506c33-aa93-43f8-8038-4584252741b9_1672x941.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h2>Problem one, solved: put the burden in the system rather than on the person</h2><p>The alternative is to stop asking the person to carry what the system can carry.</p><p>Anthropic&#8217;s data team published <a href="iframe.php?url=https%3A%2F%2Fclaude.com%2Fblog%2Fhow-anthropic-enables-self-service-data-analytics-with-claude">an account of their own internal analytics</a> in June, and it is the most useful thing available because it comes with numbers: &#8220;Without skills, Claude&#8217;s ability to answer analytics questions accurately didn&#8217;t exceed 21% on our evals. Adding skills gets these numbers consistently above 95% in aggregate.&#8221;</p><p>Accuracy went from 21% to 95%. Every point of that came from work done to the system: definitions written down, context structured, rules encoded. Nobody ran a training course for the people asking the questions.</p><p>They also published two failed experiments that are more instructive than the headline. First, they gave the agent grep access to thousands of files of existing dashboard, transformation and analyst SQL, and verified it was reading them: &#8220;Accuracy moved by less than a point in either direction. The information was there, the agent saw it, and it still didn&#8217;t use it. That single experiment told us our bottleneck wasn&#8217;t <em>access</em> to prior work, it was <em>structure</em>.&#8221; Second, they tried having an LLM write the metric definitions from raw tables and query logs: &#8220;It produced plausible-looking definitions that encoded the very ambiguities we were trying to eliminate.&#8221;</p><p>You cannot retrieve your way out of this, and you cannot ask the model to do it for you. Somebody has to write down what the business means. Their name for the thing nobody does is business context, &#8220;the layer most teams skip, and the one we underrated the longest. An agent that doesn&#8217;t understand your business will answer what the user asked, but not what they meant.&#8221; Nor is this one lab&#8217;s idiosyncrasy: <a href="iframe.php?url=https%3A%2F%2Fopenai.com%2Findex%2Finside-our-in-house-data-agent%2F">OpenAI&#8217;s data platform team</a>, which takes the architecturally opposite approach to the same problem, opens its own account with a section headed &#8220;Context is everything.&#8221;</p><p>Two things follow, and both belong in the system rather than in a training deck.</p><p>The agent needs an explicit model of how the business works. Almost every question a stakeholder asks is a &#8220;why&#8221; question, and answering one requires knowing what drives what. Abhi Sivasailam and Trevor Fox make the point in their work on <a href="iframe.php?url=https%3A%2F%2Fwww.leverslabs.com%2Farticle%2Froot-cause-analysis-with-metric-trees">metric trees</a>, which predates agents entirely: data models give you &#8220;the semantics for discourse and analysis&#8221; but &#8220;fall short in providing the syntax for causation.&#8221; (This is a cousin of the argument I made in <a href="iframe.php?url=https%3A%2F%2Fdatacreation.substack.com%2Fp%2Fa-semantic-layer-is-not-a-context">A semantic layer is not a context layer</a>: consistent definitions tell an agent what the data means, not how the business works.) A good analyst reasons from a model of the business in front of them, not from table names. An agent will too, if someone has written the model down.</p><p>And the discipline I applied by hand should not have been mine to apply. Anthropic publish a redacted version of their actual warehouse skill file, and it mandates a footer on every answer: source, confidence, freshness, owner. That is my Gong spreadsheet, except that it arrives whether or not the person asking knew to ask for it. Written once into the skill file, it applies to every answer the agent gives, including the answers given to people who would never have thought to check.</p><p>I should declare an interest. Making sure the right data exists, well created and carrying its meaning, is what we do at Snowplow, so of course I would say all this. Read it with that in mind. Every number above is Anthropic&#8217;s.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%210tHI%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fda2537d1-a8c1-4df9-8c9a-870752e3d95f_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0tHI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda2537d1-a8c1-4df9-8c9a-870752e3d95f_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!0tHI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda2537d1-a8c1-4df9-8c9a-870752e3d95f_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!0tHI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda2537d1-a8c1-4df9-8c9a-870752e3d95f_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!0tHI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda2537d1-a8c1-4df9-8c9a-870752e3d95f_1672x941.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%210tHI%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fda2537d1-a8c1-4df9-8c9a-870752e3d95f_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/da2537d1-a8c1-4df9-8c9a-870752e3d95f_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2225610,&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://datacreation.substack.com/i/213156300?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda2537d1-a8c1-4df9-8c9a-870752e3d95f_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0tHI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda2537d1-a8c1-4df9-8c9a-870752e3d95f_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!0tHI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda2537d1-a8c1-4df9-8c9a-870752e3d95f_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!0tHI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda2537d1-a8c1-4df9-8c9a-870752e3d95f_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!0tHI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda2537d1-a8c1-4df9-8c9a-870752e3d95f_1672x941.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h2>Problem two: the wrong question, answered perfectly, and I do not know how to fix it</h2><p>Everything above solves the first problem. It does very little for the second.</p><p>A good analyst never takes a question verbatim. They push on it, work out what is really being asked, and name the assumptions inside it before running anything. Most bad analysis I have seen was competently executed; it answered a question nobody should have asked. In twenty years I have not found a reliable way to teach that skill, and I do not think the profession has either. It is the hardest thing an analyst does and the thing we have never known how to hand on.</p><p>An agent that answers precisely what was typed skips that step entirely. The best partial mitigation I know is to make the agent say which question it decided to answer and what it assumed to get there, so that a mis-framing is at least visible on the page. Anthropic state the problem exactly, without offering a remedy: an agent that does not understand your business &#8220;will answer what the user asked, but not what they meant.&#8221;</p><p>But I want to be honest that this is a much weaker answer than the one I gave for the first problem. Declaring assumptions helps the person who already suspects the question might be wrong. It does nothing for the person who does not, which is most people, most of the time. For the first problem Anthropic can tell me it is tractable and roughly what it costs: 21% to 95%, and here is the work. I have no equivalent for the second. I do not know how you build a system that reliably challenges the question it has been handed, and I have not seen anyone who does.</p><p>The one direction I would look, and this is a hunch rather than a plan, is at the work being done to make these models good teachers. A good teacher does not answer your question either. They ask you what you are actually trying to find out, and they are often right that it is not what you said. If that behavior can be trained for tutoring, it may be trainable here. I want to think about it properly rather than gesture at it, so I will come back to it.</p><p>That is not a satisfying place to leave it, and I am leaving it there because I would rather say so than pretend.</p><h2>What is left for culture is much smaller, and it is real</h2><p>None of this makes the culture argument go away, and I am not smuggling in a claim that good data is sufficient. It is not. Well-created data removes one set of obstacles. It cannot make anyone care whether the answer is true.</p><p>But what I would now call data culture is a much narrower thing than what we spent twenty years asking for, and it is not literacy. It is not teaching people to write SQL, or to read a confidence interval, or to know when a median beats a mean. It is one norm: that a number gets asked about. Concretely, two questions being ordinary to ask out loud in a meeting. How did you get that? And is that the question we should be asking?</p><p>That is what made me check the 57%. Not skepticism in the abstract. I expected to be asked the first of those questions, so I made sure I could answer it. Nobody acquires that on a course. People acquire it when asking is normal and being unable to answer is uncomfortable.</p><p>It is also, as far as I can tell, the only thing that touches my second problem at all. I cannot build a system that reliably challenges the question it has been handed. A colleague can. Making it normal for someone in the room to say &#8220;hang on, why are we asking that?&#8221; is not a technology fix, and I am not going to pretend it is a complete one, but it is the part of the old culture argument that survives contact with all of this, and it is the part I would spend real effort on.</p><p>It is also a much smaller ask than the one we used to make. We are not asking anyone to learn to get the number themselves any more. We are asking them to expect to be asked, and to want the answer to be right even when it is inconvenient. Neither of those needs a curriculum or a certification, which is what twenty years of data literacy programs tried to give people.</p><h2>A test you can run on your own roadmap</h2><p>So here is a test you can run on your own roadmap this quarter. Take the list of everything you are planning to do about the risk that your stakeholders use AI badly. Count how many items require your stakeholders to change, and how many require you to build something. If the first number is bigger than the second, you are running a data literacy program with the word data crossed out. We ran that program for twenty years. Adoption sat at 25% for seven of them.</p><p>We got this wrong for twenty years and the software rescued us anyway. It will not rescue us twice, because this time the failure is silent. A dashboard nobody opened was a visible failure; you could count the logins and know the program was not working. A confident, wrong number in a board pack is not visible at all. Nobody will report that adoption has stalled. The answers will keep arriving, fluent and fast, and they will be wrong in ways that only show up much later, in the decisions.</p><p>Blaming the user has always been available to us. It never requires building anything, it survives contact with a budget, and it is the reason the last twenty years went the way they did. It is on the table again right now, dressed up as AI literacy, and it is going to be very tempting.</p><p>So I will ask something narrower than I asked last time. The first of my two problems has an answer and the answer is work: write down what your business means, and make the system do the checking rather than the person. The second problem I cannot see my way through. If you have found a way to make a machine push back on a question instead of answering it, I would like to hear about it. I would rather we worked that one out in the open than each of us discovered separately, a quarter too late, that we have been answering the wrong question very well.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datacreation.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Data Creation! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Twenty years of blaming our customers]]></title><description><![CDATA[We were wrong that culture and data literacy were holding back data adoption in the enterprise. Are we about to make the same mistake again, this time with AI?]]></description><link>https://datacreation.substack.com/p/twenty-years-of-blaming-our-customers</link><guid isPermaLink="false">https://datacreation.substack.com/p/twenty-years-of-blaming-our-customers</guid><dc:creator><![CDATA[Yali Sassoon]]></dc:creator><pubDate>Fri, 31 Jul 2026 08:31:42 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%213NCI%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F18c6a3a1-9b0d-4019-ab4b-dd7c3c233256_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%213NCI%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F18c6a3a1-9b0d-4019-ab4b-dd7c3c233256_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3NCI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c6a3a1-9b0d-4019-ab4b-dd7c3c233256_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!3NCI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c6a3a1-9b0d-4019-ab4b-dd7c3c233256_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!3NCI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c6a3a1-9b0d-4019-ab4b-dd7c3c233256_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!3NCI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c6a3a1-9b0d-4019-ab4b-dd7c3c233256_1672x941.png 1456w" sizes="100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%213NCI%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F18c6a3a1-9b0d-4019-ab4b-dd7c3c233256_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/18c6a3a1-9b0d-4019-ab4b-dd7c3c233256_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2413429,&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://datacreation.substack.com/i/208982645?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c6a3a1-9b0d-4019-ab4b-dd7c3c233256_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!3NCI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c6a3a1-9b0d-4019-ab4b-dd7c3c233256_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!3NCI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c6a3a1-9b0d-4019-ab4b-dd7c3c233256_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!3NCI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c6a3a1-9b0d-4019-ab4b-dd7c3c233256_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!3NCI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c6a3a1-9b0d-4019-ab4b-dd7c3c233256_1672x941.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I have been lucky to spend a lot of my time with the data leaders at our customers and prospects. One of the things I consistently try to understand is what their stakeholders want from them, what they are trying to achieve themselves and how much of their attention goes to improving the business versus pursuing technical goals.</p><p>Two things have surprised me in the last six months.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datacreation.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Data Creation! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>The first is that every data leader I have spoken to reports the same thing: a marked increase in business stakeholders using the data their team produces, across a wider set of use cases. All of them attribute it to AI. They report that this is not a gradual improvement on a long-running trend: it is a step change.</p><p>The second is the real surprise to me. In my experience up until now, widespread adoption by the business of data has only happened in organizations where:</p><ol><li><p>The data leader has obsessed over driving that adoption</p></li><li><p>The CEO and leadership team are themselves very data-driven and very publicly set a strong example for the rest of the organization</p></li><li><p>The data leader spends nearly all of her time focused on driving that adoption and delegates responsibility for designing, building and managing the data platform to her team. In practice this means she is mostly with the business and has a crystal clear understanding of what the biggest challenges are for the business and has driven clarity across the org in how data can support solving those challenges</p></li></ol><p>This is the first time I have seen organizations enjoy widespread data adoption even though the above is not true of those organizations.</p><h2>AI has enabled organizations to go data-driven that previously could not </h2><p>There is a failure mode in data leadership that every data leader will recognize, because most of us have done it. We spent our time architecting an excellent data platform and not nearly enough time going deep with our business stakeholders, making sure that what we built actually helped them solve their problems. The engineering was the part we were good at, it had clear success criteria, and it did not require us sitting through somebody else&#8217;s planning meeting. Sometimes the stakeholders came along and used what we had built to solve their problems. But often they did not, and the lesson everyone drew was that building it was not sufficient: the teams that made a real difference were the ones that spent their time doing the harder, less glamorous work of driving adoption.</p><p>That work was hard. Worse, it felt never-ending. Even the data leaders I think of as best at it complained about the effort of getting data properly baked into how decisions were made. They would win a team over, embed an analyst, get the metric into the weekly review, and then someone would be promoted and they would start again. The work never stopped.</p><p>Almost everyone attributed that to data culture and data literacy. It was the standing complaint at every industry event I attended for a decade, and it was in every report. <a href="iframe.php?url=https%3A%2F%2Fwww.accenture.com%2Fcontent%2Fdam%2Faccenture%2Ffinal%2Fa-com-migration%2Fr3-3%2Fpdf%2Fpdf-118%2Faccenture-the-human-impact-data-literacy.pdf">Qlik and Accenture commissioned a survey of 9,000 workers</a> and found 21% fully confident in their data literacy and 74% &#8220;overwhelmed or unhappy working with data.&#8221; Thomas Redman, in <a href="iframe.php?url=https%3A%2F%2Fhbr.org%2F2018%2F11%2F5-concepts-that-will-help-your-team-be-more-data-driven">Harvard Business Review</a>, described the mechanism as self-reinforcing: &#8220;Lack of talent breeds fear, exacerbating difficulties in adopting a data-driven culture.&#8221; That is exactly what it felt like from the inside. Every other function would call that a product problem. We called it a customer problem.</p><p>So you would expect this step change to appear first and most strongly where data teams had done the commercial work, and weakly or not at all where they had not.</p><p>That is not what is happening. It is showing up everywhere, in the same way, at the same time.</p><h2>This is great! But it warrants examination</h2><p>Before anything else, this deserves celebrating! We have been trying for at least two decades to democratize data and enable our organizations to make data-informed decisions, and now it is finally happening at scale.</p><p>More people in more businesses are using data to make more decisions than at any point in my career. Not looking at a dashboard someone else built: asking their own questions, of their own data, about their own problems, getting answers, reflecting and then iterating their thinking. It is also happening to the people who were most excluded before. The marketing manager who never learned SQL. The ops lead who filed a ticket and waited three days. The finance analyst who exported to Excel because it was the only tool that did what she needed. They are all in the data now.</p><p>I do not want to be the person who receives that news and immediately explains what is wrong with it.</p><p>But look at how strange this is. Something that was supposed to be a culture and literacy problem has been substantially moved by a technology breakthrough: not addressed at the margins, but moved, in six months, in companies where nobody ran a new training program.</p><p>If a change in tooling can shift a number that twenty years of culture work could not, then either the diagnosis was wrong, or it was right and something very unlikely just happened. I think the diagnosis was wrong. And I held it.</p><p>The interesting question is not what we got wrong but how. That is what this piece is about. It matters because the same mistake is on the table again, with AI, which is where I will pick this up in the next post.</p><h2>What did we get wrong?</h2><p>We believed that <strong>the barrier to a business making real use of its data was culture, people and literacy, not technology.</strong> It wasn&#8217;t that &#8220;culture also matters.&#8221; We believed that technology had essentially stopped being the constraint, and it was people and processes that were holding back data adoption.</p><p>It was also well evidenced. In a study fielded at the end of 2021 and published in early 2022, <a href="iframe.php?url=https%3A%2F%2Fbarc.com%2Fnews%2Fnew-study-identifies-drivers-of-bi-and-analytics-adoption-in-companies-today%2F">BARC and Eckerson Group</a> surveyed 214 data and analytics leaders: &#8220;The percentage of employees actively using BI/analytics tools is currently 25% on average, reflecting minimal growth in the past seven years we&#8217;ve been tracking this metric.&#8221; Wayne Eckerson, in the same release: adoption &#8220;has been stuck around 20% for many years.&#8221; Seven years of tracking, no movement, after two decades of investment in self-service business intelligence. (Usage of BI <em>output</em> did rise over that period. The plateau is in the number of people asking their own questions, which is what is at issue here.)</p><p>The earliest good statement of the diagnosis I can find is from 2010: <a href="iframe.php?url=https%3A%2F%2Fsloanreview.mit.edu%2Fprojects%2Fanalytics-the-new-path-to-value%2F">MIT Sloan Management Review and IBM&#8217;s Institute for Business Value</a> surveyed around 3,000 executives across 108 countries: &#8220;the adoption barriers organizations face most are related to management and culture rather than being related to data and technology.&#8221;</p><p>Nine years later, three McKinsey partners writing in <a href="iframe.php?url=https%3A%2F%2Fhbr.org%2F2019%2F07%2Fbuilding-the-ai-powered-organization">Harvard Business Review</a> compressed it into seven words as their standfirst: &#8220;Technology isn&#8217;t the biggest challenge. Culture is.&#8221;</p><p>The load-bearing evidence came from one annual survey: the NewVantage Partners executive benchmark, run by Randy Bean and Tom Davenport, which asks the most senior data leaders at around a hundred large companies to name the principal challenge in becoming data-driven. Bean reported the <a href="iframe.php?url=https%3A%2F%2Fsloanreview.mit.edu%2Farticle%2Fwhy-culture-is-the-greatest-barrier-to-data-success%2F">2020 results</a> himself: &#8220;Technology does not appear to be a barrier or the problem. Only 9.1% of executives pointed to technology as the principal challenge to becoming data-driven.&#8221; Culture, people and process: 90%.</p><p>Most of the numbers in this argument trace back to that survey, including many that get attributed to MIT or McKinsey because of where Bean published them. It&#8217;s worth describing the study: around a hundred respondents, one per company, invitation-only, heavily weighted to financial services, with &#8220;culture&#8221; a composite bucket covering people, process and organizational alignment. It records what data leaders <em>believe</em> about their own programs. It reflects their thinking rather than a rigorous analysis of what was actually holding back adoption.</p><p>I believed all of this. I said versions of it on stages and in sales meetings, while selling data infrastructure. So did nearly everyone I respected in the industry: as late as December 2021, less than a year before any of this began to change, the claim that technology was not the barrier, and that culture was, still read as settled common sense.</p><h2>Even today data leaders are still saying culture is holding back adoption of data</h2><p>Even while AI is driving adoption of data in organizations, old claims about culture holding this back remain prevalent. </p><p>The <a href="iframe.php?url=https%3A%2F%2Fstatic1.squarespace.com%2Fstatic%2F62adf3ca029a6808a6c5be30%2Ft%2F6942c3cb535da44088c2dbff%2F1765983179572%2F2026%2BAI%2B%26amp%3B%2BData%2BLeadership%2BExecutive%2BBenchmark%2BSurvey%2BFinal.pdf">2026 edition</a> of that same survey, published last December, records the highest culture reading in the survey&#8217;s history. From Davenport and Bean&#8217;s foreword:</p><blockquote><p>&#8220;One of the flaws that we&#8217;ve seen year after year is that the primary obstacles to effective use of data and AI are almost entirely human rather than technological. This year the highest-ever percentage in this survey (93%) pointed to human issues &#8212; culture and change management &#8212; as the key challenge to data and AI adoption. Only 7% blamed technology. But how many CDOs spend 93% of their own efforts addressing human issues?&#8221;</p></blockquote><p>Ninety-three percent, and a closing question that asks data leaders to put <em>more</em> of their effort into the human side. Published into a year in which a technology change is visibly moving the number that twenty years of human-side effort could not.</p><h2>If technology can fix it, adoption was never a culture problem</h2><p>If culture prevented adoption of data, a change in technology could not have produced a step change in adoption, because there was almost nothing left for technology to fix. Something else would have had to change: literacy, sponsorship, organizational design, incentives.</p><p>Nothing else about data changed. Nobody ran a literacy program in 2025 that finally worked. And the step change is uniform across organizations with very different levels of data culture and literacy, which is fatal to the strong version of the diagnosis: if culture were the binding constraint, results would vary a lot more across organizations. My experience is that they do not.</p><p>The obvious objection is that AI was itself a culture event. CEOs mandated it, boards asked about it and people met it at home before they met it at work, which is exactly the sponsorship and personal familiarity that twenty years of literacy programs were trying to manufacture. That is partly true, and it is the strongest counter to what I am claiming. But look at what it concedes. The sponsorship arrived for AI, not for data. No executive stood up in 2025 and told their organization to care more about the warehouse. What the mandate did was hand people a different door into the same data, and they walked through it. If culture only moves when you ship people a better interface, the interface was doing the work all along.</p><p>So technology <em>was</em> a binding constraint and a large one, and we spent twenty years telling each other it was not. That does not show culture never mattered. I think it matters as much as it ever did, and I will come back to it in the next post. It shows that the confident, near-unanimous claim that <strong>technology had stopped being the constraint</strong> was wrong. We had a variable that our own benchmark put as low as 7%, and it turned out to be the one that moved everything.</p><p>Before going further I should own something, because the irony has not escaped me. My evidence for the step change is the reported beliefs of data leaders, gathered in conversations rather than surveys, and that is exactly the class of evidence I have just been asking you to distrust. The independent numbers do not yet show it: <a href="iframe.php?url=https%3A%2F%2Fwww.gallup.com%2Fworkplace%2F713063%2Fai-workplace-productivity.aspx">Gallup</a> surveyed 23,717 US employees in February and found only 18% of frequent AI users doing data or analytics work with it, and the <a href="iframe.php?url=https%3A%2F%2Fwww.census.gov%2Flibrary%2Fstories%2F2026%2F05%2Fai-use-businesses.html">Census Bureau</a> has the share of businesses using AI flat since last December. So the claim I am making is deliberately narrower than &#8220;everyone is self-serving now.&#8221; It is that for the first time in twenty years the interface constraint has visibly moved, and that where it has moved, in the companies that had already done the unglamorous infrastructure work, it has moved a long way. If you are seeing something different, I want to know: that is the question this piece ends on.</p><h2>What actually drove data adoption was a new interface on the data infrastructure that was already there</h2><p>The technology that changed was not the data platform. It was the interface to it.</p><p>A change of interface was sufficient because in most of the companies I am lucky enough to work with the hard infrastructure work had already been done, for reasons that had nothing to do with AI, long before anyone knew that an agent would be both the interface to data and a consumer of it. Data consolidated in a warehouse, modeled into something coherent, definitions agreed and written down somewhere. That architecture took a hammering in 2022 as over-tooled and over-priced, and the cost critique was fair, but it was mostly built, and it turned out to be critical in enabling the business to use AI to think in a data-driven way.</p><p>The demand for data was latent all along. The business was never allergic to data. It was allergic to BI tools, to SQL, to filing a ticket with the data team and to waiting three days for an answer it needed on Monday. Take the tax away and the appetite is there.</p><p>The most damning detail is in that same BARC survey. Asked what was driving increased usage of their tools, only 14% of those leaders named natural language query. This was a year before ChatGPT. And the barriers they named, in their own order: lack of training 50%, poor data quality 41%, budget 36%, ease of use 33%.</p><p>Training first. Ease of use fourth.</p><p>Some people saw it coming. Tristan Handy, writing about the modern data stack in late 2020, two years before any of this landed: &#8220;There is no technical hurdle to be solved here&#8212;the building blocks are all in place. <a href="iframe.php?url=https%3A%2F%2Fwww.getdbt.com%2Fblog%2Ffuture-of-the-modern-data-stack">The hard part is figuring out the UX.</a>&#8221; And Benn Stancil went at the culture diagnosis by name in <a href="iframe.php?url=https%3A%2F%2Fbenn.substack.com%2Fp%2Fthe-modern-data-experience">August 2021</a>: &#8220;data cultures don&#8217;t materialize out of employee handbooks or internal seminars. The structures of our technologies and organizations till the land from which they grow.&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21Yors%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F3d56d70c-dffc-480c-8772-cb6dfa4e120a_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Yors!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d56d70c-dffc-480c-8772-cb6dfa4e120a_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!Yors!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d56d70c-dffc-480c-8772-cb6dfa4e120a_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!Yors!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d56d70c-dffc-480c-8772-cb6dfa4e120a_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!Yors!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d56d70c-dffc-480c-8772-cb6dfa4e120a_1672x941.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21Yors%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F3d56d70c-dffc-480c-8772-cb6dfa4e120a_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3d56d70c-dffc-480c-8772-cb6dfa4e120a_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2057427,&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://datacreation.substack.com/i/208982645?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d56d70c-dffc-480c-8772-cb6dfa4e120a_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Yors!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d56d70c-dffc-480c-8772-cb6dfa4e120a_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!Yors!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d56d70c-dffc-480c-8772-cb6dfa4e120a_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!Yors!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d56d70c-dffc-480c-8772-cb6dfa4e120a_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!Yors!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d56d70c-dffc-480c-8772-cb6dfa4e120a_1672x941.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>We were the only function that concluded its customers were the problem</h2><p>For twenty years the data profession&#8217;s settled explanation for its own limited impact was that the people it served were not good enough at receiving what it produced. Not literate enough. Not curious enough. Not sufficiently sponsored from above. Our answer was to send them on courses.</p><p>Those people were <em>our customers</em>. Every data leader I know describes their stakeholders in those terms and means it sincerely. And no product team on earth would survive concluding, for two decades, that its users simply needed more training. They would have been told, correctly, that a product requiring a literacy program has a design problem.</p><p>We told ourselves the opposite. Forrester had described the goal, <a href="iframe.php?url=https%3A%2F%2Fwww.forrester.com%2Fblogs%2F10-01-11-self_service_business_intelligence_dissolving_the_barriers_to_creative_decision-support_solutions%2F">in 2010</a>, as self-service BI &#8220;where the BI developers and business analysts are one and the same person.&#8221; Turn the business user into an analyst. That was the cure as we understood it. It reads now like a description of the disease.</p><p>I do not think the last twenty years were wasted. The warehouse, the models, the definitions argued over and written down: that work is precisely what made the new interface useful, and the companies where the step change is biggest are the ones that had already done it. What was wasted was the diagnosis. We spent two decades studying our stakeholders when we should have been studying the front door.</p><p>So I would be interested to know whether others are seeing the same step change I am, or something different. My evidence is a set of conversations rather than a survey, which, as I have already admitted, is exactly the class of evidence I have spent this piece asking you to distrust.</p><p>If I am right, I worry that we are about to make the same mistake again.</p><p><em>In <a href="iframe.php?url=https%3A%2F%2Fdatacreation.substack.com%2Fp%2Fclaude-says">the second part of this piece</a> I look at where the gap between data people and everyone else has moved to, why &#8220;teach people to be better with AI&#8221; is the same flawed approach we took with data for twenty years and what we need to build instead.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datacreation.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Data Creation! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[A semantic layer is not a context layer]]></title><description><![CDATA[They are both invaluable to agents, but they are distinct]]></description><link>https://datacreation.substack.com/p/a-semantic-layer-is-not-a-context</link><guid isPermaLink="false">https://datacreation.substack.com/p/a-semantic-layer-is-not-a-context</guid><dc:creator><![CDATA[Yali Sassoon]]></dc:creator><pubDate>Mon, 06 Jul 2026 09:00:43 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21vVhH%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F6e4e7e52-87cc-4c25-bf6c-e93db3069e1f_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>There is a huge amount of hype around semantic layers right now. At Snowflake Summit last month it was one of the most talked-about ideas in the building; the whole event was organised around the argument that agentic AI runs on governed enterprise context. Serious independent voices are making the same case: Karl Ivo Sokolov calls the semantic layer <a href="iframe.php?url=https%3A%2F%2Fkarlivo.substack.com%2Fp%2Fcrossing-the-chasm-on-ai-the-semantic">&#8220;the single most strategic asset in the enterprise AI stack&#8221;</a>, and argues that whoever builds it for a customer is best placed to build that customer&#8217;s entire agentic transformation. Semantic layers certainly have a critical role to play in the emerging AI stack. But a number of serious people are making the same mistake: assuming that role is the same as a context layer&#8217;s.</p><p>A semantic layer is not a context layer. It does a real job, and a durable one, but it is a fraction of the job many agents acting in the enterprise actually needs done. And the rest of that job is not a matter of putting more data into the semantic layer. This piece is about the gap: what a context layer has to do that a semantic layer does not, and why anyone putting agents into production should care which one they are actually building.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datacreation.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Data Creation! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21vVhH%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F6e4e7e52-87cc-4c25-bf6c-e93db3069e1f_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vVhH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e4e7e52-87cc-4c25-bf6c-e93db3069e1f_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!vVhH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e4e7e52-87cc-4c25-bf6c-e93db3069e1f_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!vVhH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e4e7e52-87cc-4c25-bf6c-e93db3069e1f_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!vVhH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e4e7e52-87cc-4c25-bf6c-e93db3069e1f_1672x941.png 1456w" sizes="100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21vVhH%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F6e4e7e52-87cc-4c25-bf6c-e93db3069e1f_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6e4e7e52-87cc-4c25-bf6c-e93db3069e1f_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2550876,&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://datacreation.substack.com/i/205473325?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e4e7e52-87cc-4c25-bf6c-e93db3069e1f_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vVhH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e4e7e52-87cc-4c25-bf6c-e93db3069e1f_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!vVhH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e4e7e52-87cc-4c25-bf6c-e93db3069e1f_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!vVhH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e4e7e52-87cc-4c25-bf6c-e93db3069e1f_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!vVhH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e4e7e52-87cc-4c25-bf6c-e93db3069e1f_1672x941.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I should declare my interest. At Snowplow we are building a customer context layer, for agents that work with customers, whether directly in an application or by supporting the marketing and support agents that serve them. Read what follows with that in mind. The argument stands or falls on its own logic.</p><h2>Context layer: the phrase everyone is using but no one has defined</h2><p>Start with what is <em>not</em> contested, because it shows how precise this language can be. &#8220;Context window&#8221; is exact: Anthropic&#8217;s <a href="iframe.php?url=https%3A%2F%2Fplatform.claude.com%2Fdocs%2Fen%2Fbuild-with-claude%2Fcontext-windows">documentation</a> calls it the model&#8217;s &#8220;working memory,&#8221; all the text a model can reference when generating a response. &#8220;Context engineering&#8221; converged fast: Tobi L&#252;tke <a href="iframe.php?url=https%3A%2F%2Fx.com%2Ftobi%2Fstatus%2F1935533422589399127">reached for the term</a> in June 2025, Andrej Karpathy <a href="iframe.php?url=https%3A%2F%2Fx.com%2Fkarpathy%2Fstatus%2F1937902205765607626">sharpened it</a> a week later into &#8220;the delicate art and science of filling the context window with just the right information for the next step,&#8221; and <a href="iframe.php?url=https%3A%2F%2Fblog.langchain.com%2Fthe-rise-of-context-engineering%2F">LangChain</a> and <a href="iframe.php?url=https%3A%2F%2Fwww.anthropic.com%2Fengineering%2Feffective-context-engineering-for-ai-agents">Anthropic</a> landed in the same place within months.</p><p>Then you reach &#8220;context layer,&#8221; and the ground gives way. <a href="iframe.php?url=https%3A%2F%2Fenterprise-knowledge.com%2Fwhat-is-the-difference-between-a-semantic-layer-and-a-context-layer%2F">Enterprise Knowledge</a>, a consultancy with nothing to sell in this particular fight, is blunt: practitioners &#8220;are still struggling to agree on the terms themselves.&#8221; Different camps use the phrase to mean materially different things: governed metadata over the warehouse (<a href="iframe.php?url=https%3A%2F%2Fatlan.com%2Fcontext-layer%2F">Atlan</a>, and the reading analysts applied to <a href="iframe.php?url=https%3A%2F%2Fwww.constellationr.com%2Finsights%2Fnews%2Fsnowflake-summit-2026-context-custom-model-training-iceberg-v3">Snowflake&#8217;s Horizon Catalog</a> at Summit), agentic retrieval across both structured and unstructured information (<a href="iframe.php?url=https%3A%2F%2Fcontextual.ai%2Fblog%2Fsemantic-layer-vs-context-layer">Contextual AI</a>), a knowledge graph (<a href="iframe.php?url=https%3A%2F%2Fenterprise-knowledge.com%2Fwhat-is-the-difference-between-a-semantic-layer-and-a-context-layer%2F">Enterprise Knowledge</a> again), or the live, identity-resolved state of a specific entity, the camp <a href="iframe.php?url=https%3A%2F%2Fsnowplow.io%2F">Snowplow</a> and <a href="iframe.php?url=https%3A%2F%2Fwww.businesswire.com%2Fnews%2Fhome%2F20260506444429%2Fen%2FAmperity-Turns-Real-Time-Customer-Context-into-Meaningful-Brand-Experiences">Amperity</a> are in.</p><p>But underneath, every camp makes the same move: each assumes the job is to give an agent access to data that already exists, differing only on which data and in what shape. That assumption fails twice. First, access is not the hard part: context has a real cost, so it is not enough to make data reachable; it has to be the right data, optimised for this agent at this moment. Second, it counts only the data the enterprise has already captured, and says nothing about the data that has to be created before any of it can run.</p><h2>Give the semantic layer its due</h2><p>To see the difference clearly, give the semantic layer its due, because it is a real and durable idea that long predates this conversation.</p><p>It was, in effect, invented by Business Objects. Their <a href="iframe.php?url=https%3A%2F%2Fpatents.google.com%2Fpatent%2FUS5555403A%2Fen">patent</a>, filed in November 1991, describes a system that lets &#8220;end users access (query) relational databases without knowing the relational structure or the structured query language,&#8221; wrapping the metadata model in a container they called a &#8220;universe.&#8221; The label came later; the thing is thirty-five years old, and its job has never changed: the <em>consistent interpretation</em> of data that already exists. What does &#8220;revenue&#8221; mean? It is the agreed dictionary that stops every team in the building defining &#8220;churn&#8221; differently.</p><p>The self-service-BI wave ushered in by <a href="iframe.php?url=https%3A%2F%2Fwww.tableau.com">Tableau</a> largely did away with the semantic layer: analysts pointed a visualisation tool straight at the data and each re-implemented their own definitions. Looker brought it back in 2012 with <a href="iframe.php?url=https%3A%2F%2Fdocs.cloud.google.com%2Flooker%2Fdocs%2Fwhat-is-lookml">LookML</a>, so many people could work consistently with the data the cloud warehouses were making available. It is having a full renaissance now, with <a href="iframe.php?url=https%3A%2F%2Fdocs.getdbt.com%2Fdocs%2Fuse-dbt-semantic-layer%2Fdbt-sl">dbt</a>, <a href="iframe.php?url=https%3A%2F%2Fcube.dev%2Fuse-cases%2Fsemantic-layer">Cube</a>, <a href="iframe.php?url=https%3A%2F%2Fwww.atscale.com%2Fglossary%2Fsemantic-layer%2F">AtScale</a>, <a href="iframe.php?url=https%3A%2F%2Fdocs.snowflake.com%2Fen%2Fuser-guide%2Fviews-semantic%2Foverview">Snowflake&#8217;s Semantic Views</a> and <a href="iframe.php?url=https%3A%2F%2Fdocs.databricks.com%2Faws%2Fen%2Fbusiness-semantics%2Fmetric-views%2F">Databricks&#8217; Metric Views</a>, for a reason that has nothing to do with humans: an agent that guesses what &#8220;revenue&#8221; means is worse than useless. The clearest tell that the term is live and contested: in September 2025, Snowflake, Salesforce, dbt Labs and others launched a standard, the <a href="iframe.php?url=https%3A%2F%2Fwww.snowflake.com%2Fen%2Fnews%2Fpress-releases%2Fsnowflake-salesforce-dbt-labs-and-more-revolutionize-data-readiness-for-ai-with-open-semantic-interchange-initiative%2F">Open Semantic Interchange</a>, to make their semantic layers interoperate. You do not standardise something everyone already agrees on.</p><p>So the semantic layer is enjoying a deserved second life. The mistake is not in valuing it. It is in thinking that makes it a context layer.</p><h2>The difference is the job, not the data</h2><p>The tempting way to distinguish the two is by their <em>contents</em>: to say a context layer just has more in it, usually the documents and transcripts that never fitted neatly into tables. But that invites an obvious rebuttal: <em>then put more data in the semantic layer.</em> If the only difference is what is inside, the distinction collapses, because in principle you can put anything inside anything.</p><p>The distinction is not the contents. It is the <strong>job</strong>. A semantic layer answers one question: <em>what does this data mean?</em> It is definitional, retrospective, aggregate, and the same dictionary whoever opens it. A context layer answers a different question: <em>what does this agent need to know to act well, here, now?</em> Put in one line: <strong>a semantic layer describes the past consistently; a context layer assembles the present for a decision.</strong> Two things separate them. One is tense: the settled past versus the live present. The other is address: a semantic layer is unaddressed, indifferent to who is asking or why; a context layer is written for one reader, this agent, in this situation, trying to do this thing. Tense and address together, and everything else in this piece follows from them.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21cZkH%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F67bb9ab9-3c78-486f-a4c7-f666ef70317e_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cZkH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67bb9ab9-3c78-486f-a4c7-f666ef70317e_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!cZkH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67bb9ab9-3c78-486f-a4c7-f666ef70317e_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!cZkH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67bb9ab9-3c78-486f-a4c7-f666ef70317e_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!cZkH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67bb9ab9-3c78-486f-a4c7-f666ef70317e_1672x941.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21cZkH%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F67bb9ab9-3c78-486f-a4c7-f666ef70317e_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/67bb9ab9-3c78-486f-a4c7-f666ef70317e_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2417461,&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://datacreation.substack.com/i/205473325?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67bb9ab9-3c78-486f-a4c7-f666ef70317e_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cZkH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67bb9ab9-3c78-486f-a4c7-f666ef70317e_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!cZkH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67bb9ab9-3c78-486f-a4c7-f666ef70317e_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!cZkH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67bb9ab9-3c78-486f-a4c7-f666ef70317e_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!cZkH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67bb9ab9-3c78-486f-a4c7-f666ef70317e_1672x941.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The word &#8220;context&#8221; is overloaded, so let me fix the vocabulary. I will use <strong>situation</strong> for the raw thing an agent is dropped into: the environment, the entities in it, and what each is trying to do. And I will reserve <strong>context</strong> for the refined, decision-ready package assembled both <em>from</em> that situation and <em>for</em> it: from it, to understand what is going on at all; for it, when handed back to the agent so it can take its best next step. The situation is the raw material; context is what you manufacture from it. A semantic layer is one ingredient in that manufacture. It is not the factory.</p><h2>So what is the job, exactly?</h2><p>The job of a context layer is to give an agent the most relevant, precise, succinct yet complete picture of the situation it is in, together with the knowledge it needs to act, so it has the best possible chance of success, however the agent defines success. (&#8221;Succinct yet complete&#8221; is deliberately a tension: enough to act on and no more, because context is not free.)</p><p>The interesting question is <em>how</em>, and it breaks into a five-step pipeline that runs not once but over and over, learning as it goes.</p><ol><li><p><strong>Comprehend the situation.</strong> Build an accurate picture of the environment: which entities are involved, their current state, what each is trying to do. <em>Get this wrong and everything downstream is precise about the wrong thing.</em></p></li><li><p><strong>Frame the problem.</strong> Translate the situation into the specific problem to solve. One situation affords many; this picks the real one. <em>Get this wrong and you solve the wrong problem flawlessly.</em></p></li><li><p><strong>Determine what is needed.</strong> Map that problem to the information and knowledge required to solve it. <em>Get this wrong and you retrieve a pile of plausibly-related, useless material, or miss the one input that mattered.</em></p></li><li><p><strong>Acquire it, across every source.</strong> Gather it wherever it lives: tables, knowledge graphs, documents, real-time event streams, external systems. <em>This is the only step a semantic layer touches, and even then only the slice whose answers sit in governed warehouse tables.</em></p></li><li><p><strong>Compose it for use.</strong> Arrange the material into the form most usable for <em>this</em> decision by <em>this</em> consumer: the right granularity and precision, disambiguated, no more than is needed. <em>Get this wrong and you hand the agent a technically-complete data dump it cannot use.</em></p></li></ol><p>The semantic layer contributes to step four, for one source type, and is silent on the rest. That is not a criticism; it is simply a much smaller part of the job than the conflation implies.</p><p>This answers the obvious objection: <em>can&#8217;t I just put an agent on top of my semantic layer and let it do the rest?</em> You can, and for one case it is the right architecture. Picture an analytics agent, an internal user asking the warehouse questions in natural language: &#8220;What was net revenue retention in EMEA last quarter, and which segments dragged it down?&#8221; The agent handles steps one to three by reasoning, the semantic layer handles step four, and the answer is good, because the situation is simple, the data already exists in the warehouse, and it is already aggregate. From inside that case, &#8220;semantic layer equals context layer&#8221; looks obviously true. But notice what that arrangement is. The agent supplies the <em>reasoning</em>, which a capable model can do for itself. What it cannot do for itself is the <em>infrastructure</em>: making sure the right data was created in the first place, acquiring it from sources the semantic layer does not reach, and composing and delivering it in time. Split the job that way and the boundary draws itself. <strong>The context layer is the infrastructure half, and it is precisely the half a semantic layer does not provide.</strong></p><h2>It all rests on data that has to be created</h2><p>The most important thing the decomposition surfaces hides inside steps one and four: both presuppose that the relevant data <em>exists</em>. Step four quietly assumes the thing you are reaching for was recorded somewhere. Often it was not. Step one is more demanding still: you cannot comprehend a situation that was never captured. Describing a situation accurately is not a passive act of reading; it is an act of <em>creating</em> the data that represents it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21TEXO%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F8b2fc8fc-4511-492a-91cc-38e79a6ca758_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TEXO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b2fc8fc-4511-492a-91cc-38e79a6ca758_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!TEXO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b2fc8fc-4511-492a-91cc-38e79a6ca758_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!TEXO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b2fc8fc-4511-492a-91cc-38e79a6ca758_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!TEXO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b2fc8fc-4511-492a-91cc-38e79a6ca758_1672x941.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21TEXO%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F8b2fc8fc-4511-492a-91cc-38e79a6ca758_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8b2fc8fc-4511-492a-91cc-38e79a6ca758_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2118228,&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://datacreation.substack.com/i/205473325?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b2fc8fc-4511-492a-91cc-38e79a6ca758_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TEXO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b2fc8fc-4511-492a-91cc-38e79a6ca758_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!TEXO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b2fc8fc-4511-492a-91cc-38e79a6ca758_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!TEXO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b2fc8fc-4511-492a-91cc-38e79a6ca758_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!TEXO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b2fc8fc-4511-492a-91cc-38e79a6ca758_1672x941.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Take two agents facing very different decisions. An incident-response agent has to decide whether to roll back a release the moment a service starts erroring: what settles it is which deploy shipped in the last ten minutes and which downstream services are degrading right now, not last quarter&#8217;s uptime. A customer-facing agent, handling a live chat or working inside an application, has to decide what to say or do next: what settles <em>that</em> is what this customer just did, that they hesitated on the pricing page, abandoned checkout, and came back twice in the last five minutes. In both cases the context that matters is made of events happening now, and it exists only if those events were deliberately captured as they happened. Typically, neither situation sits in a table waiting to be queried.</p><p>So the job of a context layer is not, fundamentally, to support a retrieval process. It is to ensure the data needed to run all five steps has been <em>designed, created and made available</em> in the first place. A semantic layer assumes that work is done. For a real-time agent it usually is not, and no amount of consistent definition conjures data that was never recorded. (This is the thread back to where this series started: a context layer is <em>where</em> created context gets served; data creation is <em>how</em> that context comes to exist.)</p><p>This is general, and worth proving general by stepping outside the customer-data world I happen to live in. Take a <strong>coding agent</strong>. It needs the current state of the codebase, the diff in flight, the failing test, the ticket, the team&#8217;s conventions, and, above all, <em>why</em> a piece of code was written the way it was. That last one is a decision trace, and decision traces are almost never recorded: they live in someone&#8217;s head, or a Slack thread that scrolled away. A semantic layer over a metrics warehouse is irrelevant here; this agent&#8217;s context is a code graph, live editor state, and institutional knowledge that has to be captured to exist at all. Or take a <strong>clinical decision-support agent</strong> at the bedside: live vitals streaming now, a history resolved across record systems that share no identifier, medical knowledge that is graph-shaped and constantly revised. A consistent definition of &#8220;readmission rate&#8221; is no use mid-ward-round.</p><p>Three different domains, one structural fact in each: much of what the agent needs is graph-shaped rather than tabular, real-time rather than batch, and often not recorded until something deliberately records it. None of those three properties is what a semantic layer is built for.</p><h2>And it has to arrive in time</h2><p>The decomposition makes a second thing visible, the one the warehouse path most often founders on: composing the perfect context and delivering it a moment too late is a total failure, and a <em>different</em> failure from getting the content wrong. Semantic layers are typically built on the gold tables at the end of a batch pipeline. That is the right place for consistent reporting and the wrong place for a decision happening in a live conversation. The agent is mid-sentence with a customer, or mid-edit in a file. Context that is correct but arrives with last night&#8217;s batch is not context; it is history. This is the tense difference made physical: the past, however consistently described, arrives too late for the present.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21C6cy%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Faeca498d-19cd-4eb0-9234-2d1627096a3a_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!C6cy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faeca498d-19cd-4eb0-9234-2d1627096a3a_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!C6cy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faeca498d-19cd-4eb0-9234-2d1627096a3a_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!C6cy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faeca498d-19cd-4eb0-9234-2d1627096a3a_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!C6cy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faeca498d-19cd-4eb0-9234-2d1627096a3a_1672x941.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21C6cy%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Faeca498d-19cd-4eb0-9234-2d1627096a3a_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aeca498d-19cd-4eb0-9234-2d1627096a3a_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2090830,&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://datacreation.substack.com/i/205473325?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faeca498d-19cd-4eb0-9234-2d1627096a3a_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!C6cy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faeca498d-19cd-4eb0-9234-2d1627096a3a_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!C6cy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faeca498d-19cd-4eb0-9234-2d1627096a3a_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!C6cy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faeca498d-19cd-4eb0-9234-2d1627096a3a_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!C6cy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faeca498d-19cd-4eb0-9234-2d1627096a3a_1672x941.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>The loop that makes it better</h2><p>One more thing, and the part I am least willing to draw a clean box around. A good context layer gets better over time: it records what the agent did and what happened, and feeds that back in, which is itself an act of creating new data, the decision traces step three will want next time. That loop is shared, and cannot be optimised from one end. The agent owns the action and its outcome; the context layer owns turning that outcome into durable, retrievable signal. Optimise one without the other and it breaks: an agent that learns nothing it can pass on, or a layer of traces no agent ever acts on.</p><h2>Why the distinction is worth defending</h2><p>The failure mode is by now easy to picture: a flawless semantic layer, every definition agreed, that can still only tell a real-time agent what the terms mean and what this segment did last quarter, when what it needs is what is happening right now. That gap is the space a context layer occupies, and it is why the definition currently forming, context layer as semantic-layer-plus-agent, is worth resisting: it is a definition the data platforms already meet by construction. If that version wins, the category was settled the moment it was named.</p><p>I want to be fair to the most serious version of the opposing view, because serious people hold it. Snowflake&#8217;s own engineering team has written one of the sharpest accounts of what agents need from data. Their <a href="iframe.php?url=https%3A%2F%2Fwww.snowflake.com%2Fen%2Fblog%2Fagent-context-layer-trustworthy-data-agents">&#8220;Agent Context Layer&#8221; post</a> lays out six stacked layers and makes a good prediction, that &#8220;winning architectures will treat agent context, and not the model, as the core product, as the model gets commoditised.&#8221; I agree with that sentence, and a warehouse can assemble a great deal of context. The disagreement is narrower and more structural: the real-time, entity-resolved, behavioural creation at the front of the five steps is the part the warehouse-native version cannot do, not through any failure of engineering, but because that data was never in the warehouse to begin with. A semantic layer is a tool for interpreting data, not for bringing it into existence.</p><p>So: a context layer is defined by a job a semantic layer does only a sliver of, and that job rests on data that has to be created, resolved to a live entity, served in time, and improved through use. Get that general definition right and any more specific claim, a &#8220;customer context layer,&#8221; say, follows from it rather than having to be asserted.</p><p>A closing note on how to do this honestly. The temptation in pieces like this is to invent a term and plant a flag on it, and coining a word when adequate ones already exist is the surest sign someone is trying to own a category rather than describe one. So I am not going to coin anything. I would rather build inside the vocabulary that already exists, Brinker&#8217;s <a href="iframe.php?url=https%3A%2F%2Fchiefmartec.com%2F2025%2F02%2Fmeet-the-new-martech-stack-systems-of-context-and-systems-of-truth%2F">&#8220;systems of context&#8221;</a>, Karpathy&#8217;s &#8220;filling the window,&#8221; define the job as precisely as I can, and let you judge whether what anyone builds actually meets it. That includes us: if &#8220;customer context layer&#8221; earns the name, it will be because it does the job, not because we said it first. A clear definition is the one thing the people best placed to own a term have the least incentive to supply. I would rather supply it, and compete on whether we meet it.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datacreation.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Data Creation! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Agents must not run on data exhaust]]></title><description><![CDATA[LLMs and agents have dramatically expanded the scope of what we now call &#8220;data&#8221; &#8212; and, in doing so, have done something stranger to the data value chain than most people have noticed: they have bent it into a loop.]]></description><link>https://datacreation.substack.com/p/agents-must-not-run-on-data-exhaust</link><guid isPermaLink="false">https://datacreation.substack.com/p/agents-must-not-run-on-data-exhaust</guid><dc:creator><![CDATA[Yali Sassoon]]></dc:creator><pubDate>Wed, 24 Jun 2026 08:51:30 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21ZNew%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fa0fb7f12-87cc-4dc4-870e-5a65497baa62_2528x1696.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>LLMs and agents have dramatically expanded the scope of what we now call &#8220;data&#8221; &#8212; and, in doing so, have done something stranger to the data value chain than most people have noticed: they have bent it into a loop. A loop is a powerful thing. It is what lets a system learn and improve over time. It is also what lets a system collapse, feeding on its own bad output until the quality turns to nonsense. The same loop runs both ways. One of the key things that decides which way it runs is whether the data flowing through it was created on purpose, or merely scavenged from whatever happened to be lying around.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21ZNew%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fa0fb7f12-87cc-4dc4-870e-5a65497baa62_2528x1696.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZNew!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0fb7f12-87cc-4dc4-870e-5a65497baa62_2528x1696.png 424w, https://substackcdn.com/image/fetch/$s_!ZNew!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0fb7f12-87cc-4dc4-870e-5a65497baa62_2528x1696.png 848w, https://substackcdn.com/image/fetch/$s_!ZNew!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0fb7f12-87cc-4dc4-870e-5a65497baa62_2528x1696.png 1272w, https://substackcdn.com/image/fetch/$s_!ZNew!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0fb7f12-87cc-4dc4-870e-5a65497baa62_2528x1696.png 1456w" sizes="100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21ZNew%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fa0fb7f12-87cc-4dc4-870e-5a65497baa62_2528x1696.png" width="1456" height="977" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a0fb7f12-87cc-4dc4-870e-5a65497baa62_2528x1696.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:977,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:9299813,&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://datacreation.substack.com/i/202569358?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0fb7f12-87cc-4dc4-870e-5a65497baa62_2528x1696.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ZNew!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0fb7f12-87cc-4dc4-870e-5a65497baa62_2528x1696.png 424w, https://substackcdn.com/image/fetch/$s_!ZNew!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0fb7f12-87cc-4dc4-870e-5a65497baa62_2528x1696.png 848w, https://substackcdn.com/image/fetch/$s_!ZNew!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0fb7f12-87cc-4dc4-870e-5a65497baa62_2528x1696.png 1272w, https://substackcdn.com/image/fetch/$s_!ZNew!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0fb7f12-87cc-4dc4-870e-5a65497baa62_2528x1696.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datacreation.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Data Creation! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>That is the conviction this whole Substack will start from: <strong>agents must not run on data exhaust</strong> &#8212; and far too many of them do. We were told for years that data is the new oil, something that pools beneath the organisation waiting to be pumped and refined. It was a poor metaphor then; in the age of agents it is a dangerous one, because it tells you the valuable data is already there for the taking. It almost never is.</p><p>It has been a long time since I last wrote here, and AI has reshaped the data landscape in the gap &#8212; exhilarating, and in equal measure hard to keep up with, let alone make sense of. This piece is my way back in: why, in a world increasingly drowning in machine-made data, deliberately creating data worth trusting matters more than it ever has. Let&#8217;s start with how much the word &#8220;data&#8221; now has to carry.</p><h2>What we now call data</h2><p>The category &#8220;data&#8221; has exploded.</p><p>For most of the history of our industry, &#8220;data&#8221; meant the structured, tabular numbers that fit in rows and columns, typed and schema&#8217;d, the kind of thing you could put in front of a BI tool. Text, images, audio and video were &#8220;data&#8221; only in the loosest sense. You could store them (in an <em>object store</em>, not a <em>database</em>), but you could not do much with them.</p><p>That boundary has gone. &#8220;Data&#8221; now encompasses text, images, audio and video; it can also refer to agent outputs, tool calls, reasoning traces, application code, webcam footage and the synthetic data the models generate themselves. The deeper shift is in where the boundary sits. Data used to be bounded by what fits in a table, because that was a pre-requisite to derive insight from it. (That was true whether you were doing analytics or most flavours of machine learning.) With the birth of language models, that is no longer true: it is now bounded by what a large language model can reason over, which today is pretty much everything we can represent digitally.</p><p>This is thrilling: it opens up whole new problem types that computers simply could not touch before.</p><p>How you impose order on that data sprawl is a really hard question. I am going to leave it hanging for now, because it is the subject of the next piece. The more urgent question, for now, is who, or what, is now consuming all of this?</p><h2>Agents: a strange new data consumer</h2><p>For most of the history of our industry there were only ever four ways to drive value from data, and every one of them ran on the same thing: a table. <strong>Descriptive</strong>: aggregate the rows to work out what happened &#8212; sum a column, count the records, group by a dimension. <strong>Diagnostic</strong>: dig into why, slicing that same table by dimension and comparing a metric across cohorts, or reading the correlations between its columns. <strong>Predictive</strong>: lay the data out as a feature matrix &#8212; one row per example, one column per signal, plus a column for the thing you are trying to predict &#8212; and fit a model to it. <strong>Prescriptive</strong>: hand the decision to the data itself, a pricing model or an approval engine that will not fire until it is handed a row of typed, expected inputs. Four levels of ambition, one substrate beneath all of them: always rows and columns.</p><p>Now hand an agent data in the broad sense, and what it can do looks nothing like that list: summarise a thousand documents, riff on a theme or brainstorm against one, build an argument or take one apart, propose a hypothesis worth testing, decompose a problem into constituent parts, turn a messy situation into a diagram or a video. None of this is analytics. It is a different kind of work entirely, and the material it runs on is no longer confined to rows and columns.</p><p>In the old world, structure was the price of admission. Dashboards, recommendation engines, decisioning apps: rigid programs that would not start without typed, schema&#8217;d inputs. The one apparent exception that proves the rule: a narrow class of machine learning - e.g. sentiment analysis - ingested raw text. But it delivered a structured output, a score or a label, and slotted straight back into the structured world. Unstructured data was never reasoned over in place. It was something you converted into structure as fast as possible, so the real tools could use it.</p><p>Meet the large language model, then, and meet it for now through a single face: as a data consumer. It is the first widely deployed thing that consumes unstructured data <em>as</em> unstructured data, reasoning over it directly with no conversion-to-structure step in between. Its appetite, the context window, is finite, a hard token budget, but it is structure-agnostic. It will take almost anything, with none of the schema constraints we built the entire discipline around.</p><p>It is tempting to read that as liberation. Structure is dead; just hand the model the pile. It is not. Removing the requirement for structure does not remove its value. The context window does not care whether you hand it a pristine star schema or a heap of raw transcripts, and that is exactly the problem. The model will accept anything, but it reasons well only on faithful, well-organised context. Structure stops being a technical requirement and becomes a quality choice.</p><h2>The machine that is also the material</h2><p>Now I can put back the two faces of the model I asked you earlier to ignore.</p><p>Let&#8217;s categorise everything that touches data by what it does to the data. Some things <strong>create</strong> it, producing data that represents the world in some way: trackers, sensors, transactions. Some <strong>process</strong> it, turning data into more data: a SQL query, a dbt model, a training run. And some <strong>consume</strong> it, turning data into a decision, an action or an insight. These three roles were always kept apart, each played by its own kind of component in a production line. The large language model is the first technology that can play all three roles:</p><ul><li><p>it is a <strong>source</strong> of data, generating text, code, decisions and traces, and driving an explosion in how much data the world produces;</p></li><li><p>it is a <strong>processing step</strong>, a station on the line that transforms its inputs into something new; and</p></li><li><p>it is a <strong>consumer</strong>, reasoning over the context window to reach a decision and take an action.</p></li></ul><p>This is unprecedented on two counts. We have never had a single component that is at once the raw-material supplier, the machine and the customer. And it occupies all three roles having shed the structure requirement that defined every one of them before. A line that used to run in one direction, through distinct stations, collapses into a single structure-agnostic component, and that bends the manufacturing line into a loop. The machine is now also the material.</p><p>This is the idea the rest of this Substack will keep returning to. Everything that follows, the promise and the danger both, comes from those three roles collapsing into one.</p><h2>Choking on our own exhaust</h2><p>The risk falls straight out of the loop, which is why it needs no separate motivation. If the line loops, and we keep feeding it the exhaust it throws off, quality does not merely stall. It compounds downward. The assembly line starts eating its own output.</p><p>This is not a thought experiment. It is <strong>model collapse</strong>: the finding, <a href="iframe.php?url=https%3A%2F%2Fwww.nature.com%2Farticles%2Fs41586-024-07566-y">published in </a><em><a href="iframe.php?url=https%3A%2F%2Fwww.nature.com%2Farticles%2Fs41586-024-07566-y">Nature</a></em>, that models trained recursively on their own generated data degrade across generations until their output turns to nonsense. It is <strong>context rot</strong>: the <a href="iframe.php?url=https%3A%2F%2Fresearch.trychroma.com%2Fcontext-rot">documented result</a> that frontier models get <em>worse</em> as you cram more into the context window, not better. It is agents grounded on the undifferentiated output of other agents. At machine scale, &#8220;don&#8217;t build systems out of a byproduct&#8221; stops being good hygiene and becomes something closer to existential.</p><p>A caveat, because this is exactly where the careful reader objects: none of this is an argument against synthetic data. Model collapse is what happens when a model is trained recursively on its own output with no fresh, real signal coming in &#8212; not whenever a machine has a hand in making the data. Synthetic data created on purpose, to fill a known gap or stress a known edge case, is some of the most useful data there is. The line that matters is not human-versus-machine origin. It is whether the data was made for a purpose, by design, or scavenged as the undifferentiated byproduct of something else.</p><p>But the same loop runs the other way, and this is the hopeful part. Feed the loop faithful data, made to spec, and quality compounds <em>upward</em>. That is what a learning system actually is: manufacture a decision, deliberately create data about it (what was decided, how, and the outcome it drove), reflect on whether that outcome was the one you wanted, and feed that back so the next decision is better. Over time, reliably, it improves.</p><p>Collapse and learning are the same loop. The only difference is whether the data flowing back was created or scavenged. That single choice decides whether quality compounds up or down, and it is more or less the whole argument in one sentence.</p><p>The lovely example of data that we have identified agents need, and need to be manufactured to spec, is the <strong>decision trace</strong> &#8212; a phrase I am borrowing from Jaya Gupta and Ashu Garg of Foundation Capital, who <a href="iframe.php?url=https%3A%2F%2Ffoundationcapital.com%2Fideas%2Fcontext-graphs-ais-trillion-dollar-opportunity">named it late last year</a>. A decision trace is a record of how a decision was actually made: what was weighed, what was discarded, why one path was taken over another, who signed it off. Almost nothing emits this: it needs to be deliberately created. It survives, if at all, as fragments buried in call transcripts and meeting minutes, never with the granularity, fidelity or provenance an agent would need to learn from it. And it is exactly what an agent that makes decisions needs: a faithful account of how humans reason through a choice, to follow or to disagree with.</p><p>Notice what that means. Even now, with machines generating more data than we know what to do with, some of the most valuable datasets still do not exist. They have to be manufactured on purpose, because no system throws them off as a byproduct.</p><p>When data is effectively infinite and machines make most of it, the scarce thing is no longer data. It is data that is actually useful. The data that is worth trusting. The abundance of exhaust does not make deliberate creation less valuable; it makes it close to the only thing that matters.</p><h2>What I want to write about</h2><p>That is why I am writing again: to think in public about how we create valuable data worth trusting, in a world where that has never been easier to fake or more expensive to get wrong. Data Creation - the thing this Substack is named for - is just that: the deliberate act of making data for a purpose, not the scavenging of data made for some other one. Some of it will be conceptual. A lot of it will be the unglamorous, specific things we are learning from doing the work. (Snowplow is where most of that learning comes from, so it will show up here, as evidence rather than a sales pitch.)</p><p>The next piece picks up exactly where this one stops: with the layer the whole industry is currently arguing about, and the one term it keeps getting confused with. Everyone has started talking about a &#8220;context layer.&#8221; Almost no one agrees what it is, and a good many people are quietly assuming it is just a semantic layer with an agent bolted on top. It is not, and the difference, it turns out, matters enormously.</p><p>More soon.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datacreation.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Data Creation! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Why companies build data applications]]></title><description><![CDATA[and how data products support data application development]]></description><link>https://datacreation.substack.com/p/why-companies-build-data-applications</link><guid isPermaLink="false">https://datacreation.substack.com/p/why-companies-build-data-applications</guid><dc:creator><![CDATA[Yali Sassoon]]></dc:creator><pubDate>Tue, 06 Feb 2024 14:28:44 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21B6Kt%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fca156679-d600-46ba-9721-561f4d2099b2_1600x914.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In my <a href="iframe.php?url=https%3A%2F%2Fdatacreation.substack.com%2Fp%2Ffrom-data-assets-to-data-products">last post</a>, I looked at what a data product is and how treating data as a product helps organizations self-serve.</p><p>In this post, I&#8217;m going to look at a separate but very related trend: traditionally, companies have driven most value from their data in reports and dashboards. That is changing rapidly - today companies are increasingly building their own data applications to drive value from data. But what exactly is a data application? What is driving this shift to data applications? How should companies get started building data applications?&nbsp;In this article, I answer these questions, and also explore why data products are powerful tools to support organizations building data applications.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21B6Kt%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fca156679-d600-46ba-9721-561f4d2099b2_1600x914.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!B6Kt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca156679-d600-46ba-9721-561f4d2099b2_1600x914.png 424w, https://substackcdn.com/image/fetch/$s_!B6Kt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca156679-d600-46ba-9721-561f4d2099b2_1600x914.png 848w, https://substackcdn.com/image/fetch/$s_!B6Kt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca156679-d600-46ba-9721-561f4d2099b2_1600x914.png 1272w, https://substackcdn.com/image/fetch/$s_!B6Kt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca156679-d600-46ba-9721-561f4d2099b2_1600x914.png 1456w" sizes="100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21B6Kt%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fca156679-d600-46ba-9721-561f4d2099b2_1600x914.png" width="1456" height="832" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ca156679-d600-46ba-9721-561f4d2099b2_1600x914.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:832,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!B6Kt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca156679-d600-46ba-9721-561f4d2099b2_1600x914.png 424w, https://substackcdn.com/image/fetch/$s_!B6Kt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca156679-d600-46ba-9721-561f4d2099b2_1600x914.png 848w, https://substackcdn.com/image/fetch/$s_!B6Kt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca156679-d600-46ba-9721-561f4d2099b2_1600x914.png 1272w, https://substackcdn.com/image/fetch/$s_!B6Kt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca156679-d600-46ba-9721-561f4d2099b2_1600x914.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>Image courtesy of <a href="iframe.php?url=https%3A%2F%2Fopenai.com%2Fdall-e-2">Dall-E</a></em></p><h2>What is a data application?</h2><p>Ten years ago, organizations primarily used data to power dashboards and reports (e.g. business intelligence).</p><p>But with the rise of AI, digital platforms and improved connectivity, more and more companies are building data-intensive applications: applications that use data to power significant parts of their business.&nbsp;</p><p>Many of these applications are operational systems - they form part of the technology estate that companies use to deliver their services to their customers. There are many examples of data applications, to list just a few:</p><h3>Real-time classifiers</h3><p>These are real-time AI applications that make a decision, for example:</p><ul><li><p>Fraud detection: algorithms that decide if this individual is trying to commit a fraud, in which case they block a transaction from completing</p></li><li><p>Bot detection: algorithms that decide if a visitor is a bot or a human, and potentially take an appropriate action. (This may include blocking a bot further access to a website, or simply labeling and filtering the data associated with the bot so it does not contaminate KPIs like ad views.)</p></li></ul><h3>Recommendation and personalization&nbsp;</h3><p>It is relatively common for algorithms to power parts of an in-website or in-app experience, for example:</p><ul><li><p>&#8220;People who bought this also bought this&#8221;</p></li><li><p>&#8220;Other products you might be interested in&#8221; (these might be served on a side bar along the checkout to encourage customers to buy additional items, for example)</p></li><li><p>Search results can be personalized based on preferences that an individual reveals but doesn&#8217;t explicitly state in a search (e.g. <a href="iframe.php?url=https%3A%2F%2Fengineering.autotrader.co.uk%2F2022%2F11%2F23%2Freal-time-personalisation-of-search-results-with-auto-traders-customer-data-platform.html">AutoTrader example</a>).</p></li></ul><p>In this case, the AI selects the &#8220;best&#8221; content or products from a long list and returns them to the user.&nbsp;</p><h3>Decision-support systems</h3><p>The above examples are&nbsp; data applications that make a decision (e.g. decide that this user is committing a fraud or that these specific products are likely to be of interest to this visitor). In addition, applications can also be built that use data + AI to help individuals (or group of people) make a decision.&nbsp;</p><p>A nice example is an apparel retailer (and Snowplow customer) that has developed a data application for its buyers, that:</p><ol><li><p>Ingests the list of the SKUs they might want to stock for the next season. Note that in many cases, these SKUs are just rough sketches or concepts of items that could exist but are yet to be developed</p></li><li><p>Provides a set of recommendations as to which products should be purchased for the forthcoming season, including:</p><ol><li><p>How much of that product to buy</p></li><li><p>The rationale for its decision. (E.g. &#8220;This product sold particularly well last season and is in a product class that has seen steady sales growth over the last three years. Further, last year&#8217;s profit was lower than it could have been because not enough of the product was purchased to meet demand&#8221;)</p></li></ol></li><li><p>Enables users to select a particular item and then show the forecast demand data alongside historical availability, size curves and similar products</p></li></ol><p>The application is then used to help the buying team decide what to purchase for the next season. The buying team makes the actual buying decisions, but these decisions are no longer just based on gut. Instead, they&#8217;re based on a thorough understanding of the past performance of similar items and the impact of seasonality.</p><p>A totally different example from the media industry has some surprising similarities.&nbsp;</p><p>A newspaper group (also a Snowplow customer) built an application for its editors to help them optimize the placement of stories on the homepage through the newscycle.&nbsp;</p><p>The application showed the homepage as it was, but annotated it with data that showed the performance of individual content items in each place, benchmarked against the previous performance of content in that same item location. (Because placement is such a significant driver of content performance.)&nbsp;</p><p>The data made it easy for editors to recognize content that was over or underperforming (for example overperforming if the story was getting more popular, underperforming if it was losing relevance), which made it much easier for the editors to confidently rearrange the homepage frequently over the next cycle.&nbsp;&nbsp;</p><p>Like the buyers at the apparel retailer, the editors at the newspaper group had an application that was built to meet their needs and surfaced the data in the most helpful way to empower them to make a very specific but critical set of decisions on an ongoing basis.&nbsp;</p><h3>Dashboards and reports</h3><p>Old fashioned dashboards and reports can also be considered data applications. Many dashboards are specifically designed to help users make certain decisions (e.g. optimizing the deployment of money across different campaigns by highlighting campaigns that are over or underperforming in terms of return on investment) or to monitor the health of one or more business processes or technical systems.&nbsp;</p><p>Unlike the other data applications discussed above, it does not typically take a product engineering unit to ship a dashboard or report: a BI analyst can often do this in a business intelligence tool. However, the distinction between the two is blurring, as organizations look to deliver reports and dashboards into broader applications that are developed for customers or team members (look at how BI vendors all support embedded delivery of dashboards).</p><h3>Generative AI-powered applications</h3><p>The emergence of generative AI has dramatically increased the scope of what data applications can do.</p><p>While the focus of most data applications prior to the development of generative AI was on making decisions or supporting humans in making decisions,&nbsp; the technology has the potential to grow the scope of decisions that a data application can support, or make itself. For example:</p><ul><li><p>Rather than simply optimizing which ad creative from a set of assets to use in an advertising campaign, a generative AI-powered data application might generate new creatives, that are better performing than any of the human designed examples, driving improved return on ad spend by growing the number of possibilities that the optimization is performed across&nbsp;</p></li><li><p>For the apparel buyers&nbsp; mentioned above, generative AI could be used to suggest new products that would do well that the team might otherwise have missed.</p></li></ul><h2>How do companies organize to develop data applications successfully?</h2><p>Companies that want to derive value from data are increasingly looking beyond business intelligence and forming teams capable of building, shipping and supporting data applications.&nbsp;</p><p>These teams look like classic product engineering teams, but typically have additional skills in data engineering, data science, MLOps and LLMOps, alongside the more typical skills like front and backend engineering.&nbsp;</p><p>This was a deliberate strategy employed by a fashion brand and Snowplow customer. Its Data &amp; Analytics team spun up a number of product engineering units to develop and roll out key data applications across the business including:</p><ol><li><p>An application that supports buyers with their quarterly planning (described above)</p></li><li><p>An application that helps the team figure out where and when to set up pop-up stores This is a very complicated thing to measure - it is not trivial for example to understand how many sales generated by the pop-up store cannibalize the permanent outlets / channels&nbsp;</p></li><li><p>A content ranking engine to help the social team put out posts that are more likely to go viral&nbsp;</p></li><li><p>A media optimization app that combines the media mix model with multi-touch attribution to help the marketing team allocate budget across different channels.</p></li></ol><p>The key thing for the organization when implementing this strategy was that its data science team wasn&#8217;t just composed of data scientists, but it had access to all the required people (product managers, designers, front end and back end engineers) to design and build applications with UIs and algorithms that meet the needs of the different teams in the business.&nbsp;</p><p>These teams were given 6-12 months to launch an app and measure its impact (i.e. the return on investment), and then if the application was shown to add value, they had the opportunity to iterate on these applications to drive higher returns.&nbsp;</p><h2>Data products enable data applications</h2><p>Organizations that invest heavily in data applications can realize significant efficiency gains from investing in a well-governed underlying data set and associated technology so that product engineering teams have great source materials (data + supporting tooling) for developing data applications.&nbsp;</p><p>A big challenge in developing a data application is to ensure that it&#8217;s built on a solid underlying data set that:</p><ul><li><p>Provides all the information required. For example, if a data application uses machine learning, the data set should include plenty of highly predictive features</p></li><li><p>Is of high quality (i.e. the data is accurate and complete). Otherwise, dashboards will give a false picture of reality, decision support systems will lead people to make the wrong decisions. In addition, automated classifiers and recommendation engines will misclassify or recommend inappropriate items</p></li><li><p>Provide the data continuously with the required latency, schema, encoding, etc.</p></li></ul><p>A well-governed, well-documented set of data products, <a href="iframe.php?url=https%3A%2F%2Fdatacreation.substack.com%2Fp%2Ffrom-data-assets-to-data-products">as per my prior post</a>, provides an excellent foundation for building data applications. The difference between data products and data apps is not always well understood - let&#8217;s share a typical workflow that highlights the difference:</p><ul><li><p>To create a data application, product engineering units do not have to start at ground zero. They can build on one or more data products that meet their needs</p></li><li><p>They may find an existing data product that meets their needs in the data catalog (which has to be kept up-to-date and accurate)&nbsp;</p></li><li><p>If not, they can create a new data product - either from scratch (e.g. by sourcing new data) or from other existing data products. By publishing this data as its own data product, future teams that need a similar data set can build from the same basis, rather than having to start from scratch themselves</p></li><li><p>As part of the data product, it should be clear what SLAs the data adheres to, and the application developers have confidence those SLAs will be maintained going forwards</p></li><li><p>The product engineering team can engage with a data product manager, who liaises with the teams that produce the data. The data product manager explains to the data producers who&#8217;s using the data for what, so they can take this into account both when delivering the data on an ongoing basis and managing the roadmap for it.&nbsp;</p></li></ul><h2>So, how should organizations get started building data apps and data products?</h2><p>Here are some guiding principles for getting started with building data apps and data products:</p><p><strong>Step #1</strong></p><p>Organizations should first build data applications before investing in data products.&nbsp;</p><p>This might sound counterintuitive: after all, it is much easier to build a new data application if you already have one or more data products to build on.&nbsp;</p><p>However, it is always best to start with the business value you want to create - i.e. the data application you believe is going to move the needle for your business, and then work backwards to the data product(s) that are necessary to support this data application. If they don&#8217;t exist yet, you now have a business case to support building them.</p><p><strong>Step #2</strong></p><p>Make sure that the potential value to be generated is big. Building any kind of application, let alone a data application, is a significant endeavor. So make sure you pick a use case where there&#8217;s real value to be realized.</p><p><strong>Step #3</strong></p><p>Assemble the right team to seize this opportunity. You need the right combination of product management, data engineering and front- and back-end engineering professionals.&nbsp;</p><p><strong>Step #4</strong></p><p>Give the team the space to execute. Like the brand I mentioned earlier that gave their teams 6-12 months to make a difference.</p><p><strong>Step #5</strong></p><p>Publish any data products developed as part of the data application. It is likely that they&nbsp; will be valuable to other teams. The team building your first data application should set a good example in terms of creating the underlying data products and socializing them across the business.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datacreation.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Data Creation! Subscribe for free to receive new posts.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[From Data Assets to Data Products: How to Unlock Self-Service Analytics at Scale]]></title><description><![CDATA[On the importance of treating data as a product]]></description><link>https://datacreation.substack.com/p/from-data-assets-to-data-products</link><guid isPermaLink="false">https://datacreation.substack.com/p/from-data-assets-to-data-products</guid><dc:creator><![CDATA[Yali Sassoon]]></dc:creator><pubDate>Tue, 06 Feb 2024 09:33:38 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%218wB3%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F772936fb-f65b-4d08-bc3b-7a31e7c6fb15_1792x1024.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Companies have always tried to empower their employees to self-serve data. Traditional approaches have focused on curating a centralized data set, facilitating access and providing convenient UIs for analyzing that data.&nbsp;</p><p>In the last five years, AI has created opportunities for companies to use data in radically new ways. At the same time, the proliferation of digital platforms means organizations can create and work with entirely new data sets.&nbsp;</p><p>Treating data-as-a-product is a new approach to managing data that has emerged in recent years. It goes a long way to solving the challenges of driving self-service, especially in today&#8217;s world where data consumers have the ability to do so many interesting things with so many different data sets.</p><p>In this post, I&#8217;ll examine why it&#8217;s so important to treat data like a product. In the follow-on blog post, I&#8217;ll look at how treating data-as-a-product supports the realization of value in data applications.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%218wB3%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F772936fb-f65b-4d08-bc3b-7a31e7c6fb15_1792x1024.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8wB3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F772936fb-f65b-4d08-bc3b-7a31e7c6fb15_1792x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!8wB3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F772936fb-f65b-4d08-bc3b-7a31e7c6fb15_1792x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!8wB3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F772936fb-f65b-4d08-bc3b-7a31e7c6fb15_1792x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!8wB3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F772936fb-f65b-4d08-bc3b-7a31e7c6fb15_1792x1024.webp 1456w" sizes="100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%218wB3%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F772936fb-f65b-4d08-bc3b-7a31e7c6fb15_1792x1024.webp" width="1456" height="832" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/772936fb-f65b-4d08-bc3b-7a31e7c6fb15_1792x1024.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:832,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:190860,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8wB3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F772936fb-f65b-4d08-bc3b-7a31e7c6fb15_1792x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!8wB3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F772936fb-f65b-4d08-bc3b-7a31e7c6fb15_1792x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!8wB3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F772936fb-f65b-4d08-bc3b-7a31e7c6fb15_1792x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!8wB3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F772936fb-f65b-4d08-bc3b-7a31e7c6fb15_1792x1024.webp 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>Image courtesy of <a href="iframe.php?url=https%3A%2F%2Fopenai.com%2Fdall-e-2">Dall-E</a></em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://datacreation.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="iframe.php?url=https%3A%2F%2Fdatacreation.substack.com%2Fsubscribe%3F"><span>Subscribe now</span></a></p><h1>Why treat data-as-a-product?</h1><h2>Data is not oil</h2><p>Data is valuable. The world&#8217;s leading companies use data to differentiate themselves from the competition.&nbsp;</p><p>The best companies in the world are &#8220;democratizing&#8221; data so that every employee has access to lots of data that gives them up-to-the-minute insight into what&#8217;s going on in their business (e.g. what are our sales, who are we selling to, how profitable are those sales, how were they generated, who bought, what type of customers they were&#8230;). This gave rise to the idea that data is an asset.&nbsp;</p><p>However, organizations face a wide range of challenges in realizing the value of their data, even when adopting best-in-class technology stacks (data platforms), such as cloud data warehouses, modern BI tools, AI tools, data transformation tools etc.</p><h2>Enabling end users to self-serve data is difficult</h2><p>It&#8217;s likely you&#8217;re keen to enable end users in the different lines of your business to &#8220;self-serve&#8221; on data:</p><ul><li><p>For end users, self-service is empowering - they can develop their own insights, make better decisions and build their own data applications to drive more impact and be more successful</p></li><li><p>For management, the ability to self-service means that the quality of decision making across your organization is improved&nbsp;</p></li><li><p>For data teams, they can drive much more value by enabling a greater number of people to derive value from the data than if they had to create that value themselves - the data team is not constrained by their own size</p></li></ul><p>For this reason, self-serve has been a big topic in the data industry for decades: business intelligence solutions emerged in the 1970s and 80s to enable different people across the organization to analyze the data in the data warehouse themselves.&nbsp;</p><p>More recently, semantic layers and data catalogs have emerged as tools to support self-service.</p><p>Despite all this, self-service is still difficult. To enable self-service, it turns out that it isn&#8217;t enough to give end users access to data and tooling to slice and dice the data.</p><h2>Data consumers need more than just data and tooling to be able to self-serve effectively</h2><h3>They need to know what data is available</h3><p>Data discovery is a significant challenge in most organizations: there is typically a lot of data. That&#8217;s why data consumers need some kind of catalog that clearly shows what data is available so they can find what they&#8217;re looking for themselves.</p><h3>They need to know how to access the data</h3><p>It may not be enough to know that there is data available in a particular table, API, event stream, semantic layer, feature store or analytics tool.&nbsp;</p><p>Data consumers might need additional instructions on how to access the data, including the ability to gain access to logins / permissions.</p><h3>They need to know what the data means</h3><p>To actually use the data to draw insight, engineer features or deliver a dashboard, data consumers need to understand and interpret the data.&nbsp;</p><p>This is only possible if they understand what the data actually means, which in practice often means how it is generated (i.e. what triggers a new line of data, and the rules for setting the different cell / property values). This is typically referred to as the semantics of the data.</p><h3>They need to know the quality of the data&nbsp;</h3><p>The data consumer requires a certain level of data quality - how high this level is depends on how they plan to use the data. If the data is going to drive an AI model, especially for a critical decision (e.g. fraud detection), the quality bar is set much higher.</p><p>If the quality is too low, the data consumer should not waste her time trying to use the data to solve her problem.</p><h3>They need to know any SLOs / SLAs associated with the data</h3><p>If a data consumer wants to build a production application that uses this data on an ongoing basis, she needs to know whether she can rely on the data being delivered within a certain timeframe, for example. This is particularly important for real-time and near-real-time applications.&nbsp;</p><h2>To enable self-service, data needs ownership</h2><p>All the above information is metadata, i.e. data about the data.&nbsp;</p><p>This is information that hopefully lives in a data catalog, but someone needs to populate the data catalog.&nbsp;</p><p>Someone needs to own the data and be <em>responsible</em> not just for the entry in the data catalog, but also for <em>ensuring that the data continues to meet the standards set in the data catalog</em> (and that changes to the data are reflected in the catalog). &nbsp;</p><p>Of course, we want to automate the population of as much of the metadata in the catalog as is possible. But there is always some, critical metadata that a human being will need to manually populate &#8211; or example around the semantics of the data. And there needs to be at least a designated individual responsible for ensuring that the data is as described.</p><h2>Data teams are not in a position to own all the data</h2><h3>If they are the only owners of data, they become a bottleneck</h3><p>In many organizations, the responsibility for delivering data to the business (and managing assets supporting the use of the data, such as data catalogs, semantic layers and business intelligence tools) lies with a central data team that is charged with driving data usage across an organization.&nbsp;</p><p>The amount of data that is democratized around the business depends on the capacity of the central team.</p><h3>Data teams are often not in a position to own specific data sets - especially data sets that live upstream of the data warehouse</h3><p>The data value chain is long and opaque, making it difficult to understand who owns what. Often the data that is &#8220;democratized&#8221; in a business is the &#8220;gold&#8221; data in a medallion architecture.&nbsp;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21vpu2%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F43f8c9eb-07b5-45a0-978f-bb6b2d87ffaa_1600x770.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vpu2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43f8c9eb-07b5-45a0-978f-bb6b2d87ffaa_1600x770.png 424w, https://substackcdn.com/image/fetch/$s_!vpu2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43f8c9eb-07b5-45a0-978f-bb6b2d87ffaa_1600x770.png 848w, https://substackcdn.com/image/fetch/$s_!vpu2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43f8c9eb-07b5-45a0-978f-bb6b2d87ffaa_1600x770.png 1272w, https://substackcdn.com/image/fetch/$s_!vpu2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43f8c9eb-07b5-45a0-978f-bb6b2d87ffaa_1600x770.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21vpu2%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F43f8c9eb-07b5-45a0-978f-bb6b2d87ffaa_1600x770.png" width="1456" height="701" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/43f8c9eb-07b5-45a0-978f-bb6b2d87ffaa_1600x770.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:701,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vpu2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43f8c9eb-07b5-45a0-978f-bb6b2d87ffaa_1600x770.png 424w, https://substackcdn.com/image/fetch/$s_!vpu2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43f8c9eb-07b5-45a0-978f-bb6b2d87ffaa_1600x770.png 848w, https://substackcdn.com/image/fetch/$s_!vpu2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43f8c9eb-07b5-45a0-978f-bb6b2d87ffaa_1600x770.png 1272w, https://substackcdn.com/image/fetch/$s_!vpu2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43f8c9eb-07b5-45a0-978f-bb6b2d87ffaa_1600x770.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em><a href="iframe.php?url=https%3A%2F%2Fwww.databricks.com%2Fglossary%2Fmedallion-architecture">Illustration of medallion architecture by Databricks</a></em></p><ul><li><p>Raw data from different sources is landed as bronze data</p></li><li><p>This is cleaned up into silver tables, which are intermediary building blocks</p></li><li><p>Silver tables are then computed to deliver &#8220;gold&#8221; tables - business-level aggregates that are optimized for direct consumption by individuals in the different lines of business</p></li></ul><p>In this setup, it is common to have a central data team responsible for the flow of data from bronze to silver and to gold. By extension, this makes them responsible for the gold tables.</p><p>However, the management of the data upstream of the data warehouse might be completely opaque, with a variety of tooling used to bring in data from different source systems, and multiple people responsible for the data quality of each of those systems.</p><p>For example, anyone who&#8217;s had to work with Salesforce data in a data warehouse will know this can be incredibly challenging.&nbsp;</p><p>This is because it&#8217;s hard to get sellers and other end-users of the tool to adhere to high data quality standards when entering data.&nbsp;</p><p>Consequently, it becomes hard to successfully process and transform the Salesforce data into something useful from an analytics perspective in the data warehouse, because the structure of the data is not optimized for analytics or insight.&nbsp;</p><p>Try getting someone on the data team to compel the sales team enter data into salesforce in a specific way to make working with the data easier: it does not work.</p><h3>Data teams might not be the right people to own data sets downstream of the &#8220;gold&#8221; tables</h3><p>It gets more complicated. End users who want to self-serve the data are likely to explore the gold tables.&nbsp;</p><p>But then they might take one or two tables and combine them to produce a useful view on the data. Or they might not find what they want in the gold tables, and work back to the silver tables, because they want to drill into a level of granularity that isn&#8217;t available in the gold tables. They&#8217;ll then take that information and combine it with data in other tables.&nbsp;</p><p>A third user might find that combined view helpful, and then take those tables and combine them with some other tables. Pretty soon you have a spaghetti of data pipelines and tables, where it isn&#8217;t clear:</p><ul><li><p>Who created which table</p></li><li><p>Why they created each table</p></li><li><p>What the level of governance is on each table</p></li><li><p>What the upstream dependencies are on each table</p></li><li><p>What each table means</p></li><li><p>What each table is used</p></li><li><p>What SLAs (if any) are offered around this table</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21sSz5%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fec8e61ce-db65-46f8-833c-94bb22958a18_1600x900.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sSz5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec8e61ce-db65-46f8-833c-94bb22958a18_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!sSz5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec8e61ce-db65-46f8-833c-94bb22958a18_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!sSz5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec8e61ce-db65-46f8-833c-94bb22958a18_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!sSz5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec8e61ce-db65-46f8-833c-94bb22958a18_1600x900.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21sSz5%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fec8e61ce-db65-46f8-833c-94bb22958a18_1600x900.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ec8e61ce-db65-46f8-833c-94bb22958a18_1600x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!sSz5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec8e61ce-db65-46f8-833c-94bb22958a18_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!sSz5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec8e61ce-db65-46f8-833c-94bb22958a18_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!sSz5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec8e61ce-db65-46f8-833c-94bb22958a18_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!sSz5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec8e61ce-db65-46f8-833c-94bb22958a18_1600x900.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>Image taken from <a href="iframe.php?url=https%3A%2F%2Fwww.technologyreview.com%2F2021%2F12%2F06%2F1040716%2Fevolution-of-intelligent-data-pipelines%2F">https://www.technologyreview.com/2021/12/06/1040716/evolution-of-intelligent-data-pipelines/</a>&nbsp;</em></p><p>To be clear, it&#8217;s great that teams in the lines of business are building new data tables that are not only helping themselves but also supporting other folks in the business.It&#8217;s also great that they&#8217;re building them on top of well- governed gold tables.&nbsp;</p><p>But asking the data team to keep track of those tables and &#8220;own&#8221; them is not going to work.</p><h2>From data-as-an-asset to data-as-a-product</h2><p>One solution to the above challenges is to treat data-as-a-product:</p><ol><li><p>Data tables have specific owners. (You can call these people &#8220;data product owners / managers&#8221; - note that in many orgs today, there are &#8220;shadow&#8221; data product managers i.e. people with other job titles but who are held responsible for one or more data sets.)</p></li><li><p>Different people own different data sets. Ownership is de-centralized</p></li><li><p>Data sets (e.g. specific tables) have customers &#8211; people that use the data to do stuff, including doing analysis, powering data applications e.g. fraud detection engines, dashboards</p></li><li><p>Those customers have needs that evolve</p></li><li><p>The data product owners / managers are responsible for meeting the needs of the customers of the data tables. This means they have a way of keeping track of who is using what data. It also means anticipating those changing requirements</p></li><li><p>The data product owners / managers have teams (e.g. with data engineers, analytics engineers, data scientists) so that they can build what is required to meet the needs of their customers</p></li><li><p>The data product owners / managers are responsible for the upstream pipelines that deliver that data set - unless they&#8217;re consuming from a different data set with a different data owner. In this case, they are a customer of that data set, with a dependency on it&nbsp;</p></li><li><p>The data tables have a roadmap, worked out by the data product owner, to meet the needs of the customers&nbsp;</p></li><li><p>As part of her commitment to meeting the needs of customers, the data product owner is not just responsible for the delivery of one or more data tables, but all the additional things that a customer would need to be successful with the data. This might include:</p><ol><li><p>Metadata i.e. entries describing the data in the data catalog</p></li><li><p>APIs and UIs for accessing and working with the data</p></li></ol></li></ol><h2>Multiple people and teams can create and publish data sets</h2><p>Treating data-as-a-product is a valuable way to help organizations democratize data by ensuring that there are people with the right mindset and skills to facilitate the publishing and usage of different data sets by different stakeholders across the business.</p><p>However, if the data team is the only team capable of publishing and managing data tables for the rest of the business, then it will become a bottleneck for data democratization.</p><p>Instead, if many more teams in an organization can be empowered to publish and manage data sets for the rest of the business, then that bottleneck will be removed.&nbsp;</p><p>Instead of competing on &#8220;how many teams use data to drive decision making&#8221;, companies can start competing on &#8220;how many teams are creating data sets that are adding value to the rest of the business&#8221;.&nbsp;&nbsp;</p><p>Teams need to be incentivized and empowered to publish and manage data sets that are valuable to the rest of the business</p><p>This is a difficult problem to solve. But it can be solved.</p><p>Many teams need to create data sets for their own internal use. For example, a product engineering unit might create a data set that describes how users engage with their product so that they can use this data to improve the product.&nbsp;</p><p>What if they had an incentive to publish and maintain this data set as a product that can be used by other people in the organization?&nbsp;</p><p>Maybe it&#8217;s important for the customer success team to understand how different people are using the product and tailor their success plan accordingly? For the marketing team, the data could be useful when it comes to segmenting customers for specific campaigns.&nbsp;</p><p>The key is to provide different teams with technology that makes the process of publishing and then managing data sets as a product as easy as possible. This lowers the cost to individuals and teams to create and manage data sets, empowering more people and teams to do so, thereby supporting the whole organization to develop and use more data sets across the business.</p><h2>Data contracts support treating data-as-a-product</h2><p>Data contracts are powerful technologies that enable individual teams to create and manage data-as-a-product.&nbsp;</p><p>Data contracts are&nbsp; machine-and human-readable abstractions that describe what each data set is (I.e. contains all the relevant metadata that a data consumer would need to successfully self-serve on the data.)&nbsp;</p><p>Further, data contracts are enforceable, i.e they don&#8217;t just describe how the data should be, but can also be used to provide some level of assurance / guarantee that the data meets the specification given.&nbsp;</p><p>For any data set we want to create, we can define a data contract that formally specifies:</p><ul><li><p>Who owns the data</p></li><li><p>What the data means. In practice - how the data was created / manufactured</p></li><li><p>How the data is structured (i.e. the schema)</p></li><li><p>Where the data can be accessed. (From which API, via what type of protocol and access method(s))</p></li><li><p>SLAs for delivery and access</p></li><li><p>SLAs for data quality&nbsp;</p></li><li><p>Policy &#8211; what you may and may not do with the data</p></li></ul><p>Data contracts can support organizations to effectively treat data as a product and thereby democratize and manage data more effectively, by providing the basis of a huge amount of automation which should make it easier for different teams to publish and manage data as a product:</p><ul><li><p>Anyone who wants to create a new data set can start by defining a data contract</p></li><li><p>Technology (e.g. Snowplow) can then be used to automate as much as possible the process of creating (manufacturing) this data set, based on the definition&nbsp;</p></li><li><p>The contract can be used on an ongoing basis to ensure compliance with SLAs</p><ul><li><p>Technology (e.g. Snowplow) can alert on breaches of the SLAs, e.g. if the data does not match the schema or the latency of the data has breached the SLA)</p></li></ul></li><li><p>The contract can be versioned so that people understand the evolution of a data set over time</p></li><li><p>The contract can enable interoperability - for example a data contract can be used to facilitate the integration of a Snowplow data set with: a data catalog, a BI tool, a semantic layer, a data science toolkit, a user permissions and access management system. The contract can be used, for example. by access control systems to ensure that only the right people have access to the data set, or by other tools to automatically expire or anonymize data after a certain period of time</p></li></ul><p>I wrote more about data contracts in my Substack post, &#8216;<a href="iframe.php?url=https%3A%2F%2Fdatacreation.substack.com%2Fp%2Fwhat-is-and-what-isnt-a-data-contract">What is, and what isn&#8217;t, a data contract</a>&#8217;.</p><h1>So, what is a data product?</h1><p>Now that we understand what it means to treat data-as-a-product and why we should do so, let&#8217;s come back and think about what a &#8220;data product&#8221; <em>actually is</em>.</p><p>There is a real lack of consensus in the industry about what a data product is.&nbsp;&nbsp;</p><p>Some commentators associate the definition of data products with treating data-as-a-product, whilst others thinking more expansively about data applications (i.e. all the different types of applications you could build that utilize this data - more on this in my next post.)</p><p>My strong preference is that we define a &#8220;data product&#8221; as a data set that is treated as-a-product, for three reasons:</p><ol><li><p>Treating data-as-a-product is an incredibly important and powerful shift in the way we think about and manage data&nbsp;</p></li><li><p>We already have a perfectly good way to refer to data applications i.e. &#8220;data applications&#8221;</p></li><li><p>It is helpful to distinguish between &#8220;data applications&#8221; and the &#8220;data sets that are treated as products&#8221; i.e. &#8220;data products&#8221;</p></li></ol><p>So if a <em>data product </em>is a data set that is treated as a product, what are the things we would expect to make up that data product?&nbsp;</p><ul><li><p>The data itself&nbsp;</p></li><li><p>All the metadata required to enable people to self-serve on the data (discussed above)</p></li><li><p>Additional metadata, e.g. who owns the data set</p></li><li><p>A data contract. This would be a machine-and-human readable version of all the metadata.</p></li></ul><p>A data product then is a well documented data set with an explicit owner, who manages it as a product, and an associated data contract.&nbsp;</p><p>Rather than thinking about data as an asset, organizations should instead be looking to build data products, as an effective approach to enabling much wider, self-serve usage of data across the organization.</p><p>In the next post, I&#8217;ll take a more detailed look at data applications and explain how data products provide an excellent foundation for developing more effective data applications.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datacreation.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Data Creation!</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[What is, and what isn’t, a data contract]]></title><description><![CDATA[What are the core components of a data contract and why do they matter?]]></description><link>https://datacreation.substack.com/p/what-is-and-what-isnt-a-data-contract</link><guid isPermaLink="false">https://datacreation.substack.com/p/what-is-and-what-isnt-a-data-contract</guid><dc:creator><![CDATA[Yali Sassoon]]></dc:creator><pubDate>Wed, 22 Nov 2023 12:37:03 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21b8ob%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fa9da37b4-e157-4835-ba74-ce0c6252df56_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>It&#8217;s been just over a year since data contracts were the center of a <a href="iframe.php?url=https%3A%2F%2Fdatacreation.substack.com%2Fp%2Fwhy-data-contracts-are-obviously">lot of controversy</a>, and it&#8217;s great to see that debate is over: data contracts have been broadly accepted and are increasingly adopted by organizations looking to democratize data and improve data quality. During this time Andrew Jones has published his excellent book <em><a href="iframe.php?url=https%3A%2F%2Fdata-contracts.com%2F">Driving Data Quality with data contracts</a></em>, Chad Sanderson has launched <a href="iframe.php?url=https%3A%2F%2Fwww.gable.ai%2F">Gable.ai</a> and the concept of data contracts has been incorporated into a number of products including <a href="iframe.php?url=https%3A%2F%2Fwww.starburst.io%2Fplatform%2Ffeatures%2Fdata-products%2F">Starburst</a> and <a href="iframe.php?url=https%3A%2F%2Fwww.gable.ai%2F">dbt</a>. (Stay tuned for upcoming developments at Snowplow <a href="iframe.php?url=https%3A%2F%2Fsnowplow.io%2Fblog%2F">here</a>.)</p><p>But as data contracts become more widespread we&#8217;re seeing the concept being watered down as more and more people jump on the bandwagon. (This might have reached its nadir with <a href="iframe.php?url=https%3A%2F%2Fhightouch.com%2Fblog%2Fdata-contracts-hightouch-events">Hightouch&#8217;s launch of &#8220;data contracts&#8221;</a>.) So now feels like a good moment to review what are the critical components of a data contract and why.&nbsp;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21b8ob%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fa9da37b4-e157-4835-ba74-ce0c6252df56_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!b8ob!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9da37b4-e157-4835-ba74-ce0c6252df56_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!b8ob!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9da37b4-e157-4835-ba74-ce0c6252df56_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!b8ob!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9da37b4-e157-4835-ba74-ce0c6252df56_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!b8ob!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9da37b4-e157-4835-ba74-ce0c6252df56_1024x1024.png 1456w" sizes="100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21b8ob%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fa9da37b4-e157-4835-ba74-ce0c6252df56_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a9da37b4-e157-4835-ba74-ce0c6252df56_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!b8ob!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9da37b4-e157-4835-ba74-ce0c6252df56_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!b8ob!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9da37b4-e157-4835-ba74-ce0c6252df56_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!b8ob!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9da37b4-e157-4835-ba74-ce0c6252df56_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!b8ob!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9da37b4-e157-4835-ba74-ce0c6252df56_1024x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>Illustration by Midjourney Pro</em></p><h2>What are the critical components of a data contract?</h2><h3>Ownership</h3><p>In order to use data effectively in an organization, there must be clear ownership for each stage of the data value chain. This is&nbsp; difficult to achieve in practice, as many organizations overload their central data team with responsibility for the entire data value chain. Data contracts are designed to solve this bottleneck in data teams , by providing a clean way of assigning ownership for the different parts of the value chain to data producers and consumers.</p><p>Ownership is therefore one of the fundamental pieces of metadata that has to be captured in any data contract. A data contract should not just describe what standards the data will meet at different points in the data value chain, but who is responsible for ensuring that the data meets that standard.</p><p>It is not uncommon to not only identify the owner of the data set described by the data contract, but also the different ways to contact the owner and get support in the data contract itself.</p><h3>Schema</h3><p>&nbsp;To consume data on an ongoing basis, you need to know how that data is structured. (If you&#8217;re performing a one-off analysis, you can spend the time figuring out the structure. But if you want to keep a data application consuming a data feed on an ongoing basis, you need to know that the data that will arrive will conform to the same structure as the data you&#8217;ve consumed to date.) Schema is therefore a key element to any data contract.&nbsp;</p><p>This is the element of data contracts that everyone remembers, however lax their definition of a data contract is. At Snowplow, we&#8217;ve been supportng this element since 2014 when we first introduced <a href="iframe.php?url=https%3A%2F%2Fsnowplow.io%2Fblog%2Fintroducing-self-describing-jsons%2F">self-describing JSONs</a> and then <a href="iframe.php?url=https%3A%2F%2Fsnowplow.io%2Fblog%2Figlu-schema-repository-released%2F">Iglu, our schema registry</a>. However, as we&#8217;ve seen above with Ownership and we&#8217;ll see below, a data contract needs to contain a <em>lot</em> more than just a schema.&nbsp;</p><h3>Semantics</h3><p>To gain insights and draw conclusions from data, it is not sufficient to know the structure of the data (i.e. the <em>schema</em>), you also need to know what the data <em>means </em>(i.e. the <em>semantics</em>). In many organizations, there are typically a handful of people who are known as &#8220;experts&#8221; on particular data sets because they have lots of experience working with those data sets, they understand exactly how the data was created, and as a result are able to use those data sets to develop answers, insights and applications much faster than their colleagues. The difference between them and the rest of the company comes down to a deep understanding of the semantics of the data. Let&#8217;s bring this to life with a few examples:</p><ul><li><p>If you have a data point that describes how long someone ran for, you not only need to know that it is a numeric field type, but also that the units are in km rather than miles, for example. If the data changes, so that at a certain point it starts reporting in miles rather than km, or some of the data is in km and some is in miles, that is a problem that needs to be addressed as part of the data processing.</p></li><li><p>If you have Salesforce opportunity data, it&#8217;s not enough to know that a particular field represents &#8220;stage 4 in the opportunity funnel&#8221; - you need to know the definition that sales people use to categorize that opportunity in stage 4, and how that definition might vary between different members of the team and the team over time.&nbsp;</p></li><li><p>If you have a data point that describes the number of sessions that a user has engaged with your applications, you need to know how those sessions are defined, and any variation in that definition across different applications and platforms and over time.&nbsp;</p></li></ul><p>A data contract can&#8217;t just be a commitment that the structure of the data is not going to change within certain boundaries - a similar set of guarantees is required for the semantics of the data. This is a lot harder to monitor and enforce than a schema - I&#8217;m planning to dive into this in a dedicated post shortly, as it is an important topic that deserves its own treatment.&nbsp;</p><h3>Delivery and access SLAs</h3><p>If you are going to build a data application that consumes some data, you need to know where and how you&#8217;re going to access the data, and how readily the data will be made available. The data contract should include information like:</p><ul><li><p>Where the data can be accessed (i.e. physical location) e.g. a table in a warehouse or data lake, or a Kafka topic, for example.</p></li><li><p>How the data can be accessed e.g. via an API.</p></li><li><p>How quickly the data is made available (latency). This is going to be essential for powering real-time use cases (e.g. fraud detection, or dynamic pricing).</p></li></ul><h3>Data quality SLAs</h3><p>If you are going to build an application on top of a data set, you need to have a certain level of assurance around the quality of the data.</p><p>In an ideal world, a data quality SLA would provide assurance around:</p><ul><li><p>The accuracy of the data i.e. to what extent when the data represents that something has happened, that it has really happened, within a certain degree of accuracy. For example, if the data says some individual completed a run, then you have a certain degree of confidence that they really completed a run, and that the length of the run, the time taken and the time completed are accurate to a certain, specified level.</p></li><li><p>The completeness of the data i.e. if the data says that an individual did not complete a run (because there is no indication in the data that she did), then how confident can we be that she actually did not?&nbsp;&nbsp;</p></li></ul><p>In practice these are very hard if not impossible things to specify categorically: we generally don&#8217;t have a way to check our data against the real world it is supposed to describe - the data is our best representation of that world. So most data contract implementations instead specify tests that can be conducted on the data - either on individual lines of data, or on the aggregate data set, to build some lower level of confidence in its accuracy. For example:</p><ul><li><p>A test could be carried out on data describing a run completed by an individual to test that the speed is within certain bounds, and that there&#8217;s no data describing the individual performing a different activity (e.g. swimming or sleeping) at the same time</p></li><li><p>Tests could be conducted to ensure that the distribution of the data is as expected</p></li></ul><p>Whilst there are significant technical challenges to specifying better data quality SLAs, as with semantics I am optimistic that there is significant scope for technology innovation here. I look forward to sharing more in a future post.&nbsp;</p><h3>Policy</h3><p>It is very common in an organization to have multiple different data sets with different rules related to what can be done with the data, based on a combination of legislation around:</p><ul><li><p>The use of personal data and the basis on which this has been collected</p></li><li><p>The use of AI to make decisions, especially as this relates to the provision of services e.g. credit to individuals</p></li></ul><p>It is therefore essential that data contracts include metadata that</p><ul><li><p>Describes exactly what the associated data can and cannot be used for.</p></li><li><p>Identifies any fields that are personally identifiable.</p></li><li><p>Identifies any fields that describe decisions made by an AI that are subject to regulation, and if so what standards those decisions need to meet.&nbsp;</p></li><li><p>Data retention policies (how long this data can be stored for)</p></li><li><p>Data anonymization policies. (Do any fields need to be anonymized or pseudonomized?)</p></li></ul><h2>Enforcing schema is a necessary first step, but by itself not sufficient, to enable data contracts</h2><p>To really drive data quality and improved democratization of data in an organization, all of the above elements need to be incorporated in data contracts.</p><h2>Towards an open standard for data contracts</h2><p>There are a number of very promising initiatives to develop open standards for data contracts - the ones we are tracking are:</p><ul><li><p><a href="iframe.php?url=https%3A%2F%2Fdatacontract.com%2F">Datacontract.com</a> by Jochen Christ and Dr. Simon Harrer&nbsp;</p></li><li><p>The <a href="iframe.php?url=https%3A%2F%2Fgithub.com%2Fbitol-io%2Fopen-data-contract-standard">Open data contract Standard</a> (ODCS)</p></li><li><p><strong><a href="iframe.php?url=https%3A%2F%2Fgithub.com%2Fpaypal%2Fdata-contract-template">PayPal data contracts</a> by Jean-Georges Perrin</strong></p></li></ul><p>As an open standard for data contracts emerges, we are looking forward to supporting it at Snowplow.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datacreation.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption"></p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[How strictly should we govern different data sets?]]></title><description><![CDATA[Whilst most of us could do with more data governance, it&#8217;s not true that we should always be governing data more tightly]]></description><link>https://datacreation.substack.com/p/how-strictly-should-we-govern-different</link><guid isPermaLink="false">https://datacreation.substack.com/p/how-strictly-should-we-govern-different</guid><dc:creator><![CDATA[Yali Sassoon]]></dc:creator><pubDate>Fri, 02 Dec 2022 14:42:54 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21LAlD%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%252Fpublic%252Fimages%252F0a8a7ff9-e928-4100-b7a1-88400be72537_1600x949.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Data governance may be an old discipline, but it&#8217;s receiving a lot of attention recently. It was one of the two most talked about topics at a <a href="iframe.php?url=https%3A%2F%2Fcdao-eu.coriniumintelligence.com%2F">CDAO event</a> I recently attended in Amsterdam (the other was treating data-as-a-product) and at the core of a very interesting debate between Oliver Laslett and Oliver Hughes of <a href="iframe.php?url=https%3A%2F%2Fwww.lightdash.com%2F">Lightdash</a> and <a href="iframe.php?url=https%3A%2F%2Fcount.co%2F">Count</a> at an <a href="iframe.php?url=https%3A%2F%2Fwww.meetup.com%2Flondon-analytics-engineering-meetup%2Fevents%2F288797652%2F">Analytics Engineering London</a> event last month. It was a big part of <a href="iframe.php?url=https%3A%2F%2Fcoalesce.getdbt.com%2Fagenda%2Fkeynote-the-end-of-the-road-for-the-modern-data-stack-you-know">Tristan Handy&#8217;s Coalesce keynote</a>.&nbsp;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21LAlD%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%252Fpublic%252Fimages%252F0a8a7ff9-e928-4100-b7a1-88400be72537_1600x949.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LAlD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0a8a7ff9-e928-4100-b7a1-88400be72537_1600x949.png 424w, https://substackcdn.com/image/fetch/$s_!LAlD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0a8a7ff9-e928-4100-b7a1-88400be72537_1600x949.png 848w, https://substackcdn.com/image/fetch/$s_!LAlD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0a8a7ff9-e928-4100-b7a1-88400be72537_1600x949.png 1272w, https://substackcdn.com/image/fetch/$s_!LAlD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0a8a7ff9-e928-4100-b7a1-88400be72537_1600x949.png 1456w" sizes="100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21LAlD%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%252Fpublic%252Fimages%252F0a8a7ff9-e928-4100-b7a1-88400be72537_1600x949.png" width="1456" height="864" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/0a8a7ff9-e928-4100-b7a1-88400be72537_1600x949.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:864,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!LAlD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0a8a7ff9-e928-4100-b7a1-88400be72537_1600x949.png 424w, https://substackcdn.com/image/fetch/$s_!LAlD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0a8a7ff9-e928-4100-b7a1-88400be72537_1600x949.png 848w, https://substackcdn.com/image/fetch/$s_!LAlD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0a8a7ff9-e928-4100-b7a1-88400be72537_1600x949.png 1272w, https://substackcdn.com/image/fetch/$s_!LAlD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0a8a7ff9-e928-4100-b7a1-88400be72537_1600x949.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The recent debates about data contracts are really debates about data governance, because data contracts are tools for defining and enforcing data governance. (So the debate decomposes into two issues: should we be governing data more tightly, and if so, what is the best engineering approach to doing so?)&nbsp;</p><p>In this post I want to unpick:</p><ol><li><p>Why is data governance having a moment? Why are so many people arguing for more data governance, now?</p></li><li><p>What is the right level of governance to apply to different data sets? We often assume that more governance is better. This is not correct - I think there are very practical / pragmatic steps teams can take to figure out what the right level of governance is, for a specific data set, at a specific point in time, and evolve their approach as the way that the data is used in the organization changes.</p></li></ol><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datacreation.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Data Creation! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>What is data governance?</h2><p>There are lots of definitions of data governance that are accurate (on the &#8220;what&#8221; of data governance&#8221;) but not helpful if we want to understand <em>why</em> data governance is valuable:</p><ul><li><p>&#8220;A system of decision rights and accountabilities for information-related processes, executed according to agreed-upon models which describe who can take what actions with what information, and when, under what circumstances, using what methods.&#8221; (<strong><a href="iframe.php?url=https%3A%2F%2Fdatagovernance.com%2Fthe-data-governance-basics%2F">Data Governance Institute</a></strong>)</p></li><li><p>&#8220;The exercise of authority and control (planning, monitoring, and enforcement) over the management of data assets.&#8221; (<strong><a href="iframe.php?url=https%3A%2F%2Fwww.dama.org%2Fcontent%2Fbody-knowledge">DAMA International</a></strong>)</p></li><li><p>&#8220;The specification of decision rights and accountability framework to ensure the appropriate behavior in the valuation, creation, consumption, and control of data and analytics.&#8221; (<strong><a href="iframe.php?url=https%3A%2F%2Fwww.gartner.com%2Fen%2Finformation-technology%2Fglossary%2Fdata-governance">Gartner Glossary</a></strong>)</p></li></ul><p>I think it&#8217;s helpful to think about data governance in terms of control. The more strictly we control data through its lifecycle, the higher degree of assurance and confidence we have that it is used in a clearly specified set of ways. We can differentiate between how strictly we control:</p><ol><li><p>How data is created, processed and delivered to the different consumers (applications and people) that want to use the data.</p></li><li><p>How those data consumers interpret and use the data.&nbsp;</p></li></ol><p>If we tightly govern (1), we end up delivering data to  consumers with a high level of assurance around what it means and how accurate and complete it is. If we tightly govern (2), we have a high degree of assurance about how the data is interpreted and used.&nbsp;</p><h2>Why is data governance having a moment? Why are so many people arguing for more data governance, now?</h2><p>A number of factors drive the need to govern data more tightly:</p><ol><li><p>Regulation forces us to govern data more tightly, so we can represent to regulators that the way we use data is compliant.&nbsp;</p></li><li><p>Data socialization and democratization drive us to govern data more tightly. That&#8217;s because the more different data consumers are able to self-serve on the data, the higher the risk that someone somewhere misinterprets the data, or uses the data in a way that we are not comfortable with. (Maybe from an ethical standpoint, or a methodological standpoint.) A nice example is from accounting: when public companies produce accounts, the processes for calculating the line items in the financial statements need to be very tightly governed, to ensure that any analyst and shareholder interpreting the data can effectively do so without being misled, and to make it easy to compare line items between different companies safe in the knowledge they are comparing apples with apples. Financial audits are checks on that process.</p></li><li><p>Criticality of use cases drives a need for more tightly governed data. If we are using the data to make a life or death decision about how to treat a patient, or whether and where to launch a missile, we want much higher levels of assurance about both the data and the way the data is used to reach the decision than if we&#8217;re targeting an advert or plotting traffic trends over time.&nbsp;</p></li></ol><p>Given the above, it&#8217;s not surprising that data governance is an increasingly hot topic:</p><ol><li><p>Data and the use of data is being increasingly regulated.</p></li><li><p>Organizations are socializing more and more data. In the case of behavioral data, for example - a data set that was once produced by one team (the digital team) and consumed by the same team (the digital team) is now produced by multiple teams and consumed by multiple teams across the business, for a whole host of insights and data applications including personalization, customer segmentation, product analytics, lead scoring, churn reduction and more.&nbsp;</p></li><li><p>Organizations are increasingly using data not just to build reports and power analysis, but to actually drive business critical data applications (e.g. pricing optimization or fraud prevention, to give just two examples).</p></li></ol><p>Many organizations have made significant progress socializing more and more data sets, and using data to power more business critical applications. Previous efforts to do this have been gated by technical challenges around collecting the data in a single location, processing it at scale and velocity, and delivering it into tools that enable data consumers to explore and activate it. But as the toolset for working with data has come on leaps and bounds (with cloud data warehouses, new tools for building and running data pipelines, next generation AI and BI tooling etc.), the constraints have shifted: now it is the quality, consistency and level of assurance around the data itself that is holding organizations back. So an increasing amount of attention is shifting to governance to deal with this new constraint. So governance, observability, lineage and semantic layers have become hot topics.</p><h2>Data governance costs</h2><p>This is an obvious but important point: there is a real cost to implement data governance. It is cheap to slurp up data at scale and bung it in a data lake. It is harder to be precise about the data that we want to create: to tightly specify the engineering processes that will be used to generate, process and deliver that data, and document and rigorously enforce those processes. There&#8217;s a return on that investment though: it will be easier to socialize the data that is created, because there is a high level of assurance that the data means what it says, and it is clear how to correctly use the data to drive insight and value. This makes it easier for data consumers to build on, and easier for security teams to ensure compliance with regulation.</p><p>So for any data set there&#8217;s a trade off: what&#8217;s the right amount of resource to put into governance, to drive an appropriate level of return? Too much and we&#8217;re wasting time and effort governing data that might not being used to drive value. Too little and we expose ourselves to unnecessary regulatory risk, and make it too hard for data consumers to build value creating applications on top of the data.</p><h2>Data governance is not one size fits all: different data sets require different levels of governance</h2><p>The right level of governance is going to vary data-set by data-set, because we use different data sets in different ways. Data sets that are more highly regulated, more widely socialized and used to power more critical applications, need to be more tightly defined than data sets that do not. Within an organization there will be a spectrum of data sets, with very tightly governed data sets (e.g. master data, financial data) on one end of the spectrum, and completely ungoverned data sets on the other. (E.g. data related to experiments performed by individual teams, that is only consumed by those individual teams, for the duration of those experiments.) Most data sets will sit somewhere between these two extremes.</p><h2>Data governance is not one size fits all: the level of governance for a given data set could well change over the lifecycle of the data</h2><p>As the uses for a particular data set change, the level of governance that needs to be applied to that data set will need to evolve.&nbsp;</p><p>Consider the example of data that describes how a customers engage with a purchase funnel. This data might have originally been created by a product team that wants to optimize the purchase the funnel. The team is working rapidly to experiment with different approaches to purchase, and as they do, they&#8217;re running multiple experiments and evolving the way that they generate this data very rapidly. Given they are the only people using the data, that is fine. The data can be completely ungoverned. (Or more precisely, informally governed - if someone in the team isn&#8217;t sure how to interpret the data, she can ask her team mates, who have all the relevant knowledge.)</p><p>Now consider a second team who are working on personalizing the user experience. They want to use the data to understand whether a personalized experience makes it more likely that a user will progress down the purchase funnel. Further, they want to use the data to drive the personalization - if they see that a user has progressed down the purchase funnel with particular items in their basket, that&#8217;s valuable product affinity information they can use to build features to power their personalization models.</p><p>At this point the level of governance needs to increase. There are now two teams that are consuming the data. Further, the second team is using the data not just to drive human decision making, but to drive a production data application. They could rely on informal collaboration to ensure that their use of the data is correct as the first team evolves the data. Or the organization could formalize the specification for the data, and the enforcement of the specification, such that the second team (and a third if it comes along) can self-serve on the data based on the specification. The latter is going to make more sense as more people consume the data, and as more business critical applications are built on top of it. So a data set that started off as requiring little governance, ends up needing more and more as it is adopted by more and more data consumers in the organization.</p><p>Seen in this light, the &#8220;pain&#8221; of discovering that a data set is not sufficiently governed is <strong>a good thing</strong> - it suggests that the business is using the data in more sophisticated ways, building new use cases and data applications that (hopefully) deliver real value for the business.</p><h2>So how should we determine what is the &#8220;right&#8221; level of data governance for a specific data set?</h2><p>This is more art than science, but I&#8217;d suggest that &#8220;pain&#8221; is a good guide. If your organization is experiencing pain because data is not sufficiently governed - if there are things you&#8217;re trying to do at your organization that are being held back because of a lack of assurance around the data, then that&#8217;s a strong signal that it&#8217;s time to up the level of data governance. Conversely, if you&#8217;re not experiencing that pain, now&#8217;s not the time to invest in governance.&nbsp;&nbsp;</p><p>This recommendation is at odds with a lot of folk I see advocating for data teams to invest in data governance early. The thought here, I believe, is that by investing in data governance as early as possible, data teams can avoid the pain of discovering data quality is a blocker to effectively build a data application or use case down the line. This is misguided. It only makes sense to invest in data governance if it&#8217;s going to provide value - if it&#8217;s going to reduce regulatory risk, power data socialization or enable more powerful use cases. If not - it is wasted effort. It might be that the effort is not wasted if there is a need at a later stage to socialize the data or build more critical applications on top of it - but at this point we&#8217;re gambling: the number of data sets in a modern organization is enormous - it&#8217;s crazy to go governing all of them in the hope that there&#8217;s a payback down the line.&nbsp;</p><p>I&#8217;m old enough to remember when the conventional wisdom was to collect all the data you can so that when you decide you want to do something with with it, you already had it. That didn&#8217;t work because when you came to use the data, you inevitably discovered that it wasn&#8217;t fit for purpose and then all the expense of collecting it was for nothing. It is the same thing with data governance - you can spend lots of time and effort tightly governing data, but unless you know how that data&#8217;s going to be used, you run the risk that that effort (which is more costly than just collecting the data) will be in vain, and the data still wont be fit for purpose, or worse, there is no value-creating data application or use case to be built.</p><p>So if you&#8217;re not experiencing the pain of ungoverned data - don&#8217;t bother investing in data governance. There&#8217;s some other constraint holding back your data ambition (or something constraining your data ambition) and that is where your focus and effort should be. And when you start to experience that pain - take that as a positive. It means your organization is evolving their use of data, and now the investment in governance will pay off.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datacreation.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Data Creation! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Why Data Contracts are Obviously a Good Idea]]></title><description><![CDATA[And why there is so much resistance to this idea from the community around the Modern Data Stack]]></description><link>https://datacreation.substack.com/p/why-data-contracts-are-obviously</link><guid isPermaLink="false">https://datacreation.substack.com/p/why-data-contracts-are-obviously</guid><dc:creator><![CDATA[Yali Sassoon]]></dc:creator><pubDate>Fri, 14 Oct 2022 11:11:27 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fimages.unsplash.com%2Fphoto-1603796846097-bee99e4a601f%3Fcrop%3Dentropy%26amp%3Bcs%3Dtinysrgb%26amp%3Bfit%3Dmax%26amp%3Bfm%3Djpg%26amp%3Bixid%3DMnwzMDAzMzh8MHwxfHNlYXJjaHwxfHxjb250cmFjdHxlbnwwfHx8fDE2NjU3MzI1MDA%26amp%3Bixlib%3Drb-1.2.1%26amp%3Bq%3D80%26amp%3Bw%3D1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Data Contracts have been much discussed in the data community of late. Chad Sanderson posted on them <a href="iframe.php?url=https%3A%2F%2Fdataproducts.substack.com%2Fp%2Fthe-rise-of-data-contracts%3Fr%3D7hcrb%26amp%3Bs%3Dw%26amp%3Butm_campaign%3Dpost%26amp%3Butm_medium%3Dweb">in August</a>, after which debates on the merits of Data Contracts raged across social media, when Benn Stansil <a href="iframe.php?url=https%3A%2F%2Fbenn.substack.com%2Fp%2Fdata-contracts">waded in last month</a>, to concede that the problem they looked to solve was real but to argue that the approach was flawed.</p><p>Why all the fuss? In this post, I will argue that Data Contracts are:</p><ol><li><p>Very obviously a good idea (and one that should not be controversial)</p></li><li><p>The reason this sensible idea is contentious today in the context of the Modern Data Stack, is that practitioners are stuck in the &#8220;data is oil&#8221; paradigm i.e. assume that the data is extracted, rather than deliberately creating data</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fimages.unsplash.com%2Fphoto-1603796846097-bee99e4a601f%3Fcrop%3Dentropy%26amp%3Bcs%3Dtinysrgb%26amp%3Bfit%3Dmax%26amp%3Bfm%3Djpg%26amp%3Bixid%3DMnwzMDAzMzh8MHwxfHNlYXJjaHwxfHxjb250cmFjdHxlbnwwfHx8fDE2NjU3MzI1MDA%26amp%3Bixlib%3Drb-1.2.1%26amp%3Bq%3D80%26amp%3Bw%3D1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1603796846097-bee99e4a601f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHwxfHxjb250cmFjdHxlbnwwfHx8fDE2NjU3MzI1MDA&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1603796846097-bee99e4a601f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHwxfHxjb250cmFjdHxlbnwwfHx8fDE2NjU3MzI1MDA&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1603796846097-bee99e4a601f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHwxfHxjb250cmFjdHxlbnwwfHx8fDE2NjU3MzI1MDA&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1603796846097-bee99e4a601f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHwxfHxjb250cmFjdHxlbnwwfHx8fDE2NjU3MzI1MDA&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="iframe.php?url=https%3A%2F%2Fimages.unsplash.com%2Fphoto-1603796846097-bee99e4a601f%3Fcrop%3Dentropy%26amp%3Bcs%3Dtinysrgb%26amp%3Bfit%3Dmax%26amp%3Bfm%3Djpg%26amp%3Bixid%3DMnwzMDAzMzh8MHwxfHNlYXJjaHwxfHxjb250cmFjdHxlbnwwfHx8fDE2NjU3MzI1MDA%26amp%3Bixlib%3Drb-1.2.1%26amp%3Bq%3D80%26amp%3Bw%3D1080" width="1080" height="810" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1603796846097-bee99e4a601f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHwxfHxjb250cmFjdHxlbnwwfHx8fDE2NjU3MzI1MDA&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:810,&quot;width&quot;:1080,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;person in orange long sleeve shirt writing on white paper&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="person in orange long sleeve shirt writing on white paper" title="person in orange long sleeve shirt writing on white paper" srcset="https://images.unsplash.com/photo-1603796846097-bee99e4a601f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHwxfHxjb250cmFjdHxlbnwwfHx8fDE2NjU3MzI1MDA&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1603796846097-bee99e4a601f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHwxfHxjb250cmFjdHxlbnwwfHx8fDE2NjU3MzI1MDA&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1603796846097-bee99e4a601f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHwxfHxjb250cmFjdHxlbnwwfHx8fDE2NjU3MzI1MDA&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1603796846097-bee99e4a601f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHwxfHxjb250cmFjdHxlbnwwfHx8fDE2NjU3MzI1MDA&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="iframe.php?url=https%3A%2F%2Funsplash.com%2F%40romaindancre">Romain Dancre</a> on <a href="iframe.php?url=https%3A%2F%2Funsplash.com">Unsplash</a></figcaption></figure></div><p></p><h2>Why Data Contracts are obviously a good idea</h2><p>Let&#8217;s take it right back to the basics. In a modern organization there are many teams that consume data: to take just one (broad) example, data describing how your customer interacts with your digital products is going to be consumed, by:</p><ul><li><p>Your product team, who want to understand how those customers engage with different products and services, and how changes to those products and services drive changes to customer lifetime value</p></li><li><p>Your customer team, so they can better understand and serve those customers</p></li><li><p>Your marketing team, so they can more effectively target and market to customers based on their interests, product affinities and where they are in the purchase cycle</p></li><li><p>Your commercial team, who want to understand revenue and profit per customer and customer segment</p></li></ul><p>The data might not just be being used for analysis and understanding: it might be used directly to power production data applications that might, for example:</p><ul><li><p>Personalize the customer experience </p></li><li><p>Triage support tickets based on customer value (so that high value customers get a better, faster service)</p></li><li><p>Automatically generate audience segments (e.g. customers with a high propensity to churn) for targeting with particular offers, driving better, more relevant customer experience, and higher performance from those campaigns</p></li><li><p>Identify customers who look like they might be committing fraud or victims of fraud, and take remedial action accordingly</p></li></ul><p>So we have a situation where the data produced by one team (the product team), is consumed by multiple teams. To make this more complicated, we have multiple teams producing data, all of which is consumed by multiple teams:</p><ul><li><p>Each product team / unit / squad is likely to produce its own data describing how users engage with that particular product or service</p></li><li><p>Customer teams will generate their own data in their own CRM / loyalty / support systems</p></li><li><p>Marketing teams will generate their own data in their own marketing tool that describe which campaigns and content have been served to who, and any subsequent engagement data (e.g. open and click through rates)</p></li><li><p>Commercial teams are likely to generate their own data e.g. profitability models</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21yUrV%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%252Fpublic%252Fimages%252F1682ab9f-42c4-4076-abf6-0d9b3db2df7e_1368x646.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yUrV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F1682ab9f-42c4-4076-abf6-0d9b3db2df7e_1368x646.png 424w, https://substackcdn.com/image/fetch/$s_!yUrV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F1682ab9f-42c4-4076-abf6-0d9b3db2df7e_1368x646.png 848w, https://substackcdn.com/image/fetch/$s_!yUrV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F1682ab9f-42c4-4076-abf6-0d9b3db2df7e_1368x646.png 1272w, https://substackcdn.com/image/fetch/$s_!yUrV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F1682ab9f-42c4-4076-abf6-0d9b3db2df7e_1368x646.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21yUrV%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%252Fpublic%252Fimages%252F1682ab9f-42c4-4076-abf6-0d9b3db2df7e_1368x646.png" width="1368" height="646" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/1682ab9f-42c4-4076-abf6-0d9b3db2df7e_1368x646.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:646,&quot;width&quot;:1368,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:326344,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yUrV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F1682ab9f-42c4-4076-abf6-0d9b3db2df7e_1368x646.png 424w, https://substackcdn.com/image/fetch/$s_!yUrV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F1682ab9f-42c4-4076-abf6-0d9b3db2df7e_1368x646.png 848w, https://substackcdn.com/image/fetch/$s_!yUrV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F1682ab9f-42c4-4076-abf6-0d9b3db2df7e_1368x646.png 1272w, https://substackcdn.com/image/fetch/$s_!yUrV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F1682ab9f-42c4-4076-abf6-0d9b3db2df7e_1368x646.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The situation is a mess and the mess drives fragility. Any change to the data produced by an individual team has the potential to break multiple downstream reports and production applications owned by other teams. Worse, it is often completely opaque to a data producer which teams and applications are consuming the data they produce, and what assumptions and logic they have assumed is baked into the data. This means that even if they wanted to check with data consumers prior to making a change to the data produced they would not even know who to ask, nor have anyway of knowing what sorts of changes to the data are safe to make.</p><p>Data Contracts have been proposed as a straightforward solution to this challenge. Data producers commit to producing data that adheres to a specific contract, that typically defines at minimum, what schema the data conforms to, but can (and should) include other valuable information for teams that want to consume the data like:</p><ul><li><p>The semantics of the data i.e. what the rules are for setting properties to certain values. (We record transaction values in US dollars, we record a transaction when the payment gateway returns a successful response&#8230;)</p></li><li><p>SLAs on the data (around accuracy, completeness, latency)</p></li><li><p>Policy (what the data can and cannot be used for - this is particularly important for personal and health data)</p></li><li><p>Information on who owns the data and how to go about requesting changes to it. (Data Contracts can be versioned so allow not just for the data to evolve over time with the needs of all teams, but provide a useful tool for enabling the controlled evolution of data in the business.)</p></li></ul><p>Data consumers can review the contract, and then architect downstream applications that only make safe assumptions about the data i.e. assumptions that are explicitly captured in the contract. Then, multiple teams can build downstream data applications safe in the knowledge that the Data producing team will not make any changes to the data without first publishing a new version of the Data Contract. (Which should always be ahead of actually making any changes to the data produced.) Each data set (or &#8220;data product&#8221;) only needs a single Data Contract, and this contract can be used by all consumers of that data set.</p><h2>So what is so objectionable about a data contract?</h2><p>The most articulate argument against data contracts was made by Benn Stansil:</p><blockquote><p>The way data contracts try to achieve this though&#8212;through a negotiated agreement&#8212;seems wrong on all fronts: It&#8217;s impractical to achieve, impossible to maintain, and&#8212;most damning of all&#8212;an undesirable outcome to chase&#8230;</p></blockquote><p>It&#8217;s impractical to achieve because</p><blockquote><p>A lot of data &#8220;providers&#8221; (e.g., software engineers who are maintaining an application database, and sales ops managers who configure Salesforce) can&#8217;t guarantee them anyway. If you change some bit of logic in Salesforce&#8212;if, for example, a team stops recording pricing information on the <a href="iframe.php?url=https%3A%2F%2Fdeveloper.salesforce.com%2Fdocs%2Fatlas.en-us.238.0.object_reference.meta%2Fobject_reference%2Fsforce_api_objects_product2.htm">product object</a> and starts recording it on the <a href="iframe.php?url=https%3A%2F%2Fdeveloper.salesforce.com%2Fdocs%2Fatlas.en-us.234.0.object_reference.meta%2Fobject_reference%2Fsforce_api_objects_productattribute.htm">product attribute object</a>&#8212;it&#8217;s hard to know how that change will be reflected in the underlying data model. Salesforce&#8217;s UI exists for exactly that reason&#8212;so that we don&#8217;t have to think about our entire CRM as a bunch of tables and an <a href="iframe.php?url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FEntity%25E2%2580%2593relationship_model">entity-relationship diagram</a>. If administrators sign a contract to maintain a particular data structure, <a href="iframe.php?url=https%3A%2F%2Ftwitter.com%2Fmuhammadali%2Fstatus%2F818502617043177476">how can we expect them to hit what they can&#8217;t see?</a></p></blockquote><p>It&#8217;s an undesirable outcome to chase because</p><blockquote><p>We don&#8217;t want data providers to be worried about these contracts in the first place. Engineers, marketers, sales operations managers&#8212;all of these people have more important jobs to do than providing consistent data to a data team. They need to build great products, find new customers, and help sales teams sell that product to those customers. The data structures they create are in service of these goals. If those structures need to change to make a product better or to smooth over a kink in the sales cycle, they shouldn&#8217;t have to consult an analytics engineer first. In other words, data teams can&#8217;t expect to stop changes to products or Salesforce; <a href="iframe.php?url=https%3A%2F%2Fyoutu.be%2FlXBXsJ3BR1A%3Ft%3D50">we can only hope to contain them</a>.</p></blockquote><p>The key thing to realize is Benn&#8217;s exemplar for a data source is an export of Salesforce data into the data warehouse. He is 100% right that it is practically impossible to impose a data contract on data coming out of Salesforce. But he&#8217;s wrong that this means that data contracts are a bad idea. It is <strong>a</strong> <strong>bad idea to build production data applications (or important reports) on top of data extracted from Salesforce</strong>. Instead, you should be <a href="iframe.php?url=https%3A%2F%2Fsnowplow.io%2Fwhat-is-data-creation%2F%23%3A%7E%3Atext%3DData%2520Creation%2520is%2520the%2520process%2Cdata%2520emitted%2520from%2520existing%2520systems.">deliberately Creating Data</a> to power your data applications, data that adheres to clearly defined and versioned data contracts.</p><h2>What do you mean you should not build data applications on top of data extracted from Salesforce?</h2><p>Fivetran, the vendor most commonly associated with ingesting data into the modern data stack, differentiate the following &#8220;sources&#8221; of data:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21rzb3%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%252Fpublic%252Fimages%252F03bd7f82-d295-4f08-aae8-cf8ad8edc77c_1304x842.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rzb3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F03bd7f82-d295-4f08-aae8-cf8ad8edc77c_1304x842.png 424w, https://substackcdn.com/image/fetch/$s_!rzb3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F03bd7f82-d295-4f08-aae8-cf8ad8edc77c_1304x842.png 848w, https://substackcdn.com/image/fetch/$s_!rzb3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F03bd7f82-d295-4f08-aae8-cf8ad8edc77c_1304x842.png 1272w, https://substackcdn.com/image/fetch/$s_!rzb3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F03bd7f82-d295-4f08-aae8-cf8ad8edc77c_1304x842.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21rzb3%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%252Fpublic%252Fimages%252F03bd7f82-d295-4f08-aae8-cf8ad8edc77c_1304x842.png" width="1304" height="842" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/03bd7f82-d295-4f08-aae8-cf8ad8edc77c_1304x842.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:842,&quot;width&quot;:1304,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!rzb3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F03bd7f82-d295-4f08-aae8-cf8ad8edc77c_1304x842.png 424w, https://substackcdn.com/image/fetch/$s_!rzb3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F03bd7f82-d295-4f08-aae8-cf8ad8edc77c_1304x842.png 848w, https://substackcdn.com/image/fetch/$s_!rzb3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F03bd7f82-d295-4f08-aae8-cf8ad8edc77c_1304x842.png 1272w, https://substackcdn.com/image/fetch/$s_!rzb3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F03bd7f82-d295-4f08-aae8-cf8ad8edc77c_1304x842.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The Fivetran world view (shared by many in the Modern Data Stack) is that for any organization there is a finite set of sources (&#8220;data deposits&#8221; like &#8220;oil deposits&#8221;) where data can be extracted (like oil can be mined) and then loaded into the data warehouse (where later it will be refined into something valuable you can put in your car or power your ML application). The different icons on the left represent five different types of data source. Each type requires a different engineering approach, from Fivetran, to extracting and loading into the data warehouse. So this diagram is very useful if you&#8217;re a Fivetran engineer.</p><p>From the perspective of a particular organization or a particular team in the organization looking to get hold of data to power a data application, however, distinguishing potential sources of data in this way is not especially helpful. Taking a step back, data that an organization has resides in the applications it runs: typically in a database that is sat behind the application. If it is an application that the business is running itself, then it is likely to be possible to access the database behind a specific application directly, and replicate the data from there. (Using Fivetran potentially, or a Change Data Capture process, more generally.)&nbsp;</p><p>If instead the application is provided as SaaS, like Salesforce, then it will not be possible to access the database directly: instead the data in the database might be exposed via an API, that can be regularly polled for data. This fits the <em>data as oil</em> metaphor, with a regular process setup to ping the API, extract the data, and then copy it into a set of corresponding tables in the data warehouse. It is the same data, conceptually, whether it is accessed via a RESTful API or via SQL (or any other type of API). The difference is in the access pattern, that reflects who is responsible for running the application.</p><p>The trouble with both of the above technical approaches (extracting data directly from databases or via published APIs) is that the data made available is a side-effect: it has not been deliberately created for a specific data application or team, it is <em>data exhaust</em>. It would be very unsurprising if over time the way data was structured in the database would evolve quite dramatically to drive performance improvements (e.g. as the application scaled over a larger user-base) or as the application evolves functionally. Ben Stansill is right that it is undesirable to ask a the application developers to consider not just the performance of their own application when designing those database tables, but also the performance and integrity of any downstream data consumers that consume the replicated version of the database. The APIs that sit ontop of most SaaS solutions are typically either built to reflect the structure of the database in those underlying databases, or to power specific data integration use cases. (Rather than generalized downstream data intensive applications.) So we should not be surprised that the developers of those APIs do not design them around the needs of downstream data consumers. This is one reason why so much work is required to wrangle extracted data into something useful.&nbsp;</p><p>There is one type of data though that <strong>can</strong> provide a solid foundation for Creating Data optimized for downstream data consumers, data that can be governed by a contract. That data type is the third one listed in the Fivetran diagram, it is the humble &#8220;event&#8221;.</p><h2>With &#8220;events&#8221; (i.e. Data Creation), it is straightforward to adopt data contracts</h2><p>When we think of applications emitting &#8220;events&#8221; there are typically two types of application we think about:</p><ol><li><p>Web and mobile applications that typically emit events for analytics purposes. (By integrating SDKs from vendors like Google Analytics, Adobe, Snowplow, Segment or Mixpanel amongst others). These events are emitted as HTTP requests.</p></li><li><p>Server-side systems that follow event-stream architectures. These are typically microservices that perform very specific functions, and communicate what they are doing to other microservices in the stack by emitting events into streams or topics rather than HTTP endpoints (e.g. in Kafka) and learn the current state of different entities that they care about by consuming the events emitted by other microservices in their ecosystem</p></li></ol><p>In both cases, the application is deliberately creating data for use by other data consuming teams that are fundamentally decoupled from the teams responsible for the applications themselves: in the case of web and mobile product teams for the analytics team(s), and in the case of microservice applications for the other microservice application teams.&nbsp;</p><p>It is pretty common in both cases to adopt data contracts to support this effective exchange: Snowplow has supported data contracts <a href="iframe.php?url=https%3A%2F%2Fsnowplow.io%2Fblog%2Fintroducing-self-describing-jsons%2F">since</a> <a href="iframe.php?url=https%3A%2F%2Fsnowplow.io%2Fblog%2F2014%2F05%2F13%2Fintroducing-schemaver-for-semantic-versioning-of-schemas%2F">2014</a> , with Segment adopting them with the introduction of <a href="iframe.php?url=https%3A%2F%2Fwww.google.com%2Fsearch%3Fq%3Dsegment%2Bannounces%2Bprotocols%26amp%3Brlz%3D1C5CHFA_enGB991GB991%26amp%3Boq%3Dsegment%2Bannounces%2Bprotocols%26amp%3Baqs%3Dchrome..69i57j69i59j69i60l3.2999j0j7%26amp%3Bsourceid%3Dchrome%26amp%3Bie%3DUTF-8">Protocols in 2018</a> and Adobe with the release of the <a href="iframe.php?url=https%3A%2F%2Fexperienceleague.adobe.com%2Fdocs%2Fexperience-platform%2Fxdm%2Fapi%2Foverview.html%3Flang%3Den">Adobe Experience Platform</a>. In the case of microservices infrastructure the Confluent team published the first version of the <a href="iframe.php?url=https%3A%2F%2Fgithub.com%2Fconfluentinc%2Fschema-registry">Confluent Schema Registry</a> back in 2014. There is scope to extend all these technologies to power more comprehensive data contracts: ones that go well beyond simply capturing the schema and some simple semantics. But the principle of a data contract has been there a long time because it is the only way to ensure data integrity, in the case of both digital analtyics applications and microservices architectures.</p><p>This model of publishing data as &#8220;events&#8221; for external consumers is really powerful:</p><ul><li><p>It means applications deliberately compose and emit data: the creation of data it not a side effect. As a result, it is <strong>really obvious</strong> to any developer working on an application that if she makes any changes to the code that emits that event that will have an impact on downstream consumers, because the only purpose of the code to emit the data is to serve downstream data consumers.</p></li><li><p>The emission is light-weight. Whilst it is not desirable to ask an application developer to optimize the design of a database to serve a downstream data application, it is entirely reasonable to ask her to write some code to deliberately emit data that meets a specific specification (the data contract) - especially when supported by SDKs that abstract away technical complexity, so the developer can focus on emitting the right data at the right time. (As specified in the data contract.).&nbsp;</p></li><li><p>There is already a well developed ecosystem of tooling for ensuring that the data emitted from applications as &#8220;events&#8221; is compliant with <strong>data contracts</strong>. The data contract can be used to derive the SDKs that are used to create the data, so that there is a causal link between the contract specification and the data emitted. Further, checks can be performed on the data as part of CICD and in production, to verify that the contract is not violated. (For example organizations running Snowplow use Snowplow Micro, a processing pipeline that is small enough to live on a container that is spun up as part of CICD, so that automated tests can be written to ensure that the right data is emitted at the right time with the right schema and semantics.) Today, it is easy for an application to integrate an SDK to emit events, debug the data emitted from a development environment, write automated tests to catch if the data violates the contract prior to the branch being merged to master and monitor the data in real-time to ensure it doesn&#8217;t deviate from the contract and alert on violations.&nbsp;</p></li></ul><p>When we are emitting events (i.e. Creating Data) it is easy to adopt data contracts to ensure data integrity. But when we are relying on extract and load processes to poll 3rd party APIs it is hard. (You can&#8217;t control Salesforce, you can only hope to contain it.) So given data contracts are so important, can we adopt the &#8220;event&#8221; model as the <strong>primary approach</strong> data used in production data applications?</p><h2>We can adopt &#8220;the event&#8221; (i.e. Data Creation) as the primary approach for delivering data to production data applications</h2><p>For any application that we have developed ourselves, we have the possibility to integrate SDKs and deliberately create data that adheres to data contracts. This is always preferable extracting the data from the underlying database (e.g. using change data capture) or from data archived from the data (sat on a file system), because the data is not a side effect, it is deliberately created and the process of creation can be governed by a data contract.</p><p>But what if we want to power our data application with data that resides in a SaaS application? Here I would make two observations and one prediction:</p><ol><li><p>When you start developing a data application by considering what data you want (ideally), rather than what data you have (in different production systems), it is surprising how much of the data needs to deliberately created in your own applications. My favorite example is if you are building any sort of application that predicts the propensity for an individual to do something (like churn, upgrade, or buy a particular product) the time that an individual spends performing different related actions is nearly always the most predictive data: this is data that needs to be created in the applications in which the users perform those actions, and is never found in a CRM, that typically only stores much higher level (less predictive) facts about those same customers.</p></li><li><p>More and more SaaS providers are deliberately emitting data in real-time in an &#8220;event-like&#8221; way: it is very common for them to support exposing data as a stream of real-time webhooks, and even give users the ability to specify the structure of the payloads emitted and the rules for when those payloads are emitted. (Zendesk is a good example.) Here, Salesforce is the notable exception.</p></li><li><p>As more organizations start developing and running their own data-intensive applications in production, there is going to be real competitive pressure on SaaS vendors to provide their users with better tooling to create data from within them, the way that they can from their own applications. This has already started with webhooks, but needs to go further. (In terms of SaaS vendors publishing data contracts their webhooks conform to and providing functionality for users to customize those data contracts.) As every adherent to the Modern Data Stack knows, Martin Casado believes applications need to be reimagined so that they can be powered by intelligence <a href="iframe.php?url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DtPSvCq5846w">built of an organization&#8217;s own data warehouse</a>. I would argue that it is just as important that those reimagined applications enable the effective creation of data from the application directly into the data warehouse (including being governed by data contracts), as it is that they enable the flow of intelligence, built on that data, out of the data warehouse into the application.</p></li></ol><h2>Can we stop thinking of data sources based on the technical approach to moving the data (APIs, databases, events and files) and start distinguishing what matters (Data Creation vs Data Exhaust)?</h2><p>I hope so but I fear not. But if you&#8217;ve made it this far I hope it&#8217;s clear why I believe this is the real distinction that matters to people who are building data applications. When data is created we can use data contracts to govern the process of creating and testing the data: and we then have a solid foundation for building downstream data processing applications. When we rely on data exhaust, we cannot.</p><h2>Postscript: but we can enforce data contracts in CDC pipelines! (And Adrian and Chad have documented how do to this)</h2><p>The day before I was due to hit publish on this post, Adrian Kreuziger authored <a href="iframe.php?url=https%3A%2F%2Fdataproducts.substack.com%2Fp%2Fan-engineers-guide-to-data-contracts">a post</a> on Chad Sanderson&#8217;s substack explaining how, from an engineering perspective, we can implement data contracts when relying on CDC for data ingest. This would counter my argument above, that data contracts only make sense when you&#8217;re relying on &#8220;event&#8221; data i.e. deliberately creating data, and undermine my argument that we should deliberately create data rather than rely on data exhaust.</p><p>In the setup Adrian describes, CDC is not being done directly on the tables in the database: instead an abstraction layer is introduced between the database and the place where the CDC events are generated. This provides a place where tests can be written that validate that the CDC events generated conform to the schema expected. Adrian describes how these tests can be run as part of CICD, failing a build where where a developer working on the application has accidentally made a change to the database that has caused a contract violation.</p><p>This achieves something really useful: it provides a way to catch releases that will break downstream data applications, and it provides those alerts to the data producing team, who are the right people to fix it. (If instead these tests were run in the data warehouse by an analytics engineer, the only possibility would be to add additional processing steps to take the data as ingested and try and wrangle it into the format as expected - which might work for schema changes but likely wont for semantic changes.)</p><p>But it is not nearly as good as the case where the data is deliberately created as an event emitted directly from the application code, because</p><ol><li><p>It is likely to be a complete surprise to the developer. Until the build fails chances are that data contracts were not top of mind. (Or even under consideration) Were the data emitted as an event this would be explicitly visible in the code (it&#8217;s not a side effect) - so it is much less likely that the test would fail in the first place.&nbsp;</p></li><li><p>There is additional work required for the application developer because the process of ingesting the data is a side effect that would not be required if the process for creating the data was explicit. Specifically, the application developer is not free to make changes to the application that change the structure of the underlying database as this will break the data contract. This will inevitably have some impact on development velocity.&nbsp;</p></li></ol><p>So maybe rather than a binary distinction between Data Creation and data exhaust, we should be thinking in terms of a more nuanced hierarchy, with:</p><ul><li><p>Data Creation (data as &#8220;events&#8221;) at the top, and data contracts driving both the creation of the data and the validation of the data</p></li><li><p>Data extraction with data contracts enforced at source, next, so issues can at least be spotted and addressed at source, even if this generates more additional work for the application developers than data creation</p></li><li><p>Data extraction with data contracts enforced in the warehouse, next, as better than complete chaos, but with the very significant challenge that the people who spot the issue (typically analytics engineers) have no context to understand the changes made, and are stuck with a limited toolset (SQL, dbt) to try and fix them after the fact</p></li><li><p>Data extraction with no data contracts as a completely indefensible approach to application building</p></li></ul>]]></content:encoded></item><item><title><![CDATA[Organizations need to deliberately create data]]></title><description><![CDATA[Why we need to stop thinking of data as oil]]></description><link>https://datacreation.substack.com/p/organizations-need-to-deliberately</link><guid isPermaLink="false">https://datacreation.substack.com/p/organizations-need-to-deliberately</guid><dc:creator><![CDATA[Yali Sassoon]]></dc:creator><pubDate>Mon, 05 Sep 2022 09:13:37 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fimages.unsplash.com%2Fphoto-1614568110304-b43ea3952e0d%3Fcrop%3Dentropy%26amp%3Bcs%3Dtinysrgb%26amp%3Bfit%3Dmax%26amp%3Bfm%3Djpg%26amp%3Bixid%3DMnwzMDAzMzh8MHwxfHNlYXJjaHw1fHxvaWwlMjByaWd8ZW58MHx8fHwxNjYxOTI1NzI5%26amp%3Bixlib%3Drb-1.2.1%26amp%3Bq%3D80%26amp%3Bw%3D1080" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fimages.unsplash.com%2Fphoto-1614568110304-b43ea3952e0d%3Fcrop%3Dentropy%26amp%3Bcs%3Dtinysrgb%26amp%3Bfit%3Dmax%26amp%3Bfm%3Djpg%26amp%3Bixid%3DMnwzMDAzMzh8MHwxfHNlYXJjaHw1fHxvaWwlMjByaWd8ZW58MHx8fHwxNjYxOTI1NzI5%26amp%3Bixlib%3Drb-1.2.1%26amp%3Bq%3D80%26amp%3Bw%3D1080" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1614568110304-b43ea3952e0d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHw1fHxvaWwlMjByaWd8ZW58MHx8fHwxNjYxOTI1NzI5&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1614568110304-b43ea3952e0d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHw1fHxvaWwlMjByaWd8ZW58MHx8fHwxNjYxOTI1NzI5&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1614568110304-b43ea3952e0d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHw1fHxvaWwlMjByaWd8ZW58MHx8fHwxNjYxOTI1NzI5&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1614568110304-b43ea3952e0d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHw1fHxvaWwlMjByaWd8ZW58MHx8fHwxNjYxOTI1NzI5&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 1456w" sizes="100vw"><img src="iframe.php?url=https%3A%2F%2Fimages.unsplash.com%2Fphoto-1614568110304-b43ea3952e0d%3Fcrop%3Dentropy%26amp%3Bcs%3Dtinysrgb%26amp%3Bfit%3Dmax%26amp%3Bfm%3Djpg%26amp%3Bixid%3DMnwzMDAzMzh8MHwxfHNlYXJjaHw1fHxvaWwlMjByaWd8ZW58MHx8fHwxNjYxOTI1NzI5%26amp%3Bixlib%3Drb-1.2.1%26amp%3Bq%3D80%26amp%3Bw%3D1080" width="1080" height="810" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1614568110304-b43ea3952e0d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHw1fHxvaWwlMjByaWd8ZW58MHx8fHwxNjYxOTI1NzI5&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:810,&quot;width&quot;:1080,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;black tower under gray sky&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="black tower under gray sky" title="black tower under gray sky" srcset="https://images.unsplash.com/photo-1614568110304-b43ea3952e0d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHw1fHxvaWwlMjByaWd8ZW58MHx8fHwxNjYxOTI1NzI5&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 424w, https://images.unsplash.com/photo-1614568110304-b43ea3952e0d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHw1fHxvaWwlMjByaWd8ZW58MHx8fHwxNjYxOTI1NzI5&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 848w, https://images.unsplash.com/photo-1614568110304-b43ea3952e0d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHw1fHxvaWwlMjByaWd8ZW58MHx8fHwxNjYxOTI1NzI5&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 1272w, https://images.unsplash.com/photo-1614568110304-b43ea3952e0d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwzMDAzMzh8MHwxfHNlYXJjaHw1fHxvaWwlMjByaWd8ZW58MHx8fHwxNjYxOTI1NzI5&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=1080 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="iframe.php?url=https%3A%2F%2Funsplash.com%2F%40galen_crout">Galen Crout</a> on <a href="iframe.php?url=https%3A%2F%2Funsplash.com">Unsplash</a></figcaption></figure></div><p>The metaphor of oil for data is incredibly pervasive. The metaphor infuses a lot of our core data vocabulary - you see it in common terms like &#8220;data extraction&#8221;, &#8220;data mining&#8221; and &#8220;data pipelines&#8221;.</p><p>The impact of the metaphor becomes particularly clear when we look at how data scientists work. In most organizations today, when a data scientist is charged with developing a new model to predict something, the first thing she will do is list a number of features she thinks are likely to be predictive. The second thing she will do is to look at whether there are data sources in the organization that she can extract and refine suitable data from, to engineer those features. In many cases she will conclude that many of the desired features she would like cannot be engineered because the required source data is not available. Her world is bounded by the data available at their organization - by the &#8220;wells&#8221; of data available to be extracted.</p><p>The impact of the metaphor is also clear if we look at any coverage of the Modern Data Stack. On the left of any diagram of the Modern Data Stack are the &#8220;data sources&#8221; - listed in much the same way oil firms create geological surveys of the world to identify the different areas with oil, suitable for extraction. &#8220;This is the (bounded) universe of places you can find data to replicate into your cloud data warehouse!&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21N_Qn%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%252Fpublic%252Fimages%252F58041d74-eb24-44d5-8233-27342e6d26d6_2000x1236.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N_Qn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F58041d74-eb24-44d5-8233-27342e6d26d6_2000x1236.webp 424w, https://substackcdn.com/image/fetch/$s_!N_Qn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F58041d74-eb24-44d5-8233-27342e6d26d6_2000x1236.webp 848w, https://substackcdn.com/image/fetch/$s_!N_Qn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F58041d74-eb24-44d5-8233-27342e6d26d6_2000x1236.webp 1272w, https://substackcdn.com/image/fetch/$s_!N_Qn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F58041d74-eb24-44d5-8233-27342e6d26d6_2000x1236.webp 1456w" sizes="100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21N_Qn%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%252Fpublic%252Fimages%252F58041d74-eb24-44d5-8233-27342e6d26d6_2000x1236.webp" width="1456" height="900" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/58041d74-eb24-44d5-8233-27342e6d26d6_2000x1236.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:900,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:53264,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!N_Qn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F58041d74-eb24-44d5-8233-27342e6d26d6_2000x1236.webp 424w, https://substackcdn.com/image/fetch/$s_!N_Qn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F58041d74-eb24-44d5-8233-27342e6d26d6_2000x1236.webp 848w, https://substackcdn.com/image/fetch/$s_!N_Qn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F58041d74-eb24-44d5-8233-27342e6d26d6_2000x1236.webp 1272w, https://substackcdn.com/image/fetch/$s_!N_Qn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F58041d74-eb24-44d5-8233-27342e6d26d6_2000x1236.webp 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>Diagram taken from a16z blog post Emerging Architectures for Modern Data Infrastructure, <a href="iframe.php?url=https%3A%2F%2Ffuture.com%2Femerging-architectures-modern-data-infrastructure%2F">https://future.com/emerging-architectures-modern-data-infrastructure/</a></em></p><p>In both cases, the assumption is that the data scientists developing the algorithms and models, or the users of the modern data stack being assembled, have </p><ol><li><p>a limited number of data sources that they can tap, and </p></li><li><p>investment will need to be made in extracting, replicating and transforming the data to get it into a format from which it is possible to drive value from. </p></li><li><p>By implication, there is no data outside of those identified sources.</p></li></ol><p>These assumptions are fundamentally wrong. Organizations can deliberately create the data that data scientists and other data consumers need, data that today those organizations simply do not have. More than that, organizations <em>should</em> deliberately create the data that they need: as Peter Norvig observed many years ago - &#8220;more data beats clever algorithms, and better data beats more data&#8221;: so it makes sense to spend at least as much time creating better data as developing better algorithms. In this post, I&#8217;m going to try and persuade you that organizations should invest in creating better data - and that investment can directly drive value and competitive advantage.</p><h2>The limits of data extraction</h2><p>The tooling for working with extracted data, and turning it into something that can be used to drive value, has never been better. The ecosystem that has grown up around the Modern Data Stack means that it has never been easier to build data pipelines that extract data from multiple sources (using tools like <a href="iframe.php?url=https%3A%2F%2Fwww.fivetran.com%2F">Fivetran</a>, <a href="iframe.php?url=https%3A%2F%2Fairbyte.com%2F">Airbyte</a> and <a href="iframe.php?url=https%3A%2F%2Fmeltano.com%2F">Meltano</a>), transform it (using tools like <a href="iframe.php?url=https%3A%2F%2Fwww.getdbt.com%2F">dbt</a> and <a href="iframe.php?url=https%3A%2F%2Fwww.matillion.com%2F">Matillion</a>) into a structure optimized for analytics and machine learning and deliver it into different analytics and activation tooling. Given there is so much value to unlock by adopting these tools and approaches, maybe it&#8217;s awkward to highlight that there are fundamental limitations to feeding this ecosystem of powerful tooling for driving value from data with data that is fundamentally limited. Unfortunately, we need to, because there are significant, fundamental challenges to working with extracted data, even with all that tooling available.</p><h3>Data Scope and Granularity</h3><p>Sometimes you want to engineer a feature or report on some behavior for which no data is available. Source data systems are finite: they have a certain amount of data with a certain associated scope. When a data scientist abandons developing a particular feature because the data is lacking, it is often down to the scope of the source data available.</p><h3>Data quality</h3><p>Data quality has become a bigger and bigger topic in data in general, as organizations start using data in more and more sophisticated ways, because more sophisticated data processing techniques require higher quality data. There has been an explosion of great tools to help companies build assurance in the quality of their data, solutions that include <a href="iframe.php?url=https%3A%2F%2Fwww.montecarlodata.com%2F">Monte Carlo</a>, <a href="iframe.php?url=https%3A%2F%2Fwww.datafold.com%2F%3Fexp_id%3D2">Datafold</a> and <a href="iframe.php?url=https%3A%2F%2Fgreatexpectations.io%2F">Great Expectations</a>. These tools provide structured approaches to check the properties of source data to ensure they are as expected, and build assurance that any subsequent processing steps don&#8217;t introduce new data quality issues. (This is really where these tools shine.) But by definition, there&#8217;s nothing these solutions can do to fix the quality of the source data - that is a given - and at best they can only flag likely issues. Data isn&#8217;t like oil - you don&#8217;t improve the quality of data by removing impurities from it - good quality data is created by ensuring that your process for creating the data is robust. For example, if you have a data set that describes the temperature of part of an engine over time, that data set is only as good as the equipment that was used to record the temperature and how well that equipment was used to generate the data set. If after the fact you find that some of the readings suggest the data isn&#8217;t accurate (e.g. they are suspiciously high), no amount of &#8220;cleaning&#8221; the data is going to resolve the issue that the data probably can&#8217;t be relied on. The quality of any derived data set will always be limited by the quality of the data at source. As the old saying goes, &#8220;garbage in, garbage out&#8221;&#8230; (Or as the English say, &#8220;you can&#8217;t polish a turd&#8221;, although it has not stopped lots of people in data spending lots of time scrubbing.)</p><h3>Data Interpretability and Semantics</h3><p>As organizations have started to use data to power more and more different applications and products, there has been an increasing understanding that data needs to be well understood and documented: it needs to be straightforward for a data consumer to understand what each row and column of data means. This has also led to another explosion of great technologies including semantic layers like <a href="iframe.php?url=https%3A%2F%2Fwww.atscale.com%2Fsolutions%2Funiversal-semantic-layer%2F">AtScale</a>, and Data Catalogs like <a href="iframe.php?url=https%3A%2F%2Fatlan.com%2Fp%2Fdata-catalog-leader%2F">Atlan</a>, <a href="iframe.php?url=https%3A%2F%2Fdatahubproject.io%2F">DataHub</a> and <a href="iframe.php?url=https%3A%2F%2Fwww.amundsen.io%2F">Amundsen</a>.</p><p>These solutions generally look to solve the problem of data meaning in the presentation layer: at the point that the data is made available to the rest of the organization. Meaning is effectively applied to the data (generally in the form of metadata) at the end of the processing. This means there are limits to how well understood the data delivered can be, because there is no solution to manage the meaning of the &#8220;source data&#8221; on which that presentation layer has been built. Instead, the metadata that captures the meaning has to be assembled by knowledgeable practitioners, generally after a long and tedious manual process unpicking the process for how the data was generated. Some of them work back from the presentation to provide visibility of the pipelines and processes that feed that presentation layer. Some of them use ML and social annotation features to support the process of curating the metadata and keeping it up to date. But none of them are able to work all the way back to the source systems where the data was originally extracted, where the data, and therefore the meaning originates.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21hdiZ%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%252Fpublic%252Fimages%252F48dc0602-6312-4922-80b9-b5208c74bfb1_4023x2619.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hdiZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F48dc0602-6312-4922-80b9-b5208c74bfb1_4023x2619.png 424w, https://substackcdn.com/image/fetch/$s_!hdiZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F48dc0602-6312-4922-80b9-b5208c74bfb1_4023x2619.png 848w, https://substackcdn.com/image/fetch/$s_!hdiZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F48dc0602-6312-4922-80b9-b5208c74bfb1_4023x2619.png 1272w, https://substackcdn.com/image/fetch/$s_!hdiZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F48dc0602-6312-4922-80b9-b5208c74bfb1_4023x2619.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21hdiZ%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%252Fpublic%252Fimages%252F48dc0602-6312-4922-80b9-b5208c74bfb1_4023x2619.png" width="1456" height="948" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/48dc0602-6312-4922-80b9-b5208c74bfb1_4023x2619.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:948,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:491915,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hdiZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F48dc0602-6312-4922-80b9-b5208c74bfb1_4023x2619.png 424w, https://substackcdn.com/image/fetch/$s_!hdiZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F48dc0602-6312-4922-80b9-b5208c74bfb1_4023x2619.png 848w, https://substackcdn.com/image/fetch/$s_!hdiZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F48dc0602-6312-4922-80b9-b5208c74bfb1_4023x2619.png 1272w, https://substackcdn.com/image/fetch/$s_!hdiZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F48dc0602-6312-4922-80b9-b5208c74bfb1_4023x2619.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>When people in an organization look at data sources for potential data to extract, they typically find two types source:</p><ol><li><p>SaaS applications like Salesforce. The data in these systems is typically extracted via APIs.</p></li><li><p>Databases within the organization. These have typically been built to support the applications that have been built by the organization themselves to support them doing business.</p></li></ol><p>In both cases, each data set has been created to support an application - in the first case an application developed by a 3rd party vendor, and in the second, an internally developed application.&nbsp;</p><p>Now, to understand what that data actually means, we need to understand:</p><ol><li><p>How the application works. (In the case of Salesforce - an understanding of the concepts of things like accounts, opportunities and contacts)</p></li><li><p>How the application is, and has been used by the organization in question</p></li></ol><p>This is not straightforward. Anyone who has ever tried to work with the old format Adobe &#8220;hits tsv&#8221; knows how much Adobe and implementation specific information is required to wrangle long lists of sProps and eVars. (Thankfully the <a href="iframe.php?url=https%3A%2F%2Fexperienceleague.adobe.com%2Fdocs%2Fexperience-platform%2Fxdm%2Fschema%2Fcomposition.html%3Flang%3Den">format of data created by Adobe AEP</a> today is infinitely superior.) Anyone who has tried to work with Salesforce data knows how sensitive the extracted data is to the particular ways in which individual companies have applied concepts like leads and contacts. In the vast majority of companies this sort of knowledge is tribal knowledge - stuck in the head of a handful of internal experts. Any data product managers, engineers, scientists that want to do anything valuable with the data will have to mine those internal experts to do anything valuable with the data from those sources.</p><p>As a result, it is very hard to draw meaning from the data from those source systems. This is one reason why driving value from that data is so hard: one of the reasons why so much time and investment has to be made to deliver a well curated data catalog or semantic layer.</p><h3>Data structure</h3><p>The structure of data extracted from different sources system is never optimized for machine learning or advanced analytics. This should not be a surprise - the data is structured in a way that is optimized for the application that it has been created to support, not the predictive model the data scientist is looking to build.</p><p>This is the second reason why organizations have to invest so much time today in data preparation: they are building data platforms on top of source data systems that do not reflect the plethora of data applications the data platforms need to support: instead they reflect the set of SaaS tools and internal applications that have been built to meet a completely different set of needs the organization has had to date.</p><p>In order to make that data usable for machine learning or advanced analytics, an enormous amount of data processing is generally required.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21X2k1%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%252Fpublic%252Fimages%252F184a8fd8-a1d8-4f01-a8e5-f59acda16310_10074x2619.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!X2k1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F184a8fd8-a1d8-4f01-a8e5-f59acda16310_10074x2619.png 424w, https://substackcdn.com/image/fetch/$s_!X2k1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F184a8fd8-a1d8-4f01-a8e5-f59acda16310_10074x2619.png 848w, https://substackcdn.com/image/fetch/$s_!X2k1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F184a8fd8-a1d8-4f01-a8e5-f59acda16310_10074x2619.png 1272w, https://substackcdn.com/image/fetch/$s_!X2k1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F184a8fd8-a1d8-4f01-a8e5-f59acda16310_10074x2619.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21X2k1%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%252Fpublic%252Fimages%252F184a8fd8-a1d8-4f01-a8e5-f59acda16310_10074x2619.png" width="1456" height="379" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/184a8fd8-a1d8-4f01-a8e5-f59acda16310_10074x2619.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:379,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2417326,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!X2k1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F184a8fd8-a1d8-4f01-a8e5-f59acda16310_10074x2619.png 424w, https://substackcdn.com/image/fetch/$s_!X2k1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F184a8fd8-a1d8-4f01-a8e5-f59acda16310_10074x2619.png 848w, https://substackcdn.com/image/fetch/$s_!X2k1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F184a8fd8-a1d8-4f01-a8e5-f59acda16310_10074x2619.png 1272w, https://substackcdn.com/image/fetch/$s_!X2k1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F184a8fd8-a1d8-4f01-a8e5-f59acda16310_10074x2619.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Managing change</h3><p>One of the biggest challenges with relying on data extraction is managing change. A source system can change at any point in time: because the data extracted is a bi-product, it is generally completely opaque to the people that manage the application that changes that they make could fundamentally break any downstream data pipelines and data applications that rely on the data: none of those dependencies are explicit. If you are lucky, the actual data pipeline will fail, and someone can spot and address the issue. (A lot of investment is often made in creating CICD tests to try and do just this.) But if not, then the meaning of the data could change, without any obvious way for the people curating the semantic layer, data catalog or downstream applications to identify and adapt to the change. Building applications on this data pipelines that are fed by these sources is literally like building houses on stilts: the foundation is totally unsuitable for the structure it is supposed to support.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21d06O%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%252Fpublic%252Fimages%252F8fd98915-0d0f-43a1-8534-355dceced90b_800x406.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!d06O!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F8fd98915-0d0f-43a1-8534-355dceced90b_800x406.jpeg 424w, https://substackcdn.com/image/fetch/$s_!d06O!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F8fd98915-0d0f-43a1-8534-355dceced90b_800x406.jpeg 848w, https://substackcdn.com/image/fetch/$s_!d06O!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F8fd98915-0d0f-43a1-8534-355dceced90b_800x406.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!d06O!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F8fd98915-0d0f-43a1-8534-355dceced90b_800x406.jpeg 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21d06O%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%252Fpublic%252Fimages%252F8fd98915-0d0f-43a1-8534-355dceced90b_800x406.jpeg" width="800" height="406" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/8fd98915-0d0f-43a1-8534-355dceced90b_800x406.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:406,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!d06O!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F8fd98915-0d0f-43a1-8534-355dceced90b_800x406.jpeg 424w, https://substackcdn.com/image/fetch/$s_!d06O!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F8fd98915-0d0f-43a1-8534-355dceced90b_800x406.jpeg 848w, https://substackcdn.com/image/fetch/$s_!d06O!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F8fd98915-0d0f-43a1-8534-355dceced90b_800x406.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!d06O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F8fd98915-0d0f-43a1-8534-355dceced90b_800x406.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em><a href="iframe.php?url=https%3A%2F%2Fwww.flickr.com%2Fphotos%2F79505738%40N03%2F44203546932">https://www.flickr.com/photos/79505738@N03/44203546932</a></em> </p><h3>Data Creation is a real and attractive alternative for data extraction</h3><p>Organizations can and should deliberately create data to power machine learning and advanced analytics use cases, rather than relying on data extraction. This means that when a data scientist decides that a particular feature is likely to be valuable for a model they are developing, they should look at how the organization can go and create that data, rather than limiting their search for features to those that can be readily delivered using existing data sources.</p><p>The good news is that increasingly, organizations are creating their own data. To give just two examples:</p><h4>Retail bank creates data to reduce fraud</h4><p>A set of data scientists at a bank hypothesized that <em>how </em>an individual fills in a credit card application might be predictive of how likely that individual was to be applying fraudulently: for example, a user who tries pasting multiple specific social security numbers into the application form sequentially is likely to be making a fraudulent application. Similarly, a user who completes an application very quickly might not be a human but a bot - suggesting suspicious activity.&nbsp;</p><p>This data can readily be created using open source technology like <a href="iframe.php?url=https%3A%2F%2Fgo.snowplow.io%2Fl%2F571483%2F2022-09-02%2F3v4xyxc">Snowplow</a> (disclaimer: I am one of the founders of <a href="iframe.php?url=https%3A%2F%2Fgo.snowplow.io%2Fl%2F571483%2F2022-09-02%2F3v4xyxc">Snowplow</a>) or alternatives. Indeed we have worked with a number of institutions to create data to enable features that are predictive of fraud, enabling those institutions to block fraudulent transactions and approve legitimate transactions faster. Behavioral data, describing what the individual submitting a transaction or credit application, has been found to be one of the most predictive indicators of fraud: incorporating this created data drives a step change in fraud detection performance. Yet this is a signal that many financial institutions ignore, because the data is not readily available to the data scientists: it needs to be created.</p><h4>Insurance company creates data to measure exposure to flooding risk</h4><p>Last year Europe saw widespread flooding. One of them realized that they did not have a way to accurately measure their exposure to flooding risk across their property portfolio. Although they had a list of addresses for all the properties that they insured, GPS coordinates for each property and accurate topographic maps covering Europe, it was not possible to tell how much damage would be done at different levels of flooding, because the perimeters of each property were unknown: instead only a single GPS coordinate given for each address, and sometimes this coordinate was not even within the perimeter of the property.</p><p>As a result, a data product manager assembled a team to solve this problem: their job was to create a data set that gave the perimeter of each property, so that the risk team could use that data to provide much better models for the impact of different levels of flooding on property damage across their portfolio. (By combining the perimeter data with the topographic data to figure out how much of each property would be submerged at different levels of rainfall.)</p><p>The data product manager and his team visited several hundred sites to directly measure the property perimeters, and then used that data to train and test a machine learning model that predicted those perimeters from satellite imagery. The resulting data made it possible for the risk team to drive a step change in modeling their exposure to flooding risk, and the insurance company is now exploring investing in developing many more data sets to drive improved risk modeling.&nbsp;</p><p>One of the most exciting applications for machine learning, in data, is actually as part of the Data Creation process. Whilst in data we typically think of machine learning as a powerful tool for driving insight and prediction from data, it can be a useful tool in building a predictive data set to start with. At <a href="iframe.php?url=https%3A%2F%2Fgo.snowplow.io%2Fl%2F571483%2F2022-09-02%2F3v4xyxc">Snowplow</a>, we see more and more of our customers and open source users recording the predictions that they make as behavioral data (in this case the behavior of the machine learning application) alongside behavioral data that describes the individual people who&#8217;s behavior powered those predictions.&nbsp;</p><h2>So if Data Creation is so much better than Data Extraction, why do so many organizations still rely on extraction for the vast majority of their data?</h2><p>This is particularly surprising because as a whole, mankind is creating more data than ever.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21aWEB%21%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%252Fpublic%252Fimages%252F5af147f1-3ed2-420c-b464-da281c3165b3_714x439.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aWEB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5af147f1-3ed2-420c-b464-da281c3165b3_714x439.png 424w, https://substackcdn.com/image/fetch/$s_!aWEB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5af147f1-3ed2-420c-b464-da281c3165b3_714x439.png 848w, https://substackcdn.com/image/fetch/$s_!aWEB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5af147f1-3ed2-420c-b464-da281c3165b3_714x439.png 1272w, https://substackcdn.com/image/fetch/$s_!aWEB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5af147f1-3ed2-420c-b464-da281c3165b3_714x439.png 1456w" sizes="auto, 100vw"><img src="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21aWEB%21%2Cw_1456%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%252Fpublic%252Fimages%252F5af147f1-3ed2-420c-b464-da281c3165b3_714x439.png" width="714" height="439" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/5af147f1-3ed2-420c-b464-da281c3165b3_714x439.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:439,&quot;width&quot;:714,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!aWEB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5af147f1-3ed2-420c-b464-da281c3165b3_714x439.png 424w, https://substackcdn.com/image/fetch/$s_!aWEB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5af147f1-3ed2-420c-b464-da281c3165b3_714x439.png 848w, https://substackcdn.com/image/fetch/$s_!aWEB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5af147f1-3ed2-420c-b464-da281c3165b3_714x439.png 1272w, https://substackcdn.com/image/fetch/$s_!aWEB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5af147f1-3ed2-420c-b464-da281c3165b3_714x439.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>Graph taken for Statista, <a href="iframe.php?url=https%3A%2F%2Fwww.statista.com%2Fstatistics%2F871513%2Fworldwide-data-created%2F">https://www.statista.com/statistics/871513/worldwide-data-created/</a></em></p><p>It is just that by and large, data is being created by vendors of particular applications and products, rather than organizations looking to develop data platforms for their own internal uses. I think there are a couple of reasons for this:</p><ol><li><p>The tooling for Creating Data is not good enough today. (I say this as the founder of a company trying to build better tools to create data.) For most data scientists that want to build a new data application and need to engineer a feature, it is easier to start with data that is already in the organization, however imperfect, than create that data from scratch. This is something that we are actively looking to change at <a href="iframe.php?url=https%3A%2F%2Fgo.snowplow.io%2Fl%2F571483%2F2022-09-02%2F3v4xyxc">Snowplow</a>.</p></li><li><p>The &#8220;data is oil&#8221; metaphor is so pervasive in data that it simply does not occur to the vast majority of data practitioners. We have all been indoctrinated in the idea that data engineering starts with the data that an organization already has. To be fair, a huge amount of value has been unlocked by taking that data, bringing it together in a cloud data warehouse / lakehouse, and then building intelligence and activation on top of it. But so much more can be accomplished if organizations look beyond the data that they happen to have today, and start to deliberately create better data to power their data apps for tomorrow.&nbsp;&nbsp;</p></li></ol><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://datacreation.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption"></p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[My name is Yali and I'm a data guy]]></title><description><![CDATA[I hope to share my thoughts on the rapidly evolving data space here]]></description><link>https://datacreation.substack.com/p/coming-soon</link><guid isPermaLink="false">https://datacreation.substack.com/p/coming-soon</guid><dc:creator><![CDATA[Yali Sassoon]]></dc:creator><pubDate>Mon, 25 Jul 2022 17:02:17 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7f9049d8-1671-4019-875e-707fb30a6327_6000x4000.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>My name is Yali. I&#8217;m a data guy. I first got into data at university - where I had the chance to study a lot of different sciences (Physics, Chemistry, Physiology, Experimental Psychology) and then study the History and Philosophy of Science. The history in particular really blew my mind in terms of how whole disciplines have emerged over time around different styles of reasoning, and different ways of using data to reason.</p><p>When I left I became a Consultant - because that felt like a good place to learn how to use data to help businesses reason about things and use data to create value. I was very lucky early on in my career, working on a project with a manufacturer of complicated industrial goods, to use data that had been created for one purpose: recording the delivery schedules for different manufacturing plants, for an entirely different purpose: measuring the accuracy of the planning process. That analysis showed that actual planning cycles were significantly shorter than management had previously believed. It led to a wholesale restructuring of the organization. And so very early on I got to see the transformational impact of data, on a commercial context, with my own eyes. It was a totally different experience from anything I&#8217;d seen in the academic realm beforehand. </p><p>In the years that followed I got to learn how to use data to support companies developing strategies as well as improve operations. </p><p>In 2011 and 2012 I was very excited about what we now call behavioral data: the iPhone had triggered a wave of innovation in apps that permeated every part of our lives and that meant there were opportunities to create data that described how people behave: how they fall in love on dating sites, collaborate with coworkers to solve problems in productivity apps, learn on education platforms and spend their free time consuming media and playing games: data that was both broad (could describe millions of people) and deep (it described for each person exactly what she or he were doing, second-by-second and minute-by-minute). That, and the possibilities that big data frameworks like Hadoop and AWS services like EMR led me to cofound, with Alex Dean, <a href="iframe.php?url=https%3A%2F%2Fsnowplow.io%2F">Snowplow</a> in 2012: an open source platform to create behavioral data at scale - one that any organization could use to create their own data. (At the time, organizations relied on tools like Google Analytics and Adobe, which prescribed a very narrow set of use cases on the data, and created all sorts of barriers to organizations to innovate on their own data.) Our goal was to set organizations - and data folk within them - free to innovate.</p><p>Ten years on the data space is unrecognizable. But it has only grown more exciting, there is so much more possibility and so much more innovation than I could have imagined back in 2012. Even better, being at Snowplow gave me the opportunity to work with a whole host of innovators in the data space and see first hand how advances in technology have been seized on to make fundamental changes to the way we are as human beings and the way organizations conduct themselves. It is incredibly good fun to think ahead, to the next 10 years, and speculate how they will evolve. </p><p>My intention is to use this substack to share and debate some of those thoughts: and widen the conversations I get to have around data, from the people I get to work with directly, to a much broader set of people like you, out there in the world.</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://datacreation.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="iframe.php?url=https%3A%2F%2Fdatacreation.substack.com%2Fsubscribe%3F"><span>Subscribe now</span></a></p>]]></content:encoded></item></channel></rss>