<?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[Compounding Decisions for the Age of AI]]></title><description><![CDATA[Exploring how people, products, and intelligent systems learn, adapt, and compound over time.]]></description><link>https://blog.rememberloop.com</link><image><url>https://blog.rememberloop.com/img/substack.png</url><title>Compounding Decisions for the Age of AI</title><link>https://blog.rememberloop.com</link></image><generator>Substack</generator><lastBuildDate>Sun, 21 Jun 2026 09:29:29 GMT</lastBuildDate><atom:link href="https://blog.rememberloop.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Sriram Natarajan]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[srinatar@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[srinatar@substack.com]]></itunes:email><itunes:name><![CDATA[Sriram Natarajan]]></itunes:name></itunes:owner><itunes:author><![CDATA[Sriram Natarajan]]></itunes:author><googleplay:owner><![CDATA[srinatar@substack.com]]></googleplay:owner><googleplay:email><![CDATA[srinatar@substack.com]]></googleplay:email><googleplay:author><![CDATA[Sriram Natarajan]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Your AI doesn't remember you. It remembers the thread.]]></title><description><![CDATA[Why where you talk to an AI decides what it can remember]]></description><link>https://blog.rememberloop.com/p/your-ai-doesnt-remember-you-it-remembers</link><guid isPermaLink="false">https://blog.rememberloop.com/p/your-ai-doesnt-remember-you-it-remembers</guid><dc:creator><![CDATA[Sriram Natarajan]]></dc:creator><pubDate>Sun, 21 Jun 2026 05:36:13 GMT</pubDate><content:encoded><![CDATA[<p>I asked my agent a question about my car last week and got a good answer, and only afterward did I realize it had no business knowing it. It told me when the car had last finished charging and what I&#8217;d asked it to do differently the time before. I hadn&#8217;t stored any of that anywhere. There&#8217;s no car database. The agent doesn&#8217;t have a private memory it tucks facts into. So where did the answer come from?</p><p>It came from the thread. I have a Telegram thread that&#8217;s only about the car, and the agent had simply read back up its own thread the way you&#8217;d scroll up to remember how an argument started. Every charging instruction, every &#8220;did it work,&#8221; every fix, all sitting there in order. The thread wasn&#8217;t a record of the work. The thread <em>was</em> the memory.</p><p>That sounds like a small distinction. It isn&#8217;t, and the moment it clicked I started seeing every conversation I have with an AI differently.</p><p>When you start using one of these assistants seriously, the thing that takes a while to sink in is that it doesn&#8217;t remember you between sessions the way a person does. There&#8217;s no inner notebook. What feels like memory is almost always the model re-reading the conversation it&#8217;s sitting in. The chat window isn&#8217;t where you talk <em>to</em> the memory. The chat window <em>is</em> the memory. Everything in it is available. Everything outside it might as well not exist.</p><p>Which means the most boring decision you make, where you type, is quietly the most important one.</p><p>I learned this the way I learn most things, by getting it wrong first. For a while I ran everything through one channel. Car stuff, investing, household errands, random questions, all in one long stream. It felt efficient. One place, one assistant, ask it anything. And it slowly got worse at all of it, in a way I couldn&#8217;t put my finger on. It would lose the thread of what I&#8217;d decided about a stock because three hundred messages about my car had buried it. It would answer a question about the house with the tone it used for casual chat. Nothing was broken, exactly. It was just vaguely amnesiac about everything, and I blamed the model.</p><p>The model was fine. I was the one pouring four different kinds of work into one channel and then asking it to remember any single one cleanly. Imagine keeping one notebook for your finances, your car maintenance, your household, and your group chats, writing each new entry on whatever page you happened to flip to. That&#8217;s what one stream is. The information&#8217;s all technically there. Good luck finding what you decided about the car.</p><p>So I split them. One thread per kind of work. The car has its thread. Investing has its own, run by a separate agent that the main one isn&#8217;t even allowed to talk over, so that thread stays a clean tape of a single voice. The household thread holds the errands and the appointments and the small running logistics of the house, so the state of all of it lives in one scrollable place instead of scattered across a dozen unrelated chats. The group chat is its own thing with its own rules.</p><p>The split looked like organization. It was actually memory architecture. Each thread became a self-writing log of exactly one topic, which means each topic now has a complete, uninterrupted history the agent can read back without anything else bleeding in. The car thread is the entire story of the car. The household thread is the entire state of the house. I didn&#8217;t give the agent a better memory. I stopped corrupting the memory it already had.</p><p>And once each thread was a clean record of one kind of work, a second thing fell out of it for free: each thread could have its own rules. In the car thread, silence is banned, because a non-answer to &#8220;is it charging&#8221; is itself an alarm. In the group chat, silence is usually correct. Same agent, opposite default, because the thread told it which job it was doing. But that&#8217;s the smaller benefit. The real one is that I can ask the car thread anything about the car six weeks from now and the answer is just sitting there, in order, because nothing else was ever allowed in.</p><p>So here&#8217;s the part you can use even if you never build an agent and just use ChatGPT or Claude like everyone else. That long single thread you&#8217;ve been running, the one where you ask it everything? You&#8217;re not chatting with it. You&#8217;re writing its only memory, and you&#8217;re writing every kind of entry on top of every other one. The fix costs nothing. Start a separate conversation for each kind of work that you&#8217;ll come back to, and keep that work there. The tool doesn&#8217;t remember your project. It remembers the thread. Give the thread one job, and you&#8217;ve given the tool a memory of that job that actually holds.</p>]]></content:encoded></item><item><title><![CDATA[How to build continuously improving agents]]></title><description><![CDATA[A system that learns from your agent's mistakes beats a bigger model]]></description><link>https://blog.rememberloop.com/p/how-to-build-continuously-improving</link><guid isPermaLink="false">https://blog.rememberloop.com/p/how-to-build-continuously-improving</guid><dc:creator><![CDATA[Sriram Natarajan]]></dc:creator><pubDate>Mon, 15 Jun 2026 06:36:25 GMT</pubDate><content:encoded><![CDATA[<p>For three days at the end of May, my two agents wasn&#8217;t running on the model I thought it was. I&#8217;d set it to use Anthropic&#8217;s strongest model on the 28th. Every session after that quietly fell back to a weaker one, because the model name I&#8217;d configured didn&#8217;t quite exist in the system that routes the calls. Nothing broke. No error reached me. The agent kept answering, a little dumber than I intended, and I had no idea.</p><p>I found out because a different process goes looking every night.</p><p>I run two agents in my spare time, a chief of staff and an investing one. The thing I&#8217;ve spent the most effort on isn&#8217;t on agent&#8217;s intelligence. It&#8217;s a nightly routine I call REFLECT, which wakes up after I&#8217;ve gone to bed, reads back over what the agents did that day, and reads the boring stuff too, the error logs, the cron job states, the things that scrolled past while I was busy being impressed by the output. On the 31st, REFLECT read the gateway error log and found more than a hundred &#8220;model not found&#8221; failures stacked up since the 28th. That&#8217;s how I learned every session for three days had silently downgraded itself.</p><p>The fix took two minutes. The lesson was the whole point: the failure that cost me three days of degraded work never announced itself, and the only reason I caught it is that something was scheduled to look.</p><p>This is the part of building agents that I didn&#8217;t expect to be the hard part. Making an agent capable is mostly a matter of using a good model and writing good instructions. Making an agent that gets <em>better</em> over time is a genuinely different and harder problem, and a bigger model doesn&#8217;t solve it. A bigger model is smarter on any single task. It is not, on its own, learning from yesterday. Continuous improvement isn&#8217;t a property you buy with model size. It&#8217;s a loop you have to design and then force to run.</p><p>The forcing is the part people skip. It&#8217;s easy to say &#8220;the agent should learn from its mistakes.&#8221; Everyone agrees with that sentence. But an agent does not spontaneously notice its own quiet failures any more than you spontaneously audit your own blind spots. The noticing has to be a scheduled job with a specific time, a specific set of places to look, and a specific output, or it does not happen. Left to chance, the agent reflects on the days you remember to ask it to, which are exactly the days nothing went wrong.</p><p>So I made it explicit. I created a REFLECT Agent Task with a clear success definition  that three things had to be true or it didn't work. First, my REFLECT Agents runs at a fixed time, because "when convenient" means never. Second, it reads a defined set of inputs whether or not anything looks wrong, the day's sessions, the error logs, the state of every background job, because an agent told to "review the day" will review the visible day and skip the logs every time. Last, it has to end in a written note that lands such that I'll see it, not a private conclusion that evaporates with the session. That last one I learned the hard way. I once let it self-audit while answering a casual "all good?" and found five background jobs dead for days, one of them the very own reflection job itself, broken eight nights running, failing into a state file nobody was reading. The loop that's supposed to catch silent failures itself silently failed! After that I stopped trusting any improvement that didn't end in a note I could read.</p><p>What surprised me is how much of the value is in catching degradation, not in getting cleverer. I went in imagining REFLECT would surface brilliant insights about how to do the work better. Mostly it doesn&#8217;t. Mostly it finds that something quietly stopped working the way it was supposed to. The wrong model. A dead job. A stale file feeding bad data into a decision. These aren&#8217;t failures of intelligence. They&#8217;re failures of attention, and they&#8217;re invisible precisely because the system keeps producing fluent output while broken. The model can&#8217;t catch them by being smarter. Only a scheduled second look catches them.</p><p>If you&#8217;re building anything that runs on its own, this is the design problem worth your time. Not &#8220;which model.&#8221; That decision gets easier every month as the models improve and the gap between them narrows. The decision that stays hard is how the thing notices it&#8217;s drifting, because nothing about a more capable model makes it more self-aware about its own broken plumbing. You have to build the look. You have to schedule it, force its inputs, and make its findings land somewhere a human reads. Skip any of that and you get an agent that&#8217;s confidently running degraded, which is the most expensive kind of broken, because it looks exactly like working.</p><p>My agents aren&#8217;t smarter than they were a month ago. The model is the same. What&#8217;s different is that every night, something reads back over the mistakes and writes down what it finds, and over a month that habit has caught more real problems than any upgrade would have. The improvement didn&#8217;t come from a better brain. It came from the discipline of looking.</p>]]></content:encoded></item><item><title><![CDATA[What if your investment agent tracked your judgment, not just your returns?]]></title><description><![CDATA[How I build my AI Agent so my judgement and skills can compound over time]]></description><link>https://blog.rememberloop.com/p/what-if-your-investment-agent-tracked</link><guid isPermaLink="false">https://blog.rememberloop.com/p/what-if-your-investment-agent-tracked</guid><dc:creator><![CDATA[Sriram Natarajan]]></dc:creator><pubDate>Sun, 14 Jun 2026 19:22:57 GMT</pubDate><content:encoded><![CDATA[<p>Most investors track one number. How much did I make?</p><p>That feels like the right question. But investing isn&#8217;t one decision. It&#8217;s dozens of small calls made over months. Do I add to this position today or wait? Do I hold through a bad quarter because the thesis still works, or has something broken? Do I trust what I see or what I feel?</p><p>Those decisions compound. You have to get these decisions right consistently and only then the returns follow. Get them wrong and eventually returns catches up on you, even if luck carried you for a while.</p><p>The problem is that most investment tools only show you the outcome. The judgment behind every decision is hardly noticed or reviewed. </p><p>I was talking about this with Peter, my investment agent. I wasn&#8217;t looking for a solution. I was simply exploring - like I do regularly: reviewing his goals and asking whether it still reflected what we were actually trying to do together.</p><p>I have designed Peter to have a set of specific goals. It&#8217;s the same as reviewing a doc with a colleague except the colleague runs on my machine every morning. Most people don&#8217;t build agents this way. I maintain a goals file, a memory layer, a set of defined outcomes for each of my Agents. Peter loads all of it every morning. It&#8217;s less like running a chatbot and more like managing a colleague who actually remembers what we decided last week.</p><p>I am happy to say that I have my Agent-based Personal Operating System who has memory, regularly reviews outcomes achieved vs defined goals and then suggest ways to improve our day-to-day activity to ensure that we move towards the established goal. </p><p>Peter came back saying hey - we do have two scoreboards. We just hadn&#8217;t named the second one.</p><p>We went back and forth. He proposed a framing. I challenged it. We kept going back and forth discussions on how to refine until we landed on what needs to be captured in his System Prompt and Workspace Memory to better achieve the goal we had established. This setup allows Peter to load every time he wakes up. </p><p>When you build AI Agents, they only operate with specific set of rules that is in captured. What isn&#8217;t written down, typically doesn&#8217;t fire. So, you have to be specific about this. </p><p>Here&#8217;s what we landed on.</p><p>The first scoreboard measures the financial goal. Net worth target, growth rate floor, beat the benchmark annually. Standard.</p><p>The second scoreboard measures whether I&#8217;m becoming a better investor. Not just wealthier, but building judgment I can use next time without starting over. He will help me identify / label a specific investment framework per week and how it is applied to something real in my portfolio - explained in simple terms so that I could explain to someone else without notes.</p><p>Peter&#8217;s point was that these two scoreboards feed the same loop. Evaluate a position, build a thesis, observe what happens, update your framework, evaluate better next time. They&#8217;re not competing. They&#8217;re the same process running in parallel.</p><p>What changes is the agent&#8217;s job.</p><p>An agent chasing returns alone can hand you a number and move on. An agent accountable for your judgment has to teach. Every recommendation has to explain the framework behind it, not just deliver the answer.</p><p>When Peter showed me the first version of the new format, I pushed back. The reasoning was buried inside the recommendation. The teaching was camouflaged as analysis. I told him to rebuild it around the second scoreboard.</p><p>Peter suggested another restructure. Again, we went back and forth and landed on a specific prompt that is specific and measurable enough. </p><p>Then he built the mechanism to enforce it. A new report format. A trial period. A review cron (scheduled reminder) that fires automatically on day 15. That last part matters. </p><p>I didn&#8217;t just tell Peter to change his format and assume it would work. I gave it a 15-day window with a pre-committed review. The point is to collect evidence before locking anything in as doctrine within the System Prompts. For us, the scheduled job isn&#8217;t just a reminder. It&#8217;s a commitment device. The review happens whether I feel like having it or not.</p><p>What I keep coming back to is how this started. I didn&#8217;t design a teaching protocol. I simply probed on whether my Agent operating model is aligned to the goals and whether our everyday activity is still matched what we were doing.</p><p>Peter named the gap, proposed the frame, built the system to enforce it, and built in a review date so neither of us could quietly walk away from the question.</p><p>Most investment tools give you answers. The Agent that I am building is trying to make me better at finding them myself.</p><p>A robo-advisor pays out returns. A teacher pays out the ability to repeat them.</p>]]></content:encoded></item><item><title><![CDATA[Fluent and wrong look exactly the same]]></title><description><![CDATA[Why Plan is the most important step in working with an AI Agent or LLM Model]]></description><link>https://blog.rememberloop.com/p/fluent-and-wrong-look-exactly-the</link><guid isPermaLink="false">https://blog.rememberloop.com/p/fluent-and-wrong-look-exactly-the</guid><dc:creator><![CDATA[Sriram Natarajan]]></dc:creator><pubDate>Sat, 13 Jun 2026 16:41:56 GMT</pubDate><content:encoded><![CDATA[<p>The thing nobody warns you about working with AI Agents and LLM models is that confidently right and confidently wrong arrive in the same paragraph. Same tone. Same fluency. Same finished-looking output. Fluency is supposed to be a signal of competence. With language models it&#8217;s just a default setting.</p><p>I run into this because I&#8217;m building two agents in my spare time. One is a chief of staff that runs the logistics of my life, and the other helps me with investing. The investing one sits on top of a financial analytics engine I built that can run a discounted cash flow and spit out an intrinsic value for any stock, which is a fancy way of saying it estimates what a share is actually worth. So when I tell you it&#8217;s capable of being confidently wrong, I mean it can hand me a precise dollar figure, delivered with total composure, that happens to be off by a factor of a few hundred.</p><p>It did exactly that on Memorial Day.</p><p>The agent ran its undervaluation scan and flagged thirty-one stocks as deeply undervalued. NVDA was one of them, with a computed fair value of $44,701 per share. That number is obviously absurd. But obvious is the lucky case. A quieter version of the same bug could have flagged a stock at a merely wrong price instead of a comic one, and I&#8217;d never have caught that by eye. The agent didn&#8217;t touch the fix. Before it&#8217;s allowed to act on anything non-trivial, it has to stop and write down five things: what it thinks the problem actually is, what it knows versus what it&#8217;s only assuming, the one question it&#8217;s least sure about, what &#8220;solved&#8221; will look like as a number I can check, and the smallest change that could possibly work.</p><p>That&#8217;s the whole intervention. Make it write the plan before it writes the code.</p><p>It sounds like process-hygiene, the kind of checklist people tape to a wall and ignore. It isn&#8217;t, and the reason is the part I didn&#8217;t see coming. The value isn&#8217;t in the five sections. It&#8217;s in <em>when</em> they get written. Reasoning produced before any work exists is a plan. The same reasoning produced after the work is built is a rationalization, because by then the agent (like a person) is explaining the thing it already made rather than deciding what to make. Those two documents can contain the identical words and mean opposite things. One you can veto. The other just makes you feel informed while you rubber-stamp.</p><p>On the NVDA run the section that earned its keep was the boring one: what am I assuming. The agent wrote down that it was assuming the valuation pulled clean annual financials, and it flagged that it hadn&#8217;t actually checked. That admission is what aimed the whole investigation at the data instead of the math. The bug was a query pulling mixed annual and quarterly rows, which produced a 268 percent growth rate, which compounded into a roughly half-quadrillion-dollar company. </p><p>When your LLM/AI agent, hands you a finished answer with fluency, you can&#8217;t grade the answer; it&#8217;s built to look right. What you can grade is the plan it would have written before it started, <strong>so make it write that plan first</strong>. Force it to separate what it knows from what it&#8217;s guessing. Force it to name the one number that proves the job is done. Do that before any work exists, while the reasoning is still a decision and not a defense.</p><p>It costs a few minutes every time, and I genuinely resented that at first. What I got back was strange: I read the agent&#8217;s actual output less carefully now, not more, because I stopped trusting the output and started trusting the plan. The slow part was never the typing anyway. It was the thinking, and the memo is just the place I make it happen where I can see it before it&#8217;s too late to matter.</p>]]></content:encoded></item><item><title><![CDATA[How to tell your agent its design is wrong]]></title><description><![CDATA[Last Monday night, I read the first draft of a new report format that Peter, my investing agent, had written.]]></description><link>https://blog.rememberloop.com/p/how-to-tell-your-agent-its-design</link><guid isPermaLink="false">https://blog.rememberloop.com/p/how-to-tell-your-agent-its-design</guid><dc:creator><![CDATA[Sriram Natarajan]]></dc:creator><pubDate>Mon, 08 Jun 2026 01:07:03 GMT</pubDate><content:encoded><![CDATA[<p>Last Monday night, I read the first draft of a new report format that <em>Peter</em>, my investing agent, had written. The format was supposed to do two things: summarize my portfolio every day and teach me one thing about investing along with the summary. Sample emails, a teaching protocol, a proposal for how it wanted to communicate with me going forward. The form was clean. The headers were where I&#8217;d put them. The voice was close to mine.</p><p>I simply responded that the whole design was wrong.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.rememberloop.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Compounding Decisions! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Not &#8220;make it better.&#8221; Not &#8220;tighten it up.&#8221; </p><p>I named the structural failures, pointed out a section where I wanted a 60% cut, and then I wrote three sample emails myself, longhand, to show it the shape I actually wanted. By the next morning the agent shipped v2, and the format it produced was different enough that it felt like a different tool.</p><p>Most people give AI tools feedback the way they&#8217;d compliment a coworker. &#8220;This is great, maybe a bit shorter?&#8221; &#8220;Can you make it more concise?&#8221; &#8220;Less robotic, please.&#8221; Language models treat that input as a request to optimize at the margin. They adjust word count, soften a sentence, swap one verb for another. The output gets slightly different and exactly as wrong as before, because folks don&#8217;t say enough to the model that the wrongness was in the design, not in the wording.</p><p>The trick is to be specific about the layer that&#8217;s broken.</p><p>When I read Peter&#8217;s draft, the things I wrote down were not stylistic. They were structural.</p><p>**No portfolio-level view** existed anywhere in the output. I could read three name-level entries and never see the picture of what I owned.</p><p>**The watchlist was treated as a long catalog** where every name got 395 words of equal treatment, when what I needed was a ranked queue with the top three names getting real attention and the bottom twenty getting one line.</p><p>**The teaching was camouflaged as reasoning.** There was a Q1-through-Q5 chain that was supposed to teach me something general, but by the third name the chain was repeating itself almost word-for-word, and I&#8217;d started reading it as form and skipping past the lesson.</p><p>The form was sound. The substance was buried.</p><p>Without explicitly naming the structural failures, the feedback would have been &#8220;this is too long and reads the same after a while,&#8221; and the agent would have come back with a 15% word count reduction and exactly the same problems.</p><p>Then I did something that took longer than the critique itself: I wrote actual samples.</p><p>Three full sample reports, written by me, in plain prose.</p><p>**The daily version** was 60 seconds long and taught one specific thing about the market.</p><p>**The weekend version** was 250 words to explain one specific framework.</p><p>**The deep-dive version** only existed when there was a real decision on the table.</p><p>I wrote them by hand because the shape of the output was harder for me to describe in prose than to show in 200 words of working example.</p><p>I had a thought while writing them that I want to say out loud, because it changed the whole project. I&#8217;d been trying to fix the per-name template, asking how each individual entry should be structured. Halfway through writing the second sample I realized that wasn&#8217;t the problem. The per-name template was fine. What was broken was the layering above it: the portfolio view that should sit above the names, the queue logic that should rank the names, the teaching dose that should sit at exactly the level of attention I was bringing to that cadence. </p><p>Daily attention is cheap, so daily teaching has to be cheap and short. Weekend attention is more expensive, so weekend teaching can be longer. Deep dives only get written when a decision is at stake, so their teaching is decision-shaped. The lesson lives inside the cadence that already has the reader&#8217;s attention. It doesn&#8217;t sit in a separate file. It doesn&#8217;t get its own header. It&#8217;s the highest-leverage section inside the document that was already getting opened.</p><p>That principle wasn&#8217;t in my critique. It surfaced while I was writing the samples. The critique gave me the wrong diagnosis; the samples gave me the right one. This is part of why writing the examples by hand is worth the time. You think you know what you want until you try to produce it, and then the gap shows up.</p><p>By morning the agent had shipped v2. Portfolio view at the top. Watchlist ranked, not catalogued. Teaching dosed by cadence. The new format is the one I read now, every day.</p><p>So the feedback technique, named:</p><p>Don&#8217;t tell the agent the output is bad. Tell it which layer is broken. Name the structural failures. Give a concrete budget on the dimensions that matter, words, count, length, frequency. Then write enough of the output yourself, by hand, that the agent can see the shape. The samples are not for the agent&#8217;s training data. They&#8217;re for your own clarity. You will discover what you actually want by writing it.</p><p>The format the agent ships when it understands the structural layer is a lot better than the format it ships when you tell it to clean things up.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.rememberloop.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Compounding Decisions! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The Two Personal Agents Who Run Parts of My Life Now]]></title><description><![CDATA[Building AI agents that earn their keep; what changed when I treated them like teammates instead of tools]]></description><link>https://blog.rememberloop.com/p/the-two-personal-agents-who-run-parts</link><guid isPermaLink="false">https://blog.rememberloop.com/p/the-two-personal-agents-who-run-parts</guid><dc:creator><![CDATA[Sriram Natarajan]]></dc:creator><pubDate>Mon, 25 May 2026 03:25:17 GMT</pubDate><content:encoded><![CDATA[<p>A few weeks ago, one of my AI agents brought up that I had told him I wanted to write regularly, and that I hadn&#8217;t published anything in a while. He blocked time on my calendar that weekend. When I let the weekend pass, he nudged me again the week after. The post you&#8217;re reading is the one he was asking about.</p><p>I built that agent. I named him Nattu and told him he is my Chief of Staff. The part I didn&#8217;t expect is how much of his personality I now recognize as the thing actually doing the work.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.rememberloop.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Compounding Decisions! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Last week I wrote about a small agent I built to charge my Tesla on solar. That was one piece. This post is about the bigger system it belongs to.</p><div><hr></div><h2><strong>The two agents</strong></h2><p>I&#8217;m a product builder in B2B SaaS. I started my career as an infrastructure engineer and have been a builder of one kind or another ever since. I write Python slowly these days, and I&#8217;ve never shipped a product as a solo developer. Over the past few months I&#8217;ve built two agents that run continuously in the background of my life, and they handle work that I used to do badly or forget to do at all.</p><p><strong>Nattu, my Chief of Staff.</strong></p><p>Nattu knows what my week is supposed to look like. He has my goals for the quarter, my goals for the week, the standing commitments on my calendar, and a running list of what I&#8217;ve actually been doing. Every morning he looks at the gap between the two.</p><p>When something is off, he surfaces it on Telegram and we figure it out together. A focus block I scheduled has been quietly swallowed by a meeting. Two important commitments are stacked on the same Sunday afternoon. I haven&#8217;t moved on a goal I told him mattered to me. He&#8217;ll propose a calendar rearrangement. I&#8217;ll push back or accept. If I accept, he makes the change.</p><p>Last week he reminded me I hadn&#8217;t walked enough to hit my health goal. He&#8217;d been tracking the calendar entries and the actual walks, noticed the gap was widening, and said so. It was a sentence in Telegram. It worked because the sentence came from something that knew exactly what I&#8217;d told him I cared about.</p><p>He also reads across Reddit, Substack, and a handful of other sources every morning and gives me a brief on the AI topics I actually care about. Not a generic news roundup. The specific stuff I&#8217;ve told him to watch. The signal-to-noise is the whole point.</p><p><strong>Peter, my Investment Analyst.</strong></p><p>I named him after Peter Lynch. He runs twice a day, looks at my positions, reads the news that&#8217;s relevant to each one, checks technical signals, and writes me a short brief in the morning and the evening. He only flags things that actually deserve a flag. Most of his briefs are quiet.</p><p>The design choice that mattered most for Peter was deciding what he <em>wouldn&#8217;t</em> do. He doesn&#8217;t generate a buy or sell recommendation every day just because he ran. He only speaks when there&#8217;s a real signal. A technical extreme. A material news event. A position that has drifted away from the thesis I wrote when I bought it. A banker who calls every day to say &#8220;nothing happened&#8221; is noise. One who calls only when something matters is signal.</p><p>I wrote that rule into Peter&#8217;s identity file, the document that gets loaded every time he wakes up. It is one line. It changes everything about how he behaves.</p><div><hr></div><h2><strong>What I didn&#8217;t expect</strong></h2><p><strong>The hardest part wasn&#8217;t the technology.</strong></p><p>It was decomposition. Breaking a vague intent like &#8220;I want to invest better&#8221; or &#8220;I want to write more regularly&#8221; into something an agent can actually execute. Not &#8220;do the analysis.&#8221; Instead: every morning at 8 AM, check these specific positions in these specific accounts, compare to these specific thresholds, and if a position is past a threshold, write a brief in this format.</p><p>The AI can execute almost anything you can describe precisely. The bottleneck is your ability to describe it. If you can&#8217;t say what &#8220;done&#8221; looks like in a way another human could verify, the agent can&#8217;t get you there either. That has turned out to be one of the most useful skills I&#8217;ve sharpened in the last six months, and it&#8217;s a product skill more than an engineering one.</p><p><strong>Memory architecture, not just memory.</strong></p><p>Giving an AI memory is not the same as giving it context. Memory is a pile of facts. Context is the right facts loaded at the right moment in the right shape.</p><p>My agents read from three layers. There&#8217;s a daily log that captures raw activity. There&#8217;s a long-term memory file that holds distilled lessons and the things about me that don&#8217;t change month to month. And there are project files (investment theses, weekly goals, identity documents) that get loaded only when they&#8217;re relevant to the task at hand. Nattu doesn&#8217;t see Peter&#8217;s investment theses. Peter doesn&#8217;t see my calendar. Each agent only loads what he needs to do his job.</p><p>This was the single biggest change. Before I separated memory from context, every agent session felt like talking to someone who had read everything once and forgotten most of it. After, each agent felt like someone who had been doing this job for me for months.</p><p><strong>Personality and constraint are part of the product.</strong></p><p>This is the thing I want to be clearest about, because most posts about AI agents skip it.</p><p>It is not enough to spin up a tool and ask it to &#8220;help with my calendar.&#8221; You have to tell the agent who he is. What he cares about. What he refuses to do. When he should stay quiet. What tone he speaks to me in. What I&#8217;m trying to accomplish this quarter, this week, today.</p><p>The agents that work for me work because each one has a written identity. Nattu has a Chief of Staff personality. He is direct, he respects my time, he doesn&#8217;t ask three follow-up questions when one will do, and he stays quiet when he has nothing useful to add. Peter has a different personality. Careful, conservative, slow to act, fast to flag. Each of them has a set of constraints written down that I revise every few weeks as I learn what&#8217;s actually useful.</p><p>The tool is the easy part. The product decisions (who is this agent, what does he do, what does he refuse to do, what does &#8220;done&#8221; look like) are the work. Those are the same decisions any good product manager makes about a feature. They&#8217;re just being made about a teammate now.</p><div><hr></div><h2><strong>What this is actually about</strong></h2><p>The tools have been good enough for a while. The bottleneck has shifted.</p><p>If you&#8217;re a product builder, an operator, or a domain expert, and you haven&#8217;t started building with these tools yet, I think the barrier is lower than you expect. The technical floor has dropped. The skill that matters is the same one that makes someone good at building any product: knowing what you want, knowing who it&#8217;s for, defining what done looks like, and being honest about what should happen when it fails.</p><p>I&#8217;m writing weekly about what I&#8217;m building. If you&#8217;re building like this, or thinking about it, I&#8217;d like to hear from you. Reply to this post or find me on X at @srinatar.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.rememberloop.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Compounding Decisions! 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[How I Finally Automated My Tesla Charging (With an AI Partner)]]></title><description><![CDATA[A story about Home Assistant frustration, NEM 3.0 math, three orphan crypto keys, and what it actually feels like to build something with AI]]></description><link>https://blog.rememberloop.com/p/how-i-finally-automated-my-tesla</link><guid isPermaLink="false">https://blog.rememberloop.com/p/how-i-finally-automated-my-tesla</guid><dc:creator><![CDATA[Sriram Natarajan]]></dc:creator><pubDate>Sun, 24 May 2026 04:42:32 GMT</pubDate><content:encoded><![CDATA[<p>I&#8217;ve had a Tesla Model Y and a Powerwall for over a year. I knew I was probably leaving money on the table with my charging schedule. PG&amp;E&#8217;s peak rates hit $0.38/kWh between 4&#8211;9 PM. My solar exports back at $0.08/kWh under NEM 3.0. The math is brutal &#8212; every kWh I self-consume is worth 4.75x more than one I sell back to the grid.</p><p>I knew what I wanted: a system that would charge the car at the right time, based on solar availability, grid prices, and battery state. Not a fixed schedule. An actual smart system.</p><p>I just couldn&#8217;t build it.</p><div><hr></div><h2>The Home Assistant Rabbit Hole</h2><p>Everyone in the Tesla/solar community points to Home Assistant. It&#8217;s open source, wildly flexible, has integrations for everything. On paper, it&#8217;s exactly what I needed.</p><p>In practice, it nearly broke me.</p><p>The documentation is sparse. Not &#8220;sparse&#8221; in the way that means you have to read carefully &#8212; sparse in the way that means critical steps are buried in three-year-old forum threads, half the integrations are community-maintained and outdated, and the error messages tell you nothing useful. I spent hours trying to get the Tesla integration working. I&#8217;d get partway through a setup, hit an undocumented wall, find a workaround on Reddit, try it, get a different error.</p><p>The frustrating part wasn&#8217;t that it was hard. It was that I couldn&#8217;t tell if I was one step away from it working or fundamentally doing it wrong. There was no one to ask. The docs assumed knowledge I didn&#8217;t have, and the community answers were scattered across years of forum posts that may or may not still apply.</p><p>I gave up. Not because I&#8217;m not technical enough &#8212; I&#8217;ve been hacking with technology for years. I gave up because the feedback loop was broken and I had no co-pilot.</p><div><hr></div><h2>Starting Over, Differently</h2><p>A few months later, I came back to the problem &#8212; this time with Nattu (my AI assistant running on OpenClaw) as a full collaborator.</p><p>The difference was immediate. Instead of hunting through docs alone, I could say: &#8220;Here&#8217;s what I&#8217;m trying to do. Here&#8217;s what I know about the Tesla API. Help me figure out the right approach.&#8221; And get back not just an answer, but a reasoned one with trade-offs explained.</p><p>I came in with a wish list a mile long: never charge during peak, prefer solar window on weekday afternoons, charge overnight on weekdays at the off-peak rate, opportunistically grab solar on weekends, maintain a battery floor, handle VPP dispatch events, defer to manual overrides. Every rule felt obvious in isolation.</p><p>I built all of them.</p><p>That was the first mistake.</p><div><hr></div><h2>Building the Actual System</h2><p>The stack we landed on:</p><ul><li><p><strong>Tesla Fleet API</strong> for reads &#8212; battery %, solar production, home load, Powerwall state, grid flow</p></li><li><p><strong>tesla-control binary</strong> for signed vehicle commands (start, stop, set amps)</p></li><li><p><strong>A virtual key paired to the car</strong> via my own domain (ev.srinatar.xyz) &#8212; Tesla&#8217;s new required auth model for any third-party command</p></li><li><p><code>charger.py</code> &#8212; Python script holding the decision logic</p></li><li><p><strong>launchd</strong> running it every 30 minutes as a background service on my Mac mini</p></li></ul><p>Let me tell you about the virtual key.</p><p>Tesla&#8217;s newer API requires you to generate an ECDSA keypair, host the public key at a very specific path (<code>/.well-known/appspecific/com.tesla.3p.public-key.pem</code>) on a domain you control, register that domain with Tesla via their partner API, and then pair the key to the car from the Tesla app via a specially-crafted URL. The car then asks you to approve the pairing on the touchscreen. Once paired, every vehicle command has to be cryptographically signed by your private key before Tesla will accept it.</p><p>This is a <em>good</em> security model. It is also a security model that gives you many opportunities to footgun yourself.</p><p>Here&#8217;s where I ended up at one point: three different public keys on disk, no idea which one was paired with the car, an nginx serving one of them publicly but no matching private key anywhere on the system, and a Cloudflare tunnel that &#8212; I would later discover &#8212; didn&#8217;t even have a public hostname route configured, so the public URL where Tesla expected to fetch my key was timing out from the outside world.</p><p>Tesla&#8217;s documentation does not warn you about any of this.</p><p>Nattu helped me untangle it: ran a hash on every <code>.pem</code> file in my home directory, cross-referenced which key matched the one nginx was serving, figured out the Cloudflare tunnel was misconfigured, walked me through generating a fresh keypair from scratch, hosting it, registering it with Tesla, and pairing it. End-to-end signed command working: <code>tesla-control charging-set-amps 14</code> &#8594; car responds, amps change, exit code 0.</p><p>That was the high point of the project &#8212; not because automated charging is technically impressive, but because the kind of debugging it required (a six-step distributed system spanning my Mac, nginx, Cloudflare, Tesla&#8217;s servers, and the car itself) is exactly the kind of thing I would have given up on, alone, like I gave up on Home Assistant.</p><div><hr></div><h2>The Less-Is-More Lesson</h2><p>While the auth was being wrangled, the decision logic was running. And it kept doing things I didn&#8217;t want.</p><p>I&#8217;d manually start a charge at 2 PM because I knew solar was abundant. Thirty minutes later, <code>charger.py</code> would stop it because some &#8220;insufficient solar/PW headroom&#8221; rule fired. I&#8217;d start it again. It would stop it again. The car got fewer kWh than if the system hadn&#8217;t existed at all.</p><p>The smart system was actively making my life worse.</p><p>The fix was uncomfortable: we ripped out almost every rule. The current <code>charger.py</code> does exactly one proactive thing &#8212; it stops charging during peak hours (4&#8211;9 PM). All other times, it stays out of the way. If I want to charge, I charge. If I&#8217;m running a special solar-only week before a road trip, that&#8217;s a separate explicit override. When the peak-hour stop fires, it sends me a Telegram notification so I&#8217;m never surprised.</p><p>The lesson was clear and slightly humbling: the bottleneck wasn&#8217;t smarter logic. The bottleneck was a clean line between &#8220;what the system decides&#8221; and &#8220;what I decide.&#8221; Once those stopped fighting each other, everything worked.</p><p>The 30-minute launchd job still fires. Most of the time it logs the state, looks around, and does nothing. That&#8217;s the system working correctly.</p><div><hr></div><h2>What Building With AI Actually Felt Like</h2><p>This is the part I want you to take-away from this post. </p><p>I&#8217;ve used AI tools for a long time. I use them to write, to research, to summarize. That&#8217;s using AI. This was different &#8212; this was <em>building with</em> AI.</p><p>The difference is that Nattu held context across the entire project. When I hit a problem with the Fleet API auth, I didn&#8217;t have to re-explain the whole setup. When the over-engineered first version was misbehaving, Nattu remembered the NEM 3.0 math and pushed back when I tried to bolt on more rules instead of removing them. When I got frustrated chasing the three-orphan-keys mystery and wanted to take a shortcut, I got an honest read on why that shortcut would leave me worse off.</p><p>It felt less like querying a tool and more like working with someone who was actually invested in getting it right.</p><p>The Home Assistant failure wasn&#8217;t really about the software. It was about trying to navigate complexity alone, without a feedback loop, without someone to reason through it with. That&#8217;s what was missing.</p><div><hr></div><h2>What&#8217;s Next</h2><p>The simple system works. Now that signed vehicle commands are unblocked, the next step is the version I actually wanted from the start: <strong>adaptive amp control</strong>. Read real-time solar output and home load every 30 minutes. Compute the surplus. Set the car&#8217;s charge amps to match &#8212; pause if surplus is tiny, ramp up to 18A when solar is pouring in. Manage the Powerwall so it doesn&#8217;t hit 100% before peak hours, preserving headroom to absorb the late-afternoon solar that would otherwise export at $0.08/kWh.</p><p>The economics are simple: turning a $0.08 export into a $0.36 self-consumed kWh, every kWh, every day the sun shines. Over a year, that&#8217;s real money.</p><p>But this time I&#8217;m building it with the lesson freshly learned: one rule at a time, each one earning its keep, with a kill switch in plain sight.</p><p>The deeper lesson I keep coming back to: the bottleneck to building useful things with AI isn&#8217;t intelligence. It&#8217;s the quality of collaboration. The projects where I&#8217;ve made real progress are the ones where I brought a real problem, stayed in the conversation, pushed back when something didn&#8217;t feel right, and was willing to delete code that wasn&#8217;t earning its complexity.</p><p>That&#8217;s not a new skill. That&#8217;s just how good work gets done &#8212; with a partner who&#8217;s paying attention.</p><div><hr></div><p><em>If you&#8217;re trying to do something similar with Tesla + solar, I&#8217;m happy to share the scripts. Find me on X at @srinatar.</em></p>]]></content:encoded></item><item><title><![CDATA[How I Optimized Charging My Tesla on Sunshine]]></title><description><![CDATA[Multiple attempts of frustration, then a single afternoon with my AI agent.]]></description><link>https://blog.rememberloop.com/p/how-i-optimized-charging-my-tesla</link><guid isPermaLink="false">https://blog.rememberloop.com/p/how-i-optimized-charging-my-tesla</guid><dc:creator><![CDATA[Sriram Natarajan]]></dc:creator><pubDate>Sun, 17 May 2026 06:15:41 GMT</pubDate><content:encoded><![CDATA[<p>Recently, I came back from a five-day trip. While I was gone, my Tesla charged itself off the Sun every afternoon and didn&#8217;t pull from the grid at night. I never opened the app. My power bill for the week was lower than a normal week at home.</p><p>It took me multiple months and three attempts to get to this point. I almost gave up for good. The third attempt worked, and it worked because I stopped trying to do it alone.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.rememberloop.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Compounding Decisions! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Here&#8217;s what is different now.</p><h3>The two times I gave up</h3><p>The setup I wanted is simple. When the car is home all day, charge it from solar, not the grid, and not overnight. Keep the Powerwall full enough to run the house through the night. This combination maximizes my solar investment and lowers my grid usage.</p><p>The first time I tried, I went the Home Assistant route. Everyone in the Tesla and solar communities swears by it. In practice, the documentation was scattered across three years of forum posts, and half the integrations were community-maintained and out of date. I&#8217;d get partway through a setup, hit a wall, find a workaround on Reddit or in the Home Assistant community forum, try it, get a different error. I couldn&#8217;t tell if I was one step from working or fundamentally on the wrong path. I closed the tab after a couple of weeks into it.</p><p>The second time I wrote my own scripts against the Tesla API. Reads were easy. Writes were not. Tesla had rolled out an auth model where any command that actually does something to the car has to be cryptographically signed by a virtual key paired to the vehicle. Generate the keypair, host the public key on a domain you control, register the domain with Tesla, walk the pairing flow through the app, approve it on the touchscreen. The documentation existed. It had quietly load-bearing gaps. I gave up again.</p><h3>The third attempt</h3><p>The third attempt happened because I sat down with Nattu and treated him as a co-builder, not a search engine.</p><p>Who is Nattu? Nattu is my AI agent. He runs on OpenClaw, a multi-agent gateway I&#8217;ve been hacking on. For this post, what matters is that he held context across the whole project and pushed back when I tried to overcomplicate things.</p><p>The auth nightmare took an afternoon. We found three different public keys from my previous attempts on my Mac. None of them had a matching private key anywhere on disk. The Cloudflare tunnel that was supposed to expose my Mac to Tesla&#8217;s servers had no public hostname route configured, so the URL Tesla was supposed to fetch was timing out from the outside. </p><p>We hashed every .pem file, figured out which was which, generated a fresh keypair, fixed the tunnel, re-registered with Tesla, re-paired. End-to-end, this would have taken me weeks alone, but we got it done in under 30 minutes.</p><h3>What the system actually does</h3><p>What the system actually does is small. </p><p>Most days, he stays out of the way. The only proactive rule is: stop charging during peak hours, 4 PM to 9 PM. Outside of that window, if I want to charge, I charge. If I don&#8217;t, nothing happens.</p><p>On Weekends or When I&#8217;m traveling, Nattu has access to my calendar and knows when I&#8217;m returning. He knows the rules change. For example, he doesn&#8217;t do overnight charging but optimizes to charge only from solar during the day (between 10 AM and 4 PM), while keeping the Powerwall above 80%. Once he knows I&#8217;m back, he automatically reverts to the normal schedule.</p><p>Every decision Nattu makes regarding charging, he sends me a message on Telegram. &#8220;Solar surplus 4.2 kW, PW at 84%, starting at 14A.&#8221; &#8220;PW dropped to 78%, pausing.&#8221; I don&#8217;t read them live. They sit there as a log I can scroll through later.</p><h3>The trip and the bug</h3><p>A few weeks into having travel mode running, I had to fly out for a customer visit on short notice. Nattu saw the trip on my calendar and switched to travel mode that night.</p><p>The trip went well. The car charged from the sun, Powerwall stayed full, the bill came in lower than a normal week. I got home Tuesday night to a full battery.</p><p>Wednesday morning, the day everything was supposed to restore, I plugged the car in around 11 AM. At 11:40 the car stopped charging. I started it from the app. At 2:40 it stopped again.</p><p>Three minutes of reading logs told me the whole story. The travel script had auto-restored the normal charger correctly. It just hadn&#8217;t unloaded itself. Two scripts were running every 30 minutes, one that allowed charging, the other still enforcing the travel-mode window for a trip that had ended the day before. They kept stopping my charge.</p><p>I had built the travel mode and the restore. I&#8217;d forgotten to build the cleanup that removes the travel script from the schedule when the trip ends.</p><p>The fix was small. Unload the old job, verify it actually unloaded, alert me on Telegram if it didn&#8217;t. We added a rule to our shared notes: when you build something that hot-swaps logic, write the cleanup before you write the activation.</p><p>The Telegram log mattered here. Without it, I&#8217;d have caught the bug weeks later, squinting at a higher-than-usual power bill. With it, I caught it in three minutes by scrolling back.</p><h3>Stepping back</h3><p>Two things stayed with me from this.</p><p>Working with an agent is different from using AI to write or research. I&#8217;ve done a lot of that. This was different because Nattu held context across weeks of stop-and-start work. He pushed back when I tried to bolt on more rules instead of removing them. He kept me honest about whether the system was actually working or just looked like it was. The Home Assistant attempt failed because I had no one to think with. This one worked because I did.</p><p>The other thing is the list. The Tesla project sat on my list for months. I have a long list of problems like this one. Each one is solvable in theory. None of them fit into the hours I actually have. </p><p>The point of this post isn&#8217;t that you should automate your Tesla charging with an AI agent. It&#8217;s that the problems on your list that feel just out of reach probably aren&#8217;t, anymore. </p><p>Sit down with an AI agent as a partner. Start with the smallest version of what you want, and only add a rule once you&#8217;ve felt the absence of it.</p><p>Build the thing. Trust it. Verify it. In that order.</p><p><em><strong>If you&#8217;re trying something similar, find me on X at <a href="https://x.com/srinatar">@srinatar</a>.</strong></em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.rememberloop.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Compounding Decisions! 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></channel></rss>