<?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[savaged.net]]></title><description><![CDATA[Building trust through better data. 25+ years of lessons from the automotive industry.]]></description><link>https://www.savaged.net</link><image><url>https://substackcdn.com/image/fetch/$s_!Znah!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64a76850-ef64-4c3a-bb22-03a7daf146ad_880x880.png</url><title>savaged.net</title><link>https://www.savaged.net</link></image><generator>Substack</generator><lastBuildDate>Sat, 02 May 2026 19:51:46 GMT</lastBuildDate><atom:link href="https://www.savaged.net/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Woodson]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[wjs4@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[wjs4@substack.com]]></itunes:email><itunes:name><![CDATA[Woodson]]></itunes:name></itunes:owner><itunes:author><![CDATA[Woodson]]></itunes:author><googleplay:owner><![CDATA[wjs4@substack.com]]></googleplay:owner><googleplay:email><![CDATA[wjs4@substack.com]]></googleplay:email><googleplay:author><![CDATA[Woodson]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[You Already Have Semantic Layers. That's the Problem.]]></title><description><![CDATA[On the semantic decisions your organization has already made without knowing it]]></description><link>https://www.savaged.net/p/you-already-have-semantic-layers</link><guid isPermaLink="false">https://www.savaged.net/p/you-already-have-semantic-layers</guid><dc:creator><![CDATA[Woodson]]></dc:creator><pubDate>Sat, 02 May 2026 15:31:51 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!noyw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a8fe24e-bfbd-4de9-9b98-f7d5de7a51a0_1408x768.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I once sat in a meeting where the only goal was to answer a simple question: how many cars did we sell?  That should be child&#8217;s play.</p><p>It didn&#8217;t stay simple for long. Someone said a car was sold when the auctioneer&#8217;s hammer fell. Someone else said no, it&#8217;s sold when finance books the transaction. A third person argued it&#8217;s sold when the buyer pays. A fourth said the seller being paid is what makes it real. And then someone asked about returns: if a car came back for a mechanical issue the following week, was it still sold?</p><p>Every one of those answers was correct. Not approximately correct, or correct from a certain angle. Correct in a way that mattered to the person giving it, because each one reflected a different business process, a different accountability, a different moment when something real and consequential happened. The auctioneer&#8217;s answer served the auction floor. Finance&#8217;s answer served the ledger. The seller&#8217;s answer served the settlement process. None of them were wrong. None of them were the same.</p><p>That meeting is why a company president can pull three reports on the same question and get three different numbers. Not because the data is bad. Because the question &#8220;how many cars were sold&#8221; has multiple valid answers, each encoded in a different system by people who understood exactly what they were measuring. The reports disagree because the definitions disagree. And the definitions disagree because the businesses they serve are genuinely different.</p><p>That&#8217;s the moment the unified semantic layer conversation either gets stuck or gets honest.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!noyw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a8fe24e-bfbd-4de9-9b98-f7d5de7a51a0_1408x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!noyw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a8fe24e-bfbd-4de9-9b98-f7d5de7a51a0_1408x768.png 424w, https://substackcdn.com/image/fetch/$s_!noyw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a8fe24e-bfbd-4de9-9b98-f7d5de7a51a0_1408x768.png 848w, https://substackcdn.com/image/fetch/$s_!noyw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a8fe24e-bfbd-4de9-9b98-f7d5de7a51a0_1408x768.png 1272w, https://substackcdn.com/image/fetch/$s_!noyw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a8fe24e-bfbd-4de9-9b98-f7d5de7a51a0_1408x768.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!noyw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a8fe24e-bfbd-4de9-9b98-f7d5de7a51a0_1408x768.png" width="1408" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5a8fe24e-bfbd-4de9-9b98-f7d5de7a51a0_1408x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1408,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;IMG_9606.png&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="IMG_9606.png" title="IMG_9606.png" srcset="https://substackcdn.com/image/fetch/$s_!noyw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a8fe24e-bfbd-4de9-9b98-f7d5de7a51a0_1408x768.png 424w, https://substackcdn.com/image/fetch/$s_!noyw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a8fe24e-bfbd-4de9-9b98-f7d5de7a51a0_1408x768.png 848w, https://substackcdn.com/image/fetch/$s_!noyw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a8fe24e-bfbd-4de9-9b98-f7d5de7a51a0_1408x768.png 1272w, https://substackcdn.com/image/fetch/$s_!noyw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a8fe24e-bfbd-4de9-9b98-f7d5de7a51a0_1408x768.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h2>Every dashboard is already a semantic layer</h2><p>What usually gets missed in that conversation: the semantic layer already exists. It&#8217;s just not where anyone is looking for it.</p><p>Every analyst who built a dashboard made a semantic decision. The metric called &#8220;30-day active users&#8221; in your product analytics tool has a specific calculation behind it. Someone decided what counts as active, what the window is, and whether to deduplicate. That decision is encoded in the tool. It&#8217;s just not written down in any format a machine can find or an agent can consume.</p><p>The same is true for every calculated field in every reporting tool across the organization. Finance&#8217;s revenue definition is embedded in their model. The product team&#8217;s engagement metric is embedded in Amplitude or Mixpanel or whatever they shipped last year. Operations has a cost-per-unit definition living inside a spreadsheet someone built in 2021 and has maintained ever since.</p><p>None of these are absent of governance. They all reflect deliberate decisions made by people who understood the business problem. The problem is that those decisions are invisible to anything outside the tool that contains them. When an AI agent asks a question that touches multiple domains, it has no way to know which definition to use, whether two definitions that sound the same are actually compatible, or whether the number it just calculated is the same number the analyst calculated last Tuesday.</p><div><hr></div><h2>The recalculation trap</h2><p>When an agent is asked a question, the easiest path is often to reach back to the raw data and compute an answer. Pull the records, apply some logic, return a number. The problem is that the number it returns isn&#8217;t the same number the business uses, because the definition embedded in the raw calculation isn&#8217;t the same definition someone carefully encoded in the reporting layer.</p><p>Two answers. Both confident. Neither flagged as conflicting. The agent didn&#8217;t make an error by any technical measure. It made a governance error that&#8217;s invisible until someone compares the outputs and wonders why they don&#8217;t match.</p><p>The cost problem compounds this. As LLM tools shift from flat-rate to consumption pricing, every query has a real and visible price. Your organization already paid to generate the trusted answer once, when an analyst built the dashboard, chose the definition, and validated the output. That cost is sunk. Every time an agent recomputes the same answer from raw data, you pay again in query compute and LLM tokens. And you get a different number. You are paying more to be less trustworthy.</p><p>What actually erodes confidence over time is the version problem. If your organization has a trusted dashboard that answers a specific question, and an agent answers the same question differently, you now have two sources of truth competing silently. Not with a dramatic failure. With a slow accumulation of &#8220;the numbers don&#8217;t quite add up&#8221; moments that nobody can explain, each one costing money to generate.</p><p>The answer isn&#8217;t better agents. The answer is telling the agent which definition to use and where that definition already lives. You already paid for that answer. Use it.</p><div><hr></div><h2>Why federation is the only realistic path</h2><p>Once you accept that semantic decisions are already distributed across the organization, the architectural question changes. It&#8217;s no longer &#8220;where do we build the one semantic layer?&#8221; It&#8217;s &#8220;how do we make the semantic layers we already have discoverable, registered, and usable by machines?&#8221;</p><p>Before accepting that, most organizations try the alternative: force new names for contested terms and build a single clean layer around the new vocabulary. If &#8220;cars sold&#8221; means five different things, stop using &#8220;cars sold.&#8221; Call them &#8220;booked transactions&#8221; and &#8220;auction settlements&#8221; and &#8220;funded deals&#8221; and define each one precisely. One layer. No ambiguity. Problem solved.</p><p>This works. Under the right conditions. We did it with cars sold in a narrow context, with a small team, with enough authority to hold the line on the new terminology. The definitions were precise and the layer stayed clean. The conditions that made it work were real.</p><p>The problem is that those conditions don&#8217;t scale. As scope expands across more business units and more teams, two things happen. The definitions become increasingly academic, engineered for logical consistency rather than for how people actually think about their work. And the change management cost compounds. Moving people off of words they use every day, words that accurately describe something real in their business context, requires sustained organizational will that is almost never justified relative to the governance benefit. Teams agree in the meeting and revert in practice. The new term lives in the data dictionary. The old term lives in every conversation, every report request, every Slack message where someone asks why the numbers don&#8217;t match.</p><p>Forced renaming solves a vocabulary problem by creating a translation problem. The underlying semantic difference doesn&#8217;t go away. It just gets a layer of terminology on top of it that everyone has to manage in addition to the disagreement itself.</p><p>Federation isn&#8217;t a compromise position. It&#8217;s the accurate description of how knowledge actually works at enterprise scale. Different business units operate with legitimately different definitions because they run legitimately different businesses. A metric used for executive reporting has different requirements than one used for operational alerting. Trying to collapse all of that into a single layer doesn&#8217;t unify the organization. It either produces a layer so generic it can&#8217;t answer real questions, or it produces a political conflict between teams that each believe their definition is the correct one, with no mechanism to resolve it.</p><p>What federation requires is not three parallel things. It&#8217;s three things that build on each other.</p><p>It starts with local ownership. Whatever tool a team is working in, the semantic decisions they&#8217;ve already made get documented and registered in a shared format. Not moved. Not consolidated. Just made visible and machine-readable. This is where the work begins because this is where the definitions actually live.</p><p>Local ownership is why a registry becomes necessary. Once definitions exist in multiple places with multiple owners, something has to answer the routing question: for this type of query, from this type of consumer, in this business context, use this layer. That routing logic is where the organizational governance actually lives. Not in the definitions themselves, which belong to the domain owners, but in the rules about which definition applies when. Without the registry, local ownership just produces a more organized version of the same invisible landscape.</p><p>And the registry is why identity becomes the constraint. Routing rules that depend on business context need to know which context the consumer belongs to. An agent acting on behalf of a product analyst should get that team&#8217;s definitions. An agent acting on behalf of finance should get theirs. Identity is what connects the consumer to the right layer. Most organizations haven&#8217;t wired it that way, which is why the identity section below matters. But the dependency only becomes visible once the registry exists to expose it.</p><div><hr></div><h2>The two types of semantic layers, and why they both need to exist</h2><p>Once you accept that federation is the right model, a second distinction surfaces that most organizations try to avoid making explicit. Not all semantic layers are doing the same job, and confusing the two is where a lot of federation efforts stall.</p><p>The business domain problem is about meaning. Two teams use the same word to describe genuinely different business realities. Cars sold means something different to the auction floor than it does to finance. Both definitions are correct. Neither is interchangeable with the other. The federation argument addresses this directly: local teams own their definitions, the registry routes consumers to the right one.</p><p>The canonical layer problem is different. It&#8217;s not about meaning. It&#8217;s about identity and structure. Two teams that have perfectly clear definitions within their own domains try to connect their data across a boundary, and the connection fails because the underlying entity isn&#8217;t the same object in both systems.</p><p>Consider the word &#8220;dealership.&#8221; One business might define a dealership as the physical location where customers are sent. Another defines it as the legal business entity that signs contracts. A third defines it as the website domain that hosts the inventory. None of these is wrong. Each accurately reflects how that business actually thinks about and interacts with dealers. But when you try to join customer data from the first system to transaction data from the second, nothing resolves cleanly. You&#8217;re joining on a physical address against a legal entity. The grain is different. The meaning is different at the structural level, not just the semantic one.</p><p>This is what the canonical layer exists to solve. Not to adjudicate which definition of dealership is correct, but to establish a shared object definition stable enough that data from different systems can connect through it. Without it, every cross-domain join requires custom translation logic, and every new integration starts from scratch.</p><p>These are not competing approaches. They serve different consumers with different needs and fail in different ways when they&#8217;re missing. A missing business layer produces the cars sold problem: agents and analysts getting different numbers depending on which system they query. A missing canonical layer produces the dealership problem: cross-domain joins that silently return wrong results or fail to resolve at all.</p><p>If you force business teams to inherit from the canonical layer, you get definitions too generic to answer real questions. If you force canonical definitions to accommodate every business team&#8217;s precision needs, you get definitions so qualified they stop serving interoperability. The governance work is not choosing between them. It&#8217;s defining the contract between them. Canonical layers publish shared structural models. Business layers publish their local definitions plus an explicit mapping to the canonical terms when they expose data outside their context. The registry holds both, with routing rules that tell a consumer or agent which layer applies given their question and context.</p><div><hr></div><h2>Expect overlaps, and don&#8217;t try to eliminate them</h2><p>Most rationalization efforts go wrong here. When you inventory the semantic decisions that already exist in your tools, you will find what looks like duplication. Two teams using the same term with different calculations. Two business domains each defining the same entity. The instinct is to ask which one is right and eliminate the other.</p><p>Usually both are right, and eliminating either destroys something.</p><p>Two business teams using the same term with different logic are almost certainly answering different questions for different consumers. A product analytics team measuring engagement and a finance team measuring billable activity built their respective definitions because they needed precision for different purposes. Forcing a single definition doesn&#8217;t resolve the difference. It produces a definition neither team can actually use, and both will quietly work around it.</p><p>The same thing happens at the canonical layer. A definition of a customer entity that serves CRM workflows and one that serves transaction settlement can overlap the same underlying record while encoding different consistency requirements. That overlap is expected. The two definitions are not duplicates. They represent different contracts for different downstream uses.</p><p>The registry&#8217;s job is not to enforce uniqueness. It is to make the landscape legible. A well-designed registry doesn&#8217;t tell you there should be one definition of &#8220;active customer.&#8221; It tells you there are three, who owns each one, what question each one answers, and which one an agent or analyst should reach for given their context. Reducing the number of definitions is the wrong goal. Reducing the number of undocumented definitions is the right one.</p><div><hr></div><h2>The practical starting point</h2><p>Most organizations don&#8217;t need to build anything new to start. They need to do an audit of what semantic decisions already exist in their tools.</p><p>What metrics are defined in your analytics platforms? What calculated fields have formal definitions versus informal ones? Where do two teams use the same term with different underlying logic? Where does an agent recalculating from raw data produce a different answer than your trusted reports?</p><p>As you build that inventory, classify what you find by type. Is this a canonical definition meant to serve interoperability, or a business definition meant to serve a specific team&#8217;s questions? That classification determines where it belongs in the registry and what contract it needs to publish. Without it, you&#8217;ll spend time trying to reconcile things that were never meant to be reconciled.</p><p>That inventory is the input to the registry. It tells you what needs to be registered before you design any new infrastructure. It also usually surfaces the conflicts that matter most, the ones where two teams believe they have the authoritative definition and neither knows the other exists.</p><p>A registry entry doesn&#8217;t need to be complicated. For &#8220;cars sold,&#8221; it might list five versions: auction settlement, booked transaction, buyer payment, seller payment, and net of returns. Each entry names the owner, the business context it applies to, the tool where the definition lives, and a routing rule stating which version an agent should use given the consumer&#8217;s context. That&#8217;s the whole thing. Not a schema. Not a data dictionary. A legible record of which answer is authoritative for which question, maintained by the people who own the answer.</p><p>The governance work here is less about building and more about surfacing. Most of what you need is already written down. It&#8217;s just written down in a format only the tool can read.</p><h2>The dependency you&#8217;ll find next</h2><p>Once the registry exists and the routing rules are in place, the next problem surfaces quickly. The routing rules depend on knowing who is asking. An agent acting on behalf of a product analyst should get that team&#8217;s business definitions. An agent acting on behalf of a finance team should get theirs. An agent operating across business units needs to resolve which context applies before it can route to the right layer.</p><p>Most organizations will discover, at that moment, that they don&#8217;t have a consistent answer to the identity question across their business units. Not because nobody thought about it, but because identity systems were built per-division, per-product, per-tool, and were never designed to interoperate at the semantic layer. Each business unit knows who its users are. The governance layer trying to route a query often doesn&#8217;t.</p><p>This is not a reason to delay the registry work. The audit, the classification, the registry design are all correct steps and none of them depend on solving identity first. But name the dependency early. The organizations that will stumble are the ones that build the routing logic, go to wire it to identity, and discover the gap then. The ones that name it upfront can sequence the work deliberately rather than hitting it as a surprise.</p><p>The routing rules work once you know who is asking. Building the registry is how you find out exactly how much that question matters.</p><div><hr></div><p>None of this resolves the underlying complexity. The cars sold question still has five valid answers. What changes is that the five answers are documented, owned, and routable rather than silently competing inside systems that don&#8217;t know the others exist.</p><div><hr></div><p>The previous two posts covered the same underlying problem in adjacent territory. <a href="https://www.savaged.net/p/i-was-wrong-about-ai-readiness">The first</a> argued that AI readiness for unstructured data isn&#8217;t a curation problem, it&#8217;s an epistemic governance problem. <a href="https://www.savaged.net/p/why-your-data-governance-program">The second</a> argued that data governance programs fail when they start with policies instead of business problems. This post is the third part of the same argument. In every case, the problem isn&#8217;t that organizations lack information. It&#8217;s that the information they have isn&#8217;t visible to the systems consuming it.</p><p>A semantic layer you can&#8217;t find is not a semantic layer. It&#8217;s a decision waiting to create a conflict.</p><p>The work is to surface it, register it, and route to it. Not to replace it with something central that pretends the organizational complexity underneath it doesn&#8217;t exist.</p><div><hr></div><p><strong>Further reading</strong></p><p>The conceptual foundation for why terms can&#8217;t be forced into a single definition across different business contexts is Eric Evans&#8217; notion of bounded contexts, introduced in <em>Domain-Driven Design</em> (2003). Martin Fowler&#8217;s summary is a good starting point: <a href="https://martinfowler.com/bliki/BoundedContext.html">martinfowler.com/bliki/BoundedContext.html</a></p><p>Zhamak Dehghani&#8217;s original data mesh piece is worth reading in full if the source-aligned versus consumer-aligned distinction resonates: <a href="https://martinfowler.com/articles/data-mesh-principles.html">martinfowler.com/articles/data-mesh-principles.html</a></p><p>The closest working implementation of the federated pattern in practice is dbt&#8217;s combination of Mesh (domain-owned data products in separate projects) and the Semantic Layer (centralized metric definitions that cross-reference those projects). Their documentation on how these work together is worth reading if you&#8217;re thinking about tooling: <a href="https://docs.getdbt.com/docs/use-dbt-semantic-layer/dbt-sl">docs.getdbt.com/docs/use-dbt-semantic-layer/dbt-sl</a></p>]]></content:encoded></item><item><title><![CDATA[Good Decisions Over Perfect Data]]></title><description><![CDATA[Redefining Product Analytics in the Age of AI]]></description><link>https://www.savaged.net/p/good-decisions-over-perfect-data</link><guid isPermaLink="false">https://www.savaged.net/p/good-decisions-over-perfect-data</guid><dc:creator><![CDATA[Woodson]]></dc:creator><pubDate>Sat, 25 Apr 2026 13:20:21 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!0GUw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0544b71a-7ae8-429f-bf38-2369682977c0_1408x768.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>There&#8217;s a number in the deck. A percentage, a trend, a claim about user behavior. It&#8217;s formatted correctly. It has the confidence of something that came from somewhere real.</p><p>And someone in the room looks at it and thinks: I don&#8217;t know where that came from. That doesn&#8217;t match what I know. But everyone else is nodding.</p><p>If you work in product analytics, you&#8217;ve had that experience recently. Probably more than once. And if you&#8217;ve been treating it as a minor annoyance, I&#8217;d argue you&#8217;re misreading what it actually is.</p><p>It&#8217;s the signal. Not that someone made a mistake. That something structural is changing about how information moves through organizations, and about what the analytical function is actually supposed to do.</p><p><em>AI isn&#8217;t just changing what we measure. It&#8217;s changing what measurement is for.</em></p><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0GUw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0544b71a-7ae8-429f-bf38-2369682977c0_1408x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0GUw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0544b71a-7ae8-429f-bf38-2369682977c0_1408x768.png 424w, https://substackcdn.com/image/fetch/$s_!0GUw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0544b71a-7ae8-429f-bf38-2369682977c0_1408x768.png 848w, https://substackcdn.com/image/fetch/$s_!0GUw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0544b71a-7ae8-429f-bf38-2369682977c0_1408x768.png 1272w, https://substackcdn.com/image/fetch/$s_!0GUw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0544b71a-7ae8-429f-bf38-2369682977c0_1408x768.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0GUw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0544b71a-7ae8-429f-bf38-2369682977c0_1408x768.png" width="1408" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0544b71a-7ae8-429f-bf38-2369682977c0_1408x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1408,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;IMG_9599.png&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="IMG_9599.png" title="IMG_9599.png" srcset="https://substackcdn.com/image/fetch/$s_!0GUw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0544b71a-7ae8-429f-bf38-2369682977c0_1408x768.png 424w, https://substackcdn.com/image/fetch/$s_!0GUw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0544b71a-7ae8-429f-bf38-2369682977c0_1408x768.png 848w, https://substackcdn.com/image/fetch/$s_!0GUw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0544b71a-7ae8-429f-bf38-2369682977c0_1408x768.png 1272w, https://substackcdn.com/image/fetch/$s_!0GUw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0544b71a-7ae8-429f-bf38-2369682977c0_1408x768.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Of course AI is going to make a pie chart&#8230;</figcaption></figure></div><div><hr></div><h2>The question that used to be tractable</h2><p>For most of the history of product analytics, we answered a clear question: did people use the feature, and how often? Count sessions. Forecast adoption. Run an A/B test against a usage metric. Ship a recommendation.</p><p>The question was hard to answer well. But at least it was clear.</p><p>AI-powered features break the question entirely. Usage volume is still relevant, but it no longer tells you whether the product is working. A user who got a confidently wrong answer from a generative feature and never came back looks identical in the data to one who got a great answer and didn&#8217;t need to return. The signal and the noise have the same shape.</p><p>We now have to assess interaction quality, which requires different instrumentation, different evaluation frameworks, and different skills than traditional funnel or experiment analysis. There is no industry-standard metric for AI answer quality. NPS doesn&#8217;t capture it. Session length doesn&#8217;t capture it. Thumbs up/down is noisy and gameable.</p><p>The field hasn&#8217;t standardized, but some signals are proving more useful than others. Task completion rate, measured by whether the user took a meaningful next action after an AI interaction rather than abandoning or immediately repeating the query, captures something session length doesn&#8217;t. Downstream outcome correlation, tracking whether users who heavily engaged with an AI feature behaved differently on the metrics that actually matter to the business, is harder to build but closer to the truth. And explicit confidence signals, asking users not just whether they liked the answer but whether they acted on it, can surface quality problems that usage data buries entirely. None of these is a complete solution. But any of them is more honest than a session count.</p><p>Product analytics teams are being asked to measure something the field hasn&#8217;t solved yet. The teams that build credible frameworks for this first are going to matter enormously to their organizations. The teams that wait for a standard to emerge are going to spend years retrofitting measurement onto decisions already made.</p><div><hr></div><h2>The instrumentation window is closing</h2><p>There&#8217;s a second shift happening that&#8217;s less visible but equally consequential.</p><p>As development teams move toward AI-assisted formats where code is generated from plain-English specifications, the window for defining measurement is shrinking. Requirements that were informal can now produce large, complex codebases quickly. If you haven&#8217;t specified what you&#8217;re tracking and why before generation begins, retrofitting instrumentation becomes expensive or sometimes impossible.</p><p>Here&#8217;s what that looks like in practice. A team generates a feature from a specification in eleven days. It would have taken six weeks the traditional way. Leadership is thrilled. The feature goes to QA. Someone asks, &#8220;what does success look like for this, and how will we measure it?&#8221; Silence. The spec never defined it. The code generation didn&#8217;t require it. Now you&#8217;re being asked to retrofit tracking onto something already in staging. You can measure that it ran. You cannot measure whether it worked.</p><p>This is a cultural problem as much as a technical one. It means analytics teams need to be in conversations earlier, willing to say &#8220;we can&#8217;t measure that as written&#8221; before a feature is built rather than after. That&#8217;s a different posture than analytics has traditionally taken. It requires being upstream of decisions in a way most teams haven&#8217;t organized themselves for.</p><p>Getting upstream is as much a political challenge as a technical one. Most analytics teams have been trained, implicitly or explicitly, to receive work rather than shape it. Changing that posture requires organizational permission, and earning that permission usually means demonstrating value in the current model before being granted a seat at an earlier table. The teams that have moved successfully have typically done it by solving one upstream instrumentation problem visibly, not by announcing a new strategic position.</p><p>Instrumentation is not a technical detail. It is the mechanism by which we either close the information gap or leave it open. And in AI-transformed development, the window to close it is earlier and shorter than it used to be.</p><div><hr></div><h2>The trust infrastructure argument</h2><p>I want to make a structural argument for why any of this matters, because I think it&#8217;s more durable than &#8220;analytics is useful&#8221; or &#8220;data-driven decisions are good.&#8221;</p><p>In 1970, economist George Akerlof described what happens when buyers and sellers transact with unequal information and no mechanism to close the gap. He showed how used car markets, left without trust infrastructure, <a href="https://www.jstor.org/stable/1879431">collapse toward the worst-quality transactions</a> as good participants exit. He called it the market for lemons. He won the Nobel Prize for the insight.</p><p>The reason this matters to analytics is that most of the organizations we work inside are marketplace operators in one form or another. They exist to connect people to things, or to other people, or to decisions. And in every case, the value of the exchange is downstream of the trust underlying it.</p><p>Every analytical output we produce either closes an information gap or leaves it open. When it closes one honestly, it builds trust. When it creates a false impression of certainty, it erodes trust in ways that are hard to see until they compound.</p><p>AI changes the scale at which trust can be built or destroyed. A single confidently wrong AI output, cited in a leadership meeting and forwarded to three more, spreads in minutes. The organizations that win in an AI-transformed industry will be the ones whose outputs can be relied upon. The ones that lose will be the ones that moved fast and faked it.</p><p>Product analytics teams are trustworthiness infrastructure, and that distinction matters.</p><p>Trust is what other people decide. Trustworthiness is what we control. Philosopher <a href="https://www.ted.com/talks/onora_o_neill_what_we_don_t_understand_about_trust">Onora O&#8217;Neill</a> makes this distinction precisely: we tend to focus on building trust when we should be focused on building the conditions that make trust a rational response. We can&#8217;t make leadership trust an analytical output. We can make sure our work is verifiable, that we show up before things break rather than after, and that we represent confidence accurately rather than performing certainty we don&#8217;t have. When those three things are true, trust follows.</p><p>This applies even outside traditional marketplace businesses. Any organization where people make decisions based on information they didn&#8217;t personally generate is operating with the same dynamics. The information gap and the trust problem are universal. The scale at which AI can widen or close them is what&#8217;s new.</p><p>AI is very good at projecting confidence. It is very bad at earning it. The organizations that win will be the ones whose outputs can be relied upon. The ones that lose will be the ones that moved fast and faked it. Product analytics is the part of the system that knows the difference.</p><div><hr></div><h2>The new class of question nobody owns</h2><p>There is a third shift, one that shows up in the calendar rather than the roadmap.</p><p>Leaders now have direct access to AI-powered analytics interfaces that can surface data, generate summaries, and answer questions without going through an analyst. Most of the time that&#8217;s a genuine productivity gain. However, AI tools produce answers that sound authoritative at whatever confidence level the underlying data actually supports, and the end user often cannot tell the difference.</p><p>Here&#8217;s what that looks like. An executive presents a slide showing a specific metric is up eighteen percent. The number came from a natural language query to a BI tool. Three people write it down. After the meeting, an analyst pulls the actual data and gets eleven percent. The discrepancy traces back to the AI tool using a broader event definition than the organization&#8217;s standard taxonomy. The slide has already been forwarded.  The new metric is already in a press release.</p><p>The reactive correction work that follows doesn&#8217;t show up in any project plan. It&#8217;s hard to staff for because it&#8217;s urgent and requires enough context to both reproduce the error and explain it in terms the original audience can trust.</p><p>But framing this as a burden misses the more important point about what the analytical function actually does.</p><p>Our job is not to achieve perfect data before anyone acts. It is to make sure the confidence level of the information matches the weight of the decision. An 80% confident answer, honestly represented, is often exactly right. What is dangerous is a 60% answer dressed up as certainty. That is precisely what AI tools produce when nobody is calibrating the output.</p><p>We are not the team that catches mistakes. We are the team that makes sure the confidence behind a decision matches the actual evidence. Those are different jobs, and the second one is harder to automate.</p><div><hr></div><h2>The jagged frontier problem</h2><p>Most of the public conversation about AI and knowledge work focuses on the average case: AI raises the floor for average work, so average workers are at risk. That&#8217;s roughly true and worth taking seriously.</p><p>But Ethan Mollick at Wharton describes something more specific that I think applies directly here: <a href="https://www.oneusefulthing.org/p/centaurs-and-cyborgs-on-the-jagged">the jagged frontier</a>. AI outperforms expectations on some tasks and falls short on others, and the boundary is not intuitive. You cannot look at a task and reliably predict which side of the line it falls on.</p><p>For product analytics, this means the teams that thrive are not necessarily the ones who adopt AI tools most aggressively. They&#8217;re the ones who develop a calibrated sense of where those tools can be trusted and where they need a human check. That judgment requires deep familiarity with the underlying data, the business context, and the specific ways AI systems fail.</p><p>That is not a skill you can hire in or buy with a tool license. It accumulates over time, in teams that stay close to the data and the decisions simultaneously.</p><p>The <a href="https://papers.ssrn.com/sol3/papers.cfm?abstract_id=4573321">research from Harvard and BCG</a> on AI in knowledge work makes one more point worth sitting with: AI raises the floor for average work dramatically. A mediocre analyst with good AI tools can now produce output that would have required a strong analyst two years ago. What that means for product analytics teams is that the bar is rising, not staying flat. The work that used to differentiate a strong team is now table stakes. The ceiling, the judgment about what question to ask, whether the hypothesis is correctly formed, whether the instrumentation actually captures the behavior you care about, still requires human expertise.</p><p>The answer to &#8220;are we being replaced&#8221; is not yes or no. It&#8217;s: the floor is rising, the bar is rising with it, and the teams that treat that as a clarifying moment rather than a threat are going to be in a fundamentally different position than the ones that wait for someone to tell them what to do.</p><div><hr></div><h2>A note for people earlier in their careers</h2><p>Most of what gets written on this topic assumes you already have organizational standing to implement it. This section is for people who don&#8217;t yet.</p><p>The skill that matters most right now is not tool fluency. It&#8217;s the ability to look at an AI-generated output and ask the right skeptical questions: where did this come from, what assumptions are baked in, and what would have to be true for this to be wrong? That&#8217;s a judgment skill, not a technical one, and it&#8217;s built through practice more than training. The analysts who develop it deliberately, who make a habit of tracing outputs back to their sources and stress-testing conclusions before they circulate, are building something that compounds. The ones who optimize for tool adoption alone are building something that depreciates.</p><p>The bar is rising for everyone. But the ceiling is still human, and it&#8217;s reachable from wherever you&#8217;re starting.</p><div><hr></div><h2>A new identity</h2><p>I&#8217;ve been spending time thinking about how to describe what product analytics teams should be orienting toward, and the frame that keeps coming back is this: calibrators, not perfectionists.</p><p>Perfectionism in analytics manifests as waiting for certainty before acting, building complete frameworks before shipping anything, treating every error as a failure rather than a signal. That instinct made more sense when the data environment was slower and the stakes of each decision were lower.</p><p>Calibration means something different. It means knowing when 80% confidence is enough and when it isn&#8217;t. It means reading the terrain of AI tool outputs well enough to know which ones to trust and which ones to audit. It means being upstream of decisions enough to shape the questions before the wrong answers circulate. It means being honest about uncertainty rather than performing certainty you don&#8217;t have.</p><p>That last piece, honest representation of confidence, is the core of the trustworthiness argument. An organization that knows exactly how confident to be in its data, and acts accordingly, is more trustworthy than one that always claims certainty or always hedges. The calibration is what closes the information gap and makes trustworthiness visible enough for others to act on.</p><p>The analytical function that endures the AI transition is the one that leans into that identity. Less query writing, more hypothesis design. Less dashboard building, more instrumentation strategy. Less explaining results, more auditing the explanations AI generates. And underneath all of it: the ability to break ambiguous problems into testable hypotheses, which is the skill that has always been at the center of the work and becomes more valuable as the volume of AI-generated claims in the environment increases.</p><p>Every one of those claims is either a hypothesis worth testing or a mistake waiting to propagate. The team that knows the difference is the one the organization cannot afford to automate.</p><div><hr></div><h2>Where to start</h2><p>If you&#8217;re trying to figure out what to do with any of this, three things are worth doing now regardless of where your team sits organizationally.</p><p>Audit one AI feature your team currently supports and ask honestly: what would a bad answer look like, and would we know? If the answer is &#8220;we&#8217;d see it in churn eventually,&#8221; that&#8217;s the gap. Work backward from there to what signal you&#8217;d actually need.</p><p>Find the next AI feature on your product roadmap and get into the spec review before the build starts. You don&#8217;t need a formal invitation. Show up with two questions: what does a successful interaction look like, and what would we track to know? That posture, showing up early with measurement questions, is how analytics teams earn the upstream role.</p><p>The next time an AI-generated number circulates in a leadership meeting, trace it. Not to correct it publicly, but to understand the methodology. Build that habit before it&#8217;s urgent. The first time you can say &#8220;I&#8217;ve actually verified that number and here&#8217;s the confidence level&#8221; will be more valuable than any dashboard you&#8217;ve built this year.</p><p>A note on these frameworks: they&#8217;re directional, not proven. The field is genuinely unsettled, and anyone claiming a complete solution to measuring AI answer quality or defining the evolved analytics role is ahead of the evidence. What&#8217;s here is a working model, built from watching these challenges show up in real work. Treat it that way.</p><div><hr></div><h2>The calibration frame</h2><p>The calibration frame changes what you optimize for. Not fewer errors. Not more certainty. A more honest representation of what you actually know, and a clearer signal about where the uncertainty lives. In an environment where AI tools are actively producing the opposite, that honesty is not a soft skill. It is the technical contribution.</p><p>If someone in your organization made a significant decision tomorrow based on an AI-generated insight, would you know? Would you have any way to assess whether the confidence behind that insight matched the weight of the decision? If the answer is no, that&#8217;s where the work starts.</p>]]></content:encoded></item><item><title><![CDATA["I want a job like yours someday" is not a career goal.]]></title><description><![CDATA[Here is how to find one.]]></description><link>https://www.savaged.net/p/i-want-a-job-like-yours-someday-is</link><guid isPermaLink="false">https://www.savaged.net/p/i-want-a-job-like-yours-someday-is</guid><dc:creator><![CDATA[Woodson]]></dc:creator><pubDate>Sat, 04 Apr 2026 17:53:37 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!sJae!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a837fcd-672c-4518-99c1-028e2f796337_838x1248.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Ask any team about what is missing and career growth shows up near the top. It has in every employee survey I have ever read, across companies and industries and team sizes. It is one of the most consistent signals in organizational life, and one of the hardest to actually do something about.</p><p>My version of a career development conversation, for most of my career as a leader, went something like this. I would ask someone where they wanted to be in a few years. They would say something like &#8220;I want a job like yours someday.&#8221; I would nod, try not to let on that this was not actually a useful answer, and we would spend the rest of the time talking about how to get from their current level to the next one.</p><p>Those conversations were not bad. They were just narrow. Almost every one of them was really a scope conversation: how do I get from specialist to manager, or manager to director? Which is fine, except that those immediate scope moves are exactly what a specialist looks like. They signal someone who has done one thing well for a long time and wants more of the same, just bigger. That is not what ambitious careers are built on.</p><p>The deeper problem was that when I tried to suggest lateral moves, people did not know what to do with the advice. &#8220;Take a lateral role&#8221; is vague in the same way &#8220;eat healthier&#8221; is vague. It gestures at the right idea without giving anyone anything to do. And when people said they wanted a job like mine one day, what they usually meant was the pay or the title. Not the specific combination of market experience, discipline breadth, and organizational complexity that actually produces that kind of role.</p><p>Here is what I eventually understood: most people cannot picture what a different version of their career actually looks like. Not because they lack ambition, but because they have no tool for generating options. When you cannot imagine a concrete alternative, deepening what you already know feels like the safest answer. Specialization becomes the default not because it is the right choice, but because it is the only choice that feels visible. They did not have a real target. They had a sentiment, and a comfort zone that looked like a strategy.</p><p>I did not have a better answer for a long time. Then I started showing people my own map, including the gaps. That is when the conversations changed.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sJae!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a837fcd-672c-4518-99c1-028e2f796337_838x1248.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sJae!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a837fcd-672c-4518-99c1-028e2f796337_838x1248.jpeg 424w, https://substackcdn.com/image/fetch/$s_!sJae!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a837fcd-672c-4518-99c1-028e2f796337_838x1248.jpeg 848w, https://substackcdn.com/image/fetch/$s_!sJae!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a837fcd-672c-4518-99c1-028e2f796337_838x1248.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!sJae!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a837fcd-672c-4518-99c1-028e2f796337_838x1248.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sJae!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a837fcd-672c-4518-99c1-028e2f796337_838x1248.jpeg" width="838" height="1248" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6a837fcd-672c-4518-99c1-028e2f796337_838x1248.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1248,&quot;width&quot;:838,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;IMG_7627.jpeg&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="IMG_7627.jpeg" title="IMG_7627.jpeg" srcset="https://substackcdn.com/image/fetch/$s_!sJae!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a837fcd-672c-4518-99c1-028e2f796337_838x1248.jpeg 424w, https://substackcdn.com/image/fetch/$s_!sJae!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a837fcd-672c-4518-99c1-028e2f796337_838x1248.jpeg 848w, https://substackcdn.com/image/fetch/$s_!sJae!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a837fcd-672c-4518-99c1-028e2f796337_838x1248.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!sJae!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a837fcd-672c-4518-99c1-028e2f796337_838x1248.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><p>The map is simple in concept: every role you have ever held, described across a consistent set of dimensions, laid out across time. Here is what mine looks like across 25 years.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dztZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18af4a76-e8d8-4018-8fb9-e5ceda8cf871_2800x1204.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dztZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18af4a76-e8d8-4018-8fb9-e5ceda8cf871_2800x1204.png 424w, https://substackcdn.com/image/fetch/$s_!dztZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18af4a76-e8d8-4018-8fb9-e5ceda8cf871_2800x1204.png 848w, https://substackcdn.com/image/fetch/$s_!dztZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18af4a76-e8d8-4018-8fb9-e5ceda8cf871_2800x1204.png 1272w, https://substackcdn.com/image/fetch/$s_!dztZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18af4a76-e8d8-4018-8fb9-e5ceda8cf871_2800x1204.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dztZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18af4a76-e8d8-4018-8fb9-e5ceda8cf871_2800x1204.png" width="1456" height="626" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/18af4a76-e8d8-4018-8fb9-e5ceda8cf871_2800x1204.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:626,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;e8137731-9fa1-457f-a617-1c4f742dedf6.png&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="e8137731-9fa1-457f-a617-1c4f742dedf6.png" title="e8137731-9fa1-457f-a617-1c4f742dedf6.png" srcset="https://substackcdn.com/image/fetch/$s_!dztZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18af4a76-e8d8-4018-8fb9-e5ceda8cf871_2800x1204.png 424w, https://substackcdn.com/image/fetch/$s_!dztZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18af4a76-e8d8-4018-8fb9-e5ceda8cf871_2800x1204.png 848w, https://substackcdn.com/image/fetch/$s_!dztZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18af4a76-e8d8-4018-8fb9-e5ceda8cf871_2800x1204.png 1272w, https://substackcdn.com/image/fetch/$s_!dztZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18af4a76-e8d8-4018-8fb9-e5ceda8cf871_2800x1204.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I spent the first six years at AutoTrader.com entirely in retail automotive. Seven roles that mostly shifted one or two dimensions at a time. I understood digital retail deeply. I had no real understanding of wholesale automotive, which is where the majority of vehicle transactions actually happen. The vehicle lifecycle does not begin and end at the dealership. I had been missing the most active part of it for six years without knowing it.</p><p>In 2006 I moved to Manheim to work on digital wholesale. It was a scary move. I knew the work would draw on the product management and digital expertise I had built. I also knew some of the leaders there, which helped. But it was a massive change: different market, different customers, different rhythms, different vocabulary for how the business worked.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SJ0O!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fab7ac2-be40-48ec-82eb-5fad3523076e_1344x744.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SJ0O!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fab7ac2-be40-48ec-82eb-5fad3523076e_1344x744.png 424w, https://substackcdn.com/image/fetch/$s_!SJ0O!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fab7ac2-be40-48ec-82eb-5fad3523076e_1344x744.png 848w, https://substackcdn.com/image/fetch/$s_!SJ0O!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fab7ac2-be40-48ec-82eb-5fad3523076e_1344x744.png 1272w, https://substackcdn.com/image/fetch/$s_!SJ0O!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fab7ac2-be40-48ec-82eb-5fad3523076e_1344x744.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SJ0O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fab7ac2-be40-48ec-82eb-5fad3523076e_1344x744.png" width="1344" height="744" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0fab7ac2-be40-48ec-82eb-5fad3523076e_1344x744.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:744,&quot;width&quot;:1344,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:121485,&quot;alt&quot;:&quot;0d9d825c-2f00-4b80-a0b2-47ca5267627b.png&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;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="0d9d825c-2f00-4b80-a0b2-47ca5267627b.png" title="0d9d825c-2f00-4b80-a0b2-47ca5267627b.png" srcset="https://substackcdn.com/image/fetch/$s_!SJ0O!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fab7ac2-be40-48ec-82eb-5fad3523076e_1344x744.png 424w, https://substackcdn.com/image/fetch/$s_!SJ0O!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fab7ac2-be40-48ec-82eb-5fad3523076e_1344x744.png 848w, https://substackcdn.com/image/fetch/$s_!SJ0O!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fab7ac2-be40-48ec-82eb-5fad3523076e_1344x744.png 1272w, https://substackcdn.com/image/fetch/$s_!SJ0O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fab7ac2-be40-48ec-82eb-5fad3523076e_1344x744.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Five dimensions shifted simultaneously. A framework I did not yet have would have flagged this as high risk. It was. The adjustment period was real. But it was also the most productive growth period of my career. Eight years later I had added analytics, data governance, P&amp;L ownership, people management at scale, and an entirely new business domain to a foundation that had been almost entirely product and operations. None of that was available to me inside retail.</p><p>And then there is the dimension that has never moved.</p><p>Industry is the one entry on my map that looks identical from 2000 to today. Everything else has shifted. This one has not. I did not set out after college to spend 25 years in automotive. But I have found the industry more genuinely fascinating than I expected, and more meaningful. Dealerships play important roles in their local communities, which sounds like a talking point until you actually spend time with dealers and realize it is just true. Trust is a persistent complaint about the industry, which means the work of building more consistency and transparency is a problem worth solving. One that helps people I know.</p><p>Still: I sit with that dimension honestly. It may be the right choice. It may be expertise I have rationalized into a reason not to try something else. Both things can be true simultaneously.</p><p>Showing that map to someone, including the uncomfortable part at the end, changed what they were willing to say in response. The conversation stopped being advice from the top. It became two people looking honestly at what careers actually ask of people over time. Nobody feels coached when a senior leader is presenting frameworks at them. People feel something different when a senior leader is thinking out loud alongside them.</p><div><hr></div><p>Once you have a map, the practical constraint is simple: aim to change one to three dimensions in any given move.</p><p>The dimensions group into three categories. Some describe <strong>context</strong> or  <em>where you operate</em>: what market you are in, who your customers are, the type and size of company, whether the organization is in startup mode or mature. Some describe <strong>role</strong> or <em>how you operate</em>: whether you are an individual contributor or managing a team, whether your work faces internal or external stakeholders, the craft you practice, whether you are building something new or running something that already exists. And some describe <strong>scope</strong> or <em>the scale of what you operate</em>: your title, team size, budget ownership, how complex and ambiguous the organizational environment is.</p><p>Change too few of those dimensions and you are not growing. Change too many and you lose the ability to bring proven skills to the new situation. You go from being someone with relevant adjacent experience to a career changer asking the organization to take a bet. There is also a confidence argument. When a new opportunity feels daunting, and most good new opportunities should, it helps to be able to name specifically what is new alongside the many things that are not. You are not starting over. You are moving your position in a space you have been navigating for years.</p><p>The scope dimensions deserve a specific note because they are where most people focus and where they have the least actual control. Title, team size, budget ownership. Organizations decide when they are ready to expand your scope. What you can control is where you operate and how you operate. Doing that work well is what builds the case for scope to follow. Scope is not a reward for tenure. It is what happens when an organization has seen enough of you in enough different situations to trust you with more.</p><p>I watch people get genuinely frustrated when a company transitioning from hyper-growth to maturity has fewer open promotions than it did two years ago. A year or two in the same role starts to feel stagnant. The reframe I try to offer: a lateral move is not a failure to move up. It is an investment in having more to offer when the scope opportunity arrives. The people who get promoted and stick are the ones who earned it by building real range. The ones who get promoted by waiting often struggle once they get there or later feel stuck in that single area.</p><div><hr></div><p>The best proof I have that this works as a coaching tool came from a team member who had spent more than a decade becoming a genuine specialist in consumer web behavior. He had examined that space deeply and built real expertise. The problem was that he had done it for a long time and could not picture what a pivot looked like. The decade of depth felt like it was holding him in place.</p><p>We worked through the dimension map together. He was looking at a move toward managing our event stream data from applications. Different customer (internal teams instead of consumers), different domain, different immediate problems to solve. It sounded like a significant change.</p><p>But when we mapped the dimensions, most of them did not change. It was still product management. It still required a deep understanding of data behavior and data consumers. The craft was the same. The organizational context was the same. The industry was the same. What shifted was the customer type and the specific domain. One or two dimensions, not ten.</p><p>That reframe made the move less frightening. It also gave him something specific to say in the interview, because he could name exactly what transferred and exactly what was new. He made the move. The early returns are real: new enthusiasm, new things being learned, a reinvigorated version of skills he had started to take for granted.</p><p>That is what this is supposed to look like.</p><div><hr></div><p>If you want to try this yourself, start simple. Write down your current role across a handful of dimensions: what market or industry context you are in, who your customers are, what your core craft is, whether you are building something new or running something established, where you sit on the individual contributor to people manager spectrum.</p><p>Then look at what has stayed the same across every role you have ever held.  Ask if that matters for where you want to go.</p><p>Remember, that list is not a record of your limitations. It is your option generator. Pick one or two dimensions you have never moved and ask what a role looks like that shifts those while keeping everything else roughly intact. Most people find the search space opens up considerably once they have a map to work from.</p><p>Then bring it into your next one on one. Not as a completed assignment, but as a working draft. Let the conversation be about filling it in together. The point is not to arrive with answers. It is to have a more specific conversation than &#8220;I want a job like yours someday,&#8221; and to let that specificity do the work that years of vague career advice could not.</p>]]></content:encoded></item><item><title><![CDATA[Our offshore team had a perfect delivery record. That was the problem.]]></title><description><![CDATA[What a trip to Vietnam taught me about offshore teams that two years of status calls never did.]]></description><link>https://www.savaged.net/p/our-offshore-team-had-a-perfect-delivery</link><guid isPermaLink="false">https://www.savaged.net/p/our-offshore-team-had-a-perfect-delivery</guid><dc:creator><![CDATA[Woodson]]></dc:creator><pubDate>Mon, 16 Mar 2026 17:58:15 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!JmBd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7502f8b4-9025-48b5-8f0c-02ba94876c44_832x1248.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I was sitting across from a senior engineer in Ho Chi Minh City when he told me, without any particular drama, that doing good work for our company mattered to him because it was a reflection of what Vietnam could do on the world stage. Not the company he worked for. Not his career. <em>The country.</em></p><p>I nodded and said something appropriately appreciative and moved on with the conversation. But I have not stopped thinking about that sentence since I got home, because once I understood what it meant, it reframed almost everything I thought I knew about how offshore partnerships actually function.</p><p>I had been overseeing a software delivery partnership with a team in Vietnam for long enough to have opinions about it. We had regular meetings. We tracked delivery metrics. We sent requirements documents and received working software in return. The partnership looked functional from where I sat, which is exactly the problem I flew twelve hours to investigate.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JmBd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7502f8b4-9025-48b5-8f0c-02ba94876c44_832x1248.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JmBd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7502f8b4-9025-48b5-8f0c-02ba94876c44_832x1248.jpeg 424w, https://substackcdn.com/image/fetch/$s_!JmBd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7502f8b4-9025-48b5-8f0c-02ba94876c44_832x1248.jpeg 848w, https://substackcdn.com/image/fetch/$s_!JmBd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7502f8b4-9025-48b5-8f0c-02ba94876c44_832x1248.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!JmBd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7502f8b4-9025-48b5-8f0c-02ba94876c44_832x1248.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JmBd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7502f8b4-9025-48b5-8f0c-02ba94876c44_832x1248.jpeg" width="832" height="1248" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7502f8b4-9025-48b5-8f0c-02ba94876c44_832x1248.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1248,&quot;width&quot;:832,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;IMG_7611.jpeg&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="IMG_7611.jpeg" title="IMG_7611.jpeg" srcset="https://substackcdn.com/image/fetch/$s_!JmBd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7502f8b4-9025-48b5-8f0c-02ba94876c44_832x1248.jpeg 424w, https://substackcdn.com/image/fetch/$s_!JmBd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7502f8b4-9025-48b5-8f0c-02ba94876c44_832x1248.jpeg 848w, https://substackcdn.com/image/fetch/$s_!JmBd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7502f8b4-9025-48b5-8f0c-02ba94876c44_832x1248.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!JmBd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7502f8b4-9025-48b5-8f0c-02ba94876c44_832x1248.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>The first thing I got wrong was assuming honest feedback would be easy to get</strong></h2><p>I prepared carefully before the trip. I built a conversation guide. I thought through what I wanted to learn and, more importantly, how I needed to ask in order to get honest answers from a team whose culture does not easily produce criticism in the presence of a senior visitor.</p><p>The first meeting confirmed what I had prepared for: every question about the partnership came back positive. Everything was working well. Requirements were clear. Communication was good. The team was happy. It was, in other words, exactly the kind of feedback a senior visitor receives when the team has concluded, probably correctly, that honesty carries more risk than a pleasant non-answer.</p><p>I had anticipated this, which is why the preparation mattered. The approach that eventually worked was to stop asking people to evaluate the partnership and start asking them to describe systems. Not &#8220;is the requirements process working&#8221; but &#8220;walk me through what happens from the moment a requirement arrives to the moment a spec goes to an engineer.&#8221; Not &#8220;do you feel you can raise concerns&#8221; but &#8220;when something is ambiguous and you can&#8217;t get clarification quickly, what do you actually do.&#8221; Questions about systems rather than people made honesty feel safer, because the person wasn&#8217;t criticizing anyone, they were just describing a process. That shift in framing was the most important preparation I did.</p><p>What came out of those conversations was specific and actionable. Two things surprised me enough that I want to share them.</p><h2><strong>Cars are not cars</strong></h2><p>Picture a woman in her late thirties. She lives forty minutes outside a mid-sized city in a state where public transit means a bus that runs twice a day. She works a job that requires her to be there at seven in the morning. She has two kids in two different schools. She just got a repair estimate on her car that is eight hundred dollars she does not have, from a dealer whose service department is running three weeks behind. The car is how she does everything. Without it, in a very literal sense, she cannot work, her kids cannot get to school, and a doctor&#8217;s appointment becomes a logistical problem she may not be able to solve. She is not shopping for transportation. She is protecting the infrastructure of her entire life.</p><p>The team in Vietnam did not have a feel for that person. They understood cars as products. They understood vehicle service as a transaction. What they did not have, and could not have without living in a market built entirely around car dependency, was an intuitive sense of what is at stake for the customer on the other side of the software they were building.</p><p>Vietnam&#8217;s primary personal transport is the scooter. Ho Chi Minh City has something like nine million of them (and they all cross the road at the same time). The relationship between a person and their scooter is coherent and real. In many structural ways it mirrors car ownership in the United States. Close enough that it&#8217;s easy to assume the understanding transfers. It doesn&#8217;t, because the stakes are not remotely similar. Nobody&#8217;s ability to keep their job depends on whether their scooter starts tomorrow.</p><p>I had never made any of this explicit in a requirements document. Why would I? It is so obvious to anyone who has spent time in car-dependent America that it doesn&#8217;t feel like context worth providing. It just feels like reality.</p><p>And here is the thing that has been bothering me since I got home. I flew to Vietnam to address a context gap on the other side of the world, and in doing so I realized the same gap exists three desks away from me. I have colleagues who have spent their entire careers in cities like New York City or Washington, D.C. where car ownership is optional. These are people who take the subway to work and couldn&#8217;t tell you the last time they needed a car to do anything important. They understand the market we serve intellectually. They do not feel it the way someone who grew up where the nearest grocery store is fourteen miles away feels it. The offshore team&#8217;s gap was more visible and more complete. But the domestic version has been sitting right next to me, unaddressed, because the people who have the intuition don&#8217;t think to say it and the people who need it don&#8217;t know to ask. Neither group knows the other exists.</p><p>The fix is not a training program. It is a document, written in plain language, that explains what a car means in the markets this industry serves. Not a product spec. A human document about what is actually at stake for the person in the dealership and why. That document would be useful to our offshore partners. It would probably be useful to some of our own people too. We just haven&#8217;t written it because it has never occurred to anyone that it needed to be written.</p><h2><strong>The motivation structure is not what I expected, and that&#8217;s the risk</strong></h2><p>Back to the engineer and what he said about national pride.</p><p>The company I visited is one of Vietnam&#8217;s largest technology companies. They have a stated mission that includes, in real terms, putting Vietnam on the global technology map. This is not empty corporate language to the people who work there. The engineer who said what he said was not performing company values. He meant it personally. Shipping good software for an American company was, in his mind, evidence that Vietnam belonged in the conversation with the world&#8217;s leading technology organizations.</p><p>That is a remarkable source of motivation. The team I met was more appreciative, more flexible, more willing to go the extra mile than most domestic teams I have managed. There was a quality of investment in the work that I noticed almost immediately. By the end of the first day I had started to understand where it came from. By the end of the trip I understood why it was the most important management problem I had encountered in years.</p><p>A team that cares this deeply about the work, and that is also culturally conditioned not to push back on senior direction or surface problems upward, will work harder and longer in the wrong direction without telling you. The enthusiasm and the silence come from the same instinct. If doing well for your company is connected to your country&#8217;s reputation, then admitting that the requirements are unclear, or that the pace is unsustainable, or that the work has been going the wrong direction for two weeks, carries a weight that goes beyond the professional. You don&#8217;t say that. You work harder.</p><p>When I asked directly about work-life balance and weekly hours, I got the same polished deflection I had received earlier about partnership health. Fine. Good. No problems. I had expected this and didn&#8217;t push on it directly. Instead I paid attention to what I could observe. Engineers working hours that would be considered unusual by any domestic standard. A willingness to take meetings and respond to messages at times that suggested the boundary between work and not-work had largely dissolved. Significant time spent outside our project on internal company initiatives, stacked on top of their primary commitments. And then, at lunchtime on one of the days, I walked through the office and saw engineers asleep at their desks.</p><p>I learned later that desk sleeping at lunch is not uncommon in Vietnamese office culture, and I want to be careful not to overread it. But in that moment it forced a question I hadn&#8217;t planned to ask: was the leadership team aware of how their people were spending their time? The answer, when I found a way to ask it indirectly through a systems framing, was illuminating. The leadership could speak fluently to delivery metrics. They could not speak fluently to sustainability. The metrics were the point. The metrics were perfect.</p><p>That is when I understood the real problem. The team had perfect delivery records on our account. Every commitment met. Every sprint completed. No missed targets. On our side, we consider it a sign of healthy estimation when teams miss some commitments. A perfect record doesn&#8217;t mean the team is exceptionally capable. It usually means the estimates are padded, the scope is being quietly dropped, or the team is absorbing the gap through hours that don&#8217;t show up anywhere. For this team, a missed commitment was apparently unacceptable in a way we had never intended and never communicated. We don&#8217;t hold our own domestic teams to that standard. We wouldn&#8217;t want to. But nobody had ever told them that.</p><p>The team was optimizing with tremendous effort and genuine pride for a signal we had never meant to send. They were building in the dark on ambiguous requirements rather than waiting for clarification, because waiting felt like underdelivering. They were working hours that would concern any manager who knew about them, in service of metrics we would have been happy to see them miss. None of this was in any status report. None of it was visible from Atlanta. All of it became visible the moment I was in the room asking about systems instead of satisfaction.</p><p>This means that the positive signals most offshore partnership managers rely on are not reliable indicators of partnership health when the team is motivated this way. High responsiveness, consistent delivery, low friction, absence of complaints: all of these are exactly what a deeply motivated, culturally deferential team produces regardless of what is actually happening underneath. You cannot manage this passively. You have to ask directly whether the pace is sustainable, whether commitments are being met through hours rather than efficiency, and whether there is anything the team has wanted to raise but hasn&#8217;t found a safe moment for. And you have to ask in a way that makes honesty genuinely feel safe, which is a different skill from simply asking the question.</p><h2><strong>The question I came home with</strong></h2><p>Both observations come down to the same thing: context that is obvious to the people who have it does not travel on its own. Car culture context doesn&#8217;t appear in a requirements document. The psychological reality of a motivated offshore team doesn&#8217;t surface in a status call. Someone has to go get it, and then figure out how to build structures that make the transfer reliable rather than dependent on a senior leader periodically flying to the other side of the world.</p><p>I came home with specific things to fix. The requirements process. The feedback loops. What we actually mean when we talk about delivery commitments. The domain knowledge everyone on our side takes for granted. These are all addressable, and we are working on them.</p><p>But the harder question is still sitting with me, and I don&#8217;t have a clean answer to it. The engineer who said the work was a matter of national pride is still building software for our company. He is doing it with a level of investment and personal commitment that I suspect most of the people on my side of the partnership don&#8217;t know exists. He has attached something that matters to him deeply to the quality of decisions being made in meetings he will never be in, about a product roadmap he has no say in, for users in a country he may never visit.</p><p>What do you owe someone in that position? What does it mean to be a responsible steward of that kind of trust when most of the people in your organization don&#8217;t even know it&#8217;s been extended to them?</p><p>I don&#8217;t think the answer is complicated in principle. You go. You ask questions designed to make honesty feel safe. You tell them what their work actually does in the world. You fix the things that are broken on your side of the relationship. You treat the metrics skeptically instead of gratefully.</p><p>What I know for certain is that you cannot do any of it from Atlanta.</p>]]></content:encoded></item><item><title><![CDATA[We Built Lego Bricks for People. That Was the Wrong Customer.]]></title><description><![CDATA[The case for reusable code just collapsed. The case for composable architecture just got stronger.]]></description><link>https://www.savaged.net/p/we-built-lego-bricks-for-people-that</link><guid isPermaLink="false">https://www.savaged.net/p/we-built-lego-bricks-for-people-that</guid><dc:creator><![CDATA[Woodson]]></dc:creator><pubDate>Sat, 28 Feb 2026 21:18:15 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Kpr-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28e0dee8-7ec0-4a04-aeea-0d38cf5f028a_1168x784.heic" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Not long ago, our team was running our first experiments with spec-driven development. We wrote plain English requirements into a structured specification and watched the computer generate working code almost immediately. It was the kind of moment that stops you mid-thought.</p><p>My first reaction was the obvious one: <em>this is fast</em>. My second reaction was the one that stuck: <em>if code can be generated this easily from a spec, does the code itself matter anymore?</em> That question pulled a thread that unraveled something we had spent years building carefully: our composability strategy.</p><div><hr></div><h2>The Original Argument</h2><p>The composability argument we made, and the one most product and data organizations made, rested on a simple economic premise: writing code is expensive, so write it once and reuse it everywhere.</p><p>You simply need to build one pricing service, one inventory availability service, and one consumer identity resolution service. Now any product team, any new solution, any new customer use case can assemble these blocks into something new without rebuilding from scratch. Velocity goes up, duplication goes down, and everyone wins.</p><p>This is the Lego metaphor. You invest in a good set of bricks so that builders can make anything they want, faster.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Kpr-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28e0dee8-7ec0-4a04-aeea-0d38cf5f028a_1168x784.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Kpr-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28e0dee8-7ec0-4a04-aeea-0d38cf5f028a_1168x784.heic 424w, https://substackcdn.com/image/fetch/$s_!Kpr-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28e0dee8-7ec0-4a04-aeea-0d38cf5f028a_1168x784.heic 848w, https://substackcdn.com/image/fetch/$s_!Kpr-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28e0dee8-7ec0-4a04-aeea-0d38cf5f028a_1168x784.heic 1272w, https://substackcdn.com/image/fetch/$s_!Kpr-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28e0dee8-7ec0-4a04-aeea-0d38cf5f028a_1168x784.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Kpr-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28e0dee8-7ec0-4a04-aeea-0d38cf5f028a_1168x784.heic" width="1168" height="784" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/28e0dee8-7ec0-4a04-aeea-0d38cf5f028a_1168x784.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:784,&quot;width&quot;:1168,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:150923,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.savaged.net/i/189183678?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28e0dee8-7ec0-4a04-aeea-0d38cf5f028a_1168x784.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Kpr-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28e0dee8-7ec0-4a04-aeea-0d38cf5f028a_1168x784.heic 424w, https://substackcdn.com/image/fetch/$s_!Kpr-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28e0dee8-7ec0-4a04-aeea-0d38cf5f028a_1168x784.heic 848w, https://substackcdn.com/image/fetch/$s_!Kpr-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28e0dee8-7ec0-4a04-aeea-0d38cf5f028a_1168x784.heic 1272w, https://substackcdn.com/image/fetch/$s_!Kpr-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28e0dee8-7ec0-4a04-aeea-0d38cf5f028a_1168x784.heic 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>The mistake was hiding in plain sight because we were optimizing for human assembly speed. We assumed the bottleneck was the cost of generating an implementation. And for more than twenty-five years, that assumption was correct. Then it stopped being correct almost overnight.</p><div><hr></div><h2>The Assumption That Broke</h2><p>Don&#8217;t worry, AI code generation has not made composability less important. It has, however, made our original justification for composability mostly irrelevant.</p><p>When AI can generate a working implementation from a well-written specification in minutes, the &#8220;build once, reuse many times&#8221; argument loses most of its force. The bottleneck is no longer the keystrokes. It is now the understanding.  Domain knowledge, design decisions, and intent matter.</p><p>The reframe that changed how I think about this is straightforward:</p><blockquote><p>Code is increasingly the <em>output</em> of your strategy, not the artifact of it. The specification, the interface contract, and the bounded context are the durable things. The implementation is disposable.</p></blockquote><p><a href="https://www.thoughtworks.com/about-us/news/2025/thoughtworks-tech-radar-33-rapid-ai">ThoughtWorks&#8217; 2025 Technology Radar</a> specifically identifies spec-driven development as an emerging standard where the specification is the maintained artifact and code is generated and regenerated from it. <a href="https://a16z.com/nine-emerging-developer-patterns-for-the-ai-era/">Andreessen Horowitz</a> described the shift bluntly that code is becoming &#8220;more like a compiled artifact than a manually authored source.&#8221;</p><p>If that is true, and the evidence says it increasingly is, then a composability strategy organized around code reuse is optimizing for the wrong constraint.</p><div><hr></div><h2>The New Customer for Your Architecture</h2><p>The primary consumer of your composable interfaces is no longer a human developer. It is an AI agent.</p><p>Anthropic&#8217;s Model Context Protocol (MCP), Google&#8217;s Agent-to-Agent Protocol, and the <a href="https://www.businesswire.com/news/home/20250923902448/en/Snowflake-Salesforce-dbt-Labs-and-More-Revolutionize-Data-Readiness-for-AI-with-Open-Semantic-Interchange-Initiative">Open Semantic Interchange initiative</a> (backed by Snowflake, Salesforce, dbt Labs, and a dozen others as of late 2025) are all establishing standards for how AI agents discover, invoke, and compose over well-defined service interfaces. These are composability standards built for machine consumption, not human convenience.</p><p>When an AI agent tries to answer a business question, it does not read your documentation or intuit your domain model. It hits your interfaces. When those interfaces are clean, bounded, and semantically rich, the agent produces correct, reliable output. If they are ambiguous, monolithic, or semantically thin, the agent hallucinates. <a href="https://www.prnewswire.com/news-releases/ox-report-ai-generated-code-violates-engineering-best-practices-undermining-software-security-at-scale-302592642.html">Research from Apiiro</a> quantified a 153% increase in design problems in AI-generated code, correlating directly with architectures that lack clear boundaries. Not syntax errors&#8230; design problems.</p><p>Your composable architecture used to be a developer experience investment. It is now an AI reliability investment.</p><div><hr></div><h2>What Changes and What Stays the Same</h2><p>When I stress-tested our original strategy against this, a new purpose emerged.</p><p><strong>What we were right about:</strong> Bounded contexts, API-first design, and separation of concerns are more important than ever (just not because they help developers assemble faster). Instead, they help AI agents operate correctly. <a href="https://namin.seas.harvard.edu/pubs/lmpl-modularity.pdf">Harvard researchers published experimental evidence in 2025</a> showing that LLMs without architectural constraints produce &#8220;architectural mimicry without adherence&#8221; (code that looks modular but violates boundaries internally). With enforced constraints, output quality improves dramatically. The boundary is a correctness mechanism as much as it is an organizational one.</p><p><strong>What we were optimizing for incorrectly:</strong> Code-level reuse metrics (such as: how many times a module gets called or how much duplication got eliminated), are the wrong scorecard now. The better metric is interface stability.  You might consider looking at how rarely your contracts change, and how many different consumers, (both human and AI) can compose against them without modification.</p><p><strong>What we were missing entirely:</strong> Semantic layers. If your domain definitions (what a &#8220;customer,&#8221; a &#8220;price,&#8221; a &#8220;transaction&#8221; means in your business) live inside monolithic systems or under-documented schemas, AI agents cannot reliably access them. The OSI initiative exists precisely because this gap is universal. Your semantic layer is no longer a BI convenience that belongs in debates with human analysts. It is the composable interface your AI strategy now requires.</p><div><hr></div><h2>Where This Lands</h2><p>Old composability thesis: Build reusable blocks so humans can assemble solutions faster.</p><p>New composability thesis: Build governed interfaces so both humans and machines can compose reliably against your platform.</p><p>The blocks are still there and the investment in modularity is still justified. But the customer has changed, the scorecard has changed, and the artifacts that matter have changed. The specification is the new source code, and the semantic layer is the new infrastructure.</p><div><hr></div><h2>What To Do About It</h2><h3>If you&#8217;re a product or business leader</h3><p><strong>Audit what your composability investment is actually optimizing for.</strong> Pull up the original business case or reconstruct it. If the core argument was &#8220;build once, reuse everywhere to accelerate development,&#8221; that argument has weakened significantly. If it was &#8220;govern our platform so we know what&#8217;s running and can enforce standards,&#8221; that argument has strengthened. Know which camp you&#8217;re in before deciding what to change.</p><p><strong>Ask your team one question:</strong> &#8220;If an AI agent needed to answer a business question using our platform today, what would it hit?&#8221; Would it find clean, bounded, semantically defined interfaces or raw schemas it has to guess the meaning of? The answer reveals more about your AI readiness than any roadmap review.</p><p><strong>Reframe &#8220;reuse&#8221; in your investment language.</strong> If your teams are still being measured on module reuse rates or duplication reduction, those metrics will steer them wrong. The goal is no longer avoiding redundant code. It is ensuring your domain knowledge is expressed in stable, machine-readable forms. Fund interface governance the way you used to fund shared libraries.</p><h3>If you&#8217;re a data practitioner</h3><p><strong>Treat your domain definitions as versioned, governed artifacts rather than documentation.</strong> Whatever canonical concepts power your business (your &#8220;customer,&#8221; your &#8220;deal,&#8221; your &#8220;price&#8221;), those need to exist as machine-readable, authoritative specifications. A wiki page is not enough anymore. If an AI agent cannot programmatically discover what your organization means by a core concept, that gap will show up as hallucinations in production.</p><p><strong>MCP connectivity is table stakes. Semantics is the real problem.</strong> By mid-2025, every major data warehouse had shipped or announced Model Context Protocol support, so connectivity is no longer the gap. The problem is that MCP gives AI agents a door into your platform, but if your semantic definitions are thin or missing, the agent walks into an unlabeled warehouse. A protocol without semantics is just faster confusion at scale. The investment that matters is not &#8220;can an agent reach our data&#8221; but &#8220;when it does, does it find authoritative definitions of what that data means.&#8221; Most teams are not having that conversation yet.</p><p><strong>Shift your architecture metrics from reuse to stability.</strong> Count how rarely your interfaces change and how many consumers can compose against them without modification. A stable, well-specified interface an AI agent can reliably invoke is worth more than a cleverly reused implementation. That reorientation sounds subtle, but it will change which technical decisions you advocate for.</p><div><hr></div><p>Composability was never really about the bricks. It was about making complex systems understandable, governable, and changeable. AI has made that mission more urgent. We just needed to update our mental model of who is doing the assembling.</p>]]></content:encoded></item><item><title><![CDATA[Why Your Data Governance Program is Probably Backwards]]></title><description><![CDATA[How we built AI-ready data by starting with business problems instead of policies]]></description><link>https://www.savaged.net/p/why-your-data-governance-program</link><guid isPermaLink="false">https://www.savaged.net/p/why-your-data-governance-program</guid><dc:creator><![CDATA[Woodson]]></dc:creator><pubDate>Sat, 21 Feb 2026 17:54:13 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!WSp1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fdc6c25-6c96-4cd2-947d-4e9817df979e_784x1168.heic" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Most data governance programs start with the same playbook: hire a team, establish policies, create data dictionaries, build metadata catalogs, and then&#8230; wait for people to care. They don&#8217;t. The governance team spends years documenting data that nobody uses while the business builds workarounds.</p><p>We tried something different. We started with the business problems and worked backwards. Specifically, we started with AI and ML use cases that required clean, structured, connectable data across domains. That framing changed everything.</p><h2>The Insight That Changed Everything</h2><p>Here&#8217;s what we realized: data governance doesn&#8217;t fail because organizations lack frameworks or tools. It fails because nobody can articulate why it matters. When you ask an engineering team to fill out metadata forms, their first question is &#8220;why should I care?&#8221; And &#8220;because it&#8217;s policy&#8221; is not a compelling answer.</p><p>But &#8220;because we need structured, connectable data to train ML models for these five initiatives the CEO cares about&#8221;? That&#8217;s a different conversation.</p><p>So we flipped it. Instead of asking &#8220;what governance do we need?&#8221;, we asked &#8220;what AI and analytics capabilities are we trying to build, and what&#8217;s preventing our data from supporting them?&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WSp1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fdc6c25-6c96-4cd2-947d-4e9817df979e_784x1168.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WSp1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fdc6c25-6c96-4cd2-947d-4e9817df979e_784x1168.heic 424w, https://substackcdn.com/image/fetch/$s_!WSp1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fdc6c25-6c96-4cd2-947d-4e9817df979e_784x1168.heic 848w, https://substackcdn.com/image/fetch/$s_!WSp1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fdc6c25-6c96-4cd2-947d-4e9817df979e_784x1168.heic 1272w, https://substackcdn.com/image/fetch/$s_!WSp1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fdc6c25-6c96-4cd2-947d-4e9817df979e_784x1168.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WSp1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fdc6c25-6c96-4cd2-947d-4e9817df979e_784x1168.heic" width="784" height="1168" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4fdc6c25-6c96-4cd2-947d-4e9817df979e_784x1168.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1168,&quot;width&quot;:784,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:200964,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.savaged.net/i/188064886?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fdc6c25-6c96-4cd2-947d-4e9817df979e_784x1168.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!WSp1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fdc6c25-6c96-4cd2-947d-4e9817df979e_784x1168.heic 424w, https://substackcdn.com/image/fetch/$s_!WSp1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fdc6c25-6c96-4cd2-947d-4e9817df979e_784x1168.heic 848w, https://substackcdn.com/image/fetch/$s_!WSp1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fdc6c25-6c96-4cd2-947d-4e9817df979e_784x1168.heic 1272w, https://substackcdn.com/image/fetch/$s_!WSp1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fdc6c25-6c96-4cd2-947d-4e9817df979e_784x1168.heic 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Starting With the End in Mind</h2><p>We identified about ten high-impact use cases the business actually wanted to build. Things like AI-powered recommendations, inventory optimization, demand forecasting. Real initiatives with executive sponsorship and budget. Then we mapped out the data each use case needed.</p><p>That&#8217;s when things got interesting. As we traced through data requirements, we started seeing patterns. The same data families kept surfacing across multiple use cases. Customer data was needed for six different initiatives. Product catalog data showed up in eight. These weren&#8217;t arbitrary governance targets. These were genuine bottlenecks.</p><p>But here&#8217;s what really mattered: these use cases didn&#8217;t just need customer data or product data in isolation. They needed to connect customers to products, products to inventory, inventory to transactions, transactions back to customers. AI models need to understand relationships across domains. A recommendation engine can&#8217;t work if you can&#8217;t reliably link a customer&#8217;s purchase history to product attributes. Demand forecasting breaks if inventory IDs don&#8217;t map consistently to product catalogs.</p><p>The value wasn&#8217;t in having clean data in individual silos. The value was in having structured, connectable data that could flow across domain boundaries. That meant standardized identifiers, consistent schemas, and clear relationships between entities.</p><p>We built what we called a &#8220;data domain map,&#8221; essentially a comprehensive view of all the data families across the enterprise. Then we overlaid each use case&#8217;s data needs onto this map. Suddenly we could see which domains mattered most and, critically, which connections between domains were blocking the most value.</p><h2>Finding the Real Problems</h2><p>The next step was identifying gaps. For each high-priority use case, we catalogued the specific data issues preventing it from succeeding. Not theoretical data quality problems, but concrete blockers to AI and ML capabilities.</p><p>For a cross-selling initiative, we found specific issues: customer duplicates across regions, no structured product catalog, missing relationship data, incomplete customer hierarchies. Each problem had a clear connection to why the use case couldn&#8217;t deliver value. But more importantly, each problem represented a failure of data connectedness. You can&#8217;t train a recommendation model when the same customer appears three times with different IDs, or when products lack standardized attributes that enable feature engineering.</p><p>We repeated this across all priority use cases. The backlog of data issues grew, but it was a prioritized backlog based on what was actually blocking AI capabilities.</p><p>Then we aggregated. When the same data family appeared across multiple high-value use cases, it jumped to the top of our governance roadmap. When a data domain only impacted one low-priority initiative, it stayed low.</p><p>What emerged was a clear picture: the highest-value governance work wasn&#8217;t about perfecting individual datasets. It was about establishing the structured foundations and cross-domain connections that AI use cases depend on: Standardized entity IDs. Consistent timestamp formats. Clear schema contracts between producers and consumers. The boring infrastructure work that makes automated systems actually work.</p><h2>Governance as Product Development</h2><p>Once we knew which data mattered and why, we could actually design governance initiatives that people might care about.</p><p>For customer data, we weren&#8217;t asking teams to &#8220;improve data quality&#8221; in the abstract. We were asking them to help ship five specific AI-powered business initiatives worth millions in potential revenue. And we could be explicit about what &#8220;AI-ready&#8221; meant: unique identifiers that enable entity resolution across systems, standardized schemas that support feature engineering, temporal consistency that enables time-series modeling, and clear lineage that makes outputs explainable.</p><p>That&#8217;s a conversation engineering teams will engage with. They understand why ML models need structured inputs. They get why inconsistent data types break automated pipelines. They see the connection between good data practices and being able to ship innovative capabilities.</p><p>We built the governance roadmap directly in sync with the use case roadmap. As each wave of AI and analytics initiatives launched, we&#8217;d remediate the specific data structure and connectivity issues blocking them. The governance work had a direct line of sight to business value, and crucially, a timeline that matched business needs.</p><p>This meant we could finally answer the &#8220;what&#8217;s in it for me&#8221; question that kills most governance programs. For the business: your initiatives actually ship. For engineering: we&#8217;ll reduce the analyst support burden and enable AI innovation, not add bureaucratic overhead. For executives: measurable ROI, not faith-based initiatives.</p><h2>What This Actually Looks Like</h2><p>The practical implementation had four phases:</p><ol><li><p><strong>Establish the domain map</strong>. Get agreement on how the enterprise&#8217;s data landscape breaks down. This becomes the shared vocabulary.</p></li><li><p><strong>Map use case data needs</strong>. For each priority initiative, trace through every data family it depends on. Be specific.</p></li><li><p><strong>Identify gaps</strong>. Document the concrete data issues blocking each use case. Rate the severity for that specific initiative.</p></li><li><p><strong>Shape initiatives</strong>. Aggregate the gaps, prioritize by business impact, and build focused governance initiatives that remediate the highest-value problems first.</p></li></ol><p>We didn&#8217;t try to govern all data at once. We focused governance effort where it would unlock the most business value, then expanded systematically.</p><h2>What AI-Ready Actually Means in Practice</h2><p>Here&#8217;s where the rubber meets the road. &#8220;AI-ready data&#8221; isn&#8217;t a vague aspiration. It has specific, concrete requirements:</p><p><strong>Structured and typed</strong>. Free text fields and semi-structured blobs don&#8217;t work for most ML models. You need defined schemas with consistent data types. A &#8220;price&#8221; field that&#8217;s sometimes a number, sometimes a string, sometimes includes currency symbols breaks automated pipelines.</p><p><strong>Standardized identifiers across domains</strong>. This is the connectedness requirement. Every customer needs a consistent ID that links their transactions, their product views, their support interactions. Every product needs an ID that connects inventory levels to catalog details to sales history. Without this, you can&#8217;t build features that span domains.</p><p><strong>Temporal consistency</strong>. AI models often need to understand sequences and time-based patterns. That requires timestamps in consistent formats (UTC, ISO 8601), clear &#8220;created_at&#8221; and &#8220;updated_at&#8221; fields, and the ability to reconstruct state at any point in time.</p><p><strong>Clear lineage and transformation logic</strong>. For any derived field or calculated metric, you need to know where it came from and how it was computed. This supports both model debugging and regulatory requirements around explainability.</p><p><strong>Schema contracts between producers and consumers</strong>. When a team publishes data, downstream consumers need guarantees about structure, freshness, and completeness. Breaking changes need versioning. This is what enables teams to build on each other&#8217;s data products.</p><p>These aren&#8217;t theoretical nice-to-haves. These are the requirements that kept showing up across every AI and ML use case we analyzed. And they map directly to specific governance practices: field standardization, entity resolution, metadata management, data contracts.</p><h2>The Organizational Model That Made It Work</h2><p>Here&#8217;s the structure that worked: a federated model with clear partnership between central governance and domain owners.</p><p>A small central governance team (not a bureaucracy) sets standards and provides enabling resources. But each business domain has an owner. Someone accountable for defining strategy, ensuring funding, and delivering reusable datasets for their domain.</p><p>These domain owners aren&#8217;t in engineering. They&#8217;re product or business leaders who understand the domain and have skin in the game. They partner with the governance team to apply enterprise standards while maintaining domain execution control.</p><p>Application teams handle the technical implementation. They build pipelines, apply schema standards, and ensure datasets meet requirements. But they&#8217;re not confused about why they&#8217;re doing this work. It&#8217;s directly connected to AI and analytics capabilities they need to deliver.</p><p>The key is that governance serves the domain owners, and domain owners serve the use cases. Everyone&#8217;s incentives align around enabling AI capabilities, not enforcing policies.</p><h2>Why AI Readiness Changed the Conversation</h2><p>Positioning this work as &#8220;AI readiness&#8221; rather than traditional data governance opened doors that would normally stay closed.</p><p>Engineers get excited about enabling AI capabilities. They understand intuitively that machine learning requires structured, typed, connected data. They know models can&#8217;t learn from free text fields and inconsistent enumerations. They see why entity resolution across domains matters for building features. The connection between rigorous data practices and shipping AI products is obvious in a way that &#8220;data quality&#8221; never is.</p><p>Executives understand AI as competitive advantage. When you frame data governance as &#8220;establishing the structured, connectable data foundation we need to build AI capabilities,&#8221; that&#8217;s strategic. When you frame it as &#8220;improving data quality,&#8221; that&#8217;s IT overhead.</p><p>The actual work is the same. Standardizing field formats, establishing consistent identifiers, documenting transformations, creating clear schemas, building API contracts. But the framing determines whether people engage or ignore you.</p><p>And here&#8217;s what really mattered: we could point to specific AI capabilities that competitors were building and say &#8220;we can&#8217;t do that because our data isn&#8217;t structured this way&#8221; or &#8220;we can&#8217;t connect these domains reliably.&#8221; That creates urgency in a way that abstract data quality metrics never do.</p><h2>What We Learned</h2><p><strong>Start small, prove value fast</strong>. We picked two use cases for the first wave. This gave us concrete wins to build momentum and learn what actually worked before scaling.</p><p><strong>Cross-domain connectivity is where the value is</strong>. Individual datasets being &#8220;clean&#8221; matters less than datasets being connectable. Standardized IDs, consistent schemas, and clear relationships between domains unlock more value than perfect completeness in any single domain.</p><p><strong>Business impact trumps technical perfection</strong>. We prioritized data issues by how much AI capability they unlocked, not by how &#8220;bad&#8221; they were technically. A minor schema inconsistency blocking a high-value ML model beats a major quality issue in unused data.</p><p><strong>Governance without enforcement is suggestion</strong>. We built compliance scorecards, audit processes, and consequences for non-compliance. Friendly but firm. The expectation that contributions to shared data platforms meet structure and connectivity standards isn&#8217;t optional.</p><p><strong>Domain-based thinking is hard</strong>. Helping application owners shift from &#8220;what does my application do&#8221; to &#8220;what business capability do I own&#8221; takes sustained effort. It&#8217;s a mindset change, not just an org chart change.</p><p><strong>Terminology matters</strong>. We found &#8220;AI Readiness&#8221; or &#8220;Data Enablement&#8221; landed better with executives than &#8220;Data Governance.&#8221; The work is the same, but language that emphasizes competitive capability over control gets less resistance.</p><h2>The Pattern That Emerges</h2><p>If you step back, there&#8217;s a broader pattern here about how to drive organizational change around data:</p><ol><li><p>Anchor to business outcomes people actually care about (AI capabilities, competitive advantage)</p></li><li><p>Make the connection between data structure and those outcomes explicit and immediate</p></li><li><p>Prioritize ruthlessly based on what enables cross-domain connectivity and AI capabilities</p></li><li><p>Build partnerships between central standards and distributed execution</p></li><li><p>Prove value in tight iterations before scaling</p></li></ol><p>This isn&#8217;t really about data governance. It&#8217;s about building the structured, connectable data foundation that modern AI and analytics capabilities require.</p><p>Most governance programs fail because they try to be comprehensive from day one. They want perfect metadata, complete lineage, and pristine quality across all data before anyone uses it. That never happens.</p><p>The alternative is to be surgical. Find the AI capabilities that matter most for business outcomes. Identify the specific structure and connectivity requirements blocking those capabilities. Fix those problems. Prove value. Expand systematically. Repeat.</p><p>Your governance program succeeds when it becomes invisible. When teams contribute structured, well-connected data to shared platforms because it&#8217;s the path of least resistance to shipping AI-powered initiatives, not because compliance says they have to.</p><p>The goal isn&#8217;t perfect data governance. The goal is data that AI systems can actually consume, connect, and learn from at scale. Everything else is just scaffolding to get there.</p>]]></content:encoded></item><item><title><![CDATA[I Was Wrong About AI Readiness]]></title><description><![CDATA[Thinking about unstructured data governance]]></description><link>https://www.savaged.net/p/i-was-wrong-about-ai-readiness</link><guid isPermaLink="false">https://www.savaged.net/p/i-was-wrong-about-ai-readiness</guid><dc:creator><![CDATA[Woodson]]></dc:creator><pubDate>Sat, 14 Feb 2026 13:54:58 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!CgAK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c3386c9-46e8-4f9e-a944-9134f76347c7_724x1086.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>When I was asked to bring governance to our company&#8217;s unstructured data for AI agents, I thought I understood the problem. Clean up the wikis, deduplicate the SharePoint sites, build taxonomies! In short, get everything organized so our AI tools could find the right information.</p><p>I was approaching this the wrong way.</p><p>The problem wasn&#8217;t that I misunderstood the goal. The problem was that I was solving for the wrong type of failure mode. I was thinking about how humans experience messy documentation when I should have been thinking about how machines experience it.</p><p>The consumer of unstructured data is shifting from humans to machines, and they fail differently.</p><p>When a human reads two contradictory internal documents, they use judgment. They know the 2019 policy doc is probably stale. They remember that Ben&#8217;s team does things differently than Susan&#8217;s. They can tell when something doesn&#8217;t add up. The cost of messy documentation in a human world is inefficiency. People waste their time finding the right source.</p><p>When an AI agent encounters the same contradiction, it treats both documents as equally valid. It doesn&#8217;t know which is current, has no institutional memory about team differences, and can&#8217;t detect inconsistencies the way humans can. <em>The cost shifts from inefficiency to confident automation of errors.</em> The agent doesn&#8217;t get confused; it gets wrong.</p><p>This matters because agents are being deployed into environments where unstructured data has never been properly organized. Most enterprises spent decades accumulating documents, wikis, email threads, Slack chats, meeting recordings, and PDFs with minimal governance. While historically annoying, the ROI for organizing that content never penciled before. Why would it now?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CgAK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c3386c9-46e8-4f9e-a944-9134f76347c7_724x1086.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CgAK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c3386c9-46e8-4f9e-a944-9134f76347c7_724x1086.jpeg 424w, https://substackcdn.com/image/fetch/$s_!CgAK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c3386c9-46e8-4f9e-a944-9134f76347c7_724x1086.jpeg 848w, https://substackcdn.com/image/fetch/$s_!CgAK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c3386c9-46e8-4f9e-a944-9134f76347c7_724x1086.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!CgAK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c3386c9-46e8-4f9e-a944-9134f76347c7_724x1086.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CgAK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c3386c9-46e8-4f9e-a944-9134f76347c7_724x1086.jpeg" width="724" height="1086" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1c3386c9-46e8-4f9e-a944-9134f76347c7_724x1086.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1086,&quot;width&quot;:724,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:406764,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.savaged.net/i/187946659?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c3386c9-46e8-4f9e-a944-9134f76347c7_724x1086.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!CgAK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c3386c9-46e8-4f9e-a944-9134f76347c7_724x1086.jpeg 424w, https://substackcdn.com/image/fetch/$s_!CgAK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c3386c9-46e8-4f9e-a944-9134f76347c7_724x1086.jpeg 848w, https://substackcdn.com/image/fetch/$s_!CgAK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c3386c9-46e8-4f9e-a944-9134f76347c7_724x1086.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!CgAK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c3386c9-46e8-4f9e-a944-9134f76347c7_724x1086.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Why I stopped planning document cleanup</h2><p>Content curation means reorganizing documents: deduplicating, building taxonomies, standardizing formats, migrating to unified platforms. It&#8217;s what most &#8220;AI readiness&#8221; initiatives are doing. It&#8217;s what I was planning to do.</p><p>But the problems kept stacking up in my planning: </p><p><strong>It&#8217;s expensive.</strong> Requires dedicated headcount, consultant engagements, content migration projects. You&#8217;re paying people to reorganize documents that are probably fine where they are.</p><p><strong>It&#8217;s fragile.</strong> Tools change constantly. SharePoint becomes Confluence becomes Notion. File formats evolve. Each platform shift breaks the curation work. The half-life of organizational content infrastructure is&#8230; maybe 3-5 years?</p><p><strong>It will be too slow to help AI.</strong> RAG architectures, context windows, and retrieval strategies are evolving fast. What you optimize for today&#8217;s chunking logic may be irrelevant in six months when context windows hit 10M tokens.</p><p><strong>Nobody does it even when they should.</strong> Most organizations had decades to organize their content before AI agents arrived. They didn&#8217;t, because the cost-benefit wasn&#8217;t there. The existence of document management tools doesn&#8217;t mean organizations use them well.</p><h2>What I suggest instead</h2><p>Once I understood the new failure mode for agents, I stopped trying to reorganize content. <strong>Epistemic governance</strong> accepts that organizational content will stay messy. It adds a governance layer on top without reorganizing the underlying documents.</p><p>The analogy is DNS, the Domain Name System, which powers the web. DNS doesn&#8217;t reorganize the internet or deduplicate websites. It simply provides a lightweight registry that maps domain names to IP addresses and includes mechanisms for resolving conflicts (TTL expiration, authoritative nameservers).</p><p>Epistemic governance for unstructured data works the same way. It has three components that work together.</p><p>First is the <strong>authority registry</strong>. This records who knows what. For each knowledge domain and subdomain, you capture who the recognized expert is, what the canonical source document is, what documents it supersedes, and when it was last validated. This is a small, maintained data structure, not a reorganization of documents themselves. The documents stay where they are. You&#8217;re just making the informal authority network explicit and machine-queryable.</p><p>An example entry: &#8220;For wholesale vehicle price adjustments, Jane Smith (Senior Pricing Analyst) is the authority. The canonical source is wholesale-adj-v3.docx on SharePoint, last validated Feb 2025. It supersedes the 2022 Confluence page and the 2023 draft that was never finalized.&#8221;</p><p>Don&#8217;t worry, the registry doesn&#8217;t need to cover everything. Start with 5-10 subdomains in a single knowledge area. Each entry comes from a 90-minute session with the domain expert where you identify the canonical sources, document what they supersede, and set a validation cadence.</p><p>Second is the <strong>contradiction log</strong>. This tracks known conflicts between sources. When two sources are known to conflict, you record what specifically contradicts (precise claims, not vague descriptions), who reviewed it, and what the resolution is.</p><p>Contradictions come in types: </p><ul><li><p>Resolved conflicts have a clear answer: one source is right, the other is wrong. The log records &#8220;Use exponential depreciation curve from Source B. Source A&#8217;s linear model was replaced in Q3 2024.&#8221;</p></li><li><p>Accepted conflicts, however, are intentional. Both sources are correct for different contexts. Wholesale and retail pricing models legitimately use different methods. The log records &#8220;Present both approaches and ask user which context applies.&#8221;</p></li><li><p>Under review means identified but not yet adjudicated. The log captures that the conflict exists so agents can caveat their responses until it&#8217;s resolved.</p></li></ul><p>Third are the <strong>resolution rules</strong>. These are the policies agents follow when encountering ambiguity. Start with five simple rules that handle most scenarios:</p><ol><li><p>If the contradiction log has an explicit resolution for this conflict, follow it. This overrides everything else.</p></li><li><p>When sources conflict and one is registered as canonical, defer to it. Exception: if validation is stale (over 12 months), flag for re-validation.</p></li><li><p>If a question falls outside registered subdomains, answer with available information but caveat that the topic isn&#8217;t covered by the governance system. Log the gap.</p></li><li><p>If canonical source validation is stale, use it anyway (stale governance beats none) but caveat the staleness and flag for review.</p></li><li><p>When contradiction is marked as accepted (intentional), present both approaches and ask user which context applies.</p></li></ol><h2>Why this compounds</h2><p>The authority registry and contradiction log become more valuable over time.</p><p>Each new domain entry makes the system more useful through network effects. An agent that can handle wholesale pricing conflicts becomes more capable when retail pricing gets added.</p><p>Once you have a registry, agents encountering unregistered subdomains generate demand signals for where governance should expand next. Your gaps become visible through conflict detection.</p><p>The last_validated date creates pressure to keep expertise fresh. When a canonical source goes stale, the system flags it. This validation forcing function is better than relying on document modification timestamps because currency is about expert validation, not file system events.</p><p>The registry survives platform migrations. When your organization inevitably moves from Confluence to Notion (Or back.  Again.), the authority records stay valid. You just update the URLs in the canonical_source field. Compare this to soul-crushing curation work that has to be redone with each tool change. The governance layer is portable across tools.</p><h2>Let&#8217;s Compare</h2><div id="datawrapper-iframe" class="datawrapper-wrap outer" data-attrs="{&quot;url&quot;:&quot;https://datawrapper.dwcdn.net/Ib2At/1/&quot;,&quot;thumbnail_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c3e1cd34-c4c0-4665-9c7a-54915d4a66f4_1220x780.png&quot;,&quot;thumbnail_url_full&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1f491be6-642f-4690-b982-ad3604a503dd_1220x780.png&quot;,&quot;height&quot;:380,&quot;title&quot;:&quot;| Created with Datawrapper&quot;,&quot;description&quot;:&quot;Create interactive, responsive &amp; beautiful charts &#8212; no code required.&quot;}" data-component-name="DatawrapperToDOM"><iframe id="iframe-datawrapper" class="datawrapper-iframe" src="https://datawrapper.dwcdn.net/Ib2At/1/" width="730" height="380" frameborder="0" scrolling="no"></iframe><script type="text/javascript">!function(){"use strict";window.addEventListener("message",(function(e){if(void 0!==e.data["datawrapper-height"]){var t=document.querySelectorAll("iframe");for(var a in e.data["datawrapper-height"])for(var r=0;r<t.length;r++){if(t[r].contentWindow===e.source)t[r].style.height=e.data["datawrapper-height"][a]+"px"}}}))}();</script></div><p>The two approaches aren&#8217;t mutually exclusive. You can do both. But they have different cost profiles, sustainability characteristics, and failure modes. Curation is expensive and fragile but visible (executives can see reorganized folders). Epistemic governance is cheaper and more durable but requires accepting that metadata about content matters more than reorganization of content.</p><h2>Wait, what about usage signals?</h2><p>I hear some of you already asking why we aren&#8217;t just crowdsourcing the right data as many tools today recommend. Usage data is valuable but not as governance input. Instead it is valuable as triage input. Which documents agents actually retrieve, how often, and in what contexts does matter, but that isn&#8217;t trust.</p><p>High retrieval frequency on an unregistered subdomain also tells you where to register authority next. Conflicts discovered through agent use will tell you what to add to the contradiction log. Therefore, usage patterns are diagnostic: they tell you where governance attention is needed, not which sources are authoritative.</p><p>This distinction matters. If you let usage signals directly determine authority (the most-retrieved document is the best), you&#8217;ve removed the expert from the loop. That collapses the system back to the same problem it was designed to solve: machines deciding what machines should trust.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!a013!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ab542a-41ab-4604-a422-e0e6da920a5c_1400x700.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!a013!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ab542a-41ab-4604-a422-e0e6da920a5c_1400x700.jpeg 424w, https://substackcdn.com/image/fetch/$s_!a013!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ab542a-41ab-4604-a422-e0e6da920a5c_1400x700.jpeg 848w, https://substackcdn.com/image/fetch/$s_!a013!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ab542a-41ab-4604-a422-e0e6da920a5c_1400x700.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!a013!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ab542a-41ab-4604-a422-e0e6da920a5c_1400x700.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!a013!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ab542a-41ab-4604-a422-e0e6da920a5c_1400x700.jpeg" width="1400" height="700" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/73ab542a-41ab-4604-a422-e0e6da920a5c_1400x700.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:700,&quot;width&quot;:1400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;10 Terminator Logic Memes That Are Too Hilarious For Words&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="10 Terminator Logic Memes That Are Too Hilarious For Words" title="10 Terminator Logic Memes That Are Too Hilarious For Words" srcset="https://substackcdn.com/image/fetch/$s_!a013!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ab542a-41ab-4604-a422-e0e6da920a5c_1400x700.jpeg 424w, https://substackcdn.com/image/fetch/$s_!a013!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ab542a-41ab-4604-a422-e0e6da920a5c_1400x700.jpeg 848w, https://substackcdn.com/image/fetch/$s_!a013!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ab542a-41ab-4604-a422-e0e6da920a5c_1400x700.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!a013!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ab542a-41ab-4604-a422-e0e6da920a5c_1400x700.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Usage data tells you where to apply expert judgment. It doesn&#8217;t replace expert judgment.</p><h2>What changed my thinking</h2><p>Three realizations shifted my approach from content curation to epistemic governance.</p><p>First was understanding that agents experience document chaos differently than humans do. Humans get frustrated and inefficient. Agents get confidently wrong. This changes the economics of governance because the cost of ungoverned data shifted from friction to automation risk. Once I saw this, I couldn&#8217;t unsee it.</p><p>Second was the DNS analogy. I was thinking about knowledge governance as content reorganization because that&#8217;s how most data governance literature frames it: schemas, taxonomies, data lakes. But DNS doesn&#8217;t reorganize the internet. It provides a lightweight registry layer. Dave McComb&#8217;s <strong><a href="https://www.semanticarts.com/software-wasteland/">Software Wasteland</a></strong> touches on this with knowledge graphs as governance infrastructure, but the analogy to DNS as a minimal viable registry clarified something for me. You can govern without reorganizing.</p><p>Third was recognizing that usage data tells you where to look, not what to trust. I initially thought about letting usage signals become authority decisions. Most-retrieved document becomes canonical, right? But that conflates popularity with correctness (wasn&#8217;t true in high school, isn&#8217;t true today). That works in consumer web contexts (PageRank, collaborative filtering) but breaks in enterprise contexts where popularity and correctness diverge, especially when incentives favor document creation over document maintenance. Usage data is triage input. It tells you where to apply expert judgment. It doesn&#8217;t replace expert judgment.</p><div><hr></div><p>I was wrong about AI readiness because I was solving for retrieval when I should have been solving for trust. The documents don&#8217;t need to be findable in a cleaner folder structure. They need to carry signals about authority, currency, and conflict resolution that agents can act on.</p><p>The work isn&#8217;t reorganizing content. It&#8217;s making the informal authority networks in your organization explicit and machine-queryable. That&#8217;s a different kind of governance, with different economics and different durability characteristics. It compounds instead of decaying.</p><h3>Further reading</h3><p>Martin Kleppmann, <strong><a href="https://dataintensive.net/">Designing Data-Intensive Applications</a></strong>: Chapters 5 and 9 on eventual consistency and conflict resolution. The concepts translate directly from distributed systems to unstructured data governance.</p><p>Dave McComb, <strong><a href="https://www.semanticarts.com/software-wasteland/">Software Wasteland</a></strong>: Makes the case that we over-invest in organizing data and under-invest in making meaning explicit.</p><p>Andrew Ng, <strong><a href="https://datacentricai.org/">Data-Centric AI Resource Hub</a></strong>: The case for investing in data quality with human-in-the-loop processes rather than relying on model improvement alone.</p>]]></content:encoded></item><item><title><![CDATA[What the Founders Got Wrong First]]></title><description><![CDATA[Founding Fathers as Change Management Leaders]]></description><link>https://www.savaged.net/p/what-the-founders-got-wrong-first</link><guid isPermaLink="false">https://www.savaged.net/p/what-the-founders-got-wrong-first</guid><dc:creator><![CDATA[Woodson]]></dc:creator><pubDate>Sat, 14 Feb 2026 02:43:42 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!9SVn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74c0c8f0-e6bd-4c93-b2bf-f9b1b5fbd84b_832x1248.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The United States turns 250 this July. There will be fireworks and speeches and a lot of reverence for the founding generation&#8217;s vision. But the part of the founding story I keep thinking about isn&#8217;t the triumphant part. It&#8217;s the twelve years between the Declaration of Independence and the Constitution, when the country was governed by a document most people have forgotten.</p><p>The Articles of Confederation were America&#8217;s first operating system. They were a reasonable design, born from a reasonable fear: the colonies had just escaped centralized authority and they weren&#8217;t about to recreate it. So the Articles gave each state maximum autonomy. No executive branch. No federal courts. No power to tax. Congress could request things from states. It could not compel them.</p><p>It didn&#8217;t work. Autonomy without coordination produced fragmentation, not freedom. States issued their own currencies. Trade disputes went unresolved. Shared problems like defense, debt, and interstate commerce festered because no one had the authority to address them.</p><p>The Constitution wasn&#8217;t the founders&#8217; first idea. It was their correction.</p><p>I&#8217;ve been thinking about this because I&#8217;ve spent a lot of my career in technology watching organizations try to transform how they build and deliver software. Most of these transformations follow the same arc: someone declares that the current way of working is broken, publishes a new operating model, and expects adoption. Declaration to Constitution in a single step. They almost always fail, and usually for the same reason the Articles failed. Nobody did the work of understanding why the current state exists and what legitimate needs it serves.</p><p>-----</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9SVn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74c0c8f0-e6bd-4c93-b2bf-f9b1b5fbd84b_832x1248.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9SVn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74c0c8f0-e6bd-4c93-b2bf-f9b1b5fbd84b_832x1248.jpeg 424w, https://substackcdn.com/image/fetch/$s_!9SVn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74c0c8f0-e6bd-4c93-b2bf-f9b1b5fbd84b_832x1248.jpeg 848w, https://substackcdn.com/image/fetch/$s_!9SVn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74c0c8f0-e6bd-4c93-b2bf-f9b1b5fbd84b_832x1248.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!9SVn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74c0c8f0-e6bd-4c93-b2bf-f9b1b5fbd84b_832x1248.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9SVn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74c0c8f0-e6bd-4c93-b2bf-f9b1b5fbd84b_832x1248.jpeg" width="832" height="1248" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/74c0c8f0-e6bd-4c93-b2bf-f9b1b5fbd84b_832x1248.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:1248,&quot;width&quot;:832,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:0,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;&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_!9SVn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74c0c8f0-e6bd-4c93-b2bf-f9b1b5fbd84b_832x1248.jpeg 424w, https://substackcdn.com/image/fetch/$s_!9SVn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74c0c8f0-e6bd-4c93-b2bf-f9b1b5fbd84b_832x1248.jpeg 848w, https://substackcdn.com/image/fetch/$s_!9SVn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74c0c8f0-e6bd-4c93-b2bf-f9b1b5fbd84b_832x1248.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!9SVn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74c0c8f0-e6bd-4c93-b2bf-f9b1b5fbd84b_832x1248.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In most large technology organizations, teams own domains. They own backlogs. They own their release cadences and deployment rituals. Coordination between teams happens through negotiation (meetings, Slack threads, escalations) rather than through structure. Shared concerns go unaddressed because no single team has the authority or incentive to solve them.</p><p>That&#8217;s the Articles of Confederation. And like the Articles, it didn&#8217;t emerge from stupidity. It emerged from trauma. At some point, a top-down mandate failed these teams. Someone centralized decision-making, removed autonomy, and created bottlenecks. Teams responded by claiming sovereignty over their territory. They built walls out of self-preservation, not selfishness.</p><p>When you frame the current state as the Articles rather than as dysfunction, it changes the conversation. The Articles were a rational response to a real problem. What comes next isn&#8217;t revolution. It&#8217;s a constitutional convention: a correction informed by experience, not imposed by ideology.</p><p>-----</p><p>The founding generation produced a stack of documents, and each one did something the others couldn&#8217;t. I think this sequence is more useful as a change management framework than most of what I&#8217;ve seen in the Agile or transformation literature.</p><p>The Declaration of Independence was philosophy. It didn&#8217;t describe how the new government would work. It made the case that the old arrangement was untenable, cataloging specific grievances against a system that had become unresponsive to the people it was supposed to serve. If you&#8217;re transforming a delivery organization, your Declaration makes the pain of the status quo specific and evidence-based. Not &#8220;we need to be more agile,&#8221; which is a bumper sticker. Something more like: here are the seven ways our current model fails the people who depend on what we build.</p><p>The Constitution was architecture. Structure, jurisdiction, and separation of powers. Who owns what. How authority flows. What decisions get made at which level. The founders&#8217; core design insight was federalism, a division of sovereignty where certain powers belong to the national government and everything else is reserved to the states. In a delivery organization, this maps onto the tension between enterprise standards and team-level autonomy. Security requirements, data contracts, API standards, platform decisions: federal. Implementation patterns, tooling choices, internal rituals: state. Getting this boundary wrong in either direction was the exact failure mode the founders were designing against.</p><p>The Bill of Rights was a set of guarantees. The Constitution alone wasn&#8217;t enough for ratification. People needed explicit assurances that the new centralized structure wouldn&#8217;t recreate the problems of the old one. In an engineering organization, this means telling teams what they&#8217;re entitled to under the new model (clear specifications before work begins, autonomy within defined boundaries, and access to shared platforms) and what they&#8217;re protected from (mid-sprint scope changes, accountability without authority, and ambiguous ownership).</p><p>The Federalist Papers were persuasion. Hamilton, Madison, and Jay didn&#8217;t publish the Constitution and wait for applause. They wrote 85 essays, each one arguing for a specific design decision to a skeptical public. Why this structure? Why these tradeoffs? Why not the alternatives? If you&#8217;re transforming a delivery organization and you haven&#8217;t written the equivalent of the Federalist Papers, standalone arguments for each controversial design choice, you&#8217;re asking people to adopt a system they don&#8217;t understand.</p><p>-----</p><p>The part of this history that sticks with me most is the opposition.</p><p>The Anti-Federalists, Patrick Henry, George Mason, and Mercy Otis Warren, argued that the Constitution concentrated too much power. That it would erode local responsiveness. That the cure was worse than the disease. They made their case publicly, in essays and speeches that matched the Federalists point for point. They lost the ratification debate, but they won a concession that mattered more: the Bill of Rights exists because the Anti-Federalists demanded it. The Constitution is a better document because people who believed it was dangerous forced its authors to prove otherwise.</p><p>Every transformation has Anti-Federalists. They argue that your new team model destroys hard-won domain expertise. That your new process adds overhead. That centralizing ownership dilutes accountability rather than strengthening it. These are legitimate structural concerns, the same ones the historical Anti-Federalists raised, and they deserve the same treatment: engagement, honest concession where warranted, and design changes where the evidence supports it.</p><p>I&#8217;ve come to think the best thing a transformation leader can do is publish their own Anti-Federalist Papers alongside the Federalist ones. Steelman the strongest objections to your own design, then address them. It shows the new model has been tested against its failure modes. And it takes the air out of opposition by acknowledging the concerns before they harden into resistance.</p><p>-----</p><p>Thinking more about this comparison, a few more constitutional mechanisms translate directly:</p><p>The Supremacy Clause (Article VI) establishes that federal law supersedes state law when they conflict. Every delivery organization needs an equivalent. When a team&#8217;s local optimization conflicts with an enterprise requirement, what wins? If you don&#8217;t answer this explicitly, you&#8217;ll answer it through escalation which is slower and more corrosive.</p><p>Judicial review, established by Marbury v. Madison in 1803, addresses who arbitrates disputes. When two teams disagree about ownership of a shared domain, or a specification is ambiguous, who interprets the Constitution? The useful insight from the courts is that the arbiter should be separate from both those who write the rules and those who execute them.</p><p>The amendment process (Article V) might matter most. The Constitution was designed to be changed, but not easily. Supermajorities are required. The system evolves deliberately rather than reactively. Your operating model should define its own amendment process: who proposes changes, what evidence is required, what threshold triggers adoption. Rigidity breaks and instability exhausts. Article V sits between those two failure modes.</p><p>-----</p><p>There is one question this metaphor keeps forcing on me&#8230;</p><p>Every constitutional system exists to serve someone. In government, the whole structure exists for the citizen. In a technology organization, who&#8217;s the citizen? The end user? The internal team consuming a shared platform? The business stakeholder?</p><p>If the citizen is the end user, your Constitution optimizes for delivery speed and quality to market. If it&#8217;s the internal consumer, you optimize for composability and reliability. If it&#8217;s both, you need something like dual sovereignty, which is what federalism was built to handle.</p><p>The American founding was messy, Ii was argumentative, and It was built on the admission that the first attempt didn&#8217;t work. Twelve years of operating under an inadequate system gave the founders the experience to design a better one. As the country marks 250 years since the Declaration, I think the more interesting anniversary is still two years out. The document that actually governs, the Constitution, came from the willingness to admit that independence alone wasn&#8217;t enough. You also need architecture and a thoughtful operating model.</p><p>Same thing is true for how we build software. Declaring the old way broken is necessary, but that&#8217;s 1776. The harder work is Philadelphia, 1787.</p>]]></content:encoded></item><item><title><![CDATA[Spider Rico]]></title><description><![CDATA[2011 &#8211; 2012]]></description><link>https://www.savaged.net/p/spider-rico</link><guid isPermaLink="false">https://www.savaged.net/p/spider-rico</guid><dc:creator><![CDATA[Woodson]]></dc:creator><pubDate>Fri, 23 Jan 2026 17:43:39 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!3Xam!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1a22c4a-44d6-43b6-8d02-b0f5b73bde05_3264x2448.heic" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3Xam!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1a22c4a-44d6-43b6-8d02-b0f5b73bde05_3264x2448.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3Xam!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1a22c4a-44d6-43b6-8d02-b0f5b73bde05_3264x2448.heic 424w, https://substackcdn.com/image/fetch/$s_!3Xam!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1a22c4a-44d6-43b6-8d02-b0f5b73bde05_3264x2448.heic 848w, https://substackcdn.com/image/fetch/$s_!3Xam!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1a22c4a-44d6-43b6-8d02-b0f5b73bde05_3264x2448.heic 1272w, https://substackcdn.com/image/fetch/$s_!3Xam!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1a22c4a-44d6-43b6-8d02-b0f5b73bde05_3264x2448.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3Xam!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1a22c4a-44d6-43b6-8d02-b0f5b73bde05_3264x2448.heic" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b1a22c4a-44d6-43b6-8d02-b0f5b73bde05_3264x2448.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:826159,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.savaged.net/i/185560702?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1a22c4a-44d6-43b6-8d02-b0f5b73bde05_3264x2448.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!3Xam!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1a22c4a-44d6-43b6-8d02-b0f5b73bde05_3264x2448.heic 424w, https://substackcdn.com/image/fetch/$s_!3Xam!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1a22c4a-44d6-43b6-8d02-b0f5b73bde05_3264x2448.heic 848w, https://substackcdn.com/image/fetch/$s_!3Xam!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1a22c4a-44d6-43b6-8d02-b0f5b73bde05_3264x2448.heic 1272w, https://substackcdn.com/image/fetch/$s_!3Xam!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1a22c4a-44d6-43b6-8d02-b0f5b73bde05_3264x2448.heic 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Last Friday, our friend and cube-mate Spider Rico passed away. Much like his namesake, he was a fighter. However our Spider Rico lost his battle not to the Italian Stallion, but instead to the mortal coil.</p><p>Already, we are feeling the pain of loss as we come to work and walk past his empty fishbowl. Where once a happy little fish slumbered on his plastic plant and anxiously anticipated a daily ration of food pellets, now there is only a sticker of a fish affixed to his bowl in memoriam. I would caution you not to see that as a statement of our ability or willingness to keep fish alive, but instead as a symbol of how irreplaceable Spider Rico will always be.</p><p>Even in death, Spider Rico had one last lesson for all of us. He gave us yet another reminder that life is fleeting. Let his passing serve as the catalyst to restore work/life balance in your own life lest we come to work one Monday morning and find you slumped over your keyboard. Make time for your family and friends; Clarity will still be here tomorrow.</p><p>Upon finding Spider Rico, a cry of outrage arose from his admirers. We appreciate everyone&#8217;s concern, but after a complete criminal investigation, we can safely exonerate any suspects. The coroner ruled this case as expiration from natural causes. No foul play was involved, and we should no longer persecute the innocent (Tim).</p><p>The funeral was held Monday morning when Spider Rico was given a burial at sea in the 5<sup>th</sup> floor handicapped bathroom. Spider Rico leaves behind a single relative, his sibling Thunderlips. In lieu of flowers, feel free to deposit donations in the Curse Bowl for his ongoing care and support.</p><p><em>If you are overcome with grief and need to talk to someone about dealing with this loss, please remember our Employee Assistance Program.</em></p>]]></content:encoded></item></channel></rss>