<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[The Data Letter]]></title><description><![CDATA[The Data Letter helps senior managers, builders, and operators use AI and data systems to reduce friction and run complex work more effectively. Subscribe for your free Data Reliability Audit Kit. ]]></description><link>https://www.thedataletter.com</link><image><url>https://substackcdn.com/image/fetch/$s_!q9bB!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87106c62-c084-4b01-b694-ac5d6a824442_500x500.png</url><title>The Data Letter</title><link>https://www.thedataletter.com</link></image><generator>Substack</generator><lastBuildDate>Sun, 31 May 2026 00:14:25 GMT</lastBuildDate><atom:link href="https://www.thedataletter.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Hodman Murad]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[hodmanmurad@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[hodmanmurad@substack.com]]></itunes:email><itunes:name><![CDATA[Hodman Murad]]></itunes:name></itunes:owner><itunes:author><![CDATA[Hodman Murad]]></itunes:author><googleplay:owner><![CDATA[hodmanmurad@substack.com]]></googleplay:owner><googleplay:email><![CDATA[hodmanmurad@substack.com]]></googleplay:email><googleplay:author><![CDATA[Hodman Murad]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[n8n. local.]]></title><description><![CDATA[A step-by-step build using n8n, Ollama, and Docker, no API keys required.]]></description><link>https://www.thedataletter.com/p/n8n-local</link><guid isPermaLink="false">https://www.thedataletter.com/p/n8n-local</guid><dc:creator><![CDATA[Hodman Murad]]></dc:creator><pubDate>Thu, 28 May 2026 12:14:32 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/af546906-fdad-4e02-8f21-70434498cdd0_852x458.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>On Monday, I wrote about <a href="https://www.thedataletter.com/p/build-your-own-ai-agent-before-google">Google&#8217;s I/O keynote and the five overlapping consumer agents</a> they shipped under one brand. Gemini. Gemini Spark. Android Halo. Information Agents in Search. Daily Brief. Five products, a hundred dollars a month, and you still have to figure out which one fits your task.</p><p>Operations teams want one working agent on one recurring job this week that they own end-to-end. Google has options on both ends of the spectrum (consumer apps like Gemini Spark and enterprise platforms like Gemini Enterprise). Neither is built for a small ops team looking to operate a recurring task.</p><p>Today, we build that agent.</p><p>In the next 30 minutes, you&#8217;ll have a private AI agent running on your own laptop. It costs zero dollars. No model weights leave your machine. Once the basic loop runs, plugging in a tool turns the agent into something that handles jobs for your team, such as drafting replies in your support inbox, pulling a number from a spreadsheet on a schedule, and triaging incoming customer support requests.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thedataletter.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thedataletter.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><h3><strong>What you&#8217;ll find inside this post</strong></h3><ul><li><p>The full step-by-step setup</p></li><li><p>A downloadable n8n workflow file.</p></li><li><p>The setup errors you&#8217;re likely to hit and how to fix each one.</p></li><li><p>Three ways to put the agent on a job your team already does.</p></li><li><p>A video walkthrough of the finished agent </p></li></ul>
      <p>
          <a href="https://www.thedataletter.com/p/n8n-local">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Build Your Own AI Agent Before Google Ships You Theirs]]></title><description><![CDATA[2 Min. Read]]></description><link>https://www.thedataletter.com/p/build-your-own-ai-agent-before-google</link><guid isPermaLink="false">https://www.thedataletter.com/p/build-your-own-ai-agent-before-google</guid><dc:creator><![CDATA[Hodman Murad]]></dc:creator><pubDate>Mon, 25 May 2026 14:38:36 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/aa2ff6f5-b498-425d-a52f-ee09276d3e46_1426x804.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Google&#8217;s I/O 2026 keynote focused on fixing the repetitive work your team still does by hand every week.</p><p>AI Mode in Search just crossed one billion monthly users, with queries more than doubling every quarter. Liz Reid, who runs Search, described what&#8217;s happening as &#8216;the era of Search agents,&#8217; and said Google&#8217;s new information agents run in the background, performing repetitive work and notifying users when something changes.</p><h2><strong>What an AI agent does</strong></h2><p>An agent has four moving parts:</p><ul><li><p>It perceives an input.</p></li><li><p>It reasons through what to do.</p></li><li><p>It acts in your tools.</p></li><li><p>It remembers what happened, so the next run starts smarter.</p></li></ul><p>Chat does the first two. Agents do all four.</p><p>Chat changed how quickly you can think and draft. Agents now manage what gets done while you&#8217;re working on something else.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thedataletter.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thedataletter.com/subscribe?"><span>Subscribe now</span></a></p><h2><strong>Why Google&#8217;s version isn&#8217;t the one your team needs</strong></h2><p>Google packaged these capabilities for consumers, but the packaging is messy. Google now has Gemini as the model, Gemini Spark as a personal assistant, Android Halo as a notification system for Spark, Information Agents inside Search, and Daily Brief as a morning digest. Five products under one company, each with its own brand, each doing a slightly different version of the same job. A consumer trying to figure out which one to use for which task is doing work Google should have done before the keynote.</p><p>The combination of a $100-a-month entry price and five overlapping product names means a team lead trying to put an AI agent into a workflow this month has to first decode which Google product to buy, then justify the spend, then hope the consumer-facing version maps onto a work task. None of that is how teams adopt new tools.</p><p>Agents are a genuine new capability. The consumer-facing version Google led with at I/O is built for personal life. Google&#8217;s enterprise agent products, such as the Gemini Enterprise Agent Platform and Agentic Data Cloud, operate on the Cloud side and target large organizations with platform teams and procurement cycles. Neither one helps a small operations team that wants an agent to triage their inbound support emails or pull their weekly numbers from three tools into one report.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thedataletter.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thedataletter.com/subscribe?"><span>Subscribe now</span></a></p><h2><strong>Your team&#8217;s first AI agent is closer than a Google subscription</strong></h2><p>You can put one agent on one recurring job your team already does, this week, without waiting for Google.</p><p>A data scientist can put one into a pipeline. A team lead can put one into a recurring workflow. A head of ops can put one into a standard process. The underlying parts (perception, reasoning, action, memory) are the same even when the job changes.</p><p>The skill that&#8217;s becoming valuable for every team isn&#8217;t knowing how to pay for a subscription.</p><h4><em>This Wednesday, May 27th, at 8:30 AM ET, I&#8217;m running a live build: <a href="https://open.substack.com/live-stream/215473?utm_source=live-stream-scheduled-upsell">How to Build an AI Agent for Your Team</a>. We&#8217;ll put a working agent together in real time using n8n. </em></h4><h4><em>&#128640; Thursday&#8217;s post is <a href="https://www.thedataletter.com/p/n8n-local">the full write-up with the build and deploy steps. Get it here now</a>. </em></h4>]]></content:encoded></item><item><title><![CDATA[Build a RAG System with NotebookLM in Under an Hour]]></title><description><![CDATA[A hands-on RAG tutorial in NotebookLM. Learn the AI engineering teams build.]]></description><link>https://www.thedataletter.com/p/build-a-rag-system-with-notebooklm</link><guid isPermaLink="false">https://www.thedataletter.com/p/build-a-rag-system-with-notebooklm</guid><dc:creator><![CDATA[Hodman Murad]]></dc:creator><pubDate>Thu, 21 May 2026 14:01:19 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/8c8177bc-4723-4cf1-9bfc-0ba4b3605e38_1424x752.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><a href="https://www.thedataletter.com/p/the-live-replay-and-whats-coming">I went live yesterday</a> to talk about RAG and why it sits underneath every enterprise AI tool worth using. The session covered what RAG is, why operators and senior managers need to understand it, and how to manage one as it rolls out across a company.</p><p>RAG stands for retrieval-augmented generation. It&#8217;s a way to build AI systems that can answer questions using your own documents rather than guessing from general training data. When you ask a RAG system a question, it searches your documents, finds relevant pieces, and writes an answer based on what it finds. Every internal AI assistant your company is piloting right now uses some version of this.</p><p>Today, you&#8217;re going to build a RAG system on your own documents in under an hour. You&#8217;ll do it in Google&#8217;s NotebookLM, a polished interface built on top of the same retrieval-and-generation architecture your company is paying engineers to build. By the time you finish, you&#8217;ll have a working private RAG running on your laptop, and you&#8217;ll know roughly ten engineering terms well enough to use them in a conversation.</p><div><hr></div><h2><strong>What You&#8217;ll Have at the End</strong></h2><p>A working RAG system reading from a folder of your own documents, returning answers with citations to the source files, running in your browser, free.</p><p>You&#8217;ll also have the vocabulary to walk into your next engineering meeting and say things like &#8216;what&#8217;s our chunking strategy?&#8217; or &#8216;how are we handling grounding at the retrieval layer?&#8217; and sound like someone who&#8217;s done the work.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AJij!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b50de7d-e9b5-45d3-932f-acbd0b44c222_2866x1254.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AJij!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b50de7d-e9b5-45d3-932f-acbd0b44c222_2866x1254.png 424w, https://substackcdn.com/image/fetch/$s_!AJij!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b50de7d-e9b5-45d3-932f-acbd0b44c222_2866x1254.png 848w, https://substackcdn.com/image/fetch/$s_!AJij!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b50de7d-e9b5-45d3-932f-acbd0b44c222_2866x1254.png 1272w, https://substackcdn.com/image/fetch/$s_!AJij!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b50de7d-e9b5-45d3-932f-acbd0b44c222_2866x1254.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AJij!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b50de7d-e9b5-45d3-932f-acbd0b44c222_2866x1254.png" width="1200" height="525" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7b50de7d-e9b5-45d3-932f-acbd0b44c222_2866x1254.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:637,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:523213,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.thedataletter.com/i/198627391?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b50de7d-e9b5-45d3-932f-acbd0b44c222_2866x1254.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!AJij!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b50de7d-e9b5-45d3-932f-acbd0b44c222_2866x1254.png 424w, https://substackcdn.com/image/fetch/$s_!AJij!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b50de7d-e9b5-45d3-932f-acbd0b44c222_2866x1254.png 848w, https://substackcdn.com/image/fetch/$s_!AJij!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b50de7d-e9b5-45d3-932f-acbd0b44c222_2866x1254.png 1272w, https://substackcdn.com/image/fetch/$s_!AJij!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b50de7d-e9b5-45d3-932f-acbd0b44c222_2866x1254.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><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thedataletter.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thedataletter.com/subscribe?"><span>Subscribe now</span></a></p><h2><strong>What You Need Before You Start</strong></h2><p>A Google account. NotebookLM is free with any Google account, and it doesn&#8217;t require Workspace.</p><p>A folder of documents you&#8217;re allowed to upload. PDFs, Word docs, Google Docs, plain text, web URLs, and YouTube transcripts all work. For this build, I&#8217;d suggest using your own writing or a project&#8217;s documentation. Don&#8217;t use your company&#8217;s confidential materials in a personal Google account. That&#8217;s a violation of every company AI policy I&#8217;ve ever read, and the point of this build is learning, not getting yourself in trouble.</p><p>For this build, I used three articles from TDL and one from my other publication, Between Thinking and Doing (BTD).</p><p><strong>The TDL pieces:</strong></p><ul><li><p><a href="https://www.thedataletter.com/p/choosing-between-fine-tuning-rag">Choosing Between Fine-Tuning, RAG, and Prompt Engineering: A $10K Decision Guide</a></p></li><li><p><a href="https://www.thedataletter.com/p/vector-database-guide">Vector Database Guide</a></p></li><li><p><a href="https://www.thedataletter.com/p/my-ai-gave-me-fake-data-heres-how">My AI gave me fake data. Here&#8217;s how to catch it if it happens to you.</a></p></li></ul><p><strong>From BTD:</strong></p><ul><li><p><a href="https://betweenthinkingdoing.substack.com/p/ai-keeps-losing-your-train-of-thought">AI Keeps Losing Your Train of Thought</a></p></li></ul><p>It&#8217;s important for three of these articles to operate within the same domain so that synthesis questions have relevant material to work with. The BTD piece is unique, allowing retrieval to select from multiple sources rather than choosing any one. You can do the same with any documents you own or have permission to upload.</p><p>It takes about twenty minutes, but you can finish faster if you move through the steps quickly.</p><div><hr></div><h2><strong>Step 1: Open NotebookLM and Create Your First Notebook</strong></h2><p>Go to notebooklm.google.com. Sign in with your Google account.</p><p>Click &#8216;Create new notebook.&#8217;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!w0XA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffee4ad10-e928-4908-a0ec-f165d3d75329_2048x783.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!w0XA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffee4ad10-e928-4908-a0ec-f165d3d75329_2048x783.png 424w, https://substackcdn.com/image/fetch/$s_!w0XA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffee4ad10-e928-4908-a0ec-f165d3d75329_2048x783.png 848w, https://substackcdn.com/image/fetch/$s_!w0XA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffee4ad10-e928-4908-a0ec-f165d3d75329_2048x783.png 1272w, https://substackcdn.com/image/fetch/$s_!w0XA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffee4ad10-e928-4908-a0ec-f165d3d75329_2048x783.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!w0XA!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffee4ad10-e928-4908-a0ec-f165d3d75329_2048x783.png" width="1200" height="459.0659340659341" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fee4ad10-e928-4908-a0ec-f165d3d75329_2048x783.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:557,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!w0XA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffee4ad10-e928-4908-a0ec-f165d3d75329_2048x783.png 424w, https://substackcdn.com/image/fetch/$s_!w0XA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffee4ad10-e928-4908-a0ec-f165d3d75329_2048x783.png 848w, https://substackcdn.com/image/fetch/$s_!w0XA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffee4ad10-e928-4908-a0ec-f165d3d75329_2048x783.png 1272w, https://substackcdn.com/image/fetch/$s_!w0XA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffee4ad10-e928-4908-a0ec-f165d3d75329_2048x783.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 class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thedataletter.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thedataletter.com/subscribe?"><span>Subscribe now</span></a></p><p><strong>What just happened, in operator terms. </strong>What you just did was initialize an empty RAG. There&#8217;s a structure waiting for documents, but no documents are in it yet. In engineering terms, you&#8217;ve created an empty vector store. A vector store is an indexed library where your documents are stored in a format that the AI can search. NotebookLM uses Google&#8217;s own vector store behind the scenes, so you don&#8217;t pick one or configure it. At your company, engineering will pick one (you&#8217;ll hear names like Pinecone, Weaviate, or Chroma), and that choice affects cost, speed, and the country where your data is stored.</p><p><strong>That's the vocabulary from Step 1. Below the paywall,</strong> I'll walk you through seven more steps that get you to a working RAG running on your own documents. You'll learn how to ingest sources, watch chunking and embedding happen, run the three stress tests that show what your RAG can and can't do, and walk away with the ten engineering terms you'll need to lead any AI conversation at your company. </p>
      <p>
          <a href="https://www.thedataletter.com/p/build-a-rag-system-with-notebooklm">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[RAG in Enterprise AI: Why Most Companies Get It Wrong and How to Build It Right]]></title><description><![CDATA[Watch now | RAG, the four areas you manage, and the build piece dropping in the morning.]]></description><link>https://www.thedataletter.com/p/the-live-replay-and-whats-coming</link><guid isPermaLink="false">https://www.thedataletter.com/p/the-live-replay-and-whats-coming</guid><dc:creator><![CDATA[Hodman Murad]]></dc:creator><pubDate>Wed, 20 May 2026 13:19:38 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/198281638/8ba88eb80cc105be4214e85bc7889a48.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>If you missed the live this morning, here is the replay!</p><p>I walked through RAG, the technology behind every enterprise AI tool worth running, and the four areas senior managers and operators need to own when their company is rolling one out. About 20 minutes.</p><p>Tomorrow morning, I&#8217;m publishing a hands-on build: how to set up a RAG system on your company&#8217;s internal docs in under an hour. Same concepts from the Live, this time as something you can follow along with and have running by the end.</p><p>If you&#8217;ve been thinking about upgrading, this is a good week to do it. </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thedataletter.com/subscribe&quot;,&quot;text&quot;:&quot;UPGRADE&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thedataletter.com/subscribe"><span>UPGRADE</span></a></p><p>See you in the morning, </p><p>Hodman</p>]]></content:encoded></item><item><title><![CDATA[NVIDIA and AI Inference Economics in 2026]]></title><description><![CDATA[Inside the economics of AI inference, who absorbs the cost, and why workers feel the squeeze regardless. 4 min read.]]></description><link>https://www.thedataletter.com/p/nvidia-and-ai-inference-economics</link><guid isPermaLink="false">https://www.thedataletter.com/p/nvidia-and-ai-inference-economics</guid><dc:creator><![CDATA[Hodman Murad]]></dc:creator><pubDate>Mon, 18 May 2026 17:36:48 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/2c3da8fb-83ed-4023-80c3-20603b8e331a_1424x752.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Google and NVIDIA spent Google Cloud Next last month pitching the same idea from different angles: serving AI is getting cheaper, and they&#8217;re the ones doing the cutting. Google announced new chips designed specifically for serving AI to users, separate from the chips used to train models, a sign that running AI at the user-facing layer is now a distinct enough cost problem to deserve its own hardware. NVIDIA, partnering with Google on a new generation of cloud machines, claimed up to 10x lower cost per AI response and 10x more responses per unit of electricity compared to the previous generation.</p><p>Last week, I wrote about <a href="https://betweenthinkingdoing.substack.com/p/how-amazon-google-broadcom-and-anthropic">the infrastructure providers behind Frontier AI and</a> the over $100 billion deals that Anthropic signed with AWS, Google, and Broadcom, which are shaping the future of frontier AI technology. That piece was the macro view: who controls the compute, the chips, and the power contracts that frontier AI runs on. What cheaper inference does, and doesn&#8217;t do, for the people doing the work is the micro level of this issue.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BJXP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86da0cad-7e58-46b2-8d50-069f947df76f_1376x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BJXP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86da0cad-7e58-46b2-8d50-069f947df76f_1376x768.png 424w, https://substackcdn.com/image/fetch/$s_!BJXP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86da0cad-7e58-46b2-8d50-069f947df76f_1376x768.png 848w, https://substackcdn.com/image/fetch/$s_!BJXP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86da0cad-7e58-46b2-8d50-069f947df76f_1376x768.png 1272w, https://substackcdn.com/image/fetch/$s_!BJXP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86da0cad-7e58-46b2-8d50-069f947df76f_1376x768.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BJXP!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86da0cad-7e58-46b2-8d50-069f947df76f_1376x768.png" width="1200" height="669.7674418604652" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/86da0cad-7e58-46b2-8d50-069f947df76f_1376x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:768,&quot;width&quot;:1376,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!BJXP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86da0cad-7e58-46b2-8d50-069f947df76f_1376x768.png 424w, https://substackcdn.com/image/fetch/$s_!BJXP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86da0cad-7e58-46b2-8d50-069f947df76f_1376x768.png 848w, https://substackcdn.com/image/fetch/$s_!BJXP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86da0cad-7e58-46b2-8d50-069f947df76f_1376x768.png 1272w, https://substackcdn.com/image/fetch/$s_!BJXP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86da0cad-7e58-46b2-8d50-069f947df76f_1376x768.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><p>So why do operators, managers, and students still feel buried? Because cheaper inference doesn&#8217;t automatically translate into less friction in your day.</p><blockquote><p>&#128225; <strong>Going live this week.</strong> RAG is the engine behind every enterprise AI tool you&#8217;ve already used and trusted. Glean. Copilot. Notion AI. The internal assistants your company is piloting right now. It&#8217;s also the thing nobody outside the data team is talking about. That&#8217;s a problem, because if you&#8217;re a manager or operator and you don&#8217;t understand RAG, you can&#8217;t tell the difference between an AI rollout that earns adoption and one that will be sundowned in six months. I&#8217;m going live on Substack this <strong>Wednesday, May 20th, at 8:30 AM EST</strong> to break it down: what RAG is, why it&#8217;s the foundation of every useful enterprise AI deployment, and why operators (not just engineers) need to understand it. </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://open.substack.com/live-stream/206786?utm_source=live-stream-scheduled-upsell&quot;,&quot;text&quot;:&quot;Join Me Here&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://open.substack.com/live-stream/206786?utm_source=live-stream-scheduled-upsell"><span>Join Me Here</span></a></p></blockquote><p><em><strong>Back to inference economics.</strong></em></p><h3><strong>Cheap Tokens, Same Overwhelm</strong></h3><p><a href="https://www.ciodive.com/news/ai-inference-costs-drop-2030-gartner/815725/">Gartner expects</a> agentic AI workloads to burn 5x to 30x more tokens per task than standard chatbots, which means the falling per-token price is already being offset by rising consumption. The companies serving you AI will keep a healthy share of those savings, and the ones they pass along will get poured into longer context windows, more tool calls, and more autonomous loops. None of that, on its own, fixes the underlying human problem: the work itself keeps outrunning the worker&#8217;s ability to stay in context. Cheaper inference makes it economically viable to throw more AI at a worker without making the work itself any easier to do well. If you&#8217;ve felt that the tools got smarter but your workload didn&#8217;t get lighter, you&#8217;re reading the curve correctly. Cheaper inference is a supply-side phenomenon. It doesn&#8217;t reach the worker until something on top of the model reduces friction.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Vrvw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68e97db6-4c32-435c-bee2-e0c3a49b4552_1376x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Vrvw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68e97db6-4c32-435c-bee2-e0c3a49b4552_1376x768.png 424w, https://substackcdn.com/image/fetch/$s_!Vrvw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68e97db6-4c32-435c-bee2-e0c3a49b4552_1376x768.png 848w, https://substackcdn.com/image/fetch/$s_!Vrvw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68e97db6-4c32-435c-bee2-e0c3a49b4552_1376x768.png 1272w, https://substackcdn.com/image/fetch/$s_!Vrvw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68e97db6-4c32-435c-bee2-e0c3a49b4552_1376x768.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Vrvw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68e97db6-4c32-435c-bee2-e0c3a49b4552_1376x768.png" width="1376" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/68e97db6-4c32-435c-bee2-e0c3a49b4552_1376x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1376,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Vrvw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68e97db6-4c32-435c-bee2-e0c3a49b4552_1376x768.png 424w, https://substackcdn.com/image/fetch/$s_!Vrvw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68e97db6-4c32-435c-bee2-e0c3a49b4552_1376x768.png 848w, https://substackcdn.com/image/fetch/$s_!Vrvw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68e97db6-4c32-435c-bee2-e0c3a49b4552_1376x768.png 1272w, https://substackcdn.com/image/fetch/$s_!Vrvw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68e97db6-4c32-435c-bee2-e0c3a49b4552_1376x768.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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><h3><strong>Who Pays for Cheaper Inference</strong></h3><p>The cost of running AI doesn&#8217;t disappear when per-token prices fall. It gets redistributed:</p><ul><li><p><em><strong>Frontier Labs absorbs some of it itself to keep its</strong></em> models competitive.</p></li><li><p><em><strong>Hyperscalers</strong></em> recover it by bundling inference into platform contracts, the same playbook AWS ran with storage and bandwidth a decade ago.</p></li><li><p><em><strong>Enterprises</strong></em> pass it through to end users as seat prices, usage caps, and tiered features.</p></li></ul><p>The worker sits at the bottom of that chain. A 10x cost reduction at the chip level rarely translates into a 10x improvement in a worker&#8217;s day. By the time it filters through cloud contracts, vendor pricing, and product packaging, your team will end up with a marginally better tool and a slightly larger software budget. The savings are reinvested in additional capabilities for vendors to sell, rather than in capacity that the worker keeps. </p><div><hr></div><h3><strong>What This Means for the Future of Work</strong></h3><p>The shape of work over the next few years will be decided by who can afford to deploy frontier inference broadly, and by how that inference is packaged before it reaches a worker&#8217;s desk. AI capability is becoming an organizational asset rather than an individual one. The worker at a company with a rich inference budget will get more out of frontier AI than one without, and that difference will widen as agentic workloads burn 5x to 30x more tokens per task than today&#8217;s chatbots.</p><p>Once every team has a frontier model, the orchestration layer will be what separates teams. Whether your context, decisions, and in-flight work are held together by a system or scattered across tabs determines how much of that frontier capability you can actually use.</p><p>And the human cost of bad orchestration grows with model capability. More powerful tools used badly create more interruptions, more half-finished threads, more cognitive debt. Cheap inference, poorly wrapped, is a faster way to feel overwhelmed. </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thedataletter.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thedataletter.com/subscribe?"><span>Subscribe now</span></a></p><p>The infrastructure layer is solving its own problem. What still needs building is the layer between cheap compute and a working day, the one that decides whether all that capability turns into leverage for a person, or just more input to sort through. <a href="https://www.asauraai.com/">Asaura AI</a> is one bet on that layer, built for people who already feel the difference between having access to a powerful model and having a successful day at work. The broader point applies regardless of which tool you use. In a world where the model is cheap and the work keeps expanding, the system that organizes your context, your priorities, and your decisions is the part that compounds.</p><p>Per-token prices will keep falling. Token consumption will keep rising. Both can be true, and both already are. What decides whether that ends up as leverage for you, or as a faster firehose pointed at your inbox, is the orchestration layer sitting between the chip and the chair. I&#8217;ll keep following this trend, both on the economics side and on what the layer between the model and the worker has to look like.</p><div><hr></div><h2>Subscribe to The Data Letter for more on the economics of AI and the future of work. </h2><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thedataletter.com/subscribe&quot;,&quot;text&quot;:&quot;SUBSCRIBE&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thedataletter.com/subscribe"><span>SUBSCRIBE</span></a></p><h2>If you want a system that keeps your context, your goals, and your work organized on the days your brain pushes back, try Asaura AI. </h2><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.asauraai.com/&quot;,&quot;text&quot;:&quot;GET ASAURA&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.asauraai.com/"><span>GET ASAURA</span></a></p>]]></content:encoded></item><item><title><![CDATA[Build Your First AI Data Pipeline in Python: From Raw CSV to Predictions]]></title><description><![CDATA[A step-by-step scikit-learn tutorial that turns vehicle data into CO2 predictions, and teaches you to read your model&#8217;s results honestly]]></description><link>https://www.thedataletter.com/p/build-your-first-ai-data-pipeline</link><guid isPermaLink="false">https://www.thedataletter.com/p/build-your-first-ai-data-pipeline</guid><dc:creator><![CDATA[Hodman Murad]]></dc:creator><pubDate>Sat, 16 May 2026 20:28:38 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/0695377e-6558-4a42-b699-e5f537dcf390_1200x630.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Most beginner machine learning tutorials end at model.fit() and model.predict(). They skip the part where your preprocessing has to run the same way on training data and on new data, every single time, in the right order, without you remembering seven different steps. A pipeline solves all of that.</p><p>In this tutorial, you&#8217;ll build a working scikit-learn pipeline that ingests a raw CSV of vehicle data, fills in missing values, scales the numeric features, encodes the categorical text features, trains a Random Forest model to predict CO2 emissions, scores its predictions, and saves everything to disk for reuse. You&#8217;ll also learn how to read your evaluation metrics skeptically, so you know whether your model has learned anything worth shipping.</p><h2><strong>What you&#8217;ll need before you start</strong></h2><p>You&#8217;ll need Python 3.10 or newer, a code editor (I&#8217;m using VS Code), and four libraries. Open your terminal and run:</p><p><code>pip install pandas numpy scikit-learn joblib</code></p><p>For the dataset, grab the vehicle emissions CSV linked at the bottom of this article. Drop it into a folder called firstaipipeline on your desktop. Open that folder in VS Code, then create a file called aipipelinetutorial.py next to the CSV. This will be your workspace.</p><h2><strong>Why pipelines matter for any serious ML work</strong></h2><p>A pipeline is an object that holds all the steps of your data preparation and your model together in a fixed order. When you call fit(), the pipeline runs each preprocessing step on the training data, learns the parameters it needs (the mean of each column and the set of categories in each text field), and trains the model. When you call predict() on new data, the pipeline applies the same learned parameters in the same order and then runs the model.</p><p>Without a pipeline, every time new data arrives, you have to manually fill in missing values, rescale numeric columns, and convert text columns in exactly the same way you did when you trained the model. Different settings on new data, and the model gets confused inputs and returns confused predictions. A pipeline handles both sides of this for you. It applies your training settings to new data automatically, and keeps your test data out of those settings while you&#8217;re training.</p><p>There&#8217;s a second benefit. Once your pipeline is built, swapping models becomes a one-line change. The quality of models improves with a fast pace of iteration. </p><div><hr></div><h3>If you like tutorials like this, I also just published a guide on <a href="https://betweenthinkingdoing.substack.com/p/build-your-own-ai-productivity-app">creating your own AI productivity app</a> on my other Substack, Between Thinking and Doing.</h3><div><hr></div><h2><strong>Loading the data and choosing your target</strong></h2><p>You&#8217;ll be working with<a href="https://www.kaggle.com/datasets/s3programmer/vehcle-emission-dataset?resource=download"> this vehicle emissions dataset from Kaggle</a>. Download the CSV, drop it in the same folder as your script, and you&#8217;re ready to load it.</p><p>Open aipipelinetutorial.py and start with the imports:</p><p><code>import joblib</code></p><p><code>import numpy as np</code></p><p><code>import pandas as pd</code></p><p><code>from sklearn.compose import ColumnTransformer</code></p><p><code>from sklearn.ensemble import RandomForestRegressor</code></p><p><code>from sklearn.impute import SimpleImputer</code></p><p><code>from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score</code></p><p><code>from sklearn.model_selection import train_test_split</code></p><p><code>from sklearn.pipeline import Pipeline</code></p><p><code>from sklearn.preprocessing import OneHotEncoder, StandardScaler</code></p><p>Each import has a job:</p><ul><li><p>Pipeline chains the preprocessing steps together</p></li><li><p>ColumnTransformer routes different columns through different pipelines</p></li><li><p>SimpleImputer fills missing values</p></li><li><p>StandardScaler puts numbers on a common scale</p></li><li><p>OneHotEncoder turns text categories into numbers</p></li><li><p>RandomForestRegressor is your model</p></li><li><p>The three metrics at the top tell you how well it performed</p></li></ul><p>Now load the data and take a look:</p><p><code>[df = pd.read_csv(&#8221;vehicle_emission_dataset.csv&#8221;)</code></p><p><code>print(&#8221;Dataset shape:&#8221;, df.shape)</code></p><p><code>print(df.head())</code></p><p><code>print(df.info())]</code></p><p>You should see a table with 10,000 rows and 19 columns. Some columns are numeric, such as engine size, mileage, and speed. Others are text-based, such as vehicle type, fuel type, and road type. A machine learning model can only read numbers, so the text columns need to be encoded before they ever reach the model. This is one of the jobs your pipeline will handle.</p><p>You&#8217;re predicting CO2 Emissions. That column has to come out of your feature set, because if the model sees the answer during training, it isn&#8217;t learning anything useful.</p><p><code>target = &#8220;CO2 Emissions&#8221;</code></p><p><code>leakage_cols = [</code></p><p><code>    &#8220;NOx Emissions&#8221;,</code></p><p><code>    &#8220;PM2.5 Emissions&#8221;,</code></p><p><code>    &#8220;VOC Emissions&#8221;,</code></p><p><code>    &#8220;SO2 Emissions&#8221;,</code></p><p><code>    &#8220;Emission Level&#8221;,</code></p><p><code>]</code></p><p><code>X = df.drop(columns=[target] + leakage_cols)</code></p><p><code>y = df[target]</code></p><p>Why drop the other emission columns, too? Because all the emissions in this dataset come from the same source: the engine burning fuel. CO2, NOx, and PM2.5 rise and fall together because they&#8217;re produced by the same event. If you let your model see NOx while it&#8217;s trying to predict CO2, it&#8217;s not really predicting anything. It&#8217;s looking up the answer in a different column. Researchers call this data leakage, and it&#8217;s one of the easiest ways to fool yourself into thinking you&#8217;ve built a great model when you haven&#8217;t. Drop these columns now, and you force the model to predict CO2 from the things you&#8217;d realistically know about a vehicle before it ever started its engine. </p>
      <p>
          <a href="https://www.thedataletter.com/p/build-your-first-ai-data-pipeline">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Code w/ Claude]]></title><description><![CDATA[5 data science trends I&#8217;m watching]]></description><link>https://www.thedataletter.com/p/code-w-claude</link><guid isPermaLink="false">https://www.thedataletter.com/p/code-w-claude</guid><dc:creator><![CDATA[Hodman Murad]]></dc:creator><pubDate>Mon, 11 May 2026 10:02:22 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/7d647690-d81d-469a-98ab-c07fab4b23e1_1424x747.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>6 MINUTE READ</p><div><hr></div><p>I&#8217;m still thinking about the ideas from the talks at Anthropic&#8217;s Code with Claude conference in San Francisco, which I attended last week. Note to self: go to more developer days.</p><p>A lot of Code w/ Claude was aimed at software engineers building agents, but if you read between the lines, almost every announcement carries a direct consequence for how we&#8217;ll do data science, MLOps, and applied AI work.  So instead of summarizing each session, I&#8217;ve put together five trends I think are coming for the data scientist role.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thedataletter.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thedataletter.com/subscribe?"><span>Subscribe now</span></a></p><h2><strong>1. A 2027 data scientist treats model upgrades as dependency bumps</strong></h2><p>The clearest theme across the keynotes was a directive to &#8216;build for the next model&#8217;. The teams getting the best results from Claude invest in automated evals, lightweight harnesses, and ambitious prototypes that don&#8217;t quite work today, so they&#8217;re ready when the next model lands.</p><p>For data scientists, this is a familiar idea wearing new clothes. We&#8217;ve spent our careers retraining and re-evaluating on rolling windows. What&#8217;s different now is the cadence. Anthropic shipped eight frontier models in twelve months. If your data product is wired tightly to the quirks of one specific model version, you&#8217;re going to spend 2026 doing migration work instead of building.</p><p>The 2027 version of this job looks more like careful pipeline work than reckless shipping. You build evaluation suites that catch regressions automatically, so you can swap in a new model and trust the results before any of it reaches a customer. You keep a list of ideas that are slightly out of reach today, so you can revisit them when the next model jump makes them feasible. Teams that ship safely treat model releases like any other software update. Same review process. Same rollback plan.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thedataletter.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thedataletter.com/subscribe?"><span>Subscribe now</span></a></p><h2><strong>2. A 2027 data scientist owns the connections, not the wrappers</strong></h2><p>A year ago, getting Claude to behave reliably meant writing a lot of supporting code. One of the talks showed how much of that work has now moved into the model itself, so developers no longer have to build it from scratch. </p><ul><li><p><strong>Picking the right tool for a task.</strong> Claude now decides which tool to use on its own, reliably enough that hand-written rules get in the way more than they help.</p></li><li><p><strong>Retrying when tools fail.</strong> Claude notices the failure, recovers, and tries again, without a wrapper to babysit it.</p></li><li><p><strong>Splitting documents into chunks for retrieval. </strong>The new million-token context window, paired with server-side memory management, removes the need for most custom retrieval pipelines.</p></li><li><p><strong>Translating screen coordinates for browser automation.</strong> Claude now reads native screen resolutions and clicks the right place without conversion code.</p></li><li><p><strong>Spinning up servers to run the code Claude writes.</strong> Claude now has its own sandbox built in, so it can write code, run it, fix it, and report back, all in one step.</p></li></ul><p>The lesson for data science teams here is that the code you write today to patch model weaknesses will be irrelevant in a few months, because Anthropic will fix those weaknesses in the next release. </p><p>The 2027 data scientist spends less time hand-rolling RAG pipelines and retry logic, and more time building integrations into proprietary data and bespoke evaluation harnesses. The plumbing is being commoditized. The data, the evals, and the domain integrations are what stay valuable. </p><div><hr></div><p>In case you&#8217;re new here, here are some recent articles that were very popular with our subscribers:</p><ul><li><p><a href="https://hodmanmurad.substack.com/p/prompt-engineering">Prompt Engineering.</a></p></li><li><p><a href="https://hodmanmurad.substack.com/p/mlops-on-a-50-monthly-budget">MLOps on a $50 Budget</a></p></li><li><p><a href="https://hodmanmurad.substack.com/p/ai-infrastructure-engineering-driving">AI Infrastructure Engineering: Driving JP Morgan&#8217;s $2 Billion Return</a></p></li><li><p><a href="https://hodmanmurad.substack.com/p/advanced-model-drift-detection">Advanced Model Drift Detection</a> </p><div><hr></div></li></ul><h2><strong>3. A 2027 data scientist thinks in two scaling axes</strong></h2><p>For years, the conversation about scaling language models was about training. Bigger datasets, bigger models, more upfront compute. The Code with Claude <a href="https://www.youtube.com/watch?v=OXJO4LldSnc">talk on test-time compute</a> reminded me how much that conversation has expanded. There&#8217;s now a second way to scale, and it happens after the model is trained.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IIMv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9be57851-dc6b-47a7-914c-33dc35098429_1600x600.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IIMv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9be57851-dc6b-47a7-914c-33dc35098429_1600x600.png 424w, https://substackcdn.com/image/fetch/$s_!IIMv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9be57851-dc6b-47a7-914c-33dc35098429_1600x600.png 848w, https://substackcdn.com/image/fetch/$s_!IIMv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9be57851-dc6b-47a7-914c-33dc35098429_1600x600.png 1272w, https://substackcdn.com/image/fetch/$s_!IIMv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9be57851-dc6b-47a7-914c-33dc35098429_1600x600.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IIMv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9be57851-dc6b-47a7-914c-33dc35098429_1600x600.png" width="1456" height="546" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9be57851-dc6b-47a7-914c-33dc35098429_1600x600.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:546,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!IIMv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9be57851-dc6b-47a7-914c-33dc35098429_1600x600.png 424w, https://substackcdn.com/image/fetch/$s_!IIMv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9be57851-dc6b-47a7-914c-33dc35098429_1600x600.png 848w, https://substackcdn.com/image/fetch/$s_!IIMv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9be57851-dc6b-47a7-914c-33dc35098429_1600x600.png 1272w, https://substackcdn.com/image/fetch/$s_!IIMv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9be57851-dc6b-47a7-914c-33dc35098429_1600x600.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>Reasoning models give you a second dial. Spend more tokens at inference, and you can get measurably better outcomes on the same model. Anthropic showed Opus 4.7 running a traffic simulation prompt at low, high, and max effort. At low effort, Claude finished in 50 seconds and produced a basic simulation, with the traffic light awkwardly placed in the middle of the road. At maximum effort, it took ten times longer and used ten times as many tokens, but produced realistic driving behavior, varied car types, and a correctly placed traffic light.</p><p>Anthropic also shipped a few new framework pieces. Adaptive thinking lets Claude decide when to think, in what order, and how much to think, instead of forcing a single thinking phase up front. Effort levels (low, medium, high, extra high, max) and task budgets (caps on tokens, time, or cost) let you tell Claude how hard to work and when to stop, so you can trade off cost, latency, and quality on purpose. </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thedataletter.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thedataletter.com/subscribe?"><span>Subscribe now</span></a></p><p>For data science, this opens up some interesting design space. You can pick a smaller model with high effort instead of a bigger model with low effort, and the trade-off curves aren&#8217;t what you&#8217;d expect. When latency matters, a small model gives you the fastest first response. When the final answer matters more than the first token, a larger model running at low effort often finishes the whole task faster than a small model grinding through it. Run your own evaluations across a few effort levels, plot accuracy against tokens spent, and pick the setting where spending more tokens stops paying off.</p><p>There&#8217;s also an advisor strategy worth flagging, where a smaller model executes while reaching out to a bigger model for advice. One customer hit frontier-quality results at five times lower cost. For high-volume LLM workloads, that pays for itself in a quarter.</p><p>The 2027 data scientist evaluates models on two dimensions, size and effort, and reports performance per dollar rather than accuracy alone.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thedataletter.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thedataletter.com/subscribe?"><span>Subscribe now</span></a></p><h2><strong>4. A 2027 data scientist curates memory like a feature store</strong></h2><p><a href="https://www.youtube.com/watch?v=RtywqDFBYnQ&amp;t=1s">The session on memory and dreaming</a> was the one I keep thinking about. Anthropic released two related capabilities here. <strong>The first is memory inside Cloud Managed Agents.</strong> Claude treats memory like a folder of files, reading and writing them with the same tools it uses for code. Each store has access controls, full version history, and protection against multiple agents overwriting each other&#8217;s notes. <strong>The second is Dreaming</strong>, a background process that reviews recent agent transcripts, finds patterns and shared mistakes across many sessions, and updates the memory store so the next day&#8217;s agents start out smarter.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FCm2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d8941b0-b197-4d76-836c-00a216964a8f_1600x600.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FCm2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d8941b0-b197-4d76-836c-00a216964a8f_1600x600.png 424w, https://substackcdn.com/image/fetch/$s_!FCm2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d8941b0-b197-4d76-836c-00a216964a8f_1600x600.png 848w, https://substackcdn.com/image/fetch/$s_!FCm2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d8941b0-b197-4d76-836c-00a216964a8f_1600x600.png 1272w, https://substackcdn.com/image/fetch/$s_!FCm2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d8941b0-b197-4d76-836c-00a216964a8f_1600x600.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FCm2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d8941b0-b197-4d76-836c-00a216964a8f_1600x600.png" width="1456" height="546" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0d8941b0-b197-4d76-836c-00a216964a8f_1600x600.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:546,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FCm2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d8941b0-b197-4d76-836c-00a216964a8f_1600x600.png 424w, https://substackcdn.com/image/fetch/$s_!FCm2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d8941b0-b197-4d76-836c-00a216964a8f_1600x600.png 848w, https://substackcdn.com/image/fetch/$s_!FCm2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d8941b0-b197-4d76-836c-00a216964a8f_1600x600.png 1272w, https://substackcdn.com/image/fetch/$s_!FCm2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d8941b0-b197-4d76-836c-00a216964a8f_1600x600.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>If that doesn&#8217;t sound like online learning to a data scientist, I don&#8217;t know what does.</p><p>One customer saw a sixfold increase in task completion rate on a benchmark after turning on Dreaming. Another customer cut the number of wrong answers their internal AI tools gave employees on the first try by 90%. Same models, but with a memory layer that gets curated overnight.</p><p>ML teams now have a new surface to think hard about. Memory raises familiar questions about what to store, how to keep it fresh, who can write to it, and how to share it across teams. The substrate is different from anything we&#8217;ve worked with before. Claude reads memory as a folder of files it manages directly, which is a different setup from the vector databases data scientists usually reach for. Familiar retrieval techniques won&#8217;t always carry over.</p><p>The 2027 data scientist treats memory stores the way we currently treat feature stores. Versioned, observable, owned, with explicit policies for what&#8217;s allowed to write and what gets pruned. Whatever we end up calling the role, someone on the team will own this work.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thedataletter.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thedataletter.com/subscribe?"><span>Subscribe now</span></a></p><h2><strong>5. A 2027 data scientist runs work in parallel</strong></h2><p>A few demos showed Cloud Code running sessions in parallel via routines, kicked off by webhooks, schedules, or API calls, with the agent prompting itself rather than waiting for a human. Others showed multi-agent orchestration with a commander coordinating sub-agents, each with its own context window.</p><p>A new outcomes feature lets you write a markdown rubric describing success criteria, and the agent iterates until it satisfies the rubric or surfaces a clear failure mode. There are also prebuilt Google Cloud MCP services (BigQuery, Looker, and the Developer Knowledge API), giving Claude direct access to data warehouses and BI tools.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MfG4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e0c8593-6199-4389-b44e-9ddaab42e4f7_1600x600.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MfG4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e0c8593-6199-4389-b44e-9ddaab42e4f7_1600x600.png 424w, https://substackcdn.com/image/fetch/$s_!MfG4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e0c8593-6199-4389-b44e-9ddaab42e4f7_1600x600.png 848w, https://substackcdn.com/image/fetch/$s_!MfG4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e0c8593-6199-4389-b44e-9ddaab42e4f7_1600x600.png 1272w, https://substackcdn.com/image/fetch/$s_!MfG4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e0c8593-6199-4389-b44e-9ddaab42e4f7_1600x600.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MfG4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e0c8593-6199-4389-b44e-9ddaab42e4f7_1600x600.png" width="1456" height="546" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9e0c8593-6199-4389-b44e-9ddaab42e4f7_1600x600.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:546,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!MfG4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e0c8593-6199-4389-b44e-9ddaab42e4f7_1600x600.png 424w, https://substackcdn.com/image/fetch/$s_!MfG4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e0c8593-6199-4389-b44e-9ddaab42e4f7_1600x600.png 848w, https://substackcdn.com/image/fetch/$s_!MfG4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e0c8593-6199-4389-b44e-9ddaab42e4f7_1600x600.png 1272w, https://substackcdn.com/image/fetch/$s_!MfG4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e0c8593-6199-4389-b44e-9ddaab42e4f7_1600x600.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>Data scientists already work this way. The work splits naturally into independent threads. Trying different feature combinations, comparing model variants, running evaluations, and exploring different slices of a dataset. We&#8217;ve done this work one cell at a time in notebooks because notebooks were the best tool we had.</p><p>The new pattern is asynchronous by default. You describe the task, write down what success looks like as a rubric, and a fleet of agents works on it in the background. You come back to a finished result, or a clear failure mode you can debug.</p><p>The 2027 data scientist spends less time running cells and more time writing rubrics, reviewing diffs, and curating memory. That&#8217;s a different skill mix than what got many hired.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thedataletter.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thedataletter.com/subscribe?"><span>Subscribe now</span></a></p><h2><strong>What to do this quarter</strong></h2><p>If I were running a data science team right now, I&#8217;d make 3 moves:</p><p><strong>First, </strong>audit your eval coverage. If you can&#8217;t swap models in a day and re-run, you&#8217;re going to fall behind. Hard evals are the moat.</p><p><strong>Second,</strong> identify one workflow where async multi-agent makes sense and prototype it. Hyperparameter sweeps, multi-model bake-offs, and bulk data quality checks are obvious candidates.</p><p><strong>Third,</strong> start thinking about memory as a first-class artifact. Even before you deploy a system that uses it, the discipline of writing down what your agents and pipelines should remember between runs will sharpen how you think about reproducibility and learning.</p><p>The 2027 data scientist isn&#8217;t a different person from the 2025 one. Same instincts about evaluation, same suspicion of overfitting, same love of a clean baseline. The job is just bigger now. We have a second scaling axis to reason about, a memory layer to curate, and fleets of agents to orchestrate instead of notebooks to babysit.</p><p>The work ahead is the work data scientists already do well. Evaluating new tools rigorously, building thoughtful pipelines, and knowing when a 10x improvement is a signal versus a fluke.</p><p>Two years isn&#8217;t long. The data scientists who&#8217;ll thrive in 2027 are the ones who started experimenting today. </p><div><hr></div><p>One more thing. Most data scientists I know are great at the work and terrible at starting it. The 2027 version of this job has more surfaces to manage, more decisions to make, and more opportunities to stall out. That's the exact problem I'm building <a href="https://asauraai.com/">Asaura AI</a> to solve. It's for high performers who hit paralysis, whether that comes from ADHD, executive dysfunction, a project too big to wrap your head around, or a long day that left nothing in the tank. If any of that lands, <a href="https://app.asauraai.com/">Asaura 2 is live</a>.</p><p></p>]]></content:encoded></item><item><title><![CDATA[Databricks vs Snowflake vs Fabric]]></title><description><![CDATA[Three Data Platforms That Survive DACH Banking Compliance]]></description><link>https://www.thedataletter.com/p/databricks-vs-snowflake-vs-fabric</link><guid isPermaLink="false">https://www.thedataletter.com/p/databricks-vs-snowflake-vs-fabric</guid><dc:creator><![CDATA[Hodman Murad]]></dc:creator><pubDate>Tue, 05 May 2026 09:01:40 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/f248f87e-b604-4ce4-8a32-5c0097324d08_1408x768.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I spent four years managing the consumer banking portfolio at my consulting job. The most interesting projects my team worked on were always in the DACH region.</p><p>Although Canada, Singapore, and the UK have heavier overall regulation, DACH regulators demand a specific mix of data lineage, audit trails, and sovereignty that few other jurisdictions match.</p><p>That combination of capital rules, governance expectations, and cross-border complexity makes DACH a useful stress test. A platform good enough for a DACH bank handles strict requirements anywhere else. </p><p>The three data platforms my team always recommended to DACH clients and eventually helped procure were Databricks, Snowflake, and Azure Fabric. The choice among these three leading platforms always came down to three questions:</p><ul><li><p>What cloud contracts do you already hold?</p></li><li><p>How skilled is your ML team?</p></li><li><p>Do you need to share data across legal entities?</p></li></ul><p>Below is how each platform answers those questions.</p><div><hr></div><p>Hey there! &#128075;&#128075;&#128075; I&#8217;m Hodman Murad. I spent my entire career working in data science, most of it in consulting, some in SAAS. Earlier this year, I decided to start my own AI platform, <a href="https://asauraai.com/">Asaura AI</a>. It&#8217;s a productivity tool designed for individuals with ADHD, neurodivergent minds, and those experiencing decision fatigue and executive dysfunction, helping them complete their tasks. </p><p>Yesterday, we released the first post-beta version of Asaura. If you&#8217;re looking to gain a productivity edge during your workday, or fall into any of the buckets I just mentioned, <a href="https://app.asauraai.com/">I think you should try Asaura</a>.</p><p>I&#8217;m also documenting the build, as well as other topics that interest me regarding ethical AI, building AI for neurodivergent minds, and productivity frameworks on my other Substack, Between Thinking and Doing. <a href="https://betweenthinkingdoing.substack.com/">You can check that out here</a>.</p><div><hr></div><p>Here is how Databricks, Snowflake, and Azure Fabric compare on those three questions.</p><h2>Azure Microsoft Fabric</h2><p>Microsoft&#8217;s unified analytics platform. Works best for organizations already deep in Microsoft 365 and Azure.</p><p><strong>Strengths</strong></p><ul><li><p>OneLake stores one copy of data for reporting, AI, and governance</p></li><li><p>Native Purview governance satisfies BaFin, FINMA, and FCA documentation</p></li><li><p>EU data residency built in</p></li></ul><p><strong>Weaknesses</strong></p><ul><li><p>Newer platform; advanced ML features are still maturing</p></li><li><p>Licensing complexity without a Microsoft partner</p></li></ul><p><em><strong>Best if you already have a heavy Microsoft footprint.</strong></em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thedataletter.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thedataletter.com/subscribe?"><span>Subscribe now</span></a></p><h2>Databricks</h2><p>Unified data and AI platform built on Apache Spark. Leads the market for MLOps.</p><p><strong>Strengths</strong></p><ul><li><p>Mature MLflow integration preferred by ML engineers</p></li><li><p>Delta Lake's open format prevents vendor lock&#8209;in</p></li><li><p>Runs on Azure, AWS, or GCP</p></li></ul><p><strong>Weaknesses</strong></p><ul><li><p>Higher cost than Fabric for pure warehouse workloads without significant ML</p></li><li><p>Steeper learning curve without existing Spark or Python skills</p></li></ul><p>Best for organizations with substantial ML engineering capacity, or for any industry where fraud detection, personalization, or predictive maintenance requires daily retraining.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thedataletter.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thedataletter.com/subscribe?"><span>Subscribe now</span></a></p><h2>Snowflake</h2><p>Cloud data warehouse with strong SQL analytics and data sharing.</p><p><strong>Strengths</strong></p><ul><li><p>Strongest SQL analytics performance</p></li><li><p>Familiar SQL interface reduces migration friction</p></li><li><p>Data Clean Rooms enable GDPR-compliant sharing among group entities, which is important for any holding company or franchise network that must share customer data across legal boundaries without violating privacy laws.</p></li></ul><p><strong>Weaknesses</strong></p><ul><li><p>MLOps significantly less mature than Databricks</p></li><li><p>Cost scales rapidly with compute&#8209;intensive ML workloads</p></li></ul><p>Best for teams where SQL analysts drive decisions and ML is a secondary concern (e.g., retail, logistics, or any business with distributed franchise or subsidiary data)</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thedataletter.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thedataletter.com/subscribe?"><span>Subscribe now</span></a></p><h2>Which one fits your situation?</h2><p>Azure Microsoft Fabric was the strongest default choice for most DACH clients I worked with. Data sovereignty and existing Microsoft integration push it ahead.</p><p>Choose Databricks only when your team already has strong ML engineering capacity, and you need top&#8209;tier MLOps.</p><p>Choose Snowflake only when multi&#8209;entity data sharing and SQL analytics dominate over any ML workload.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thedataletter.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thedataletter.com/subscribe?"><span>Subscribe now</span></a></p><h2>The next step I think you should take</h2><p>The most important step before making your decision is to evaluate your current licensing, the skills of your machine learning team, and your compliance obligations in relation to the three options you are considering. Conduct a small pilot project with your top two candidates using a single real workload. This test will uncover costs that a comparison matrix might not reveal.</p><p>After four years of watching DACH banks navigate BaFin and FINMA, I trust this method. If a platform holds up under those conditions, it will hold up for you.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thedataletter.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thedataletter.com/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[IT Keeps Blocking Database Access. Here’s the Strategy That Gets It Approved.]]></title><description><![CDATA[Stop Getting Locked Out of Your Data. Here&#8217;s How to Get Approved.]]></description><link>https://www.thedataletter.com/p/it-keeps-blocking-database-access</link><guid isPermaLink="false">https://www.thedataletter.com/p/it-keeps-blocking-database-access</guid><dc:creator><![CDATA[Hodman Murad]]></dc:creator><pubDate>Sun, 12 Apr 2026 20:12:01 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/2ba1d15d-db99-4ff7-9ae0-a5f24d522273_1408x768.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Seven years of consulting will teach you something fast: the company hired us to solve their data problems, but IT didn&#8217;t always get the memo. I&#8217;d walk into an engagement with a clear mandate, and spend the first two weeks in a standoff with an IT department that had every reason to say no and almost no incentive to say yes.</p><p>I learned early that winning that standoff had nothing to do with being right. It had everything to do with speaking the right language. IT is optimizing for zero-surprise bills and zero data leaks. If you want access, you have to make their job easier, not harder. This article is the playbook I refined over seven years of doing exactly that.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7YLI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c3e145a-6a53-4ba9-a586-1e54d8d19628_1408x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7YLI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c3e145a-6a53-4ba9-a586-1e54d8d19628_1408x768.png 424w, https://substackcdn.com/image/fetch/$s_!7YLI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c3e145a-6a53-4ba9-a586-1e54d8d19628_1408x768.png 848w, https://substackcdn.com/image/fetch/$s_!7YLI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c3e145a-6a53-4ba9-a586-1e54d8d19628_1408x768.png 1272w, https://substackcdn.com/image/fetch/$s_!7YLI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c3e145a-6a53-4ba9-a586-1e54d8d19628_1408x768.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7YLI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c3e145a-6a53-4ba9-a586-1e54d8d19628_1408x768.png" width="1408" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4c3e145a-6a53-4ba9-a586-1e54d8d19628_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;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!7YLI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c3e145a-6a53-4ba9-a586-1e54d8d19628_1408x768.png 424w, https://substackcdn.com/image/fetch/$s_!7YLI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c3e145a-6a53-4ba9-a586-1e54d8d19628_1408x768.png 848w, https://substackcdn.com/image/fetch/$s_!7YLI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c3e145a-6a53-4ba9-a586-1e54d8d19628_1408x768.png 1272w, https://substackcdn.com/image/fetch/$s_!7YLI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c3e145a-6a53-4ba9-a586-1e54d8d19628_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><strong>IT Always Defaults to No</strong></h2><p>Before you write a request that gets approved, understand why no is the default. It&#8217;s risk aversion driven by three factors: compliance, cost, and liability.</p><p><strong>Cloud cost exposure.</strong> A single analyst running <code>SELECT * FROM large_table</code> on a dashboard can double a cloud data warehouse bill overnight. A virtual warehouse consumes Snowflake credits while it runs. Credit limits don&#8217;t cut off spending instantly. When a threshold is reached, the assigned warehouse may continue running for a period before it is suspended, consuming additional credits in the process. This is true even when the most aggressive suspension setting is used.  IT&#8217;s budget is on the line, and even well-intentioned queries can cause cost spikes when analysts don&#8217;t understand consumption-based pricing.</p><p><strong>Identity and Access Management attack surface.</strong> Every additional person with a direct database connection string is a potential entry point. Unauthorized disclosure of credentials is among the leading causes of data incidents across enterprise environments. The principle of least privilege, which governs how IT controls access, means database access should be granted only to the degree necessary to accomplish a specific task. Access is meant to be the exception, not the baseline.</p><p><strong>Liability and regulatory exposure.</strong> If you export sensitive data to an unencrypted Excel file on your laptop and that laptop goes missing, regulators can fine the company. Cybersecurity frameworks treat the loss of control over sensitive data as one of the most serious risks a company can face, and often one that must be disclosed. Storing sensitive data on laptops in unencrypted Excel files, without any record of who accessed it or when, is exactly the kind of control failure that creates regulatory and legal exposure. Excel sprawl creates audit nightmares that governed database access prevents.</p><p><strong>What read-only access means to IT.</strong> Analysts say read-only and think &#8216;I can&#8217;t delete rows.&#8217; IT hears read-only and thinks about all the things that become possible with that access: pulling down the entire customer database, running queries so heavy they slow down core business systems, or viewing compensation data and confidential deal information without authorization.</p><p><strong>When to accept no versus push back.</strong> Accept no if IT offers a curated view, reporting replica, or sandbox environment. These signal a mature data organization that balances security with analyst access. If IT&#8217;s proposed alternative is to manually pull data into Excel, push back. Spreadsheets saved on local computers with no access controls, no version history, and no audit trail are a far bigger security and compliance problem than a governed database connection. That conversation needs to go up the chain.</p><div><hr></div><p>If I&#8217;ve gotten your attention so far, what follows is the part that took seven years to learn. The templates, the compliance documentation, the risk mitigation proposals, the escalation scripts, and the three case studies that show how this all plays out. It&#8217;s all below. </p>
      <p>
          <a href="https://www.thedataletter.com/p/it-keeps-blocking-database-access">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[5 BigQuery Features That Changed How I Write SQL]]></title><description><![CDATA[Modern BigQuery SQL Features for Senior Engineers]]></description><link>https://www.thedataletter.com/p/5-bigquery-features-that-changed</link><guid isPermaLink="false">https://www.thedataletter.com/p/5-bigquery-features-that-changed</guid><dc:creator><![CDATA[Hodman Murad]]></dc:creator><pubDate>Sun, 05 Apr 2026 16:16:25 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/e27f52ea-4802-413d-8974-cf89c20a9e11_1408x768.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Happy Sunday! I hope you&#8217;ve all been well! I haven&#8217;t been keeping up with The Data Letter as much as I should have these past few weeks because I&#8217;ve been busy building and launching the beta for Asaura AI. For those of you who are new here, Asaura AI is a tool designed to help people who struggle with the high energy cost of starting a task. ADHD brains. Neurodivergent brains. Just plain tired brains. It&#8217;s built to give you a simple entry point so you can stop negotiating with yourself and just move.</p><p>The beta is finally ready for macOS and Linux, and I&#8217;d love for you to test the architecture. If you&#8217;ve ever felt paralyzed by a project that felt too big, your feedback is exactly what I need to refine the system. You can try it out and share your experience through our survey at the links below. </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://asauraai.com/beta&quot;,&quot;text&quot;:&quot;DOWNLOAD THE ASAURA AI BETA&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://asauraai.com/beta"><span>DOWNLOAD THE ASAURA AI BETA</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://forms.gle/UgTmgHd1RBCiGzmZ6&quot;,&quot;text&quot;:&quot;TAKE THE ANONYMOUS USER SURVEY&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://forms.gle/UgTmgHd1RBCiGzmZ6"><span>TAKE THE ANONYMOUS USER SURVEY</span></a></p><p>I&#8217;ve been documenting the build over a 100 Days of Building AI video marathon. You can check that out on Substack notes or LinkedIn. <a href="https://substack.com/@hodmanmurad/note/c-238611411?utm_source=notes-share-action&amp;r=7b8hg">Today is Day 91</a>. </p><p>I&#8217;ve also been writing technical deep dives about the Asaura AI  build on my other Substack, <a href="https://betweenthinkingdoing.substack.com/p/the-seven-invisible-forces-that-sabotage">Between Thinking and Doing</a>. Feel free to subscribe to that as well, or <a href="https://www.linkedin.com/in/hodmanmurad/">connect with me on LinkedIn</a>. </p><p>Now that the main build is stable, I&#8217;ve got the space to get back into the rhythm of writing here every week. </p><div><hr></div><p>Today&#8217;s article covers BigQuery features I've found myself teaching constantly over the past year. I share at least three of these with every data team I meet. These features solve problems people have worked around for years.</p><p>Part of what makes them so useful is that SQL has a structural quirk that we all know too well: you write clauses in a fixed order that doesn&#8217;t match the order they actually execute. BigQuery&#8217;s GoogleSQL dialect has been shipping fixes for this. The five features below are the ones I keep coming back to. </p>
      <p>
          <a href="https://www.thedataletter.com/p/5-bigquery-features-that-changed">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Prompt Engineering.]]></title><description><![CDATA[Treating LLM Prompts as Software Assets]]></description><link>https://www.thedataletter.com/p/prompt-engineering</link><guid isPermaLink="false">https://www.thedataletter.com/p/prompt-engineering</guid><dc:creator><![CDATA[Hodman Murad]]></dc:creator><pubDate>Sun, 22 Mar 2026 15:26:33 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/c0756479-4fc4-4798-94a8-54a1230c48d7_1408x768.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Ad-hoc prompting has a shelf life. It works fine when one person owns a single prompt and checks it regularly. It breaks down when three engineers are touching the same prompt string in different files, nobody&#8217;s tracking what changed, and malformed outputs are the first sign that something went wrong. At that point, the prompting is the least of your concerns. What&#8217;s missing is basic software management.</p><div><hr></div><h3><strong>Why Ad-Hoc Prompting Breaks at Scale</strong></h3><p>Ad-hoc prompting works fine for prototypes. You&#8217;re iterating fast, the model&#8217;s responses are good enough, and the cost is trivial. When a prompt is serving real users under real SLAs with real billing attached, the economics look very different from a prototype.</p><p>A prompt is a dependency, just like a library version or a database schema. When it changes, outputs change. When outputs change, downstream parsers, classifiers, and user interfaces can break. <a href="https://www.getmaxim.ai/articles/prompt-versioning-best-practices-for-ai-engineering-teams/">Teams that don&#8217;t version control prompts</a> lose institutional knowledge, can&#8217;t reproduce bugs, and have no rollback path.</p><p>The compounding factor is model updates. When using AI via third-party APIs, the LLMs behind those APIs can unexpectedly change. Like traditional ML models, LLMs can be refreshed or tuned without a significant version bump, <a href="https://reintech.io/blog/implement-prompt-versioning-management-production">meaning the model&#8217;s performance on your set of prompts can change without any notice</a>. Without a versioning system, you can&#8217;t determine whether a degradation came from a prompt change or a model change, and that ambiguity is expensive.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!p3-6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30337d5e-a240-4eeb-95ad-547cf0506abb_1408x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!p3-6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30337d5e-a240-4eeb-95ad-547cf0506abb_1408x768.png 424w, https://substackcdn.com/image/fetch/$s_!p3-6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30337d5e-a240-4eeb-95ad-547cf0506abb_1408x768.png 848w, https://substackcdn.com/image/fetch/$s_!p3-6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30337d5e-a240-4eeb-95ad-547cf0506abb_1408x768.png 1272w, https://substackcdn.com/image/fetch/$s_!p3-6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30337d5e-a240-4eeb-95ad-547cf0506abb_1408x768.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!p3-6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30337d5e-a240-4eeb-95ad-547cf0506abb_1408x768.png" width="1408" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/30337d5e-a240-4eeb-95ad-547cf0506abb_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;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!p3-6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30337d5e-a240-4eeb-95ad-547cf0506abb_1408x768.png 424w, https://substackcdn.com/image/fetch/$s_!p3-6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30337d5e-a240-4eeb-95ad-547cf0506abb_1408x768.png 848w, https://substackcdn.com/image/fetch/$s_!p3-6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30337d5e-a240-4eeb-95ad-547cf0506abb_1408x768.png 1272w, https://substackcdn.com/image/fetch/$s_!p3-6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30337d5e-a240-4eeb-95ad-547cf0506abb_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><h3><strong>Prompts Drift Like Code</strong></h3><p>Software engineers have spent decades building systems to manage code drift: version control, branching strategies, code review, CI/CD. Prompts need the same discipline, and most teams apply almost none of it.</p><p>There&#8217;s an unavoidable tension between keeping prompts close to the code v<a href="https://launchdarkly.com/blog/prompt-versioning-and-management/">ersus an environment that non-technical stakeholders can access</a>.<a href="https://launchdarkly.com/blog/prompt-versioning-and-management/"> </a>Leaving it unresolved gets more expensive as the team grows.</p><p>Prompt management tools from observability platforms like Arize, Braintrust, and LangSmith offer Git-like version control for prompts and allow rollback if changes reduce quality, but tools alone won&#8217;t help if the discipline isn&#8217;t there. Prompt management tools are inherently limiting because they can&#8217;t easily execute your application&#8217;s code. Even when they can, there&#8217;s often significant indirection involved, making it difficult to test prompts with your system&#8217;s full capabilities, including tools, RAG, and agents. Keeping prompts in the same repository as application code, with the same review gates, removes that indirection.</p><p>A prompt change is a logic change. It controls what your system does and how it responds, and it deserves the same review process as any other change to your codebase. </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thedataletter.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thedataletter.com/subscribe?"><span>Subscribe now</span></a></p><h3><strong>Testing Prompts vs. Testing Code</strong></h3><p>Testing code is relatively well understood. You write unit tests, integration tests, and end-to-end tests. Give a traditional function the same input twice, and you&#8217;ll get the same output twice, which makes it straightforward to write tests that check for exact results.</p><p>Prompt engineering is about conditioning a probabilistic model to generate a desired output. <a href="https://dev.to/kuldeep_paul/mastering-prompt-versioning-best-practices-for-scalable-llm-development-2mgm">Each additional instruction or piece of context</a> steers the model&#8217;s generation in a particular direction.<a href="https://dev.to/kuldeep_paul/mastering-prompt-versioning-best-practices-for-scalable-llm-development-2mgm"> </a>That probabilistic nature means you can&#8217;t assert exact outputs. Instead of checking for an exact answer, you check whether the response has the right shape: whether it&#8217;s valid JSON, whether the label the model chose is one you&#8217;d accept, and whether the thing it extracted actually appeared in the source text.</p><p>Structured evaluations tell you whether a prompt change made things better or worse before it reaches users. Without them, you&#8217;re iterating on feel, which works fine until something goes wrong in a way you didn&#8217;t anticipate and can&#8217;t reproduce.</p><p>Eyeballing is useful as a final check, <a href="https://dextralabs.com/blog/prompt-engineering-for-llm/">but it doesn&#8217;t hold up at volume or across teams</a>.</p><div><hr></div><h3><strong>When Prompt Engineering Pays Off (and When It Doesn&#8217;t)</strong></h3><p>Before committing engineering resources to a prompt infrastructure, it&#8217;s worth being honest about ROI.</p><p>Prompt engineering pays off when a model&#8217;s output goes directly into another system without a human reviewing it first, when the same prompt runs thousands of times a day, when each call carries a meaningful cost, or when output quality has a direct and measurable effect on what users experience. Without reliable evaluation, you can&#8217;t iterate, and without iteration, you can&#8217;t improve. Projects stall here more than anywhere else in the LLM lifecycle.</p><p>For tasks reviewed by humans before use, or where call volume is low enough that failures surface quickly, a lightweight log of prompt versions in a shared document may be sufficient. For anything in the first category, treating prompts as software assets is worth the investment.</p><div><hr></div><p>In the next section, we get into the practical architecture: how to structure and version prompts, how to run A/B tests without exposing users to untested changes, how to build a test suite that runs automatically when a prompt changes, how to organise a prompt library across a growing team, how to track cost at the prompt level, how to detect when a deployed prompt starts degrading, and two failure patterns that illustrate what happens when these systems aren&#8217;t in place. </p>
      <p>
          <a href="https://www.thedataletter.com/p/prompt-engineering">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[LLM Inference Costs]]></title><description><![CDATA[The 60-80% Problem Nobody Talks About]]></description><link>https://www.thedataletter.com/p/llm-inference-costs</link><guid isPermaLink="false">https://www.thedataletter.com/p/llm-inference-costs</guid><dc:creator><![CDATA[Hodman Murad]]></dc:creator><pubDate>Sun, 08 Mar 2026 10:02:07 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/49b3f0fa-66f3-44d1-8990-5a1a5b3acea9_1424x752.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Training a model costs between $2K and $50K. You pay it once and move on. Inference is different. Every time your model responds to a user, you&#8217;re billed again. There&#8217;s no finish line.</p><p>Inference doesn&#8217;t work like that. Inference is a subscription you didn&#8217;t fully price. Once a model hits production, inference consistently accounts for 60-80% of <a href="https://aipmbriefs.substack.com/p/why-llm-inference-costs-more-than">total LLM operational spend across a 12-month horizon</a>. For teams shipping to real users at scale, <a href="https://introl.com/blog/inference-unit-economics-true-cost-per-million-tokens-guide">that number trends toward the high end</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oVG1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaad430c-fbeb-411f-88fa-f57dc66a4a08_1376x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oVG1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaad430c-fbeb-411f-88fa-f57dc66a4a08_1376x768.png 424w, https://substackcdn.com/image/fetch/$s_!oVG1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaad430c-fbeb-411f-88fa-f57dc66a4a08_1376x768.png 848w, https://substackcdn.com/image/fetch/$s_!oVG1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaad430c-fbeb-411f-88fa-f57dc66a4a08_1376x768.png 1272w, https://substackcdn.com/image/fetch/$s_!oVG1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaad430c-fbeb-411f-88fa-f57dc66a4a08_1376x768.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oVG1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaad430c-fbeb-411f-88fa-f57dc66a4a08_1376x768.png" width="1376" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aaad430c-fbeb-411f-88fa-f57dc66a4a08_1376x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1376,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!oVG1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaad430c-fbeb-411f-88fa-f57dc66a4a08_1376x768.png 424w, https://substackcdn.com/image/fetch/$s_!oVG1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaad430c-fbeb-411f-88fa-f57dc66a4a08_1376x768.png 848w, https://substackcdn.com/image/fetch/$s_!oVG1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaad430c-fbeb-411f-88fa-f57dc66a4a08_1376x768.png 1272w, https://substackcdn.com/image/fetch/$s_!oVG1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaad430c-fbeb-411f-88fa-f57dc66a4a08_1376x768.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><p>A team that spends $5K on training will often<a href="https://aipmbriefs.substack.com/p/why-llm-inference-costs-more-than"> spend $40K-$50K running that model in year one</a>. This happens consistently across production teams.</p><div><hr></div><h2><strong>Inference Costs Catch Production Teams Off Guard</strong></h2><p>Training has a natural end state. You&#8217;re optimizing toward a metric, you hit it, and spending stops. Inference has no finish line. Every user request is a billing event, and billing events compound.</p><p>Three mechanisms drive the bulk of that spend:</p><p><strong>KV cache memory consumption.</strong> When your model reads a prompt, it saves a record of every word it processes so it doesn&#8217;t have to re-read them for each new word it generates. <a href="https://developer.nvidia.com/blog/accelerate-large-scale-llm-inference-and-kv-cache-offload-with-cpu-gpu-memory-sharing/">That saved record is called the KV cache, and it sits in GPU memory</a>. The longer the prompt, <a href="https://medium.com/@plienhar/llm-inference-series-4-kv-caching-a-deeper-look-4ba9a77746c8">the more memory it occupies</a>. For long prompts, <a href="https://arxiv.org/abs/2309.06180">40-60% of your GPU&#8217;s available memory can go to KV cache alone</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rJcr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98b95166-fe60-42e5-9692-02899fb0df67_1376x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rJcr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98b95166-fe60-42e5-9692-02899fb0df67_1376x768.png 424w, https://substackcdn.com/image/fetch/$s_!rJcr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98b95166-fe60-42e5-9692-02899fb0df67_1376x768.png 848w, https://substackcdn.com/image/fetch/$s_!rJcr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98b95166-fe60-42e5-9692-02899fb0df67_1376x768.png 1272w, https://substackcdn.com/image/fetch/$s_!rJcr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98b95166-fe60-42e5-9692-02899fb0df67_1376x768.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rJcr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98b95166-fe60-42e5-9692-02899fb0df67_1376x768.png" width="1376" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/98b95166-fe60-42e5-9692-02899fb0df67_1376x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1376,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!rJcr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98b95166-fe60-42e5-9692-02899fb0df67_1376x768.png 424w, https://substackcdn.com/image/fetch/$s_!rJcr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98b95166-fe60-42e5-9692-02899fb0df67_1376x768.png 848w, https://substackcdn.com/image/fetch/$s_!rJcr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98b95166-fe60-42e5-9692-02899fb0df67_1376x768.png 1272w, https://substackcdn.com/image/fetch/$s_!rJcr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98b95166-fe60-42e5-9692-02899fb0df67_1376x768.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><strong>Idle GPU time.</strong> <a href="https://developer.nvidia.com/blog/llm-inference-benchmarking-how-much-does-your-llm-inference-cost/">The GPUs powering your model rent for $2-$8/hour</a>, whether they&#8217;re processing requests or sitting idle. User traffic isn&#8217;t steady; it spikes during business hours and drops overnight, but you can&#8217;t spin up a new GPU instantly. Bringing one online takes between one and three minutes, which is too slow to respond to a traffic spike. So teams keep extra GPUs running at all times just in case, and pay for them around the clock.</p><p><strong>Per-token economics.</strong> Every word sent to the model and every word it sends back costs money. Tokens are just the unit the model uses to measure text, roughly three-quarters of a word each. What teams often miss is how quickly prompt length adds up. A request that includes 2,000 words of retrieved documents, a 500-word system instruction, and a 200-word question costs three to four times as much as a tightly written 700-word equivalent. Bloated instructions, uncompressed retrieved text, and redundant examples all push costs up faster than usage alone would.</p><div><hr></div><h2><strong>Standard Optimizations Don&#8217;t Finish the Job</strong></h2><p>The first instinct is usually to optimize at the model level: quantize to INT8, swap to a smaller model, apply distillation. These are legitimate tools, but they&#8217;re not a complete strategy.</p><p>Quantization can yield significant savings on its own (<a href="https://aimultiple.com/llm-quantization">up to 50% at INT8 and higher at INT4</a>), but model-routing or batching-only approaches typically plateau at 20-30%, and even quantization&#8217;s gains erode if retrieval context and serving efficiency aren&#8217;t addressed alongside it. Smaller models help when the workload is simple, but they degrade on complex instructions. Teams frequently apply one of these levers in isolation, see diminishing returns, and assume they&#8217;ve hit a ceiling.</p><p>They haven&#8217;t. The ceiling is generally much higher.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aEGA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21dab47f-3d4e-4a22-9a83-92fa0e1c1269_2032x1062.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aEGA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21dab47f-3d4e-4a22-9a83-92fa0e1c1269_2032x1062.png 424w, https://substackcdn.com/image/fetch/$s_!aEGA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21dab47f-3d4e-4a22-9a83-92fa0e1c1269_2032x1062.png 848w, https://substackcdn.com/image/fetch/$s_!aEGA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21dab47f-3d4e-4a22-9a83-92fa0e1c1269_2032x1062.png 1272w, https://substackcdn.com/image/fetch/$s_!aEGA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21dab47f-3d4e-4a22-9a83-92fa0e1c1269_2032x1062.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aEGA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21dab47f-3d4e-4a22-9a83-92fa0e1c1269_2032x1062.png" width="1456" height="761" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/21dab47f-3d4e-4a22-9a83-92fa0e1c1269_2032x1062.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:761,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!aEGA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21dab47f-3d4e-4a22-9a83-92fa0e1c1269_2032x1062.png 424w, https://substackcdn.com/image/fetch/$s_!aEGA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21dab47f-3d4e-4a22-9a83-92fa0e1c1269_2032x1062.png 848w, https://substackcdn.com/image/fetch/$s_!aEGA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21dab47f-3d4e-4a22-9a83-92fa0e1c1269_2032x1062.png 1272w, https://substackcdn.com/image/fetch/$s_!aEGA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21dab47f-3d4e-4a22-9a83-92fa0e1c1269_2032x1062.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>Inference cost reduction isn&#8217;t a one-dimensional problem. It spans caching strategy, batching behavior, model selection, serving architecture, and hardware configuration simultaneously. Pulling a single lever and treating it as a complete solution is why teams frequently plateau at 20-30% savings with most optimization approaches, whereas a systematic approach can achieve 60-70%.</p><div><hr></div><h2><strong>How to Know Which Lever to Pull First</strong></h2><p>The rest of this article walks through five specific optimization levers and the signals that tell you which to prioritize for your workload type.</p><p>I also cover a full case study from my most recent client: they were spending $50K/year on inference, and we reduced that to $15K without affecting model quality. Every tradeoff gets named.</p><h1><strong>LLM Inference Optimization: Cutting Costs by 70% Without Sacrificing Quality</strong></h1><p><em><strong>This content is for paid subscribers. If you&#8217;re reading this and haven&#8217;t upgraded yet, you can do so below.</strong> </em></p>
      <p>
          <a href="https://www.thedataletter.com/p/llm-inference-costs">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Your Dashboard Looks Great and Changes Nothing]]></title><description><![CDATA[Most dashboards get opened once and ignored for every decision that matters.]]></description><link>https://www.thedataletter.com/p/your-dashboard-looks-great-and-changes</link><guid isPermaLink="false">https://www.thedataletter.com/p/your-dashboard-looks-great-and-changes</guid><dc:creator><![CDATA[Hodman Murad]]></dc:creator><pubDate>Sun, 01 Mar 2026 10:01:05 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/2b610533-a220-4ede-87f9-7f84aed7b4fc_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Most dashboards get opened once and ignored for every decision that matters. Here&#8217;s how to tell if yours is one of them.</p><p>This problem is everywhere. Data teams build beautiful visualizations that stakeholders glance at once, nod appreciatively, then ignore for every decision that matters. You see the same confession across analytics forums, Slack channels, and team retrospectives. The analytics industry has mastered the art of building. We&#8217;ve failed at measuring whether it changes anything.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6fi-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80c611d2-bf73-4680-9793-a2bcd4d66e63_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6fi-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80c611d2-bf73-4680-9793-a2bcd4d66e63_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!6fi-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80c611d2-bf73-4680-9793-a2bcd4d66e63_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!6fi-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80c611d2-bf73-4680-9793-a2bcd4d66e63_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!6fi-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80c611d2-bf73-4680-9793-a2bcd4d66e63_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6fi-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80c611d2-bf73-4680-9793-a2bcd4d66e63_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/80c611d2-bf73-4680-9793-a2bcd4d66e63_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!6fi-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80c611d2-bf73-4680-9793-a2bcd4d66e63_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!6fi-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80c611d2-bf73-4680-9793-a2bcd4d66e63_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!6fi-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80c611d2-bf73-4680-9793-a2bcd4d66e63_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!6fi-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80c611d2-bf73-4680-9793-a2bcd4d66e63_1024x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><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><h3>Welcome back to The Data Letter! Here are some recent articles you may have missed:</h3><ul><li><p><strong><a href="https://www.thedataletter.com/p/from-manual-export-to-automated-pipeline">From Manual Export to Automated Pipeline: A Practical Playbook</a></strong></p></li><li><p><a href="https://www.thedataletter.com/p/llm-fine-tuning-on-a-budget">LLM Fine-Tuning on a Budget</a></p></li><li><p><a href="https://www.thedataletter.com/p/deepseek-for-data-analysis">Deepseek for Data Analysis</a> </p></li></ul><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thedataletter.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thedataletter.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><h2><strong>Vanity Metrics vs Decision Velocity</strong></h2><p>There&#8217;s a difference between dashboards that look right and dashboards that change behavior. Most teams optimize for the first. They measure views, shares, and executive compliments. These are vanity metrics dressed up as success signals.</p><p>What matters is decision velocity: how quickly can someone move from seeing data to taking action? If your stakeholder opens your dashboard, scrolls through twelve trend lines, then schedules a meeting to &#8216;discuss next steps,&#8217; you&#8217;ve built decoration, not infrastructure. </p><div><hr></div><p>Back to diagnosing the problem&#8230;</p><h2><strong>Kill This Dashboard Test</strong></h2><p>Here's how you diagnose it. Ask your stakeholders these questions:</p><ol><li><p><strong>What decision did you make because of this dashboard in the last two weeks?</strong></p></li></ol><p>If they pause or pivot to talking about how useful it &#8216;could be,&#8217; you&#8217;re watching theater.</p><ol start="2"><li><p><strong>If I removed this chart tomorrow, what would break?</strong></p></li></ol><p>If nothing breaks, nothing mattered.</p><ol start="3"><li><p><strong>When this metric moves, what do you do differently?</strong></p></li></ol><p>If they can&#8217;t name a specific action, the metric is decorative.</p><p>Signs you&#8217;re building something nobody uses:</p><ul><li><p>Stakeholders request more charts instead of fewer</p></li><li><p>They want &#8216;visibility&#8217; but can&#8217;t define what changes when they have it</p></li><li><p>They complement your color palette more than your insight clarity</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lk2P!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa899e593-3557-4623-8a27-b5d6e50c6b79_1376x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lk2P!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa899e593-3557-4623-8a27-b5d6e50c6b79_1376x768.png 424w, https://substackcdn.com/image/fetch/$s_!lk2P!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa899e593-3557-4623-8a27-b5d6e50c6b79_1376x768.png 848w, https://substackcdn.com/image/fetch/$s_!lk2P!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa899e593-3557-4623-8a27-b5d6e50c6b79_1376x768.png 1272w, https://substackcdn.com/image/fetch/$s_!lk2P!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa899e593-3557-4623-8a27-b5d6e50c6b79_1376x768.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lk2P!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa899e593-3557-4623-8a27-b5d6e50c6b79_1376x768.png" width="1376" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a899e593-3557-4623-8a27-b5d6e50c6b79_1376x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1376,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lk2P!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa899e593-3557-4623-8a27-b5d6e50c6b79_1376x768.png 424w, https://substackcdn.com/image/fetch/$s_!lk2P!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa899e593-3557-4623-8a27-b5d6e50c6b79_1376x768.png 848w, https://substackcdn.com/image/fetch/$s_!lk2P!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa899e593-3557-4623-8a27-b5d6e50c6b79_1376x768.png 1272w, https://substackcdn.com/image/fetch/$s_!lk2P!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa899e593-3557-4623-8a27-b5d6e50c6b79_1376x768.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 class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thedataletter.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thedataletter.com/subscribe?"><span>Subscribe now</span></a></p><h2><strong>Building for Impact, Not Applause</strong></h2><p>Start with the decision, not the data. Before you touch Tableau, ask: &#8216;What&#8217;s the one thing this person needs to do differently?&#8217; Then build backward from that action.</p><p>Strip everything else. Your stakeholder doesn&#8217;t need context, trends, and breakdowns. They need the number that triggers the action, and they need it unmissable.</p><p>Make the action as easy as the view. If someone sees &#8216;conversion rate dropped 12%&#8217; and then opens Jira to create a ticket, you&#8217;ve failed. The button to create that ticket should be right there.</p><p>Test by removing features, not adding them. Show version A with ten charts. Show version B with two. Measure which one changes behavior 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_!0kHY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e8a1ee2-d368-4ecd-98e2-bd5d5a1fb111_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0kHY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e8a1ee2-d368-4ecd-98e2-bd5d5a1fb111_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!0kHY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e8a1ee2-d368-4ecd-98e2-bd5d5a1fb111_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!0kHY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e8a1ee2-d368-4ecd-98e2-bd5d5a1fb111_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!0kHY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e8a1ee2-d368-4ecd-98e2-bd5d5a1fb111_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0kHY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e8a1ee2-d368-4ecd-98e2-bd5d5a1fb111_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6e8a1ee2-d368-4ecd-98e2-bd5d5a1fb111_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0kHY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e8a1ee2-d368-4ecd-98e2-bd5d5a1fb111_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!0kHY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e8a1ee2-d368-4ecd-98e2-bd5d5a1fb111_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!0kHY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e8a1ee2-d368-4ecd-98e2-bd5d5a1fb111_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!0kHY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e8a1ee2-d368-4ecd-98e2-bd5d5a1fb111_1024x1024.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 class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thedataletter.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thedataletter.com/subscribe?"><span>Subscribe now</span></a></p><h2><strong>How to Build Dashboards That Drive Action</strong></h2><p>Ask yourself whether what you&#8217;re building will change anything.</p><p>Close the dashboard and watch what happens. If nobody&#8217;s behavior shifts, if no tickets get created, if no priorities change, you&#8217;ve answered your own question. Strip out everything that doesn&#8217;t trigger an action. Give stakeholders fewer charts and clearer next steps. Measure whether anyone does something different after seeing your work, not whether they say they like it.</p><p>Next up: a decision-first framework for building dashboards that stakeholders use to take action, complete with templates and a stakeholder questionnaire. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.thedataletter.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">The Data Letter is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[From Manual Export to Automated Pipeline: A Practical Playbook]]></title><description><![CDATA[Two working automation patterns that require no database access, no paid tools, and no IT approval]]></description><link>https://www.thedataletter.com/p/from-manual-export-to-automated-pipeline</link><guid isPermaLink="false">https://www.thedataletter.com/p/from-manual-export-to-automated-pipeline</guid><dc:creator><![CDATA[Hodman Murad]]></dc:creator><pubDate>Thu, 26 Feb 2026 10:01:46 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/336b3c1d-d652-475d-9f42-ab049d204b67_1340x684.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Most data professionals have at least one workflow that should have been automated years ago. A weekly email with an attachment that gets manually copied somewhere. A folder of CSV exports that gets combined by hand every Monday. Work that doesn&#8217;t require judgment, just repetition, and repetition is exactly what code is for.</p><p>The first pattern uses Google Apps Script to automatically pull CSV attachments from Gmail and load them into a Google Sheet. The second uses Python and pandas to consolidate multiple CSV exports into a single clean output file on a schedule. Both have been tested and work.</p><p>The methods are practical enough for analysts automating their first workflow and straightforward enough for engineers who want a low-overhead solution they can hand off to a less technical teammate. Each section includes the code, setup instructions, and scheduling guidance.</p><p>All three files referenced in this article (both scripts and one sample CSV) are available in a secret gist for paid subscribers. The link is at the end.</p><div><hr></div>
      <p>
          <a href="https://www.thedataletter.com/p/from-manual-export-to-automated-pipeline">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Trapped in the Export Loop]]></title><description><![CDATA[So, you&#8217;re a human data pipeline.]]></description><link>https://www.thedataletter.com/p/trapped-in-the-export-loop</link><guid isPermaLink="false">https://www.thedataletter.com/p/trapped-in-the-export-loop</guid><dc:creator><![CDATA[Hodman Murad]]></dc:creator><pubDate>Sun, 22 Feb 2026 10:41:01 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/4f120fac-9475-470a-802c-9073cb45899e_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>You were hired to analyze data. What you actually do is move it. You click export, rename the file, drop it into a shared folder, and email the link. Then you do it again tomorrow. And the day after. At that point, the job title and the job description have fully parted ways.</p><p>This is the analyst-as-middleware problem, and it&#8217;s more common than most organizations admit. Someone with Python skills and SQL fluency spends their days downloading CSVs and managing attachment threads. No queries. No transformations. No insight generation. Just scheduled, manual data transport dressed up with an analytical job title.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kf5H!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa916a3bb-4310-4a08-8025-ebefbaeb5113_1340x892.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kf5H!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa916a3bb-4310-4a08-8025-ebefbaeb5113_1340x892.png 424w, https://substackcdn.com/image/fetch/$s_!kf5H!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa916a3bb-4310-4a08-8025-ebefbaeb5113_1340x892.png 848w, https://substackcdn.com/image/fetch/$s_!kf5H!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa916a3bb-4310-4a08-8025-ebefbaeb5113_1340x892.png 1272w, https://substackcdn.com/image/fetch/$s_!kf5H!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa916a3bb-4310-4a08-8025-ebefbaeb5113_1340x892.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kf5H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa916a3bb-4310-4a08-8025-ebefbaeb5113_1340x892.png" width="1340" height="892" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a916a3bb-4310-4a08-8025-ebefbaeb5113_1340x892.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:892,&quot;width&quot;:1340,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!kf5H!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa916a3bb-4310-4a08-8025-ebefbaeb5113_1340x892.png 424w, https://substackcdn.com/image/fetch/$s_!kf5H!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa916a3bb-4310-4a08-8025-ebefbaeb5113_1340x892.png 848w, https://substackcdn.com/image/fetch/$s_!kf5H!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa916a3bb-4310-4a08-8025-ebefbaeb5113_1340x892.png 1272w, https://substackcdn.com/image/fetch/$s_!kf5H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa916a3bb-4310-4a08-8025-ebefbaeb5113_1340x892.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><h2><strong>Why Organizations Create Data Dead Ends</strong></h2><p>This doesn&#8217;t happen because companies are malicious. It happens because systems calcify. IT locks down database access for security reasons that made sense in 2011 and never got revisited. Legacy platforms don&#8217;t expose APIs or connect cleanly to modern tooling. Business units developed their own manual workflows years ago, and &#8216;how we&#8217;ve always done it&#8217; carries more institutional weight than efficiency ever could.</p><p>The result is an informal architecture built from browser downloads, shared drives, and email attachments. Staying sharp is possible without system access. What it requires is intentional practice with the materials you already have. </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thedataletter.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thedataletter.com/subscribe?"><span>Subscribe now</span></a></p><h2><strong>How Skill Atrophy Happens to Good Analysts</strong></h2><p>The cognitive cost isn&#8217;t obvious at first. You&#8217;re still technically working with data, but there&#8217;s a meaningful difference between analyzing data and transporting it.</p><p>When your job doesn&#8217;t require you to write queries, you stop writing them. Python loops you wrote from memory are starting to require documentation lookups. SQL syntax blurs at the edges. The joins you knew cold become joins you have to think about. Skills erode in proportion to how rarely they&#8217;re exercised, and manual export workflows exercise almost none of the skills that define analytical competence.</p><p>Six months in, you&#8217;re slower. A year in, you&#8217;re rusty. Two years in, you may start to believe the rusty version is the real one.</p><div><hr></div><p>If your daily work has drifted away from the technical side, the previous issue is worth your time. <a href="https://www.thedataletter.com/p/llm-fine-tuning-on-a-budget">LLM Fine-Tuning on a Budget</a> walks through dataset preparation, how LoRA works, and how to evaluate a model when you don&#8217;t have labeled test data. It&#8217;s structured, technical, and built for people who want to stay capable.</p><div><hr></div><h2><strong>Red Flags That Confirm You&#8217;re Trapped in Manual Export Work</strong></h2><p>Watch for these patterns in your own workflow. Your browser history is dominated by downloads, report portals, and file transfers. Shared drives function as your team&#8217;s data architecture, with folders named by date and maintained by convention rather than design. Email is your ETL pipeline, literally, attachments moving data between people because systems won&#8217;t talk to each other. You haven&#8217;t written a query against a live database in months. Your &#8216;analysis&#8217; begins after someone else pulls the data and ends before anyone asks how it was prepared.</p><p>If more than two of those describe your week, you&#8217;re not doing data analysis. You&#8217;re doing data custody.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3I8T!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ff0bdd2-6f0a-4469-b529-be1a1818c661_1354x522.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3I8T!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ff0bdd2-6f0a-4469-b529-be1a1818c661_1354x522.png 424w, https://substackcdn.com/image/fetch/$s_!3I8T!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ff0bdd2-6f0a-4469-b529-be1a1818c661_1354x522.png 848w, https://substackcdn.com/image/fetch/$s_!3I8T!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ff0bdd2-6f0a-4469-b529-be1a1818c661_1354x522.png 1272w, https://substackcdn.com/image/fetch/$s_!3I8T!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ff0bdd2-6f0a-4469-b529-be1a1818c661_1354x522.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3I8T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ff0bdd2-6f0a-4469-b529-be1a1818c661_1354x522.png" width="1354" height="522" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6ff0bdd2-6f0a-4469-b529-be1a1818c661_1354x522.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:522,&quot;width&quot;:1354,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!3I8T!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ff0bdd2-6f0a-4469-b529-be1a1818c661_1354x522.png 424w, https://substackcdn.com/image/fetch/$s_!3I8T!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ff0bdd2-6f0a-4469-b529-be1a1818c661_1354x522.png 848w, https://substackcdn.com/image/fetch/$s_!3I8T!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ff0bdd2-6f0a-4469-b529-be1a1818c661_1354x522.png 1272w, https://substackcdn.com/image/fetch/$s_!3I8T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ff0bdd2-6f0a-4469-b529-be1a1818c661_1354x522.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 class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thedataletter.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thedataletter.com/subscribe?"><span>Subscribe now</span></a></p><h2><strong>How to Preserve Your Skills Without Changing Your Job</strong></h2><p>Getting out of this situation runs through your relationship with the data you already handle, not through a job search.</p><p>Local sandboxing means running every export you receive through a script before you manually touch it. Parse it with Python. Load it into a local database. Write the query that answers the question, even if you&#8217;re just going to paste the answer into a report anyway. The analysis muscle stays active because you&#8217;re actually using it.</p><p>Shadow analysis means building things no one asked for. You have the data. Model something. Build a dataset that answers a question your team hasn&#8217;t thought to ask yet. Don&#8217;t send it anywhere. Just build it. The practice is the point.</p><p>Document the waste. Track, in hours, how much time you spend manually transporting data each week. This isn&#8217;t venting. It&#8217;s evidence. Quantified inefficiency is the clearest argument for change. </p><div><hr></div><h2><strong>Turning Manual Exports into Automated Pipelines</strong></h2><p>Getting out of this situation runs through your relationship with the data you already handle, not through a job search. Escaping manual export workflows doesn&#8217;t always mean landing somewhere better. More often, it means automating the situation you&#8217;re already in.</p><p>&#8216;Automation Playbook for Trapped Analysts&#8217; gets into that next. Specific tools and workflows. No direct database access required. Just the CSV in your inbox and a decision to stop moving it by hand.</p><p>Happy Sunday! See you next week.</p><div><hr></div><p>Paid subscribers get the full archive. That includes the vector database implementation guide covering Pinecone, Weaviate, and Chroma, with cost formulas and query optimization patterns; the advanced model drift detection guide with diagnostic workflows and threshold tuning; and the fine-tuning issue guide with dataset templates and a cost-tracking spreadsheet. The Automation Playbook for Trapped Analysts will be paid. If automating your way out of manual export work is relevant to you, it&#8217;s worth being there for it. </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thedataletter.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thedataletter.com/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[LLM Fine-Tuning on a Budget]]></title><description><![CDATA[Dataset templates, cost strategies, and a conceptual walkthrough for teams without enterprise budgets]]></description><link>https://www.thedataletter.com/p/llm-fine-tuning-on-a-budget</link><guid isPermaLink="false">https://www.thedataletter.com/p/llm-fine-tuning-on-a-budget</guid><dc:creator><![CDATA[Hodman Murad]]></dc:creator><pubDate>Fri, 20 Feb 2026 12:19:12 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/fc509d26-0f1b-4805-ade6-6e6cd8d3abf4_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Most fine-tuning problems start before training begins. You&#8217;ll waste time and money if your dataset&#8217;s messy, your cost tracking&#8217;s nonexistent, or you don&#8217;t understand the mechanics of how fine-tuning works.</p><p>This guide gives you the preparation toolkit needed for successful fine-tuning. You&#8217;ll get dataset format examples, an explanation of how LoRA works, platform research to compare your options, a cost tracking spreadsheet template, and evaluation methods for models without labeled test data. This guide focuses on preparation and planning rather than training code. The planning infrastructure covered here determines whether your fine-tuning project succeeds or wastes resources. </p>
      <p>
          <a href="https://www.thedataletter.com/p/llm-fine-tuning-on-a-budget">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Choosing Between Fine-Tuning, RAG, and Prompt Engineering: A $10K Decision Guide]]></title><description><![CDATA[Three questions to ask before building your LLM solution]]></description><link>https://www.thedataletter.com/p/choosing-between-fine-tuning-rag</link><guid isPermaLink="false">https://www.thedataletter.com/p/choosing-between-fine-tuning-rag</guid><dc:creator><![CDATA[Hodman Murad]]></dc:creator><pubDate>Sun, 15 Feb 2026 11:48:16 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/2ef4cfad-68d5-459c-bfcf-cccf764631bf_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Before you spin up training runs or build retrieval pipelines, answer these three questions. Most teams can&#8217;t, which is why they end up with overengineered solutions that underperform simpler alternatives.</p><p>Choosing between prompt engineering, RAG, and fine-tuning means matching your requirements to the right level of investment. Get this wrong, and you&#8217;ll spend weeks building something you could&#8217;ve solved in an afternoon.</p><p>Let&#8217;s fix that.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!X-Kn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa429523e-c5eb-438d-a8db-dd3a80f6d060_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!X-Kn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa429523e-c5eb-438d-a8db-dd3a80f6d060_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!X-Kn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa429523e-c5eb-438d-a8db-dd3a80f6d060_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!X-Kn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa429523e-c5eb-438d-a8db-dd3a80f6d060_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!X-Kn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa429523e-c5eb-438d-a8db-dd3a80f6d060_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!X-Kn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa429523e-c5eb-438d-a8db-dd3a80f6d060_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a429523e-c5eb-438d-a8db-dd3a80f6d060_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!X-Kn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa429523e-c5eb-438d-a8db-dd3a80f6d060_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!X-Kn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa429523e-c5eb-438d-a8db-dd3a80f6d060_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!X-Kn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa429523e-c5eb-438d-a8db-dd3a80f6d060_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!X-Kn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa429523e-c5eb-438d-a8db-dd3a80f6d060_1024x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><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>3-Layer Stack: What You&#8217;re Actually Choosing Between</strong></h2><p><strong>Prompt engineering</strong> means crafting better instructions for a base model. You&#8217;re working entirely at the inference level, modifying inputs to get better outputs. The model stays the same, and you&#8217;re not pulling in external data.</p><p><strong>RAG (Retrieval-Augmented Generation)</strong> adds a knowledge layer. You&#8217;re pulling relevant context from your documents or databases and injecting it into prompts at runtime. The model stays unchanged, but now it has access to your specific information.</p><p><strong>Fine-tuning</strong> means retraining the model itself on your data. You&#8217;re modifying the model&#8217;s weights to specialize its behavior, teaching it patterns, formats, or domain knowledge that weren&#8217;t emphasized in the base training. </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thedataletter.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thedataletter.com/subscribe?"><span>Subscribe now</span></a></p><h2><strong>Three Questions That Determine Your Approach</strong></h2><p><strong>Does the model already know how to do this task? </strong>If you&#8217;re asking GPT-5 to write marketing copy or summarize documents, the base capability exists, even if you need to refine the outputs through better prompts. Begin with prompt engineering to dial in the style and format. If you&#8217;re asking it to generate outputs in a proprietary format or follow domain-specific conventions it&#8217;s never seen, you might need fine-tuning.</p><p><strong>Does the task require knowledge the model doesn&#8217;t have?</strong> When you need the LLM to reference your internal documentation, product specifications, or company policies, that&#8217;s a RAG problem. The model can reason about information, but it can&#8217;t memorize your entire knowledge base. Don&#8217;t fine-tune when you just need to feed in context.</p><p><strong>Is consistent behavior across thousands of examples more important than flexibility? </strong>Fine-tuning shines when you need the model to reliably produce outputs in a specific style, follow particular reasoning patterns, or handle specialized scenarios that would require increasingly complex prompts. If you&#8217;re solving one-off tasks or experimenting with different approaches, the rigidity of a fine-tuned model works against you.</p><div><hr></div><p>This week&#8217;s paid article:</p><p><a href="https://www.thedataletter.com/p/deepseek-for-data-analysis">A senior data scientist&#8217;s framework for using DeepSeek effectively, including three workflow patterns for messy CSVs, slow SQL, and legacy code.</a> </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thedataletter.com/subscribe&quot;,&quot;text&quot;:&quot;UPGRADE&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thedataletter.com/subscribe"><span>UPGRADE</span></a></p><div><hr></div><p>Once you&#8217;ve answered these questions, consider the cost implications of each approach.</p><h2><strong>Cost Comparison at a Glance</strong></h2><p>Prompt engineering costs you time upfront, but keeps inference costs standard. You&#8217;re paying for the experimentation phase, not the deployment.</p><p>RAG adds infrastructure overhead. You need vector databases, embedding models, and retrieval logic. Your per-query cost increases because you&#8217;re making multiple API calls and processing additional tokens.</p><p>Fine-tuning flips the cost structure. High upfront investment in compute, data preparation, and evaluation. Lower per-query costs if you&#8217;re using a smaller model, higher costs if you&#8217;re fine-tuning large models and still using them at scale.</p><div><hr></div><h2><strong>Use Case Examples</strong></h2><p>Here&#8217;s how these questions play out in real projects:</p><ol><li><p>You&#8217;re building a customer support chatbot that needs to reference your FAQ documents and troubleshooting guides. That&#8217;s RAG. The model can already reason with the information you provide. RAG lets you surface the right documents at query time.</p></li><li><p>You&#8217;re generating SQL queries from natural language, and your database schema uses unconventional naming patterns that confuse base models. That&#8217;s a fine-tuning candidate. You want the model to internalize your specific patterns.</p></li><li><p>You&#8217;re summarizing meeting transcripts in a specific format with particular sections and bullet styles. Start with prompt engineering. Most models can follow formatting instructions if you&#8217;re clear enough. Only escalate to fine-tuning if prompt complexity becomes unmanageable.</p></li><li><p>You&#8217;re extracting structured data from unstructured medical notes, where the model needs to understand clinical abbreviations and context-dependent terminology. This might need fine-tuning if your domain vocabulary differs significantly from what&#8217;s in the training data. </p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thedataletter.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thedataletter.com/subscribe?"><span>Subscribe now</span></a></p></li></ol><h2><strong>&#8216;Is This Overkill?&#8217; Checklist</strong></h2><p>Before you commit to RAG or fine-tuning, run through these checks:</p><ul><li><p><strong>Can you solve this with 10 examples in your prompt instead of 10,000 examples in a training set?</strong> (If yes, you don&#8217;t need fine-tuning.)</p></li><li><p><strong>Does your use case actually require real-time access to changing information? (If yes, RAG.</strong> (If no, maybe just better prompts.)</p></li><li><p><strong>Will you be running this model hundreds of thousands of times?</strong> (If no, the cost optimization from fine-tuning probably doesn&#8217;t matter.)</p></li><li><p><strong>Do you have clean, representative training data that teaches the model something it doesn&#8217;t know?</strong> (If no, don&#8217;t fine-tune.)</p></li><li><p><strong>Can you describe your desired behavior in words? </strong>(If yes, try prompt engineering first.) </p><div><hr></div></li></ul><h2><strong>Bottom Line</strong></h2><p>Most teams skip straight to the expensive solution because it feels more sophisticated. But prompt engineering handles more use cases than people expect, RAG solves the knowledge problem without model changes, and fine-tuning should be your last resort, not your first instinct.</p><p>Start simple, escalate when you have evidence that simpler approaches won&#8217;t work.</p><div><hr></div><p><em>This Wednesday, for paid subscribers, I&#8217;m sharing a complete fine-tuning guide, including dataset preparation templates, a conceptual LoRA walkthrough, platform research comparisons, and a cost-tracking spreadsheet you can adapt for your own projects.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thedataletter.com/subscribe&quot;,&quot;text&quot;:&quot;Become A Paid Subscriber&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thedataletter.com/subscribe"><span>Become A Paid Subscriber</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[DeepSeek for Data Analysis]]></title><description><![CDATA[Prompts, Validation, and When to Just Type]]></description><link>https://www.thedataletter.com/p/deepseek-for-data-analysis</link><guid isPermaLink="false">https://www.thedataletter.com/p/deepseek-for-data-analysis</guid><dc:creator><![CDATA[Hodman Murad]]></dc:creator><pubDate>Thu, 12 Feb 2026 10:02:15 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/e4bf00f5-a32e-4fa6-8951-2cdf84c0f600_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p><strong>A decision framework and three reusable workflows</strong></p></blockquote><p>I don&#8217;t use ChatGPT for my data work. For public datasets and personal projects, like the examples in this article, I use DeepSeek.com. It has a 1 million token context window, it&#8217;s free, and it supports complex reasoning without losing track during a multi-table join.</p><p>When I&#8217;m working with sensitive data (which is often the case for my work), I run DeepSeek models locally using Ollama + Continue.dev. The local versions support 128k tokens. 128k tokens sounds abstract, but in practice, it means I can paste the entire schema of a 50-table data warehouse and still have room to ask follow-up questions. I&#8217;ve never hit the limit during normal analysis.</p><p>This article gives you a decision framework for when to use DeepSeek and when to code manually, a quality control checklist for catching AI mistakes before they cost you hours, and reusable workflow patterns you can adapt to your own analysis tasks. You&#8217;ll walk away knowing exactly when to delegate work to an LLM and when to just type the damn code yourself.</p><h2><strong>Why DeepSeek? And Addressing Privacy Concerns</strong></h2><p>There are two camps. One group won&#8217;t touch DeepSeek because of data residency concerns. The other is excited about publicly available models that match or beat proprietary options on reasoning benchmarks. I&#8217;m in the latter camp for my work, unless a client I&#8217;m contracting with already has an enterprise account with OpenAI or Anthropic that they prefer I use (which happens most of the time).</p><p>My position is that DeepSeek.com is fine for public datasets and the kind of examples I&#8217;m sharing here. For sensitive work, the local setup I mentioned earlier is straightforward: install Ollama, pull the DeepSeek model, and point Continue.dev at your local instance. You get the reasoning power without sending anything to external servers.</p><p>This isn&#8217;t a setup guide, so I won&#8217;t walk through every step. The point is that local deployment is viable if privacy is important to your use case. For everything else, the web interface works perfectly well.</p><h2><strong>Decision Framework: When to Use DeepSeek vs. Coding Manually</strong></h2><p>DeepSeek handles tasks that require understanding context, reasoning through approaches, or generating code you&#8217;d need to look up anyway. You should code manually when the task is faster to type than to prompt, when you&#8217;re learning something new, or when you need absolute certainty.</p><p>Here&#8217;s how I decide:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Xl2B!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65e29870-3c07-4596-b6f3-baedbf261c0a_1040x846.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Xl2B!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65e29870-3c07-4596-b6f3-baedbf261c0a_1040x846.png 424w, https://substackcdn.com/image/fetch/$s_!Xl2B!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65e29870-3c07-4596-b6f3-baedbf261c0a_1040x846.png 848w, https://substackcdn.com/image/fetch/$s_!Xl2B!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65e29870-3c07-4596-b6f3-baedbf261c0a_1040x846.png 1272w, https://substackcdn.com/image/fetch/$s_!Xl2B!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65e29870-3c07-4596-b6f3-baedbf261c0a_1040x846.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Xl2B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65e29870-3c07-4596-b6f3-baedbf261c0a_1040x846.png" width="1040" height="846" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/65e29870-3c07-4596-b6f3-baedbf261c0a_1040x846.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:846,&quot;width&quot;:1040,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Xl2B!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65e29870-3c07-4596-b6f3-baedbf261c0a_1040x846.png 424w, https://substackcdn.com/image/fetch/$s_!Xl2B!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65e29870-3c07-4596-b6f3-baedbf261c0a_1040x846.png 848w, https://substackcdn.com/image/fetch/$s_!Xl2B!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65e29870-3c07-4596-b6f3-baedbf261c0a_1040x846.png 1272w, https://substackcdn.com/image/fetch/$s_!Xl2B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65e29870-3c07-4596-b6f3-baedbf261c0a_1040x846.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>If the task requires understanding why something works or what approach to take, use DeepSeek. If you already know what to write, just type it.</p><p>Here&#8217;s how that plays out across three common scenarios: </p>
      <p>
          <a href="https://www.thedataletter.com/p/deepseek-for-data-analysis">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[“Stop Learning SQL and Python”]]></title><description><![CDATA[Why Senior Analysts Are Right (And Wrong)]]></description><link>https://www.thedataletter.com/p/stop-learning-sql-and-python</link><guid isPermaLink="false">https://www.thedataletter.com/p/stop-learning-sql-and-python</guid><dc:creator><![CDATA[Hodman Murad]]></dc:creator><pubDate>Sun, 08 Feb 2026 09:02:13 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!-2tg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52c6d0d-cf13-40e2-be96-675013a3e6d6_1358x874.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h4><strong>AI has changed the game. The question now is: what are the new rules?</strong></h4><p>&#8220;I hate leet coding interviews.&#8221;</p><p>My friend, a senior analyst, told me that over coffee last month. Five years in, crushing it at her job, but dreading the thought of ever having to switch roles because of the interview gauntlet. And honestly? I get it. When you&#8217;re spending your days designing data strategies and managing stakeholders, being asked to write a flawless binary search on a whiteboard feels absurd. Especially when Copilot&#8217;s sitting right there in VS Code, ready to handle that instantly.</p><p>So yeah, the &#8220;stop learning SQL and Python&#8221; crowd has a point. Just not the one they think they&#8217;re making.</p><div><hr></div><p>&#128204; Quick note: This is a free article on concepts. Paid subscribers get implementation guides midweek, every week. </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thedataletter.com/subscribe&quot;,&quot;text&quot;:&quot;Upgrade&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thedataletter.com/subscribe"><span>Upgrade</span></a></p><div><hr></div><h3><strong>Why Everyone&#8217;s Fed Up</strong></h3><p>Two things are happening at once. First, as you get more senior, your job changes. You&#8217;re not writing queries all day anymore. You&#8217;re figuring out what questions to ask, which systems to build, and how to structure teams around data. Second, AI assistants have gotten really good at syntax. I don&#8217;t keep the exact parameters for window functions memorized anymore, and I don&#8217;t need to. That&#8217;s what documentation is for. GitHub Copilot does.</p><p>These tools aren&#8217;t the problem. Most interview processes are still stuck in 2015, testing whether you&#8217;ve memorized edge cases instead of whether you can actually solve problems. That&#8217;s what&#8217;s driving people up the wall.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-2tg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52c6d0d-cf13-40e2-be96-675013a3e6d6_1358x874.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-2tg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52c6d0d-cf13-40e2-be96-675013a3e6d6_1358x874.png 424w, https://substackcdn.com/image/fetch/$s_!-2tg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52c6d0d-cf13-40e2-be96-675013a3e6d6_1358x874.png 848w, https://substackcdn.com/image/fetch/$s_!-2tg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52c6d0d-cf13-40e2-be96-675013a3e6d6_1358x874.png 1272w, https://substackcdn.com/image/fetch/$s_!-2tg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52c6d0d-cf13-40e2-be96-675013a3e6d6_1358x874.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-2tg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52c6d0d-cf13-40e2-be96-675013a3e6d6_1358x874.png" width="1358" height="874" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b52c6d0d-cf13-40e2-be96-675013a3e6d6_1358x874.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:874,&quot;width&quot;:1358,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-2tg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52c6d0d-cf13-40e2-be96-675013a3e6d6_1358x874.png 424w, https://substackcdn.com/image/fetch/$s_!-2tg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52c6d0d-cf13-40e2-be96-675013a3e6d6_1358x874.png 848w, https://substackcdn.com/image/fetch/$s_!-2tg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52c6d0d-cf13-40e2-be96-675013a3e6d6_1358x874.png 1272w, https://substackcdn.com/image/fetch/$s_!-2tg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52c6d0d-cf13-40e2-be96-675013a3e6d6_1358x874.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><h3><strong>But Here&#8217;s Where It Gets Tricky</strong></h3><p>There&#8217;s a huge difference between &#8220;I don&#8217;t need to memorize syntax&#8221; and &#8220;I don&#8217;t need to understand how this works.&#8221; Some people are conflating the two, and that&#8217;s dangerous.</p><p>AI is incredible at generating code. It&#8217;s also incredibly bad at knowing whether that code is right for your specific situation. I&#8217;ve watched Copilot suggest a JOIN that would absolutely wreck performance on our data model. If I didn&#8217;t understand what was happening under the hood, I&#8217;d have shipped it and spent the next week debugging production issues.</p><p>What hasn&#8217;t changed is that you still need to debug things. You still need to spot when something&#8217;s wrong. And if you&#8217;re senior, you&#8217;re definitely mentoring people and making architectural calls. You can&#8217;t do any of that without understanding the underlying concepts. The tool that writes the code might be new, but the requirement to know what good code looks like isn&#8217;t going anywhere.</p><div><hr></div><p><strong>&#128274; This Week&#8217;s Paid Guide</strong></p><p><strong><a href="https://www.thedataletter.com/p/implementation-blueprint-for-vector">A technical guide to building production RAG systems that covers vector database selection, AI embedding model costs, chunking strategies, and optimization patterns that control your LLM infrastructure spend.</a> </strong></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thedataletter.com/subscribe&quot;,&quot;text&quot;:&quot;Upgrade&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thedataletter.com/subscribe"><span>Upgrade</span></a></p><div><hr></div><h3><strong>What Matters Now</strong></h3><p>So if mindless memorization of code snippets is out, what&#8217;s in? I think about it as four core things.</p><p><strong>First:</strong> problem framing. Can you take a messy stakeholder request and turn it into something concrete? That&#8217;s half the battle right there.</p><p><strong>Second:</strong> critical thinking. When your model spits out results, can you tell if they make sense? Can you reason about uncertainty, edge cases, and what might be missing?</p><p><strong>Third:</strong> working effectively with AI. Writing good prompts, integrating outputs, and knowing when to trust the suggestion and when to override it. This is a skill now.</p><p><strong>Fourth:</strong> technical judgment. Whether a human or an LLM wrote it, can you review the code and evaluate whether it&#8217;s efficient, maintainable, and correct? Can you explain why one approach is better than another?</p><p>These aren&#8217;t easier skills than syntax memorization. They&#8217;re harder, but they&#8217;re the ones that actually matter. </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thedataletter.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thedataletter.com/subscribe?"><span>Subscribe now</span></a></p><h3><strong>Where This Is Heading</strong></h3><p>The good news is that some teams are figuring this out. I&#8217;ve seen interviews shift from &#8220;write this algorithm from scratch&#8221; to &#8220;here&#8217;s an ambiguous business problem, walk me through how you&#8217;d approach it.&#8221; You can use whatever tools you want. The interviewer wants to see how you think, how you break down problems, and what trade-offs you consider.</p><p>That&#8217;s not a lower bar. It&#8217;s a higher one. It&#8217;s just measuring the right things.</p><p>And honestly, that&#8217;s the direction all of us need to be moving into, whether we&#8217;re hiring or getting hired. Let AI handle the mechanical stuff. That&#8217;s what it&#8217;s good at. Focus your energy on the conceptual work, the strategic thinking, the judgment calls. That&#8217;s where humans still have the advantage, and probably will for a while.</p><div><hr></div><p><strong>Here&#8217;s what paid subscribers got this past month:</strong></p><p><strong><a href="https://www.thedataletter.com/p/advanced-model-drift-detection">Advanced Model Drift Detection</a></strong> - A technical deep dive into statistical methods (PSI, Wasserstein, KL divergence) for catching data distribution shifts before they tank your models, plus a diagnostic framework that takes you from alert to root cause without manual investigation.</p><p><strong><a href="https://www.thedataletter.com/p/mlops-on-a-50-monthly-budget">MLOps on a $50 Monthly Budget</a></strong> - The complete architecture for running production ML inference at founder-friendly costs using serverless GPUs, DuckDB querying S3, and automated shutdown scripts that prevent runaway cloud bills.</p><p><strong><a href="https://www.thedataletter.com/p/ai-agent-starter-kit">AI Agent Starter Kit</a></strong> - Production-grade agent infrastructure with built-in cost tracking, compliance engines for EU AI Act/GDPR, and structured logging that makes debugging agents forensic analysis instead of guesswork.</p><p><strong><a href="https://www.thedataletter.com/p/diy-data-catalog-template">DIY Data Catalog Template</a></strong> - A working metadata management system you can test locally in under 2 hours, with validation scripts, tier-based governance, and a Google Sheets backend that proves the pattern before you invest in vendor platforms.</p><p><strong>Not a paid subscriber yet?</strong> </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thedataletter.com/subscribe&quot;,&quot;text&quot;:&quot;UPGRADE NOW&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thedataletter.com/subscribe"><span>UPGRADE NOW</span></a></p>]]></content:encoded></item><item><title><![CDATA[Implementation Blueprint for Vector Database: Pinecone vs Weaviate vs Chroma]]></title><description><![CDATA[Production RAG Systems]]></description><link>https://www.thedataletter.com/p/implementation-blueprint-for-vector</link><guid isPermaLink="false">https://www.thedataletter.com/p/implementation-blueprint-for-vector</guid><dc:creator><![CDATA[Hodman Murad]]></dc:creator><pubDate>Thu, 05 Feb 2026 18:30:19 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/64d2299b-7c86-4781-8be4-9001adc735e2_6868x4808.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><a href="https://substack.com/home/post/p-186482910">You&#8217;ve accepted that production RAG requires a vector database.</a> Now you&#8217;re facing implementation decisions with real cost implications: which vendor, which embedding model, how to chunk your documents, and how to control the budget. This guide provides the frameworks and decision matrices for production implementation decisions.</p>
      <p>
          <a href="https://www.thedataletter.com/p/implementation-blueprint-for-vector">
              Read more
          </a>
      </p>
   ]]></content:encoded></item></channel></rss>