<?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[Margin Notes]]></title><description><![CDATA[I. Thinking on strategy, innovation, and philosophy — for people who think seriously about how to build things and make decisions.]]></description><link>https://www.marginnotes.indranilsaha.net</link><image><url>https://substackcdn.com/image/fetch/$s_!C_d6!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff17c8f27-7bf4-41c5-b52a-56eecdab5bfc_342x342.png</url><title>Margin Notes</title><link>https://www.marginnotes.indranilsaha.net</link></image><generator>Substack</generator><lastBuildDate>Wed, 06 May 2026 09:57:34 GMT</lastBuildDate><atom:link href="https://www.marginnotes.indranilsaha.net/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Indranil Saha]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[sahaindranil@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[sahaindranil@substack.com]]></itunes:email><itunes:name><![CDATA[Indranil Saha]]></itunes:name></itunes:owner><itunes:author><![CDATA[Indranil Saha]]></itunes:author><googleplay:owner><![CDATA[sahaindranil@substack.com]]></googleplay:owner><googleplay:email><![CDATA[sahaindranil@substack.com]]></googleplay:email><googleplay:author><![CDATA[Indranil Saha]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[It Actually Works. Kinda.]]></title><description><![CDATA[Or when the rubber met the road...]]></description><link>https://www.marginnotes.indranilsaha.net/p/it-actually-works-kinda</link><guid isPermaLink="false">https://www.marginnotes.indranilsaha.net/p/it-actually-works-kinda</guid><dc:creator><![CDATA[Indranil Saha]]></dc:creator><pubDate>Tue, 21 Apr 2026 22:27:51 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!DfVf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F896dfb68-781e-4182-9fe6-1c59d9778f53_500x500.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This week I crossed a critical milestone in my AI privacy project: getting a fully local LLM up and running &#8212; without needing OpenAI keys, cloud APIs, or GPU access.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DfVf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F896dfb68-781e-4182-9fe6-1c59d9778f53_500x500.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DfVf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F896dfb68-781e-4182-9fe6-1c59d9778f53_500x500.png 424w, https://substackcdn.com/image/fetch/$s_!DfVf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F896dfb68-781e-4182-9fe6-1c59d9778f53_500x500.png 848w, https://substackcdn.com/image/fetch/$s_!DfVf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F896dfb68-781e-4182-9fe6-1c59d9778f53_500x500.png 1272w, https://substackcdn.com/image/fetch/$s_!DfVf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F896dfb68-781e-4182-9fe6-1c59d9778f53_500x500.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DfVf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F896dfb68-781e-4182-9fe6-1c59d9778f53_500x500.png" width="500" height="500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/896dfb68-781e-4182-9fe6-1c59d9778f53_500x500.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:98835,&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.marginnotes.indranilsaha.net/i/194648000?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F896dfb68-781e-4182-9fe6-1c59d9778f53_500x500.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!DfVf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F896dfb68-781e-4182-9fe6-1c59d9778f53_500x500.png 424w, https://substackcdn.com/image/fetch/$s_!DfVf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F896dfb68-781e-4182-9fe6-1c59d9778f53_500x500.png 848w, https://substackcdn.com/image/fetch/$s_!DfVf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F896dfb68-781e-4182-9fe6-1c59d9778f53_500x500.png 1272w, https://substackcdn.com/image/fetch/$s_!DfVf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F896dfb68-781e-4182-9fe6-1c59d9778f53_500x500.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>This was the test 1 of all that I have been hypothesizing (and mostly not quite believing): Can I really run a local AI model on my MacBook? If this did not work, then my project would get shut down, even before it started. So, I was full of anticipation. There&#8217;s a twilight zone between disbelief, cynicism, and hope that I&#8217;m sure every adventurer feels. I was feeling it. And, I think if nothing worked, just this feeling would be worth it. Mundane things can sometimes give us the profoundest of thoughts&#8230; huh!</p><h5>Anyways&#8230; Why Local Matters</h5><p>I&#8217;m building a tax advisor that handles sensitive financial data.</p><p>I can&#8217;t trust the cloud with: W-2s, 1099s, bank account numbers, or health expenses</p><p>So I&#8217;m keeping everything local &#8212; even the model inference. [<em>Full context in <a href="https://www.marginnotes.indranilsaha.net/p/building-a-private-ai-tax-assistant">Post 1 </a>if you&#8217;re just joining.</em>]</p><p><strong>If this is of interest - read on:</strong></p><h4>Recap</h4><p>The machine was taken care of. Refurb Mac Pro, M3, 16GB, battery cycle count under 100 - yay -sustainability, yay - budget! [<em><a href="https://www.marginnotes.indranilsaha.net/p/the-infrastructure-tax">Post 2 </a>details the whole inspection saga if you missed it.</em>]</p><p>And Question # -1 was answered. [<em><a href="https://www.marginnotes.indranilsaha.net/p/the-blueprint?r=77z576&amp;utm_campaign=post&amp;utm_medium=web">Post 3</a></em>]</p><p>Guess it was time to stop thinking and start building. </p><h4>Progress</h4><p>So like a good boy I asked AI to talk applications (because when you are building AI what else would you rather do)?. The answer was, you need TWO THINGS! A Model - and a couple of Tools.</p><p>It gave me a few choices of each  - so I went shopping, and I was consistent in my approach, i.e., I built checklists to compare and figure it out (so utterly predictable!). The final winners were: </p><p><strong>i. Model: Mistral 7B ; ii. Tool: Ollama</strong></p><p>(We&#8217;d also need Python, and a few other thing that weren&#8217;t really choices - so I&#8217;ll skip those. May be a footnote post someday.)</p><p>But it may be worth spending a minute on why I chose Mistral (because there are a few other viable options as well).</p><h5><strong>Why Mistral</strong></h5><p>Some other choices were - LLaMA 3, Phi, Gemma. All open source, all quantized versions available, all runnable locally.</p><p>My heuristics (also suggested by AI along with a bunch of other things) were:</p><ol><li><p>Size</p></li><li><p>Performance</p></li><li><p>Reasoning quality for retrieval-augmented tasks. (This matters more than general benchmark performance.)</p></li><li><p>Corporate association (Not from a big company - especially not from Facebook - personal dislike)</p></li><li><p>NO surprises (Really free - no strings attached)</p></li></ol><h4>The fun bit</h4><p>With all that done, I took this out for a spin in the real world&#8230; the rubber finally met the road!</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;22092f6a-def1-4b16-b8db-23baa50ab01e&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">brew install ollama
ollama run mistral</code></pre></div><p>It&#8217;s that simple. No CUDA, no Docker, no pain.</p><p>(For a noob like me, I had to figure out where to run that code, and what happens when I do it. If you&#8217;re like me, ask AI.) </p><p>I turned off all my connections to believe that <em>it really did run offline</em>. <strong>And run it did!</strong></p><h5>First few prompts I Tested</h5><ul><li><p>What is the standard deduction for a single filer in 2024?</p></li><li><p>If I earned $480 from freelance work, do I need to report it?</p></li><li><p>What&#8217;s the difference between a 1099-NEC and 1099-K?</p></li></ul><h5>What Worked</h5><ul><li><p>Ollama was fast and lightweight</p></li><li><p>4-bit quantization made it run smoothly on 16GB RAM</p></li><li><p>Prompt results were fast (3-4s)</p></li></ul><h5>What Didn&#8217;t</h5><p>Without context documents (IRS rules), answers are generic. To improve on that front, I will need to use <strong>RAG</strong> (retrieval-augmented generation) for smarter answers</p><p><strong>Next up</strong>: I also created an architecture of the thing I am going to build, because even when I am building, I can&#8217;t stop drawing pictures to help me create my mind maps.</p><p><em><strong>Note</strong>: This thing is kinda addictive. I find myself excited and thinking about this at the oddest of times (like at the car service shop, or in the middle of the Man City v. Chelsea game). Save that for another post&#8230;</em></p><div><hr></div><p><em>This is Part 4 of an ongoing series on building a private, local AI tax assistant &#8212; one hour a week, on consumer hardware, without sending financial data anywhere.</em></p><p><em><a href="https://www.marginnotes.indranilsaha.net/p/building-a-private-ai-tax-assistant?r=77z576">Part 1: Building a Private AI Tax Assistant: In public, on a MacBook!</a></em></p><p><em><a href="https://www.marginnotes.indranilsaha.net/p/the-infrastructure-tax?r=77z576">Part 2: The Infrastructure Tax</a></em></p><p><em><a href="https://www.marginnotes.indranilsaha.net/p/the-blueprint">Part 3: The Blueprint</a></em></p><p><em>If you&#8217;re building something similar or have any questions/ideas to share, I&#8217;d love to hear from you. Cheers!</em></p><div><hr></div><p><em>I. Thinking on strategy, innovation, and philosophy &#8212; for people who think seriously about how to build things and make decisions.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.marginnotes.indranilsaha.net/p/it-actually-works-kinda?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.marginnotes.indranilsaha.net/p/it-actually-works-kinda?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.marginnotes.indranilsaha.net/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.marginnotes.indranilsaha.net/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[The Blueprint]]></title><description><![CDATA[Or: what you think about when the laptop hasn&#8217;t arrived yet and you have nothing better to do...]]></description><link>https://www.marginnotes.indranilsaha.net/p/the-blueprint</link><guid isPermaLink="false">https://www.marginnotes.indranilsaha.net/p/the-blueprint</guid><dc:creator><![CDATA[Indranil Saha]]></dc:creator><pubDate>Wed, 08 Apr 2026 02:14:25 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!nNiN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55702a18-4aa8-4eaf-a166-7dae888800e8_500x500.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nNiN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55702a18-4aa8-4eaf-a166-7dae888800e8_500x500.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nNiN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55702a18-4aa8-4eaf-a166-7dae888800e8_500x500.png 424w, https://substackcdn.com/image/fetch/$s_!nNiN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55702a18-4aa8-4eaf-a166-7dae888800e8_500x500.png 848w, https://substackcdn.com/image/fetch/$s_!nNiN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55702a18-4aa8-4eaf-a166-7dae888800e8_500x500.png 1272w, https://substackcdn.com/image/fetch/$s_!nNiN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55702a18-4aa8-4eaf-a166-7dae888800e8_500x500.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nNiN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55702a18-4aa8-4eaf-a166-7dae888800e8_500x500.png" width="500" height="500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/55702a18-4aa8-4eaf-a166-7dae888800e8_500x500.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:119181,&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.marginnotes.indranilsaha.net/i/192781478?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55702a18-4aa8-4eaf-a166-7dae888800e8_500x500.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!nNiN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55702a18-4aa8-4eaf-a166-7dae888800e8_500x500.png 424w, https://substackcdn.com/image/fetch/$s_!nNiN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55702a18-4aa8-4eaf-a166-7dae888800e8_500x500.png 848w, https://substackcdn.com/image/fetch/$s_!nNiN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55702a18-4aa8-4eaf-a166-7dae888800e8_500x500.png 1272w, https://substackcdn.com/image/fetch/$s_!nNiN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55702a18-4aa8-4eaf-a166-7dae888800e8_500x500.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>The machine was ordered. It hadn&#8217;t arrived yet.</p><p>Which left me with a week, no hardware to tinker with, and nothing to do but think. No code to write. No environment to set up. Just Sit, Sit, Sit, Sit&#8230;</p><p>Well, the decade old consultant in me found an outlet and got into action. The first thing a consultant does &#8212; before the deck, before the framework, before the billable hours begin &#8212; is ask the question nobody wants to slow down for. </p><p>Question #-1. What problem are we actually solving?  </p><h5>The Problem Statement</h5><p>Four things.</p><p>Read my tax documents. Understand IRS rules. Reason about my specific situation using those rules. Do all of it without my data leaving my machine.</p><p>That&#8217;s the whole project and everything else is detail dressed up as complexity. [<a href="https://www.marginnotes.indranilsaha.net/p/building-a-private-ai-tax-assistant?r=77z576">This</a> is where I started and <a href="https://www.marginnotes.indranilsaha.net/p/the-infrastructure-tax?r=77z576">this</a> is how I got here.]</p><p>Once I had that, once you define the problem, then you can spot trade-offs and call better shots. Quite possible that even if I didn&#8217;t do this exercise, my subconscious mind would still do 70-80% of the trick (intuition). But enough years on the road taught me that most of projects fail here &#8212; knowing what to build before knowing what is needed.</p><p>Ain&#8217;t making that mistake! Even if the only client in the room was me.</p><h5>The Sketch</h5><p>The six-month roadmap I&#8217;d outlined at the start was good for convincing myself that this thing is possible before I had thought through whether it actually is. It was quite useful for that purpose, but probably not sufficient for building.</p><p>So I asked AI to break it down further. That gave me ten phases like an inverted building under construction - each floor below depending on the one above it:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Zldp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F708d8ed1-5034-42d6-96e2-fe6138925902_833x1480.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Zldp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F708d8ed1-5034-42d6-96e2-fe6138925902_833x1480.png 424w, https://substackcdn.com/image/fetch/$s_!Zldp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F708d8ed1-5034-42d6-96e2-fe6138925902_833x1480.png 848w, https://substackcdn.com/image/fetch/$s_!Zldp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F708d8ed1-5034-42d6-96e2-fe6138925902_833x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!Zldp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F708d8ed1-5034-42d6-96e2-fe6138925902_833x1480.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Zldp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F708d8ed1-5034-42d6-96e2-fe6138925902_833x1480.png" width="833" height="1480" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/708d8ed1-5034-42d6-96e2-fe6138925902_833x1480.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1480,&quot;width&quot;:833,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:143674,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.marginnotes.indranilsaha.net/i/192781478?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F392209dd-d973-427c-aaef-ce39de1d0b9b_1914x1480.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Zldp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F708d8ed1-5034-42d6-96e2-fe6138925902_833x1480.png 424w, https://substackcdn.com/image/fetch/$s_!Zldp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F708d8ed1-5034-42d6-96e2-fe6138925902_833x1480.png 848w, https://substackcdn.com/image/fetch/$s_!Zldp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F708d8ed1-5034-42d6-96e2-fe6138925902_833x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!Zldp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F708d8ed1-5034-42d6-96e2-fe6138925902_833x1480.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>This is the kind of sequencing that looks entirely reasonable written on a napkin and considerably more humbling when you start estimating how long each box actually takes.</p><p>And, so I drew it on a napkin (and taped it under the laptop) because that&#8217;s appropriate for the level of certainty I had - less like a commitment, more like a hypothesis. And I questioned it. I&#8217;ll leave that for the next post&#8230;</p><h5>On Plans&#8230; Of Skepticism and Honesty</h5><p>I am a planner by nature&#8212; the kind with a tender heart that likes certainty. We live in a really complex world and plans reduce the complexity to manageable heuristics. But believing in a plan is taking yourself too seriously.</p><p>A Plan is at best a thinking tool &#8212; it forces you to see the complete system before you&#8217;re too deep in one component to remember the others exist. Kind of like a map. Maps are useful even when the territory turns out to be different, which it always does.</p><p>That said, two things concern me more than the others and I&#8217;ll label them now for posterity.</p><p>Thing One: Getting my tax documents read reliably &#8212; W-2s, 1099s, and the receipts. A PDF looks like a document to a human. To a computer it is a stream of drawing instructions that happens to resemble a document. And it feels quite tricky, because there could be so many drawings. Teaching my system to read these drawings sounds time consuming. I am relying on the fact that this problem has been solved and I will find help in the corners of the www forest and not have to reinvent this wheel. Or I will come up with a shortcut, or a cheat sheet (I have one in mind). More on that later. Blah blah&#8230; Thing Two.</p><p>Thing Two: Getting a small local model to give genuinely useful tax advice &#8212; without internet access, without being specifically trained on tax data, using only what it can retrieve from IRS publications. The quality of the answer depends entirely on the quality of what the system retrieves. The technical term for what happens when retrieval goes wrong is &#8220;hallucination&#8221; or confident nonsense. I am trying to avoid confident nonsense about my taxes.</p><p>These are the longest poles in the tent. I&#8217;m budgeting more time for both than the plan suggests, which means I&#8217;m already diverging from the plan&#8230; see what I meant!</p><h5>Front-Load, Fail Fast, Dive Deep</h5><p>Here&#8217;s my actual approach, which differs from the official plan.</p><p>I&#8217;m front-loading the early phases to get a working end-to-end flow as quickly as possible &#8212; even if every individual component is rough. The goal is to feel what it&#8217;s like to ask the system a real question and get a real answer before I&#8217;ve perfected any single piece.</p><p>The plan says set up RAG before touching the documents. I feel like going straight to the documents first &#8212; because that&#8217;s where I expect the most resistance, and I&#8217;d rather find out early.</p><p>Two phases at the end of the plan &#8212; privacy and testing &#8212; are probably not phases at all. For this project, Privacy is front and center, gotta bake it in from the start or it isn&#8217;t there. Testing is the same (only it&#8217;s not specific for this project, for everything in life, &#8220;Bulid a little bit, Test a little bit.&#8221;)&#8230; Both will likely dissolve into every other phase rather than arriving as their own moment. But they&#8217;re on the plan because they deserve to be seen, and we&#8217;re not spending any more time tinkering with the plan.</p><p>That said, the back half of the timeline is where the real work lives &#8212; making each component actually reliable, handling the edge cases, closing the gap between &#8220;works on my test document&#8221; and &#8220;works on my real W-2&#8221; which, as it turns out, is printed five times side by side on a single page.</p><h5>The Long View</h5><p>At the far end of all this &#8212; if things go better than I&#8217;m currently expecting, which they may or may not &#8212; the system generates a completed, ready-to-file tax form. One I can upload directly. No accountant. No TurboTax. No data leaving my machine.</p><p>To be honest, that feels like a long stretch from where I&#8217;m standing today. </p><p>But I&#8217;ve learned not to pre-emptively cap ambition on projects that haven&#8217;t started yet. The plan doesn&#8217;t know how far this goes. And I&#8217;ve been wrong about ceilings before &#8212; occasionally in the right direction.</p><h5>Next</h5><p>The machine is live. The environment is set up. From here to there, From there to here, Funny things are everywhere. The fun is about to get funnier&#8230; </p><div><hr></div><p><em>I. Thinking on strategy, innovation, and philosophy &#8212; for people who think seriously about how to build things and make decisions.</em></p><p><em>This is Part 3 of an ongoing series on building a private, local AI tax assistant &#8212; one hour a week, on consumer hardware, without sending financial data anywhere. </em></p><p><em><a href="https://www.marginnotes.indranilsaha.net/p/building-a-private-ai-tax-assistant?r=77z576">Part 1: Building a Private AI Tax Assistant: In public, on a MacBook!</a></em></p><p><em><a href="https://www.marginnotes.indranilsaha.net/p/the-infrastructure-tax?r=77z576">Part 2: The Infrastructure Tax</a></em></p><p><em>If you&#8217;re building something similar or have any questions/ideas to share, I&#8217;d love to hear from you. Cheers!</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.marginnotes.indranilsaha.net/p/the-blueprint?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.marginnotes.indranilsaha.net/p/the-blueprint?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.marginnotes.indranilsaha.net/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption"></p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Dignity]]></title><description><![CDATA[...in the face of cheek and sarcasm... a guide to old school]]></description><link>https://www.marginnotes.indranilsaha.net/p/dignity</link><guid isPermaLink="false">https://www.marginnotes.indranilsaha.net/p/dignity</guid><dc:creator><![CDATA[Indranil Saha]]></dc:creator><pubDate>Sat, 21 Mar 2026 19:20:44 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!6v54!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F945bdc7f-cb04-47a9-a65d-c58ec98500af_446x437.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6v54!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F945bdc7f-cb04-47a9-a65d-c58ec98500af_446x437.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6v54!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F945bdc7f-cb04-47a9-a65d-c58ec98500af_446x437.png 424w, https://substackcdn.com/image/fetch/$s_!6v54!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F945bdc7f-cb04-47a9-a65d-c58ec98500af_446x437.png 848w, https://substackcdn.com/image/fetch/$s_!6v54!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F945bdc7f-cb04-47a9-a65d-c58ec98500af_446x437.png 1272w, https://substackcdn.com/image/fetch/$s_!6v54!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F945bdc7f-cb04-47a9-a65d-c58ec98500af_446x437.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6v54!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F945bdc7f-cb04-47a9-a65d-c58ec98500af_446x437.png" width="446" height="437" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/945bdc7f-cb04-47a9-a65d-c58ec98500af_446x437.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:437,&quot;width&quot;:446,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:214237,&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.marginnotes.indranilsaha.net/i/191699945?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf1faa9e-6c5b-4496-b34b-ea7078a5d37e_500x500.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!6v54!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F945bdc7f-cb04-47a9-a65d-c58ec98500af_446x437.png 424w, https://substackcdn.com/image/fetch/$s_!6v54!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F945bdc7f-cb04-47a9-a65d-c58ec98500af_446x437.png 848w, https://substackcdn.com/image/fetch/$s_!6v54!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F945bdc7f-cb04-47a9-a65d-c58ec98500af_446x437.png 1272w, https://substackcdn.com/image/fetch/$s_!6v54!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F945bdc7f-cb04-47a9-a65d-c58ec98500af_446x437.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>Dignity, once surrendered, is rather difficult to reclaim. It slips away quietly, often in the smallest of moments&#8212;a careless remark, an unnecessary display, a willingness to trade composure for fleeting satisfaction. And though the loss may seem trivial at the time, its absence is felt long after the moment itself has passed.<br>There is a curious illusion, much indulged in modern life, that dignity is a flexible thing&#8212;something one may set aside in a moment of haste or temper, only to retrieve later without consequence.<br>I cannot say I agree.<br><br>One may apologize, of course. One may even be forgiven. But dignity is not restored by apology alone; it is rebuilt slowly, through conduct, restraint, and a renewed respect for oneself and others.<br>It is, if you will forgive the expression, rather like fine china&#8212;perfectly serviceable when intact, but once cracked, never quite the same again, however carefully mended.<br>And so, I have always believed it wiser to guard one&#8217;s dignity with vigilance. For while it may not announce its departure, it is sorely missed when gone&#8212;and exceedingly difficult to persuade back.<br><br>This thought began with this week&#8217;s geopolitical events, but&#8212;like many such reflections&#8212;found its way back to work. In the workplace, one often encounters sarcasm or clever remarks&#8212;moments that invite a response, yet test one&#8217;s ability to maintain both dignity and restraint. I find myself thinking about such things from time to time (a childhood full of such training is to blame primarily). Here are some lines that may come in handy (tried and tested):<br><br>- <s>Gentle </s>deflection: One must be grateful that wit still flourishes, even when good judgement does not.<br><br>- Mildly wounded: I had hoped for a more charitable interpretation&#8212;but perhaps I ask too much.<br><br>- Firm but civil: If there is a point to be made, I should prefer it delivered plainly rather than dressed in cleverness.<br><br>- Dry, understated: We must all make our contributions, however&#8230; distinctive.<br><br>- Respectful: I wonder if the situation may be rather more nuanced than it appears.<br><br>A thought worth comparing notes on.</p>]]></content:encoded></item><item><title><![CDATA[The Infrastructure Tax]]></title><description><![CDATA[or how to buy a refurb Mac Pro and overthink cost allocation...]]></description><link>https://www.marginnotes.indranilsaha.net/p/the-infrastructure-tax</link><guid isPermaLink="false">https://www.marginnotes.indranilsaha.net/p/the-infrastructure-tax</guid><dc:creator><![CDATA[Indranil Saha]]></dc:creator><pubDate>Sat, 21 Mar 2026 18:41:04 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!CZ0p!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66dac8bc-f601-4122-9bfa-2382b4f59848_500x500.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Two weeks ago, I set out to build a privacy-first AI system. But before any of the interesting stuff could begin, I ran into the good old infrastructure question. </p><p><strong>My 2016 MacBook Air</strong></p><p>The machine I planned to use for this project was, in technical terms, cooked.</p><p>Not just slow &#8212; it was existentially compromised. It couldn&#8217;t run the latest macOS, which meant it couldn&#8217;t receive security updates, which meant I was planning to build a <em>privacy-first</em> AI system on a machine that was itself a security liability. The irony was not lost on me.</p><p>The laptop wasn&#8217;t really a project expense. It was a deferred necessity that the project finally forced me to confront. Any CFO will tell you when you&#8217;re allocating costs, be honest about what&#8217;s <em>actually</em> driving the spend. The project, in this case, gets only partial credit.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CZ0p!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66dac8bc-f601-4122-9bfa-2382b4f59848_500x500.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CZ0p!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66dac8bc-f601-4122-9bfa-2382b4f59848_500x500.png 424w, https://substackcdn.com/image/fetch/$s_!CZ0p!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66dac8bc-f601-4122-9bfa-2382b4f59848_500x500.png 848w, https://substackcdn.com/image/fetch/$s_!CZ0p!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66dac8bc-f601-4122-9bfa-2382b4f59848_500x500.png 1272w, https://substackcdn.com/image/fetch/$s_!CZ0p!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66dac8bc-f601-4122-9bfa-2382b4f59848_500x500.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CZ0p!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66dac8bc-f601-4122-9bfa-2382b4f59848_500x500.png" width="500" height="500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/66dac8bc-f601-4122-9bfa-2382b4f59848_500x500.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:103727,&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://sahaindranil.substack.com/i/191684008?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66dac8bc-f601-4122-9bfa-2382b4f59848_500x500.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!CZ0p!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66dac8bc-f601-4122-9bfa-2382b4f59848_500x500.png 424w, https://substackcdn.com/image/fetch/$s_!CZ0p!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66dac8bc-f601-4122-9bfa-2382b4f59848_500x500.png 848w, https://substackcdn.com/image/fetch/$s_!CZ0p!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66dac8bc-f601-4122-9bfa-2382b4f59848_500x500.png 1272w, https://substackcdn.com/image/fetch/$s_!CZ0p!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66dac8bc-f601-4122-9bfa-2382b4f59848_500x500.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><strong>Buying only what you need</strong></p><p>I did not want to buy a new Mac. Because I didn&#8217;t <em>need</em> one. </p><p>New MacBooks are extraordinary machines. They&#8217;re also priced for people who either expense them or derive some psychological satisfaction from unboxing theater. I am neither.</p><p>What I needed was a machine capable of running local LLMs &#8212; specifically something with Apple Silicon, at least 16GB of unified memory, and enough storage to not make me anxious. A refurbished MacBook Pro M3 checked every box at roughly half the price of new. Running a local language model has specific hardware requirements that rule out some machines. If you want to understand why 16GB of unified memory matters more than the chip generation, that's in the appendix.</p><p>The math wasn&#8217;t complicated. The harder part was trusting the process &#8212; because buying a refurb computer from a marketplace you&#8217;ve never used, for a machine you&#8217;ve never owned, based on specs you&#8217;re partly inferring, requires something most consumer decisions don&#8217;t: <em>actual due diligence.</em></p><p><strong>Due diligence</strong></p><p>I&#8217;ve noticed this weird thing, people who would never skip steps on a business decision routinely buy technology the way they buy produce &#8212; by feel, and with no recourse plan. A $50,000 business decision gets a due diligence checklist, a legal review, and a week of scrutiny &#8212; as it should. But an $1000 laptop &#8212; which you will use for eight hours a day, every day, for the next four years &#8212; gets a glance and a gut feeling.</p><p>I did not do that.</p><p>I researched Back Market&#8217;s reliability track record, read refurb grading standards, developed (&#8230;as in, had AI do it) an inspection protocol covering battery health, hardware specs, physical condition, port functionality, and built-in diagnostics. And, I documented everything&#8230; photographically.</p><p>The actual thing took about forty minutes. The machine arrived. Battery cycle count: under 100. Specs: exactly as listed. Condition: better than &#8220;Fair&#8221; suggested. Result: a fully capable M3 MacBook Pro for the price of a mid-tier Windows machine.</p><p>Forty minutes on a decision that shapes every working hour for the next four (maybe, ten) years seems, on reflection, like the bare minimum.</p><p>The inspection checklist is in the appendix below &#8212; if you&#8217;re ever buying refurb mac, use it.</p><p><strong>What this actually cost </strong></p><p>The laptop was ~50% of new retail. It did cost me my time - roughly 4 hours of research and inspection. And, there&#8217;s obviously the opportunity cost of not starting the project for two weeks.</p><p>But I think the right way to think about this cost is that: a portion belongs to the project, a portion belongs to the long-overdue hardware refresh, and zero of it belongs to any illusion that this was optional. The 2016 machine was a security problem waiting to become another story. The project just forced the timeline.</p><p>Sometimes the infrastructure <em><strong>is</strong></em> the decision.</p><div><hr></div><p><strong>Next up</strong></p><p>The machine was ordered. It hadn&#8217;t arrived yet&#8230;</p><p>Which left me with a week and nothing to do but think &#8212; about architecture, sequencing, and whether this project was actually as straightforward as I&#8217;d convinced myself it was. Well, waiting is underrated. The plan that came out is worth its own post. Until next time&#8230;</p><div><hr></div><p><em>If you&#8217;re following along and want the full hardware inspection checklist &#8212; what to check, what thresholds to use, and when to return immediately &#8212; it&#8217;s in the appendix below.</em></p><div><hr></div><h4>Appendix 1: System requirements for running local LLMs on Mac</h4><p><em>Why this machine, and not just any machine.</em></p><p>Buying a refurb Mac for general use is straightforward. Buying one to run local AI models requires a few additional considerations &#8212; because not all Apple Silicon is created equal for this purpose.</p><p><strong>The minimum bar for this project:</strong></p><p>Requirement Minimum: Chip - Apple Silicon (M1 or later) | M3; Unified Memory  8GB (constrained) | 16GB; Storage: 256GB (tight) | 1TB; macOS: Monterey 12+ | Latest</p><p><strong>Why these numbers matter:</strong></p><p><em>Unified memory</em> is the critical variable. Unlike traditional laptops where CPU and GPU have separate memory pools, Apple Silicon shares one pool across both. Local LLMs load their model weights into this memory &#8212; a 7B parameter model (like Mistral 7B) requires roughly 4&#8211;8GB depending on quantization. At 8GB total, you&#8217;re running the model and your operating system in a constant negotiation for space. At 16GB, you have room to work.</p><p><em>Storage</em> matters more than people expect. A single quantized model can run 4&#8211;8GB. If you plan to experiment with multiple models &#8212; which you will &#8212; 256GB fills up faster than feels reasonable.</p><p><em>The M3 specifically</em> isn&#8217;t required &#8212; an M1 or M2 with 16GB would serve the project equally well, and would likely be cheaper on the refurb market. The M3 was available at the right price point. Don&#8217;t over-optimize for the latest chip generation.</p><p><strong>What won&#8217;t work:</strong></p><ul><li><p>Intel Macs: Ollama technically runs, but performance is poor enough to be discouraging. Not recommended.</p></li><li><p>8GB unified memory: Possible for basic experimentation, but you&#8217;ll feel the ceiling quickly. Acceptable for testing the concept; limiting for sustained use.</p></li><li><p>Pre-Monterey macOS: Several dependencies won&#8217;t install cleanly.</p></li></ul><p><strong>The practical implication:</strong></p><p>If you&#8217;re following this project and considering building something similar, the refurb market for M1/M2 MacBook Pros with 16GB is currently the best value entry point. You don&#8217;t need new. You don&#8217;t need M3. You need Apple Silicon and 16GB.</p><h4>Appendix 2: Inspection checklist</h4><p><em>(The nerdy part. Skip if you trust your instincts. Don&#8217;t trust your instincts.)</em></p><p><strong>Before you do anything:</strong> Photograph everything on arrival. Box, accessories, all sides of the machine. Serial number. This is your evidence if anything goes sideways.</p><p><strong>Battery:</strong> Apple menu &#8594; System Report &#8594; Power. Look for cycle count (under 100 is excellent, under 300 is acceptable), condition (&#8221;Normal&#8221;), and full charge capacity (85%+ of design capacity). Anything worse: negotiate or return.</p><p><strong>Specs verification:</strong> Apple menu &#8594; About This Mac. Confirm chip, RAM, and storage match exactly what you paid for. Screenshot it. Discrepancy = grounds for return, full stop.</p><p><strong>Physical inspection:</strong> Screen on and off (dead pixels, coating wear, bright spots), keyboard and trackpad feel, hinge smoothness, port integrity. Test every port with an actual device &#8212; don&#8217;t assume.</p><p><strong>Diagnostics:</strong> Restart, hold Power until startup options appear, Command+D runs Apple&#8217;s built-in hardware test. &#8220;No issues found&#8221; is the only acceptable result. Optional: CoconutBattery for detailed battery analysis, Blackmagic Disk Speed Test to confirm SSD performance.</p><p><strong>Return policy:</strong> Back Market offers 30-day returns and a 1-year warranty. Keep all packaging until you&#8217;re certain you&#8217;re keeping the machine. Document everything through their platform &#8212; not email, not phone.</p><p>Immediate return triggers: &#8220;Service Recommended&#8221; battery, mismatched specs, screen damage, non-functional ports, non-genuine parts warnings in macOS.</p><div><hr></div><p><em>This is Part 2 of an ongoing series on building a private, local AI tax assistant &#8212; one hour a week, on consumer hardware, without sending your financial data anywhere.</em></p>]]></content:encoded></item><item><title><![CDATA[Building a Private AI Tax Assistant: In public, on a MacBook!]]></title><description><![CDATA[Why on earth? Is It Possible? How Long Will It Take? What Will It Cost?]]></description><link>https://www.marginnotes.indranilsaha.net/p/building-a-private-ai-tax-assistant</link><guid isPermaLink="false">https://www.marginnotes.indranilsaha.net/p/building-a-private-ai-tax-assistant</guid><dc:creator><![CDATA[Indranil Saha]]></dc:creator><pubDate>Tue, 10 Mar 2026 12:39:44 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!mB_o!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef1275c-dbd8-4f4d-9110-c9fe6eaf8412_500x500.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3>WHY on earth would you want to do that?</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mB_o!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef1275c-dbd8-4f4d-9110-c9fe6eaf8412_500x500.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mB_o!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef1275c-dbd8-4f4d-9110-c9fe6eaf8412_500x500.png 424w, https://substackcdn.com/image/fetch/$s_!mB_o!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef1275c-dbd8-4f4d-9110-c9fe6eaf8412_500x500.png 848w, https://substackcdn.com/image/fetch/$s_!mB_o!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef1275c-dbd8-4f4d-9110-c9fe6eaf8412_500x500.png 1272w, https://substackcdn.com/image/fetch/$s_!mB_o!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef1275c-dbd8-4f4d-9110-c9fe6eaf8412_500x500.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mB_o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef1275c-dbd8-4f4d-9110-c9fe6eaf8412_500x500.png" width="500" height="500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/def1275c-dbd8-4f4d-9110-c9fe6eaf8412_500x500.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:26558,&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://sahaindranil.substack.com/i/190500692?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef1275c-dbd8-4f4d-9110-c9fe6eaf8412_500x500.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!mB_o!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef1275c-dbd8-4f4d-9110-c9fe6eaf8412_500x500.png 424w, https://substackcdn.com/image/fetch/$s_!mB_o!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef1275c-dbd8-4f4d-9110-c9fe6eaf8412_500x500.png 848w, https://substackcdn.com/image/fetch/$s_!mB_o!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef1275c-dbd8-4f4d-9110-c9fe6eaf8412_500x500.png 1272w, https://substackcdn.com/image/fetch/$s_!mB_o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef1275c-dbd8-4f4d-9110-c9fe6eaf8412_500x500.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>AI is consuming everything around us&#8202;&#8212;&#8202; and on the face of it, it smells like progress, and most probably it is, but, and here it comes, the ubiquitous BUT, it bothers me how quickly we are giving up on our personal data to gain a little bit of advantage. So, I set out on a personal project: to build a private AI assistant that can help with tax preparation using my own financial data&#8202;&#8212;&#8202;without sharing that data with public models or the cloud.</p><p>In this day and age of ever evolving cyber attacks, which even the biggest companies around the world struggle to prevent, sharing my sensitive data with outside consultants makes me quite uneasy. One could argue &#8220;why do you think you are special?&#8221;, and &#8220;you are just not interesting enough&#8202;&#8212;&#8202;no hacker worth the salt will be interested in your information specifically&#8221;.&nbsp;</p><p>Still combine that with the thought &#8220;why do I pay tax accountants to fill up a form that I myself can fill up?&#8221; and &#8220;I have a pretty good B-school degree, majoring in, wait for it, Finance, I should be able to do this&#8221;. But I don&#8217;t stay up to date with tax laws and sometimes work gets crazy around tax days (just Murphy&#8217;s Law!). So I need help. And when I read about agentic AI, it seemed like the perfect solution. BUT&#8230; if I use just any available agent, my data still goes out into public models, and I don&#8217;t trust these startup-y things to keep my data safe.</p><p>Also, there is the adventure: Can I really do this on a MacBook&nbsp;, with just one hour per week, and without breaking the bank?</p><p>Just for background, I&#8217;m not a techie by any stretch of imagination. I used to be one a very, very, long time back. But not any longer. I just like to dabble and tinker around with the proverbial &#8220;what if&#8230;&#8221; That, plus heard all the buzz about machines coding, and thought, so why not take this idea out for a ride and see how far it goes&#8230;</p><p>Here&#8217;s the breakdown of what I&#8217;m learning, planning, and building.</p><h4>The Idea</h4><p>I&#8217;m building a tax assistant that can:</p><p>- Read my W-2s, 1099s, and expense receipts&nbsp;</p><p>- Reason about eligibility for deductions or credits&nbsp;</p><p>- Give advice based on IRS rules&nbsp;</p><p>- Do it entirely offline, keeping my financial data private</p><h4>Can I Build This on a&nbsp;MacBook?</h4><p>Surprisingly&#8202;&#8212;&#8202;yes.</p><p>Tools like Ollama, LlamaIndex, and Streamlit make it possible to run local models like Mistral 7B or LLaMA 3 directly on my MacBook. By using quantized models, I&#8217;m able to get decent performance even without a GPU.</p><h4>What If I Only Have 1 Hour per&nbsp;Week?</h4><p>I mapped out a 6-month roadmap using just 1 hour per week, breaking it down into phases:</p><p>- Month 1: Setup local LLM + basic Q&amp;A&nbsp;</p><p>- Month 2: Add PDF parsing (W-2s, 1099s)&nbsp;</p><p>- Month 3&#8211;4: Apply simple tax logic (deduction thresholds, filing status rules)&nbsp;</p><p>- Month 5&#8211;6: Build a simple RAG pipeline and Streamlit UI&nbsp;</p><p>With focus and consistent micro-progress, it&#8217;s totally doable.</p><h4>What Will It&nbsp;Cost?</h4><p>So far, almost everything is open source. My only real &#8220;costs&#8221; are:</p><p>- Local compute power (already owned)&nbsp;</p><p>- Electricity (~$10/month max)&nbsp;</p><p>- Time (the real investment)&nbsp;</p><p>If I were to add GPU cloud compute, that might add $50&#8211;$200/month, but so far I&#8217;m staying local.</p><h4>What&#8217;s Next?</h4><p>I&#8217;m documenting the full journey on my substack (here), and posting monthly updates on LinkedIn as I go.</p><p>Coming soon (Note to self: this is a plan that is sure to be disrupted&#8230; being a planner, I know that. It&#8217;s the only thing one can say about plans with some bit of certainty, but nevertheless&#8230; here it goes):</p><p>- &#8220;How I Got an AI Model to Parse My W-2s&#8221;&nbsp;</p><p>- &#8220;Can AI Actually Understand Tax Law?&#8221;&nbsp;</p><p>If you&#8217;re building something similar or have any questions/ideas to share, I&#8217;d love to hear from you. Cheers!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.marginnotes.indranilsaha.net/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading this article! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[First post]]></title><description><![CDATA[The Road]]></description><link>https://www.marginnotes.indranilsaha.net/p/first-post</link><guid isPermaLink="false">https://www.marginnotes.indranilsaha.net/p/first-post</guid><dc:creator><![CDATA[Indranil Saha]]></dc:creator><pubDate>Wed, 14 Jan 2026 03:38:53 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!C_d6!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff17c8f27-7bf4-41c5-b52a-56eecdab5bfc_342x342.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Any road followed precisely to its end leads precisely nowhere. Climb the mountain just a little bit to test that it&#8217;s a mountain. From the top of the mountain, you cannot see the mountain. Frank Herbert, Dune.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.marginnotes.indranilsaha.net/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Indranil's Substack! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Coming soon]]></title><description><![CDATA[This is Margin Notes.]]></description><link>https://www.marginnotes.indranilsaha.net/p/coming-soon</link><guid isPermaLink="false">https://www.marginnotes.indranilsaha.net/p/coming-soon</guid><dc:creator><![CDATA[Indranil Saha]]></dc:creator><pubDate>Wed, 14 Jan 2026 03:04:17 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!C_d6!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff17c8f27-7bf4-41c5-b52a-56eecdab5bfc_342x342.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This is Margin Notes.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.marginnotes.indranilsaha.net/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.marginnotes.indranilsaha.net/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item></channel></rss>