<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[The AI Thinker]]></title><description><![CDATA[Go from product manager to AI-native builder. Get the in-depth playbooks and real-world projects you need to build better products with AI.]]></description><link>https://www.theaithinker.com</link><image><url>https://substackcdn.com/image/fetch/$s_!s5nF!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37afd3e1-3442-4517-94cb-068668baf9ef_1024x1024.png</url><title>The AI Thinker</title><link>https://www.theaithinker.com</link></image><generator>Substack</generator><lastBuildDate>Wed, 05 Aug 2026 21:15:21 GMT</lastBuildDate><atom:link href="https://www.theaithinker.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Adam Faik]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[adamfaik@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[adamfaik@substack.com]]></itunes:email><itunes:name><![CDATA[Adam Faik]]></itunes:name></itunes:owner><itunes:author><![CDATA[Adam Faik]]></itunes:author><googleplay:owner><![CDATA[adamfaik@substack.com]]></googleplay:owner><googleplay:email><![CDATA[adamfaik@substack.com]]></googleplay:email><googleplay:author><![CDATA[Adam Faik]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[How to get better every week with AI]]></title><description><![CDATA[Paste a real transcript into any LLM. Ask it to review you, not the user. Debrief your hardest meetings. Automate the Friday retro with a skill.]]></description><link>https://www.theaithinker.com/p/how-to-get-better-every-week-with</link><guid isPermaLink="false">https://www.theaithinker.com/p/how-to-get-better-every-week-with</guid><dc:creator><![CDATA[Adam Faik]]></dc:creator><pubDate>Mon, 03 Aug 2026 11:03:41 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/40da287e-177f-44e2-8bf6-73d761991673_1024x731.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A few years ago, at a previous company, I sat through a leadership training I&#8217;ve mostly forgotten. One idea survived. The most senior product leader in the room told us to end every week the same way: <strong>write yourself three or four honest lines about how the week went, and what you&#8217;d do differently on Monday.</strong> His pitch was simple math, borrowed from the idea James Clear made famous in <a href="https://jamesclear.com/atomic-habits">Atomic Habits</a>: <strong>get 1% better every week, and compounding does the rest.</strong> I&#8217;ve written that little Friday retro almost every week since, and it works.</p><p>For years, though, the habit had a flaw I couldn&#8217;t see. <strong>The reviewer was me.</strong> My memory of the week is a friendly narrator: it remembers the demo that landed, and it quietly forgets the question I dodged in a tense meeting. Every Friday I graded my own homework, and every Friday I passed. <strong>A retro written from memory is a review of the week you&#8217;d like to have had.</strong> Better than nothing, but it plateaus fast.</p><p>Then one afternoon I pasted the verbatim transcript of a user interview I&#8217;d just run into Claude. Not to summarize it (I do that all the time). <strong>I asked it to review my interviewing:</strong> how I phrased questions, what I missed, how much I talked. It found three leading questions in my first ten minutes and quoted them back word for word. <strong>Nobody had reviewed my work at that level of detail in years.</strong></p><p>Everyone I know uses AI to do the work: draft the spec, summarize the research, write the update. <strong>Almost nobody uses it to review how they work.</strong> The first use saves you hours this week. <strong>The second one compounds, because it makes every next interview, meeting, and decision slightly better than the last.</strong> That&#8217;s the 1% from the training, and AI finally makes it cheap to collect.</p><p>The whole practice fits in one picture.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kqDk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bfedf25-5d41-449f-b523-44eac004dc01_2752x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kqDk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bfedf25-5d41-449f-b523-44eac004dc01_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!kqDk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bfedf25-5d41-449f-b523-44eac004dc01_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!kqDk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bfedf25-5d41-449f-b523-44eac004dc01_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!kqDk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bfedf25-5d41-449f-b523-44eac004dc01_2752x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kqDk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bfedf25-5d41-449f-b523-44eac004dc01_2752x1536.png" width="1456" height="813" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0bfedf25-5d41-449f-b523-44eac004dc01_2752x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:813,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4097874,&quot;alt&quot;:&quot;Hand-drawn infographic with four stops: the feedback gap nobody fills for senior people (and why the feedback that does arrive is distorted), AI feedback loops on your own work (three worked examples plus a catalog of more), five mechanics that keep the critique honest, and two skills that bring the practice to a team.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/206900621?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bfedf25-5d41-449f-b523-44eac004dc01_2752x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Hand-drawn infographic with four stops: the feedback gap nobody fills for senior people (and why the feedback that does arrive is distorted), AI feedback loops on your own work (three worked examples plus a catalog of more), five mechanics that keep the critique honest, and two skills that bring the practice to a team." title="Hand-drawn infographic with four stops: the feedback gap nobody fills for senior people (and why the feedback that does arrive is distorted), AI feedback loops on your own work (three worked examples plus a catalog of more), five mechanics that keep the critique honest, and two skills that bring the practice to a team." srcset="https://substackcdn.com/image/fetch/$s_!kqDk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bfedf25-5d41-449f-b523-44eac004dc01_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!kqDk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bfedf25-5d41-449f-b523-44eac004dc01_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!kqDk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bfedf25-5d41-449f-b523-44eac004dc01_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!kqDk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bfedf25-5d41-449f-b523-44eac004dc01_2752x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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><ul><li><p><strong>The gap.</strong> I&#8217;ll show you why nobody reviews your actual craft anymore, and why the feedback you do get says more about the giver than about you.</p></li><li><p><strong>The loops.</strong> The three I run (interviews, meetings, the Friday retro) with the exact prompts I use, plus six more worth trying, from your forecasts to your 360 packet.</p></li><li><p><strong>The honesty problem.</strong> Here&#8217;s how to stop the model from flattering you, because by default it will.</p></li><li><p><strong>The team angle.</strong> You&#8217;ll build a skill that asks your PMs your own 1:1 questions before they ever reach you.</p></li></ul><p>By Friday you can have run your first loop on a real artifact from your own week. <strong>You get the kind of specific, evidence-quoting feedback nobody has given you since you got senior, and you can get it every single week.</strong> The first loop needs nothing new: any LLM chat works (Claude, ChatGPT, Gemini), and the raw material is the transcripts your meeting tools already produce (Zoom AI Companion, Gemini in Google Meet, Granola, or a voice memo on your phone). And if you lead PMs, you&#8217;ll leave with two skills worth an afternoon each: one that reviews your week on a schedule, one that preps your team for 1:1s.</p><p><strong>Your reviewer is ready.</strong> Let&#8217;s put it to work.</p><div><hr></div><h2>Nobody reviews your work anymore</h2><p>Think about the last time someone watched you work and told you something true about it. Not your outcomes: your craft. The way you ran the interview, the way you handled pushback in the room. <strong>If you lead product teams, the honest answer is probably &#8220;years ago.&#8221;</strong> Your manager sees headlines and results, not how you got them. Your team won&#8217;t critique you upward. <strong>The more senior you get, the less anyone reviews how you actually work.</strong> What&#8217;s left is the official cycle: twice a year, compressed into themes like &#8220;communicate more.&#8221;</p><p>And hold even that loosely. In <a href="https://hbr.org/2019/03/the-feedback-fallacy">The Feedback Fallacy</a> (Harvard Business Review, 2019), Marcus Buckingham and Ashley Goodall assembled the research on how well humans rate other humans. The headline finding has a name, the idiosyncratic rater effect: <strong>more than half of any rating of you reflects the rater, not you, and no amount of training fixes it.</strong> In their words, <strong>feedback is &#8220;more distortion than truth.&#8221;</strong> Your manager&#8217;s read on your &#8220;communication&#8221; says as much about their definition of communication as about yours, and that stays true for the best managers you&#8217;ll ever have. <strong>The little feedback that reaches you arrives filtered through someone else&#8217;s lens, and the research says the filter is most of the signal.</strong> Not a reason to dismiss your manager. A reason not to make two filtered data points a year your only mirror.</p><p>Performance-heavy fields treat this as a solved problem. Athletes and musicians review tape after every game and every recital. Atul Gawande wrote the canonical essay on this, <a href="https://www.newyorker.com/magazine/2011/10/03/personal-best">Personal Best</a> (2011): a surgeon at the top of his field plateaued after eight years, then started improving again when he put a reviewer back in his operating room. The research on expertise agrees. Anders Ericsson&#8217;s work on deliberate practice (<a href="https://www.goodreads.com/en/book/show/26312997-peak">Peak</a>, 2016) found that experience without feedback doesn&#8217;t accumulate into skill; it plateaus. <strong>Twenty years of interviews don&#8217;t make you better at interviewing if nobody ever shows you what you did.</strong></p><p>What changed isn&#8217;t the theory. It&#8217;s the tape. <strong>Your meeting tools record by default now:</strong> Zoom AI Companion, Gemini in Google Meet, Granola quietly taking notes on your laptop. Verbatim records of you working have been piling up in your drive for a couple of years. We skim the summaries for action items and move on. <strong>The evidence of how you work is exhaust of a normal week, and almost nobody reads it in the review direction.</strong></p><p>One precision before you touch that pile. The AI notes your tools generate are summaries, and a summary is already the friendly narrator&#8217;s cut, machine-made this time. <strong>The loop needs the verbatim transcript.</strong> In Google Meet, that&#8217;s the separate &#8220;Transcripts&#8221; option, not the Gemini notes doc. In Zoom, it&#8217;s the transcript file attached to the recording. Granola keeps the full conversation one click behind its polished notes. <strong>Feed the model what was actually said, not what the notes decided to remember.</strong></p><p>And the reviewer for all that unread tape? You already have it. You&#8217;ve just been pointing it the other way.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sN1m!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73e3d9bd-7372-4b25-8835-ec08568e7d63_2752x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sN1m!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73e3d9bd-7372-4b25-8835-ec08568e7d63_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!sN1m!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73e3d9bd-7372-4b25-8835-ec08568e7d63_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!sN1m!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73e3d9bd-7372-4b25-8835-ec08568e7d63_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!sN1m!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73e3d9bd-7372-4b25-8835-ec08568e7d63_2752x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sN1m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73e3d9bd-7372-4b25-8835-ec08568e7d63_2752x1536.png" width="1456" height="813" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/73e3d9bd-7372-4b25-8835-ec08568e7d63_2752x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:813,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4551435,&quot;alt&quot;:&quot;Two-panel hand-drawn comparison. Left: a person hands the AI a task and receives a draft, arrow pointing outward (production engine). Right: the same person hands the AI a transcript of their own meeting and receives a critique, arrow pointing back at them (feedback engine).&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/206900621?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73e3d9bd-7372-4b25-8835-ec08568e7d63_2752x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Two-panel hand-drawn comparison. Left: a person hands the AI a task and receives a draft, arrow pointing outward (production engine). Right: the same person hands the AI a transcript of their own meeting and receives a critique, arrow pointing back at them (feedback engine)." title="Two-panel hand-drawn comparison. Left: a person hands the AI a task and receives a draft, arrow pointing outward (production engine). Right: the same person hands the AI a transcript of their own meeting and receives a critique, arrow pointing back at them (feedback engine)." srcset="https://substackcdn.com/image/fetch/$s_!sN1m!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73e3d9bd-7372-4b25-8835-ec08568e7d63_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!sN1m!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73e3d9bd-7372-4b25-8835-ec08568e7d63_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!sN1m!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73e3d9bd-7372-4b25-8835-ec08568e7d63_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!sN1m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73e3d9bd-7372-4b25-8835-ec08568e7d63_2752x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>You already run AI as a production engine. It drafts the spec, summarizes the research, writes the launch note. Point the same model at a transcript of how you worked, and it becomes a feedback engine. Same tool, opposite direction. In that direction <strong>it has qualities no human reviewer can offer:</strong> the patience to re-read your entire week verbatim, no stake in your ego, and availability at 6 pm on a Friday. <strong>The only reviewer with time to watch all your tape has been sitting in your browser tab all along.</strong></p><p>The direction flip is the whole method. Here&#8217;s what it looks like on a real week.</p><div><hr></div><h2>Start with my three loops</h2><p>I run three loops on my own weeks, and they share one shape. Take a verbatim artifact your week already produced. Ask the model to review how you worked, not what was decided. Extract one change for next time. Write that change down. <strong>The artifact does the honesty, the model does the patience, and the written line makes it stick.</strong> Here&#8217;s the shape before the details.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!j5b8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadeea69c-6a13-4746-9128-b7cc944a2a16_2752x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!j5b8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadeea69c-6a13-4746-9128-b7cc944a2a16_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!j5b8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadeea69c-6a13-4746-9128-b7cc944a2a16_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!j5b8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadeea69c-6a13-4746-9128-b7cc944a2a16_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!j5b8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadeea69c-6a13-4746-9128-b7cc944a2a16_2752x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!j5b8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadeea69c-6a13-4746-9128-b7cc944a2a16_2752x1536.png" width="1456" height="813" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/adeea69c-6a13-4746-9128-b7cc944a2a16_2752x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:813,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4723445,&quot;alt&quot;:&quot;Hand-drawn circular flow with four stations: a real artifact from the week (a transcript), an AI critique quoting exact lines, one concrete change picked for next time, and a short written Friday retro that feeds the next week.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/206900621?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadeea69c-6a13-4746-9128-b7cc944a2a16_2752x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Hand-drawn circular flow with four stations: a real artifact from the week (a transcript), an AI critique quoting exact lines, one concrete change picked for next time, and a short written Friday retro that feeds the next week." title="Hand-drawn circular flow with four stations: a real artifact from the week (a transcript), an AI critique quoting exact lines, one concrete change picked for next time, and a short written Friday retro that feeds the next week." srcset="https://substackcdn.com/image/fetch/$s_!j5b8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadeea69c-6a13-4746-9128-b7cc944a2a16_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!j5b8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadeea69c-6a13-4746-9128-b7cc944a2a16_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!j5b8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadeea69c-6a13-4746-9128-b7cc944a2a16_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!j5b8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadeea69c-6a13-4746-9128-b7cc944a2a16_2752x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>Three isn&#8217;t a magic number, and my three aren&#8217;t the menu. They&#8217;re worked examples, mapped to where my own weeks leave a record: user interviews, hard meetings, and the week itself. <strong>Treat them as illustrations of the shape, not the full list; your calendar will suggest loops mine can&#8217;t.</strong> A catalog of other places to point the same shape comes right after these three.</p><h3>Loop 1: Review your interviews</h3><p>After a user interview, I copy the full transcript into the LLM and ask it to review the interviewer. Not the user&#8217;s answers, not a summary of insights: me. The phrasing of my questions, the follow-ups I didn&#8217;t ask, how much of the conversation was my own voice. The distinction matters because &#8220;summarize this interview&#8221; is production work, and every PM already does it. <strong>&#8221;Review how I ran this interview&#8221; is feedback work, and it&#8217;s the version almost nobody asks for.</strong></p><p>Here&#8217;s the prompt I use, lightly cleaned up. Yours will look different; the load-bearing parts are the named rubric and the quoted evidence.</p><blockquote><p>Here is the verbatim transcript of a user interview I ran today. Review the interviewer (me), not the user. <strong>Grade me against The Mom Test&#8217;s three rules:</strong> talk about their life, not my idea; ask about specifics in the past, not hypotheticals about the future; talk less, listen more. <strong>For every finding, quote the exact line from the transcript.</strong> List every question I asked, label each one open or closed, then tally the list. End with the one change that would most improve my next interview.</p></blockquote><p>The rubric is <a href="https://www.momtestbook.com/">The Mom Test</a>, Rob Fitzpatrick&#8217;s 2013 book on customer conversations, and spelling its rules out inside the prompt matters. The critique works even if you (or the model) never opened the book, and you learn the rubric by reading your own violations of it. And the leading questions were only the loudest finding. The same session flagged the moment a user mentioned a workaround and I moved on instead of digging. It listed my questions, and over half were closed. <strong>None of that was in my notes, because my notes were about the user.</strong></p><p>The critique is the start, not the verdict. I discuss it, and the discussion is where the learning happens. The rule I follow: seek evidence, don&#8217;t argue. &#8220;Show me the line&#8221; is a safe question. &#8220;Rewrite that question the way I should have asked it&#8221; is a great one. Protesting (&#8221;I don&#8217;t think that was leading&#8221;) is the one move to avoid, because models tend to fold when you push back, and a critique that folds is worthless. <strong>Treat the chat like a film session with a coach, not a negotiation over your grade.</strong></p><p>Interviews are the easiest tape to start with: low stakes, famous rubric, fast wins. The harder tape is the meeting where you had something to lose.</p><h3>Loop 2: Debrief your hard meetings</h3><p>Some meetings matter more than others. The technical review where the architecture pushback derailed your agenda. The leadership meeting where your update ran long and the ask got lost. Your calendar is full of them, and that&#8217;s not the failure it&#8217;s usually made out to be: meetings are where product work happens. <strong>Spending most of your week in meetings isn&#8217;t the problem. Letting them end with nothing actionable is.</strong></p><p>I used to replay the hard ones in my head on the way home, which felt like reflection but was really just rumination. Now I feed the transcript (or my detailed notes, when there&#8217;s no recording) to the LLM and ask for a debrief of my own performance. <strong>How I presented, where I lost the room, how I handled the pushback, what to change next time.</strong> The hours were already spent; the debrief is how they pay something back.</p><p>This move has a precedent you already practice at the team level. Product teams close every sprint with a retrospective: what went well, what didn&#8217;t, what changes next time, run by the team, for the team. Norman Kerth, who wrote the practice&#8217;s handbook (<a href="https://www.goodreads.com/book/show/1523368.Project_Retrospectives">Project Retrospectives</a>, 2001), even gave it a safety rule, the Prime Directive: <strong>whatever we discover, everyone did the best they could with what they knew at the time.</strong> Yet the ritual usually stops at the team boundary, and nobody runs one on their own performance in a single meeting. <strong>A meeting debrief is a one-person retrospective, and AI makes it cheap enough to run after every meeting that matters.</strong> The prompt is shorter than the interview one, because there&#8217;s no famous rubric for meetings. I anchor it on my goal instead.</p><blockquote><p>Here is the transcript of a technical review I ran today. My goal was alignment on shipping the migration in two releases instead of one. <strong>Review my performance, not the decisions:</strong> how I opened, how I responded to pushback, where I talked past someone, where I lost the thread. <strong>Quote the line for every finding.</strong> Then give me the strongest case that this meeting went badly for me. End with what I should do differently in my next meeting with this group.</p></blockquote><p>The debrief pays out twice. Once right after the meeting, when it shows you the exact moment you started answering a different question than the one asked. And once before the next meeting, when you reopen the same chat and prep: same audience next month, help me open differently, here&#8217;s what I&#8217;m walking in with. One honest limit from experience: this loop needs an artifact. <strong>Hallway conversations leave no tape, and a debrief of your own recollection is the friendly narrator reviewing itself.</strong></p><p>Interviews and meetings are single events. The third loop is what strings them into actual improvement.</p><h3>Loop 3: Review the whole week</h3><p>This is the original habit from that training, and it&#8217;s still the anchor of everything above. Every Friday, three or four honest lines: what went well, what didn&#8217;t, what changes on Monday. Five minutes, no template, one running file. The one-change outputs from the interview and meeting loops land here as lines. <strong>Without the written close, the critiques evaporate by Tuesday.</strong></p><p>But run the first two loops for a few weeks and you meet their limit: they only cover the events you picked. A product week is fifteen meetings, and you reviewed two. Nobody has the hours to chat-review a whole week one transcript at a time, and pasting fifteen transcripts into one window isn&#8217;t a workflow, it&#8217;s a punishment. <strong>The weekly review doesn&#8217;t need a better prompt. It needs to become a system.</strong> Same folder of inputs, same rubrics, same output format, every single week: <strong>that&#8217;s not a conversation, that&#8217;s a job.</strong> And a repeated job with fixed rules is exactly what Claude&#8217;s skills are built for: a skill is a folder with an instructions file that teaches Claude a task once, so it can run it every time after.</p><p>Here&#8217;s the shape of the system to build, and it&#8217;s smaller than it sounds.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!N6pY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F811afa6b-9202-4700-95f9-33b44a08b8d4_1376x768.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N6pY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F811afa6b-9202-4700-95f9-33b44a08b8d4_1376x768.jpeg 424w, https://substackcdn.com/image/fetch/$s_!N6pY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F811afa6b-9202-4700-95f9-33b44a08b8d4_1376x768.jpeg 848w, https://substackcdn.com/image/fetch/$s_!N6pY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F811afa6b-9202-4700-95f9-33b44a08b8d4_1376x768.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!N6pY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F811afa6b-9202-4700-95f9-33b44a08b8d4_1376x768.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N6pY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F811afa6b-9202-4700-95f9-33b44a08b8d4_1376x768.jpeg" width="1376" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/811afa6b-9202-4700-95f9-33b44a08b8d4_1376x768.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1376,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:516805,&quot;alt&quot;:&quot;Hand-drawn flow of an automated weekly review system: a folder collecting the week&#8217;s meeting transcripts feeds a skill loaded with review rubrics, which produces a drafted retro with quoted evidence, appended to a running retro file, triggered by a Friday schedule.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/206900621?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F811afa6b-9202-4700-95f9-33b44a08b8d4_1376x768.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Hand-drawn flow of an automated weekly review system: a folder collecting the week&#8217;s meeting transcripts feeds a skill loaded with review rubrics, which produces a drafted retro with quoted evidence, appended to a running retro file, triggered by a Friday schedule." title="Hand-drawn flow of an automated weekly review system: a folder collecting the week&#8217;s meeting transcripts feeds a skill loaded with review rubrics, which produces a drafted retro with quoted evidence, appended to a running retro file, triggered by a Friday schedule." srcset="https://substackcdn.com/image/fetch/$s_!N6pY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F811afa6b-9202-4700-95f9-33b44a08b8d4_1376x768.jpeg 424w, https://substackcdn.com/image/fetch/$s_!N6pY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F811afa6b-9202-4700-95f9-33b44a08b8d4_1376x768.jpeg 848w, https://substackcdn.com/image/fetch/$s_!N6pY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F811afa6b-9202-4700-95f9-33b44a08b8d4_1376x768.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!N6pY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F811afa6b-9202-4700-95f9-33b44a08b8d4_1376x768.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>The skill&#8217;s instructions fit on one page:</strong> read every transcript in this week&#8217;s folder, review my performance in each one against my rubrics (The Mom Test rules for interviews, my stated goal for everything else), quote the line for every finding, then draft my three-or-four-line retro and append it to the running file.</p><p>Collecting the folder is lighter than it sounds. Zoom transcripts download as text files, Google Meet saves them as Docs in a Drive folder, and Granola keeps the full conversations behind its notes. <strong>And scale is where the review gets interesting: a reviewer that reads all fifteen meetings can tell you the same tic showed up in four of them, which no single-meeting debrief will ever surface.</strong> If you&#8217;ve never built a skill, it&#8217;s an afternoon, not a project: I walked through the full method in <a href="https://www.theaithinker.com/p/how-to-build-an-ai-helper-for-your">How to build an AI helper for your team with Cowork</a>, and the same steps apply here with a different instructions page.</p><p>Then remove the last manual step. <strong>Claude Cowork now supports <a href="https://support.claude.com/en/articles/13854387-schedule-recurring-tasks-in-claude-cowork">scheduled tasks</a>:</strong> set the skill to run every Friday afternoon and it executes remotely, even with your laptop closed. You open the draft with your coffee, check the quoted lines, and spend your five minutes editing instead of reconstructing. <strong>The honest writing stays yours; the system makes sure it starts from evidence instead of memory, at the scale of your whole week.</strong></p><p>Now, about that 1% pitch. Clear&#8217;s canonical version is 1% per day, which compounds to 37x in a year. The training I got was humbler: 1% per week, which works out to about 68% better over a year (1.01^52 is 1.68, if you want to check the math). Treat both as the spirit of the practice, not a forecast. Skill isn&#8217;t a number, and nobody can measure 1% of interviewing. The idea&#8217;s lineage runs through British Cycling&#8217;s &#8221;<a href="https://jamesclear.com/marginal-gains">aggregation of marginal gains</a>&#8221;, but the version that changed my weeks came from a trainer with a marker and a flipchart. <strong>Small weekly changes stack, and a written retro is what keeps them from resetting to zero.</strong></p><p>Three loops, one of them running itself. But the shape doesn&#8217;t stop where my calendar does.</p><div><hr></div><h2>More loops to try</h2><p>Once you see the shape (artifact in, critique against a standard, one change out), you start spotting loops everywhere. I went looking for the ones with the strongest cases behind them, and this is the shortlist I&#8217;m working through next. <strong>If a week of your work leaves an artifact, there&#8217;s a loop that can read it.</strong></p><ul><li><p><strong>The decision journal.</strong> When Michael Mauboussin asked Daniel Kahneman what single thing would most improve decision-making, the answer was <a href="https://fs.blog/how-to-improve-the-quality-of-our-decision-making/">a cheap notebook</a>: <strong>write down each big decision and what you expect to happen.</strong> Months later, the LLM grades your calibration against outcomes: &#8220;you were overconfident on every timeline that depended on another team.&#8221;</p></li><li><p><strong>The forecast scorecard.</strong> Philip Tetlock&#8217;s <a href="https://www.goodreads.com/book/show/23995360-superforecasting">Superforecasting</a> is blunt about how forecasters improve: &#8220;Forecast, measure, revise: it is the surest path to seeing better.&#8221; Put numbers on your own calls (&#8221;70% we ship by March&#8221;), then ask the model each quarter where your numbers run hot.</p></li><li><p><strong>The spec-versus-shipped review.</strong> Feed January&#8217;s PRD and June&#8217;s launch numbers into one chat and run a retrospective on the pair: what was supposed to happen, what happened, why, and what changes next time. The gap between those two documents is feedback nobody schedules a meeting for.</p></li><li><p><strong>The rehearsal review.</strong> Toastmasters assigns a dedicated person, the <a href="https://www.toastmasters.org/membership/club-meeting-roles/ah-counter">Ah-Counter</a>, just to count filler words. Record one run-through of your next big presentation, and the model plays that role free, then tells you how many minutes pass before your headline number shows up.</p></li><li><p><strong>The hidden-ask audit.</strong> Paste a week of your sent emails and Slack requests and ask which sentence carries the actual ask. Consultants are trained on <a href="https://www.mckinsey.com/alumni/news-and-events/global-news/alumni-news/barbara-minto-mece-i-invented-it-so-i-get-to-say-how-to-pronounce-it">Barbara Minto&#8217;s Pyramid Principle</a>, answer first and reasoning after; most of us put the answer somewhere in paragraph three.</p></li><li><p><strong>The 360 synthesis.</strong> Paste every review packet you&#8217;ve received and ask what three or more people said independently. Any single rating is mostly rater (that&#8217;s the idiosyncratic rater effect again), but a theme that survives five raters and three years is genuinely yours.</p></li></ul><p>Whichever loops you pick, they all lean on one fragile assumption: that the reviewer tells you the truth. By default, it won&#8217;t. The model is trained to be nice to you.</p><div><hr></div><h2>Make the critique honest</h2><p>&#8220;The LLM just flatters me.&#8221; If that&#8217;s your objection, you&#8217;re right, and it deserves a serious answer. <strong>Sycophancy is a documented, trained-in behavior of assistant models across vendors,</strong> not a paranoid suspicion. <a href="https://arxiv.org/abs/2310.13548">Anthropic researchers showed</a> that state-of-the-art assistants are consistently sycophantic, likely because <strong>human preference data rewards agreement</strong> (Sharma et al., published at ICLR 2024). You&#8217;ve probably felt it yourself: in April 2025, ChatGPT got so flattering that <a href="https://openai.com/index/sycophancy-in-gpt-4o/">OpenAI rolled the model back</a> within days. Ask a naive &#8220;how did I do?&#8221; and you&#8217;ll get praise plus three soft suggestions. <strong>By default, the model is a cheerleader wearing a reviewer&#8217;s badge.</strong></p><p>The fix isn&#8217;t finding a more honest model. It&#8217;s writing prompts that leave no room for flattery. Five mechanics do that work for me.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!myvH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F500a2cbb-26de-45fd-848d-547598e1ccbb_2752x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!myvH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F500a2cbb-26de-45fd-848d-547598e1ccbb_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!myvH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F500a2cbb-26de-45fd-848d-547598e1ccbb_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!myvH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F500a2cbb-26de-45fd-848d-547598e1ccbb_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!myvH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F500a2cbb-26de-45fd-848d-547598e1ccbb_2752x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!myvH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F500a2cbb-26de-45fd-848d-547598e1ccbb_2752x1536.png" width="1456" height="813" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/500a2cbb-26de-45fd-848d-547598e1ccbb_2752x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:813,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4839086,&quot;alt&quot;:&quot;Hand-drawn card with five mechanics for honest AI critique: give it the verbatim transcript, name a rubric, demand a quoted line per finding, make it list before counting, and ask it to argue the case that things went badly.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/206900621?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F500a2cbb-26de-45fd-848d-547598e1ccbb_2752x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Hand-drawn card with five mechanics for honest AI critique: give it the verbatim transcript, name a rubric, demand a quoted line per finding, make it list before counting, and ask it to argue the case that things went badly." title="Hand-drawn card with five mechanics for honest AI critique: give it the verbatim transcript, name a rubric, demand a quoted line per finding, make it list before counting, and ask it to argue the case that things went badly." srcset="https://substackcdn.com/image/fetch/$s_!myvH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F500a2cbb-26de-45fd-848d-547598e1ccbb_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!myvH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F500a2cbb-26de-45fd-848d-547598e1ccbb_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!myvH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F500a2cbb-26de-45fd-848d-547598e1ccbb_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!myvH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F500a2cbb-26de-45fd-848d-547598e1ccbb_2752x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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><ol><li><p><strong>Give it the artifact, never your self-report.</strong> The model can&#8217;t flatter its way past a transcript, but it will happily flatter its way through your own account of the meeting. You already know which narrator wrote that one. Asking about yourself is the worst case: <a href="https://arxiv.org/abs/2505.13995">one 2025 study</a> found LLMs preserve the asker&#8217;s self-image far more than human advisers do. The tape is your protection.</p></li><li><p><strong>Name a rubric.</strong> &#8220;Grade this against The Mom Test&#8221; beats &#8220;was this good?&#8221; every time. A named standard gives the model permission to find faults and a scale to grade on. No famous rubric for your artifact? State your goal for the meeting and let that be the standard.</p></li><li><p><strong>Require quoted evidence.</strong> Every finding must cite the exact line. This converts vague praise into checkable findings, and it screens out invented criticism too. The same rule governs the discussion afterward: ask &#8220;show me the line,&#8221; never argue &#8220;I don&#8217;t think that was leading.&#8221; The same Anthropic research found assistants wrongly walk back correct answers when users express doubt. <strong>Evidence-seeking keeps the critique standing; arguing makes it fold.</strong></p></li><li><p><strong>Ask for counts, but make it list first.</strong> Talk ratio, open versus closed questions, minutes before the first real question. Useful numbers, and a known weak spot: a one-shot count is an estimate wearing a number&#8217;s costume. So make the model quote every question, label each one, then tally the list. The list is checkable against the tape, and the tally of a list is reliable.</p></li><li><p><strong>Make it argue the prosecution.</strong> &#8220;Give me the strongest case that this interview went badly.&#8221; The model is excellent at arguing a side when you tell it which side to argue. Flattery has nowhere to hide in a prosecution brief.</p></li></ol><p>One more objection deserves a straight answer, because legal will raise it before you do. <strong>Transcripts carry other people&#8217;s words.</strong> User interviews sit under whatever consent your research process already runs, so check that first. The load-bearing rule is the workspace: run the loop inside your company&#8217;s approved AI workspace, the same environment where your meeting tool already stores the recording (hand-anonymizing a 40-minute conversation is fiction, so don&#8217;t build your compliance on it). Strip names where it&#8217;s quick to do. <strong>And keep other people&#8217;s performance out of scope: the loop reviews you, not your colleagues.</strong></p><p>Honest critique, ten minutes a week, grounded in what was actually said. The last move turns a personal practice into a leadership one.</p><div><hr></div><h2>Bring it to your team</h2><p>Everything so far works for one person: you. But if you manage PMs, you&#8217;re also the person whose questions and standards your team is trying to guess at. The manager&#8217;s version of the practice has three moves: <strong>model it yourself, build it into a tool your team owns, and keep your hands off their critiques.</strong></p><h3>Show your own findings first</h3><p>You don&#8217;t roll this out with a deck. The practice spreads in an embarrassingly simple way: <strong>you talk about your own findings first.</strong> In your next team meeting, mention what your review found. &#8220;It went through Tuesday&#8217;s interview and I did 40% of the talking. I&#8217;m working on it.&#8221; That sentence costs you thirty seconds of vulnerability and buys the whole room permission. <strong>Naming your own findings first is what makes the practice safe to copy.</strong></p><h3>Build the 1:1 prep skill</h3><p>Then give the practice a tool. <strong>Every manager carries a mental list of the questions they always ask in a 1:1.</strong> What moved the metric this week? What&#8217;s the impact of the thing you shipped? What&#8217;s next, and what&#8217;s blocking it? Your team knows the list exists, but they only meet it one meeting at a time, live, when it&#8217;s too late to prepare. <strong>Put that list into a skill, and your questions become something your team can use instead of something they sit through.</strong> The skill&#8217;s context page holds three things: the company&#8217;s OKRs, the metrics your team owns, and your standing questions.</p><p>Here&#8217;s how it runs once it exists.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Kud2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F476f1320-9f10-4714-b612-306a9d3a85e7_1376x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Kud2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F476f1320-9f10-4714-b612-306a9d3a85e7_1376x768.png 424w, https://substackcdn.com/image/fetch/$s_!Kud2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F476f1320-9f10-4714-b612-306a9d3a85e7_1376x768.png 848w, https://substackcdn.com/image/fetch/$s_!Kud2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F476f1320-9f10-4714-b612-306a9d3a85e7_1376x768.png 1272w, https://substackcdn.com/image/fetch/$s_!Kud2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F476f1320-9f10-4714-b612-306a9d3a85e7_1376x768.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Kud2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F476f1320-9f10-4714-b612-306a9d3a85e7_1376x768.png" width="1376" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/476f1320-9f10-4714-b612-306a9d3a85e7_1376x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1376,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1155578,&quot;alt&quot;:&quot;Hand-drawn flow of a 1:1 prep skill: a context page holding company OKRs, team metrics, and the manager&#8217;s standing questions feeds a skill; a PM runs their weekly update through it before the 1:1 and arrives prepared; after each 1:1 the manager adds any new question to the context page, improving the loop.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/206900621?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F476f1320-9f10-4714-b612-306a9d3a85e7_1376x768.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Hand-drawn flow of a 1:1 prep skill: a context page holding company OKRs, team metrics, and the manager&#8217;s standing questions feeds a skill; a PM runs their weekly update through it before the 1:1 and arrives prepared; after each 1:1 the manager adds any new question to the context page, improving the loop." title="Hand-drawn flow of a 1:1 prep skill: a context page holding company OKRs, team metrics, and the manager&#8217;s standing questions feeds a skill; a PM runs their weekly update through it before the 1:1 and arrives prepared; after each 1:1 the manager adds any new question to the context page, improving the loop." srcset="https://substackcdn.com/image/fetch/$s_!Kud2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F476f1320-9f10-4714-b612-306a9d3a85e7_1376x768.png 424w, https://substackcdn.com/image/fetch/$s_!Kud2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F476f1320-9f10-4714-b612-306a9d3a85e7_1376x768.png 848w, https://substackcdn.com/image/fetch/$s_!Kud2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F476f1320-9f10-4714-b612-306a9d3a85e7_1376x768.png 1272w, https://substackcdn.com/image/fetch/$s_!Kud2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F476f1320-9f10-4714-b612-306a9d3a85e7_1376x768.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A PM runs their weekly update through the skill before your 1:1. It asks your questions before you do, checks the update against the real OKRs, and flags what&#8217;s thin: an impact claim with no number, a next step with no owner. They arrive having already answered the routine layer, on their own terms, with no audience. <strong>And the skill improves the same way you do: every time you catch yourself asking a question it missed, add it to the context page after the 1:1.</strong> I&#8217;ve built this exact shape before for AI-tooling questions, and <a href="https://www.theaithinker.com/p/how-to-build-an-ai-helper-for-your">the full walkthrough</a> carries over here: same build, different context page.</p><p>Be honest with the team about what it&#8217;s for. <strong>The skill will never replace the conversation; it changes where the conversation starts.</strong> The routine questions get handled before the meeting, so the meeting spends its thirty minutes on what actually needs two humans: the trade-off they&#8217;re unsure about, the stakeholder they can&#8217;t read, the call that needs your judgment.</p><h3>Keep the loop theirs</h3><p>Hand over the loop, not a verdict. For the PM whose interviews keep coming back thin, the move isn&#8217;t &#8220;your interviews are weak.&#8221; It&#8217;s &#8220;run your next transcript through this prompt before our 1:1, and bring what surprised you.&#8221; The critique stays theirs. You never read their review; <strong>you only ever see the change they choose to make.</strong> That&#8217;s the oldest rule of the retrospective, the one Kerth wrote his Prime Directive to protect: <strong>the review belongs to the people who did the work, not to an evaluator.</strong> The moment you ask to see their critiques, the practice turns into surveillance, and people quietly stop running it.</p><p>What shifts is the shape of your 1:1s. You were never going to give transcript-level feedback to six PMs; there aren&#8217;t enough hours in your week, and there never were. Now that feedback exists without you. The conversation moves from &#8220;here&#8217;s what I think you did wrong&#8221; to &#8220;what did your review find, and what are you changing?&#8221; <strong>You stop being the bottleneck on your team&#8217;s craft feedback without becoming absent from it.</strong> You coach the change instead of hunting for the evidence.</p><p>And if you keep one line from all this, keep this one: <strong>you get a performance review twice a year; your transcripts can give you one every Friday.</strong> It works in a 1:1 with the PM who wants to grow faster. It works on your own tape, this week.</p><div><hr></div><h2>Start this Friday</h2><p>You don&#8217;t need a new tool, a habit system, or anyone&#8217;s permission. You need one artifact from this week and ten minutes on Friday. Pick the tape where you already suspect the truth lives.</p><ul><li><p><strong>Your last user interview.</strong> Start here if you run any: the rubric is famous and the wins come fast.</p></li><li><p><strong>The meeting that went sideways.</strong> The transcript is already in your drive. Ask for the debrief you&#8217;ve been replaying in your head anyway.</p></li><li><p><strong>Your old retros, if you keep any.</strong> Paste the last two months and ask for the pattern you keep repeating.</p></li><li><p><strong>A decision you&#8217;re about to make.</strong> Open the journal with one dated entry: what you decided, what you expect to happen. Future you collects the feedback.</p></li></ul><p>The training that started this for me lasted one day, and I&#8217;ve forgotten almost all of it. The habit it left keeps compounding. That&#8217;s the honest promise of this whole practice: no transformation by Friday, just next-quarter you asking better questions, running tighter meetings, and knowing exactly what you&#8217;re working on. <strong>Start with one transcript. The 1% is already in there.</strong></p>]]></content:encoded></item><item><title><![CDATA[How to answer ethical concerns about AI]]></title><description><![CDATA[Listen to the strongest version of the concern. Sort it into one of four kinds. Concede what&#8217;s true, fix what you control, correct what&#8217;s mistaken, respect what&#8217;s a value.]]></description><link>https://www.theaithinker.com/p/how-to-answer-ethical-concerns-about</link><guid isPermaLink="false">https://www.theaithinker.com/p/how-to-answer-ethical-concerns-about</guid><dc:creator><![CDATA[Adam Faik]]></dc:creator><pubDate>Sun, 26 Jul 2026 23:00:46 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/aa0b85cd-1226-4f86-af53-9234de9ced1a_1024x731.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Every time I talk about AI with someone, the conversation ends up in the same place. Not on models. Not on prompts. <strong>On ethics.</strong> Someone says the data centers are draining water tables. Someone says the training data was scraped from people who never agreed. Someone says they became a designer to design, not to review a machine&#8217;s output. <strong>The objections that stick aren&#8217;t about capability anymore, they&#8217;re about conscience.</strong></p><p>In early 2025, I watched a French designers&#8217; collective called Designers &#201;thiques lay out every one of these objections in <a href="https://peertube.designersethiques.org/w/jhHv5GLE5iV5ccYgs8rWe9">one 40-minute talk</a>. It&#8217;s stayed with me since. Not because it was contrarian, but because it wasn&#8217;t. These were rigorous professionals making the strongest version of the case: an eco-design specialist, a design researcher, an ergonomist. No trolling, no panic. <strong>It&#8217;s the sharpest compact map I&#8217;ve found of what your own team members are thinking and mostly not saying in the meeting.</strong></p><p>If you&#8217;re leading a team through an AI transition, you&#8217;ve met these objections too. Maybe in a retro, maybe in a 1:1, maybe as a silence that never turns into usage. And you&#8217;ve probably been handed exactly one playbook for them: overcome the resistance. I think that playbook is wrong. <strong>Your skeptics are mostly raising real problems, and the fastest way to lose them is to debate.</strong></p><p>The better move: <strong>sort each concern into one of four kinds.</strong> Some are true, and you change what you adopt. Some are risks you control, and you change how you adopt. A few are misconceptions, and you correct them with evidence instead of marketing. One or two are values, and you respect them. <strong>The payoff isn&#8217;t a converted team. It&#8217;s AI use your team can defend out loud.</strong></p><p>The playbook, at a glance:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bjst!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F609c7cfe-847c-4850-a1e7-ef1bdf20fd12_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bjst!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F609c7cfe-847c-4850-a1e7-ef1bdf20fd12_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!bjst!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F609c7cfe-847c-4850-a1e7-ef1bdf20fd12_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!bjst!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F609c7cfe-847c-4850-a1e7-ef1bdf20fd12_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!bjst!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F609c7cfe-847c-4850-a1e7-ef1bdf20fd12_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bjst!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F609c7cfe-847c-4850-a1e7-ef1bdf20fd12_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/609c7cfe-847c-4850-a1e7-ef1bdf20fd12_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4010625,&quot;alt&quot;:&quot;Alt: A hand-drawn infographic showing a path with four stops. Stop 1, the trap: a manager wins an argument while the team checks out. Stop 2, the sort: concerns sorted into four kinds (true, controllable risk, misconception, value). Stop 3, the map: seven concerns answered one by one (the planet, the people behind the data, the craft, the thinking muscle, consent at work, the jobs, untrusted output). Stop 4, the practice: a short team charter saying where AI is in, where it&#8217;s out by default, and who owns decisions.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/206698831?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F609c7cfe-847c-4850-a1e7-ef1bdf20fd12_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Alt: A hand-drawn infographic showing a path with four stops. Stop 1, the trap: a manager wins an argument while the team checks out. Stop 2, the sort: concerns sorted into four kinds (true, controllable risk, misconception, value). Stop 3, the map: seven concerns answered one by one (the planet, the people behind the data, the craft, the thinking muscle, consent at work, the jobs, untrusted output). Stop 4, the practice: a short team charter saying where AI is in, where it&#8217;s out by default, and who owns decisions." title="Alt: A hand-drawn infographic showing a path with four stops. Stop 1, the trap: a manager wins an argument while the team checks out. Stop 2, the sort: concerns sorted into four kinds (true, controllable risk, misconception, value). Stop 3, the map: seven concerns answered one by one (the planet, the people behind the data, the craft, the thinking muscle, consent at work, the jobs, untrusted output). Stop 4, the practice: a short team charter saying where AI is in, where it&#8217;s out by default, and who owns decisions." srcset="https://substackcdn.com/image/fetch/$s_!bjst!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F609c7cfe-847c-4850-a1e7-ef1bdf20fd12_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!bjst!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F609c7cfe-847c-4850-a1e7-ef1bdf20fd12_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!bjst!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F609c7cfe-847c-4850-a1e7-ef1bdf20fd12_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!bjst!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F609c7cfe-847c-4850-a1e7-ef1bdf20fd12_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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><ul><li><p><strong>The trap.</strong> I&#8217;ll show you why winning the argument against a skeptic loses the team.</p></li><li><p><strong>The sort.</strong> Here&#8217;s the four-kind triage that replaces the debate: true, fixable, misread, or a value.</p></li><li><p><strong>The map.</strong> You get the seven concerns you&#8217;ll hear most, each with an honest verdict, the move that follows, and the one resource worth forwarding.</p></li><li><p><strong>The practice.</strong> What a defensible team AI posture looks like once the sorting is done.</p></li></ul><p>By the end, you&#8217;ll have a verdict and a concrete next move for the seven objections coming your way this quarter, plus the one sentence that keeps a skeptic on your team. <strong>You stop dreading the ethics conversation and start using it to make your team&#8217;s AI practice sharper.</strong> No slides required, no philosophy degree either.</p><p>Let&#8217;s sort this out.</p><div><hr></div><h2>Why winning the argument loses the team</h2><p><a href="https://peertube.designersethiques.org/w/jhHv5GLE5iV5ccYgs8rWe9">The talk</a> opens with a moment I can&#8217;t stop thinking about. At a green-IT conference workshop, in front of the most skeptical crowd available, the speakers ran a session asking &#8220;AI: in or out?&#8221; Almost every group landed on &#8220;in,&#8221; reasoning that it&#8217;s here anyway, there&#8217;s no choice, so let&#8217;s make it as clean as possible. One speaker was troubled by exactly that phrasing. <strong>&#8221;We have no choice&#8221; is not what agreement sounds like, it&#8217;s what resignation sounds like.</strong> If your team adopts AI in that spirit, you didn&#8217;t win them. They just stopped telling you things.</p><p>There&#8217;s a second reason the debate is rigged before you open your mouth. <strong>Your team members already met AI adoption as users, and it wasn&#8217;t polite.</strong> The design researchers at Limites Num&#233;riques <a href="https://limitesnumeriques.fr/travaux-productions/ai-forcing">documented the pattern</a>: AI buttons pushed front and center, features switched on by default like Strava&#8217;s Athlete Intelligence, dialogs that offer &#8220;try it&#8221; and &#8220;not now&#8221; but never &#8220;no.&#8221; Sparkles and purple everywhere, the visual vocabulary of magic. <strong>When you pitch AI to your team with vendor enthusiasm, you pattern-match to the forced adoption they already resent.</strong> They&#8217;ve heard &#8220;this will make everything better&#8221; before, from a button they couldn&#8217;t refuse.</p><p>Organizational research has said this plainly for years. In their 2008 Academy of Management Review paper, <a href="https://journals.aom.org/doi/abs/10.5465/amr.2008.31193235">Ford, Ford and D&#8217;Amelio</a> argued that r<strong>esistance to change isn&#8217;t a defect in the resisters.</strong> Change agents cause a good share of it themselves, and <strong>resistance is better treated as a resource:</strong> engagement, feedback, proof that people take the change seriously. <strong>The person pushing back is often the person paying the most attention.</strong></p><p>If you read <a href="https://www.theaithinker.com/p/how-to-lead-a-tech-team-through-the">How to lead a tech team through the AI shift</a>, you might spot a tension here. I argued there for the 20-60-20 rule: <strong>pour your energy into your champions and the watching middle, and stop exhausting yourself arguing with the resistors.</strong> I stand by every word, and this article doesn&#8217;t change the math. Sorting is not arguing, and what follows is not a conversion campaign. It&#8217;s for the conversations that find you anyway: the 1:1 where a concern lands on the table, the team meeting where a hand goes up. <strong>You still don&#8217;t chase your skeptics; you answer well when they&#8217;re in front of you, because the watchers are scoring how you do it.</strong> One honest answer to a skeptic moves ten watchers.</p><p>And there&#8217;s simple arithmetic about credibility. <strong>Argue once against something that turns out to be true, say the data-center water numbers, and you lose the room for a quarter.</strong> The skeptic came with figures. You came with talking points. So the job isn&#8217;t to win. It&#8217;s to sort.</p><div><hr></div><h2>Sort the concern before you answer it</h2><p>Here&#8217;s the move that changes the conversation: <strong>treat each concern as a claim to classify, not an attack to parry.</strong> A triage nurse doesn&#8217;t argue with symptoms. She figures out what kind of problem she&#8217;s looking at, because the kind determines the response. Four kinds cover almost everything your team will raise.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Mtpm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabb6c8fd-3af8-49e1-b441-94642d580217_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Mtpm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabb6c8fd-3af8-49e1-b441-94642d580217_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!Mtpm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabb6c8fd-3af8-49e1-b441-94642d580217_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!Mtpm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabb6c8fd-3af8-49e1-b441-94642d580217_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!Mtpm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabb6c8fd-3af8-49e1-b441-94642d580217_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Mtpm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabb6c8fd-3af8-49e1-b441-94642d580217_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/abb6c8fd-3af8-49e1-b441-94642d580217_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3519334,&quot;alt&quot;:&quot;A hand-drawn diagram sorting concerns into four kinds. Kind 1, they&#8217;re right: concede and change what you adopt. Kind 2, a real risk you control: change how you adopt with working agreements. Kind 3, a misconception: correct the arithmetic with evidence, not marketing. Kind 4, a value: respect the line, there is no counter-argument to a value. &quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/206698831?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabb6c8fd-3af8-49e1-b441-94642d580217_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A hand-drawn diagram sorting concerns into four kinds. Kind 1, they&#8217;re right: concede and change what you adopt. Kind 2, a real risk you control: change how you adopt with working agreements. Kind 3, a misconception: correct the arithmetic with evidence, not marketing. Kind 4, a value: respect the line, there is no counter-argument to a value. " title="A hand-drawn diagram sorting concerns into four kinds. Kind 1, they&#8217;re right: concede and change what you adopt. Kind 2, a real risk you control: change how you adopt with working agreements. Kind 3, a misconception: correct the arithmetic with evidence, not marketing. Kind 4, a value: respect the line, there is no counter-argument to a value. " srcset="https://substackcdn.com/image/fetch/$s_!Mtpm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabb6c8fd-3af8-49e1-b441-94642d580217_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!Mtpm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabb6c8fd-3af8-49e1-b441-94642d580217_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!Mtpm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabb6c8fd-3af8-49e1-b441-94642d580217_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!Mtpm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabb6c8fd-3af8-49e1-b441-94642d580217_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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><ul><li><p><strong>Kind one: they&#8217;re right.</strong> The data-center buildout really is doubling electricity demand. When a concern is true, the honest answer starts with &#8220;you&#8217;re right,&#8221; and the follow-up is a change in what you adopt. <strong>Nothing builds credibility faster than a concession nobody expected.</strong></p></li><li><p><strong>Kind two: a real risk you control.</strong> Juniors losing the review and mentoring that builds expertise. This one isn&#8217;t about the industry, it&#8217;s about your team, which means your working agreements decide whether it comes true. <strong>The answer is a rule you set together, not a rebuttal.</strong></p></li><li><p><strong>Kind three: a misconception.</strong> &#8220;Every prompt is like pouring out a bottle of water.&#8221; The per-prompt numbers are knowable, and they don&#8217;t say that. <strong>Correct the arithmetic gently, with sources, and without dismissing the worry underneath it.</strong> The worry usually points at something real at a different scale.</p></li><li><p><strong>Kind four: a value.</strong> &#8220;I didn&#8217;t get into this craft to supervise a machine.&#8221; <strong>You can&#8217;t argue someone out of a value, and trying reads as disrespect.</strong> What you can do is design roles so the value survives, and be honest about where the boundary sits.</p></li></ul><p>One subtlety makes the whole sort work: the same concern can live in two kinds at once, at different scales. The environmental objection is true at industry scale and misread at the single-prompt scale. The sort forces you to say which scale you&#8217;re answering, out loud. <strong>Sorting is your actual job in this conversation; the debate is optional.</strong></p><p>Here&#8217;s what the sort sounds like in an actual 1:1, in three moves.</p><ul><li><p><strong>First, ask for the strongest version:</strong> &#8220;Give me the strongest version of this worry. Convince me.&#8221; That one question replaces the debate with respect, and it surfaces the real concern instead of the polite one.</p></li><li><p><strong>Second, name the kind out loud in plain words:</strong> &#8220;I think you&#8217;re right about this one,&#8221; or &#8220;this one is ours to fix,&#8221; or &#8220;I think the numbers say otherwise, let me show you,&#8221; or &#8220;that sounds like a value, and I won&#8217;t argue with a value.&#8221;</p></li><li><p><strong>Third, before the conversation ends, commit to one follow-up in writing:</strong> the rule you&#8217;ll add, the number you&#8217;ll check, the thing that goes out-by-default. A sort that doesn&#8217;t end in a written commitment is just a nicer way of nodding.</p></li></ul><p>So let&#8217;s put the framework to work, one conversation at a time.</p><div><hr></div><h2>Answer the seven concerns, one by one</h2><p>The map below covers the seven objections I keep hearing. Six of them the talk maps better than anything else I&#8217;ve found; the seventh, what AI does to our thinking, has grown loud enough since to earn its own place. Your team may add others: discrimination baked into training data, deepfakes, privacy. <strong>The sort handles those the same way.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CGA6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d79acd0-eb30-4783-8c8c-91b086d5d327_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CGA6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d79acd0-eb30-4783-8c8c-91b086d5d327_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!CGA6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d79acd0-eb30-4783-8c8c-91b086d5d327_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!CGA6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d79acd0-eb30-4783-8c8c-91b086d5d327_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!CGA6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d79acd0-eb30-4783-8c8c-91b086d5d327_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CGA6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d79acd0-eb30-4783-8c8c-91b086d5d327_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1d79acd0-eb30-4783-8c8c-91b086d5d327_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3640406,&quot;alt&quot;:&quot;A hand-drawn map with seven zones: the planet (verdict: right at industry scale, misread at prompt scale), the people behind the data (verdict: right), the craft (verdict: a real risk the team controls), the thinking muscle (verdict: real at the learning edge), consent at work (verdict: right about the pattern), the jobs (verdict: partly true, partly unknowable), the output you can&#8217;t trust (verdict: half right, use AI where a human can verify).&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/206698831?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d79acd0-eb30-4783-8c8c-91b086d5d327_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A hand-drawn map with seven zones: the planet (verdict: right at industry scale, misread at prompt scale), the people behind the data (verdict: right), the craft (verdict: a real risk the team controls), the thinking muscle (verdict: real at the learning edge), consent at work (verdict: right about the pattern), the jobs (verdict: partly true, partly unknowable), the output you can&#8217;t trust (verdict: half right, use AI where a human can verify)." title="A hand-drawn map with seven zones: the planet (verdict: right at industry scale, misread at prompt scale), the people behind the data (verdict: right), the craft (verdict: a real risk the team controls), the thinking muscle (verdict: real at the learning edge), consent at work (verdict: right about the pattern), the jobs (verdict: partly true, partly unknowable), the output you can&#8217;t trust (verdict: half right, use AI where a human can verify)." srcset="https://substackcdn.com/image/fetch/$s_!CGA6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d79acd0-eb30-4783-8c8c-91b086d5d327_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!CGA6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d79acd0-eb30-4783-8c8c-91b086d5d327_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!CGA6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d79acd0-eb30-4783-8c8c-91b086d5d327_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!CGA6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d79acd0-eb30-4783-8c8c-91b086d5d327_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>The planet</h3><p>Give this concern its strongest version, with numbers that survive checking, because the talk&#8217;s own figures were compressed in places. The <a href="https://www.iea.org/news/ai-is-set-to-drive-surging-electricity-demand-from-data-centres-while-offering-the-potential-to-transform-how-the-energy-sector-works">IEA&#8217;s 2025 Energy and AI report</a> projects <strong>data-center electricity demand will more than double by 2030</strong>, to around 945 TWh, slightly more than Japan&#8217;s entire consumption today. <a href="https://doi.org/10.1016/j.joule.2023.09.004">Alex de Vries</a> projected in Joule that <strong>AI-specific consumption alone could reach the scale of the Netherlands or Argentina by 2027.</strong> Water follows the same curve: <a href="https://www.datacenterdynamics.com/en/news/microsofts-water-consumption-jumps-34-percent-amid-ai-boom/">Microsoft&#8217;s use jumped a third in 2022 while Google&#8217;s rose a fifth</a>, and researchers behind the <a href="https://arxiv.org/abs/2304.03271">Making AI Less &#8220;Thirsty&#8221; paper</a> project <strong>AI water withdrawal reaching half of the UK&#8217;s annual total by 2027. The verdict: at industry scale, your skeptic is right.</strong></p><p>There&#8217;s a sharper twist worth conceding too. A <a href="https://www.theguardian.com/technology/2024/sep/15/data-center-gas-emissions-tech">Guardian analysis</a> found <strong>the real emissions of the big providers&#8217; own data centers ran about 7.6 times higher than officially reported.</strong> The trick is accounting: renewable-energy certificates let a company report clean power it never actually consumed at the site. <strong>Notice what that is: not a technology problem, an honesty problem.</strong></p><p>Now the misread half. Per-prompt costs are measurable, and they&#8217;re small. <a href="https://cloud.google.com/blog/products/infrastructure/measuring-the-environmental-impact-of-ai-inference">Google&#8217;s published figure</a> for a median Gemini text prompt: <strong>0.24 Wh of energy and 0.26 mL of water, counting on-site water only.</strong> <a href="https://mistral.ai/news/our-contribution-to-a-global-environmental-standard-for-ai/">Mistral&#8217;s lifecycle study</a> counts everything upstream, training included, and lands at 45 mL per response. The gap is scope, not virtue, and either way one prompt sits far below one kilometer of driving or one beef meal. <strong>Correcting this arithmetic matters, because a team member who quietly believes each prompt burns a lake will never use the tools well.</strong> The obvious comeback is fair: small times billions of prompts equals the buildout we just conceded. Both things are true. Your prompt is cheap; the trajectory is not; your subscription is a vote for it.</p><p><strong>The move is to stop pretending it&#8217;s free, and to put that in writing.</strong> Three rules are worth adding to your team&#8217;s working agreements.</p><ul><li><p><strong>Default to the small model, escalate on need:</strong> most tasks don&#8217;t need the frontier model, and the price gap is the energy gap.</p></li><li><p><strong>No AI where a script does the job:</strong> a regex, a spreadsheet formula, or a cron job costs nothing and never hallucinates.</p></li><li><p><strong>And one screening question before any new AI use ships:</strong> what is this for, and would we defend it at scale?</p></li></ul><p>Expect efficiency gains to get eaten unless you watch for them; the talk calls this the rebound effect, where every drop in cost per task invites more tasks.</p><p>When the conversation deserves more than a meeting slot, forward <strong><a href="https://blog.andymasley.com/p/a-cheat-sheet-for-conversations-about">Andy Masley&#8217;s cheat sheet</a> on AI and the environment.</strong> It&#8217;s the single best document I know for exactly this conversation: it runs the per-prompt arithmetic against everyday life (about 1,000 prompts to move your daily energy use by 1%) and still concedes the industry-scale buildout is a real question. <strong>Handing your skeptic the strongest version of the counter-arithmetic beats paraphrasing it in a meeting.</strong> What you can say: &#8220;You&#8217;re right about the trajectory. Here&#8217;s what our use actually costs, and here&#8217;s what we choose not to use it for.&#8221;</p><p>That answer covers the machines. The people who made the models possible are a harder conversation.</p><h3>The people behind the data</h3><p>The concern: <strong>the models were trained on work scraped from people who never consented, and the labor that made them safe was outsourced at poverty wages.</strong> The record backs it. <a href="https://time.com/6247678/openai-chatgpt-kenya-workers/">TIME&#8217;s investigation</a> documented Kenyan workers labeling toxic content for less than $2 an hour. And the talk&#8217;s own example has a scholarly source: <a href="https://journals.sagepub.com/doi/10.1177/20539517231188723">Le Ludec, Cornet and Casilli</a> documented French AI firms outsourcing annotation to Madagascar at poverty wages. This isn&#8217;t someone else&#8217;s supply chain. <strong>The verdict: they&#8217;re right, and no arithmetic rescues it.</strong></p><p>So don&#8217;t reach for a rebuttal, because there isn&#8217;t one. What a product team controls is procurement and posture, and you can make both concrete. <strong>Write three questions into your next tool evaluation:</strong> where does the training data come from, what licensing deals exist, and what are the annotation labor practices. The differences between providers are inspectable: <strong>Mistral publishes a <a href="https://mistral.ai/news/our-contribution-to-a-global-environmental-standard-for-ai/">full lifecycle audit</a></strong> with the French environment agency, and some providers sign licensing deals with the newsrooms they train on, the way OpenAI did with the <a href="https://www.axios.com/2023/07/13/ap-openai-news-sharing-tech-deal">Associated Press</a> and <a href="https://openai.com/index/global-news-partnerships-le-monde-and-prisa-media/">Le Monde</a>, instead of scraping them. Your team can prefer the better ones and say why. For the teammate who wants the full picture, <strong>the book to pass around is <a href="https://canongate.co.uk/books/5234-feeding-the-machine-the-hidden-human-labour-powering-ai/">Feeding the Machine</a>,</strong> written by three Oxford Internet Institute researchers from years of interviews with the annotators and moderators themselves.</p><p>The other half of the move is harder: don&#8217;t launder the discomfort. <strong>Deciding to use AI with open eyes is more respectable than pretending the problem is solved.</strong> Some weeks the honest position is &#8220;this bothers me too, and here&#8217;s why I still think our use is defensible.&#8221; What you can say: &#8220;You&#8217;re right, and we can&#8217;t fix it from here. Here are the three questions we now ask before picking a provider, and here&#8217;s where I still think it&#8217;s worth it.&#8221;</p><p>The next objection sits closer to home: what the shortcut does to your own team&#8217;s craft.</p><h3>The craft and the shortcut</h3><p>This is the worry I hear most from the best people. Expertise, the ergonomist in the talk explains, gets built four ways: <strong>learning, experimentation, collaboration with peers, and teaching.</strong> Then he asks the question that lands hardest: when you hit a problem, what&#8217;s more effective, <strong>asking your colleagues or asking the AI?</strong> In the Q&amp;A, someone described a senior developer who used to review a junior&#8217;s code and now just asks the AI instead. <strong>The transmission chain broke, quietly, without anyone deciding it should.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ri_q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb730138-0d25-4412-9b1f-b8a847780955_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ri_q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb730138-0d25-4412-9b1f-b8a847780955_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!ri_q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb730138-0d25-4412-9b1f-b8a847780955_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!ri_q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb730138-0d25-4412-9b1f-b8a847780955_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!ri_q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb730138-0d25-4412-9b1f-b8a847780955_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ri_q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb730138-0d25-4412-9b1f-b8a847780955_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/db730138-0d25-4412-9b1f-b8a847780955_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3283868,&quot;alt&quot;:&quot;A hand-drawn cycle with four stations: learn, experiment, collaborate with peers, teach. A dotted arrow labeled &#8220;just ask the AI&#8221; bypasses all four stations and lands directly on an answer, with a warning that the shortcut skips where expertise is built.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/206698831?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb730138-0d25-4412-9b1f-b8a847780955_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A hand-drawn cycle with four stations: learn, experiment, collaborate with peers, teach. A dotted arrow labeled &#8220;just ask the AI&#8221; bypasses all four stations and lands directly on an answer, with a warning that the shortcut skips where expertise is built." title="A hand-drawn cycle with four stations: learn, experiment, collaborate with peers, teach. A dotted arrow labeled &#8220;just ask the AI&#8221; bypasses all four stations and lands directly on an answer, with a warning that the shortcut skips where expertise is built." srcset="https://substackcdn.com/image/fetch/$s_!ri_q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb730138-0d25-4412-9b1f-b8a847780955_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!ri_q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb730138-0d25-4412-9b1f-b8a847780955_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!ri_q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb730138-0d25-4412-9b1f-b8a847780955_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!ri_q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb730138-0d25-4412-9b1f-b8a847780955_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>Lisanne Bainbridge named this pattern in 1983. In <a href="https://www.sciencedirect.com/science/article/abs/pii/0005109883900468">Ironies of Automation</a>, the paper to forward to the teammate who wants the lineage, she showed that <strong>automating the easy parts of a job leaves the human with the hard parts, minus the daily practice that kept them sharp.</strong> A <a href="https://link.springer.com/article/10.1007/s00146-024-01951-x">field study of AI in a radiology practice</a> by Gamkrelidze, Zouinar and Barcellini found exactly that shape: the fracture-detection AI worked as a genuine safety net, and it also bred overconfidence risk, while the transcription AI quietly deleted the verification step the medical secretaries used to perform. <strong>The verdict: this risk is real, and it&#8217;s the one you control most directly.</strong></p><p>Which is good news, because <strong>the fix is working agreements,</strong> not philosophy, and they&#8217;re short enough to write down:</p><ul><li><p><strong>Rule one:</strong> anyone still learning a domain gets human review on their work, full stop, and the reviewer is a person with a name.</p></li><li><p><strong>Rule two:</strong> AI explains before it produces; used as a tutor it strengthens the learning station instead of skipping it.</p></li><li><p><strong>Rule three:</strong> seniors keep protected teaching time (a weekly pairing hour, a monthly brown-bag), because teaching is their own expertise engine too.</p></li></ul><p><strong>The shortcut only breaks the loop if you let it become the default path.</strong> What you can say: &#8220;You&#8217;re right that the shortcut is real. So we keep the loop: <strong>review stays, teaching stays, and AI joins the loop instead of replacing it.</strong>&#8221;</p><p>Working agreements protect the team&#8217;s craft. The newer worry is what the tools do to each person&#8217;s head.</p><h3>The thinking muscle</h3><p>This is the objection that grew loudest over the past year, and it usually arrives as a sentence about the next generation: <strong>AI is making us dumber, and kids who grow up on it will never learn to think for themselves.</strong> It now arrives with a study attached. An <a href="https://arxiv.org/abs/2506.08872">MIT Media Lab experiment</a> put EEG caps on 54 essay writers: the ChatGPT group showed the weakest brain connectivity, reported the least ownership of their work, and minutes after submitting, most couldn&#8217;t quote a line from their own essay. The authors named the lingering effect <strong>&#8220;cognitive debt.&#8221;</strong> A <a href="https://www.mdpi.com/2075-4698/15/1/6">survey of 666 people</a> added that the heaviest AI users scored lowest on critical thinking, with the youngest participants the most dependent. <strong>This worry has data now, and waving it off with &#8220;they said the same about calculators&#8221; doesn&#8217;t answer it.</strong></p><p><strong>The verdict: real at the learning edge, unproven as a sentence about humanity.</strong> Read honestly, the evidence is narrower and more useful than the headlines. The MIT authors answer &#8220;is ChatGPT making us dumber?&#8221; with a flat no in their own FAQ: one narrow task, a small sample, engagement measured during the task rather than lasting change. The 666-person survey is correlational; maybe people who think less critically simply offload more. The result that should actually shape your team&#8217;s rules is causal: a <a href="https://www.pnas.org/doi/10.1073/pnas.2422633122">randomized trial with about a thousand students, published in PNAS</a>, found that <strong>vanilla ChatGPT boosted practice performance by 48% and then cut unassisted exam scores by 17%.</strong> Same trial, one design change: a tutor version that gave hints instead of answers erased the harm completely. <strong>The variable isn&#8217;t AI. It&#8217;s whether the AI does the thinking or scaffolds it.</strong> That&#8217;s also exactly where the calculator comparison holds and breaks: fine to offload arithmetic, dangerous to offload the reasoning itself.</p><p><strong>The move is to make &#8220;coach, not answer machine&#8221; a written rule for anything a person is still learning.</strong> Three rules fit on a sticky note</p><ul><li><p><strong>Think first, prompt second:</strong> write your own answer, even five rough lines, before opening the chat.</p></li><li><p><strong>Hints before answers while learning:</strong> tell the model &#8220;ask me questions, don&#8217;t give me the solution&#8221; (the exact design that erased the harm in the trial).</p></li><li><p><strong>Explain it back:</strong> if you can&#8217;t restate what you shipped with the chat window closed, it isn&#8217;t yours yet.</p></li></ul><p>For the teammate who wants the deeper story, <strong>forward <a href="https://theconversation.com/mit-researchers-say-using-chatgpt-can-rot-your-brain-the-truth-is-a-little-more-complicated-259450">The Conversation&#8217;s walkthrough of the MIT study</a>;</strong> it takes the worry seriously and shows precisely what the study can and can&#8217;t say. What you can say: &#8220;You&#8217;re right to guard your thinking. So <strong>we use AI as a coach on anything we&#8217;re still learning, and we prove it by explaining our work with the chat closed.</strong>&#8221;</p><p>Guarding heads is one half of consent. The other half is who signed up for any of this in the first place.</p><h3>Consent at work</h3><p>The talk asks a question I&#8217;d put to any team verbatim: <strong>do you consent to your work being organized by your team, or by an AI?</strong> Then it sketches the scenario: a backlog where tasks are assigned by an AI, estimated by an AI, and timed by an AI that checks whether you matched its estimate. If that sounds like science fiction, the EU disagrees. The <a href="https://artificialintelligenceact.eu/annex/3/">EU AI Act&#8217;s Annex III</a> classifies <strong>workplace AI that allocates tasks or monitors and evaluates performance as high-risk</strong>, with employer duties to inform workers before deploying it. The high-risk obligations start applying in August 2026. That&#8217;s next month. <strong>The verdict: they&#8217;re right about the pattern, and whether it becomes true on your team is your call to make.</strong></p><p>Reality in the field is still mostly softer than the fear, and it&#8217;s worth being precise about that. The talk pointed at the French public sector, where the Lyon school district runs an AI copilot called <a href="https://www.ekole.fr/blog/le-rectorat-de-lyon-utilise-lia-pour-aider-les-gestionnaires-rh-dans-leurs-reponses-aux-enseignants">Cassandre</a> that helps HR staff answer teachers&#8217; questions about transfers. It doesn&#8217;t decide the transfers. T<strong>he speaker&#8217;s warning is about where the road leads: to &#8220;it wasn&#8217;t a human who decided,&#8221; the sentence that ends accountability.</strong></p><p>Parts of the private sector are already further down that road, and the two clearest cases come from companies everyone knows. <a href="https://www.theverge.com/2019/4/25/18516004/amazon-warehouse-fulfillment-centers-productivity-firing-terminations">Amazon&#8217;s own legal filings</a> describe warehouse systems that track each worker&#8217;s rate and auto-generate productivity warnings and termination paperwork, with Amazon noting supervisors can override. And in 2023, <a href="https://www.fieldfisher.com/en/insights/amsterdam-court-of-appeal-rules-in-favour-of-uber-and-ola-cabs-drivers">an Amsterdam appeals court</a> ruled that Uber had deactivated drivers through solely automated decisions, the practice the drivers&#8217; union called robo-firing and the exact thing the GDPR&#8217;s Article 22 exists to prevent. <strong>The road the talk warns about doesn&#8217;t lead somewhere hypothetical; it leads to case law.</strong></p><p>The move is to <strong>make adoption consent-real before anyone asks,</strong> with three rules written into your working agreements:</p><ul><li><p>Tools are offered, never mandated per person.</p></li><li><p>Every decision that touches a person carries a named human owner, and the name is written next to the decision.</p></li><li><p>Opting out is safe, with no career shadow, and you check twice a year that it&#8217;s still true in practice.</p></li></ul><p>When legal wants the source, forward the <a href="https://artificialintelligenceact.eu/annex/3/">Annex III text itself</a>; it&#8217;s shorter than most policy memos. <strong>Nobody who works for you should ever hear &#8220;the AI decided.&#8221;</strong> What you can say: &#8220;A human owns every decision on this team, starting with me.&#8221;</p><p>And underneath every consent question sits the one your team member is actually asking.</p><h3>The jobs</h3><p>The ergonomist tells a story from his early career. His mentor asked: if you design software that makes the work twice as fast, how many workers are left in six months? It&#8217;s the question underneath every other question, and your team member asking it deserves better than the two stock answers: the vendor&#8217;s &#8220;nothing changes for you&#8221; and the doomer&#8217;s certainty. The talk makes the hollowness concrete with translators, a craft told for years that the tools would free them for &#8220;more interesting work,&#8221; by people who never say what work is more interesting than the craft itself. You can&#8217;t answer the mentor&#8217;s question for the industry. Nobody can. <strong>The verdict: partly true, partly unknowable, and the worst response is a promise you can&#8217;t keep.</strong></p><p>Start by questioning the premise. &#8220;Twice as fast&#8221; itself deserves doubt: <a href="https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/">METR&#8217;s randomized trial</a> found <strong>experienced developers were 19% slower with AI tools while believing they were 20% faster.</strong> That perception gap is the strongest argument you&#8217;ll ever get for measuring your own team&#8217;s gains instead of quoting the pitch. And watch what the work becomes, not just whether it exists. When France&#8217;s tax authority deployed its pool-detection program <a href="https://www.impots.gouv.fr/actualite/generalisation-du-foncier-innovant">Foncier innovant</a>, field agents became desk agents. The job survived; the parts of it people liked didn&#8217;t all survive with it. <strong>Even the jobs that stay change texture, and naming that out loud buys more trust than any reassurance.</strong></p><p><strong>The move is to commit only to what you control, and to make each commitment checkable.</strong> Plans get heard from you first, not from a rumor: say it in the team meeting and repeat it every quarter. Skills investment happens on company time, with a number attached (a monthly learning day, a named course budget); an unnumbered commitment isn&#8217;t one. Roles get redesigned with the people in them, not around them: the person whose work is changing sits in the room where it&#8217;s redesigned. And when someone wants more than reassurance, <strong>forward <a href="https://www.noemamag.com/how-ai-could-help-rebuild-the-middle-class/">David Autor&#8217;s essay on AI and the middle class</a>:</strong> MIT&#8217;s leading labor economist, long a tech skeptic, arguing a future with neither doom nor denial in it. What you can say: &#8220;I can&#8217;t promise what the industry does. I can promise you&#8217;ll hear plans from me first, and that <strong>we invest in you while things change.</strong>&#8221;</p><p>One objection left, and it aims at the output itself.</p><h3>The output you can&#8217;t trust</h3><p>The talk&#8217;s most memorable stretch is about mediocrity. <strong>Models weight toward the most probable output.</strong> Ask for a pink elephant with wings and most image models fail, because the training data holds no pink elephants with wings. Ask for a wine glass filled to the brim; you get one filled halfway, over and over. The speaker&#8217;s conclusion: a designer who uses AI to generate ideas is stepping onto &#8220;a highway to the most probable solution,&#8221; and originality lives off that highway. Stereotypes ride along for the same statistical reason. <strong>The verdict: half right, and the right half is a map of where to use the tools, not a case for refusing them.</strong></p><p>Because notice what the talk itself endorses: transcription, subtitles, handwriting recognition, classifying feedback. Small, checkable tasks with human expertise in the loop. That generalizes into the single most useful screen I know, and it&#8217;s worth writing exactly as a rule: <strong>AI-assisted work ships with a named human checker, and if nobody can check it, it doesn&#8217;t ship.</strong> Research gives the screen teeth. A <a href="https://www.microsoft.com/en-us/research/publication/the-impact-of-generative-ai-on-critical-thinking-self-reported-reductions-in-cognitive-effort-and-confidence-effects-from-a-survey-of-knowledge-workers/">CHI 2025 study of 319 knowledge workers</a> by Microsoft Research and CMU found that <strong>the more people trusted the AI, the less critically they thought; the more they trusted their own judgment, the more critically they engaged.</strong> The check only happens when the human still believes their judgment beats the tool&#8217;s, so your job is to <strong>keep that belief alive.</strong> Taste, direction, and originality stay human, and they get more valuable, not less. For the teammate who wants the domain-by-domain version of &#8220;what AI can and can&#8217;t do,&#8221; <strong>the book is <a href="https://press.princeton.edu/books/hardcover/9780691249131/ai-snake-oil">AI Snake Oil</a>,</strong> by two Princeton computer scientists who respect skeptics enough to argue with evidence. What you can say: &#8220;You&#8217;re right about the median. That&#8217;s why <strong>we use it where we can verify, and why your judgment is the part that never gets delegated.</strong>&#8221;</p><p>Seven concerns, seven verdicts. Put together, they stop being a list of complaints and start being something else: the specification for a practice.</p><div><hr></div><h2>The objection to this whole approach</h2><p>A sharp skeptic will see the framework coming and name it: &#8220;You&#8217;d already decided we&#8217;re adopting. The sorting is just a softer road to the same forced outcome.&#8221; <strong>You might be silently raising the manager&#8217;s version of the same objection: there&#8217;s a mandate, there&#8217;s a quarter, and this looks like a philosophy seminar.</strong> Both deserve a straight answer.</p><p>Take the skeptic&#8217;s version first, because it has a clean test. <strong>The sort has real exits, or it&#8217;s theater.</strong> If the &#8220;true&#8221; verdicts changed what you adopt, if something on your roadmap moved to out-by-default, if the person with the values objection still has their standing and their role, then the sorting was real. If you ran the conversations and nothing in your plan changed, the skeptic was right about you, and no framework fixes that.</p><p>Now the mandate pressure. Here&#8217;s the thing I&#8217;d want leadership to hear: <strong>the triage is the fast path, not the slow one.</strong> The alternative to honest sorting isn&#8217;t a converted team. It&#8217;s tools that get opened once, licenses that show up in the usage report as a flat line, and an adoption metric nobody believes. <strong>Quiet non-use is the most expensive outcome an AI mandate can produce, and steamrolling buys it wholesale.</strong> Sorting removes the actual reason people were stalling. That&#8217;s not a seminar. That&#8217;s unblocking.</p><p>And when the sorting is real, something better than compliance shows up: a posture you can write down.</p><div><hr></div><h2>The practice you end up with</h2><p><strong>Pull the seven moves together and you get a short team AI charter, written from your team&#8217;s concerns instead of a vendor deck.</strong> Mine would fit on a page. Four blocks.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cVMP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4166d733-e3a5-43a0-9954-47cd52f92d8d_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cVMP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4166d733-e3a5-43a0-9954-47cd52f92d8d_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!cVMP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4166d733-e3a5-43a0-9954-47cd52f92d8d_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!cVMP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4166d733-e3a5-43a0-9954-47cd52f92d8d_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!cVMP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4166d733-e3a5-43a0-9954-47cd52f92d8d_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cVMP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4166d733-e3a5-43a0-9954-47cd52f92d8d_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4166d733-e3a5-43a0-9954-47cd52f92d8d_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3937454,&quot;alt&quot;:&quot;A hand-drawn one-page charter sketch with four blocks. Block 1, where AI is in: verifiable outputs a human reviews and owns. Block 2, where it&#8217;s out by default: original ideation, unreviewed customer-facing output, decisions about people. Block 3, who owns what: tools offered not forced, a named human owns every decision, opting out is safe. Block 4, how we pick tools: providers that publish honest numbers on energy, water, and training data.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/206698831?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4166d733-e3a5-43a0-9954-47cd52f92d8d_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A hand-drawn one-page charter sketch with four blocks. Block 1, where AI is in: verifiable outputs a human reviews and owns. Block 2, where it&#8217;s out by default: original ideation, unreviewed customer-facing output, decisions about people. Block 3, who owns what: tools offered not forced, a named human owns every decision, opting out is safe. Block 4, how we pick tools: providers that publish honest numbers on energy, water, and training data." title="A hand-drawn one-page charter sketch with four blocks. Block 1, where AI is in: verifiable outputs a human reviews and owns. Block 2, where it&#8217;s out by default: original ideation, unreviewed customer-facing output, decisions about people. Block 3, who owns what: tools offered not forced, a named human owns every decision, opting out is safe. Block 4, how we pick tools: providers that publish honest numbers on energy, water, and training data." srcset="https://substackcdn.com/image/fetch/$s_!cVMP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4166d733-e3a5-43a0-9954-47cd52f92d8d_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!cVMP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4166d733-e3a5-43a0-9954-47cd52f92d8d_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!cVMP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4166d733-e3a5-43a0-9954-47cd52f92d8d_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!cVMP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4166d733-e3a5-43a0-9954-47cd52f92d8d_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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><ul><li><p><strong>Where AI is in:</strong> tasks with verifiable outputs that a human reviews and owns. Transcription, classification, drafts that get read before they ship, code reviewed by a person who could have written it.</p></li><li><p><strong>Where it&#8217;s out by default:</strong> original ideation, unreviewed customer-facing output, and any decision about people.</p></li><li><p><strong>Who owns what:</strong> tools offered, never forced on a person; a named human accountable for every decision; an opt-out without career shadow.</p></li><li><p><strong>How we pick tools:</strong> providers that publish honest numbers on energy, water, and training data.</p></li></ul><p>That last block has teeth because of the reporting gap from the planet section. A <strong>provider that understates its emissions 7.6 times has already told you how it handles inconvenient numbers.</strong> &#8220;Publishes honest figures&#8221; is a real screen, not a platitude. It costs nothing to apply and it sorts the market fast.</p><p>You can draft the whole thing in one team hour, and drafting it together is most of its power. <strong>Fifteen minutes: everyone writes their concerns down, anonymously if that helps people say the real one.</strong> Fifteen minutes: sort them into the four kinds together, out loud. Twenty minutes: draft the four blocks from what actually came up, not from a template. Ten minutes: put one name next to each block and a date three months out to revisit. <strong>A charter the team wrote in an hour beats a policy nobody read.</strong></p><p>Two things make this charter travel further than your team. Legal will notice that the consent block is where EU compliance is already heading, with workplace AI obligations applying from August 2026. And the room where adoption metrics get discussed will notice that a written posture beats a usage dashboard nobody trusts. <strong>The line that carries all of it: &#8220;You&#8217;re right about X. Here&#8217;s what we changed so our use doesn&#8217;t have that problem. And here&#8217;s where I still think it&#8217;s worth it.&#8221;</strong> A manager who can complete that sentence for each concern doesn&#8217;t need to win any argument.</p><p>One reframe before you go write yours. I started this project wanting keys to change skeptical minds. I ended it convinced that&#8217;s the wrong target. <strong>Mindsets move when the practice becomes trustworthy, not when the pitch improves.</strong> The skeptic doesn&#8217;t need to love AI. <strong>They need to see that their concern changed something real.</strong></p><div><hr></div><h2>Trust your skeptics</h2><p>Somewhere in your team is the person who read the water numbers, the one who worries about the junior who never gets reviewed anymore, the one who wonders what these tools are doing to how we think, the one who quietly decided prompting isn&#8217;t the craft they signed up for. They were never the obstacle. They were the free red team, stress-testing your AI practice before it shipped. The org-behavior researchers knew it in 2008; the talk&#8217;s speakers knew it on that stage in early 2025. <strong>A team that sorted its concerns ships AI use it can defend out loud, starting with defending it to itself.</strong></p><p>Your turn. <strong>Take the next 1:1 where a concern comes up and sort it out loud, all four kinds on the table.</strong> Write the strongest version of your best skeptic&#8217;s objection before you meet them, and open with it. Draft the four-block charter with the team, not for them. Pick one thing that goes out-by-default this week, and say why. And <a href="https://peertube.designersethiques.org/w/jhHv5GLE5iV5ccYgs8rWe9">watch the talk</a> that started this article, then forward it to the person on your team it will resonate with, with a note saying you want their read.</p><p>The speakers closed with a warning: <strong>AI will only ever offer you a mediocre dream, so take the time to dream your own.</strong> I&#8217;d turn it forward. Your team already has a dream about what their work should mean. <strong>Make your AI practice serve that, on purpose, and the skeptics won&#8217;t need convincing, they&#8217;ll be the ones holding you to it.</strong></p>]]></content:encoded></item><item><title><![CDATA[How to hire an AI-native product manager]]></title><description><![CDATA[Rewrite the job description around real AI usage. Screen for the last thing they built. Watch them direct an AI live. Decide on judgment, with a fluency bar.]]></description><link>https://www.theaithinker.com/p/how-to-hire-an-ai-native-product</link><guid isPermaLink="false">https://www.theaithinker.com/p/how-to-hire-an-ai-native-product</guid><dc:creator><![CDATA[Adam Faik]]></dc:creator><pubDate>Mon, 20 Jul 2026 11:00:59 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/a24dc865-1497-46bc-a466-c84accb17734_1024x731.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The headcount finally came through. You need a product manager, your recruiting partner needs a job description by Friday, and the process sitting in your ATS (the software your whole recruiting pipeline runs on) is the one you&#8217;ve run since 2023. R&#233;sum&#233; screen, recruiter call, case-study interview, take-home, panel, offer. Every stage works the same way: the candidate produces something, and you grade it. A r&#233;sum&#233;. A structured answer. A polished deck. <strong>Look at it honestly and your hiring process is a machine for grading documents.</strong></p><p>Here&#8217;s the problem: AI just made polished documents free. The tight r&#233;sum&#233;, the crisp case structure, the take-home that used to signal &#8220;this person is serious&#8221;: any candidate with Claude and an evening now produces all three. You&#8217;ve probably felt it already, reading applications that all sound suspiciously excellent. And it happened at the worst possible moment, right when <strong>you were asked to make your team AI-first</strong> and every open seat became a chance to hire the mindset. <strong>The signal collapsed at the exact moment the stakes went up.</strong></p><p>So I went and read what the companies furthest into this shift actually did about it. I pulled the live PM job posts at Anthropic, Ramp, Notion, and Stripe, straight from their own job boards this week. I read the interview loops Sierra and Canva published, and the one candidates describe at Shopify. I read the fluency rubric Zapier now applies to every single hire. Different companies, different stages, one converging move. <strong>Stop grading the deliverable. Watch the candidate work.</strong> The bar isn&#8217;t &#8220;knows AI.&#8221; It&#8217;s <strong>&#8220;directs AI and catches it when it&#8217;s wrong.&#8221;</strong></p><p>Here&#8217;s the whole arc in one picture.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4wd0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb00dbe4-12ad-48aa-9399-c580b187fb64_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4wd0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb00dbe4-12ad-48aa-9399-c580b187fb64_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!4wd0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb00dbe4-12ad-48aa-9399-c580b187fb64_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!4wd0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb00dbe4-12ad-48aa-9399-c580b187fb64_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!4wd0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb00dbe4-12ad-48aa-9399-c580b187fb64_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4wd0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb00dbe4-12ad-48aa-9399-c580b187fb64_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fb00dbe4-12ad-48aa-9399-c580b187fb64_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4487539,&quot;alt&quot;:&quot;Hand-drawn infographic in four acts &#8212; a classic hiring loop with crossed-out artifact icons (r&#233;sum&#233;, deck, take-home), then five redrawn stages (job description, screen, interview, live build, decision), then a dial labeled how much AI to demand, then a five-line checklist next to a high bar labeled judgment plus fluency.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/206622864?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb00dbe4-12ad-48aa-9399-c580b187fb64_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Hand-drawn infographic in four acts &#8212; a classic hiring loop with crossed-out artifact icons (r&#233;sum&#233;, deck, take-home), then five redrawn stages (job description, screen, interview, live build, decision), then a dial labeled how much AI to demand, then a five-line checklist next to a high bar labeled judgment plus fluency." title="Hand-drawn infographic in four acts &#8212; a classic hiring loop with crossed-out artifact icons (r&#233;sum&#233;, deck, take-home), then five redrawn stages (job description, screen, interview, live build, decision), then a dial labeled how much AI to demand, then a five-line checklist next to a high bar labeled judgment plus fluency." srcset="https://substackcdn.com/image/fetch/$s_!4wd0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb00dbe4-12ad-48aa-9399-c580b187fb64_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!4wd0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb00dbe4-12ad-48aa-9399-c580b187fb64_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!4wd0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb00dbe4-12ad-48aa-9399-c580b187fb64_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!4wd0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb00dbe4-12ad-48aa-9399-c580b187fb64_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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><ul><li><p><strong>The diagnosis.</strong> I&#8217;ll show you why every stage of your current process stopped measuring anything real.</p></li><li><p><strong>The rebuild.</strong> Five moves, one per stage, with full requirements quoted from live postings and the interview questions from companies that already made them.</p></li><li><p><strong>The calibration.</strong> You&#8217;ll see the data on how much AI to actually demand, and the walk-back that warns against overshooting.</p></li><li><p><strong>The walkaway.</strong> One forwardable paragraph for leadership and your recruiter, plus a checklist to run on the req you have open.</p></li></ul><p>By the end you&#8217;ll have a full replacement for the old process: job-description language you can borrow whole, two screening questions, a live interview format with a published AI policy, a work-sample design, and a decision rubric, all compressed into a closing checklist you can run this week. <strong>Your next PM hire stops being a coin flip on polish and becomes the clearest AI-first signal you send your team this year.</strong></p><p>Let&#8217;s rebuild it, stage by stage.</p><div><hr></div><h2>Why your hiring loop went blind</h2><p>Walk through the classic stages and name what each one actually measures. The r&#233;sum&#233; screen grades a document. The case interview grades a rehearsed structure, the kind a decade of candidates drilled from <a href="https://www.goodreads.com/en/book/show/19243347-cracking-the-pm-interview">Cracking the PM Interview</a>, McDowell and Bavaro&#8217;s 2013 prep book (&#8221;How many pizzas are delivered in Manhattan?&#8221;, &#8220;How do you design an alarm clock for the blind?&#8221;). The take-home grades another document, produced somewhere you can&#8217;t see. <strong>The panel grades a performance, and every stage grades some kind of output.</strong></p><p>For years we told ourselves polish correlated with skill, that producing a crisp PRD required a crisp mind. The honest version is less flattering. Selection studies have long ranked r&#233;sum&#233; screens and unstructured interviews among the weakest predictors of actual job performance. <strong>The old process wasn&#8217;t a good instrument that AI broke. It was a weak instrument whose weakness AI made undeniable.</strong></p><p>Picture the machine you&#8217;ve been running.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WJzw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8687335-7672-4fb1-9008-8ec1e8ee64e3_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WJzw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8687335-7672-4fb1-9008-8ec1e8ee64e3_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!WJzw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8687335-7672-4fb1-9008-8ec1e8ee64e3_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!WJzw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8687335-7672-4fb1-9008-8ec1e8ee64e3_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!WJzw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8687335-7672-4fb1-9008-8ec1e8ee64e3_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WJzw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8687335-7672-4fb1-9008-8ec1e8ee64e3_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f8687335-7672-4fb1-9008-8ec1e8ee64e3_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4724658,&quot;alt&quot;:&quot;Hand-drawn two-panel diagram &#8212; left, a candidate hands polished documents to an interviewer who stamps grades on them; right, the same documents are marked &#8220;free now&#8221; and the interviewer shrugs, unable to tell candidates apart.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/206622864?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8687335-7672-4fb1-9008-8ec1e8ee64e3_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Hand-drawn two-panel diagram &#8212; left, a candidate hands polished documents to an interviewer who stamps grades on them; right, the same documents are marked &#8220;free now&#8221; and the interviewer shrugs, unable to tell candidates apart." title="Hand-drawn two-panel diagram &#8212; left, a candidate hands polished documents to an interviewer who stamps grades on them; right, the same documents are marked &#8220;free now&#8221; and the interviewer shrugs, unable to tell candidates apart." srcset="https://substackcdn.com/image/fetch/$s_!WJzw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8687335-7672-4fb1-9008-8ec1e8ee64e3_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!WJzw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8687335-7672-4fb1-9008-8ec1e8ee64e3_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!WJzw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8687335-7672-4fb1-9008-8ec1e8ee64e3_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!WJzw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8687335-7672-4fb1-9008-8ec1e8ee64e3_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>There&#8217;s a famous precedent for this kind of audit. Back in 2013, Google ran the numbers on its own famously clever interviews. <a href="https://abcnews.go.com/blogs/business/2013/06/google-skips-waste-of-time-brainteaser-interview-questions">Laszlo Bock</a>, who ran People Operations there, went public with the verdict: <strong>brainteasers were &#8220;a complete waste of time&#8221; that &#8220;serve primarily to make the interviewer feel smart.&#8221;</strong> Google moved to structured interviews as a result. The lesson stings a little: a signal-free process can feel rigorous for years, because nobody checks. <strong>AI didn&#8217;t create the weakness. It removed the excuse for ignoring it.</strong></p><p>You can watch the collapse happen in real interviews. In <a href="https://theskip.substack.com/p/what-pm-hiring-managers-actually">Nikhyl Singhal&#8217;s The Skip</a> (Singhal ran product at Meta and Google), hiring manager Sam Stone observes that <strong>candidates who used AI to prep their case structure &#8220;will abandon the structure the moment Q&amp;A starts, because they never internalized it.&#8221;</strong> In the same piece, product leader Mckenzie Lock shares the probe she used when screening at Netflix: when new information invalidates an assumption, &#8220;can you say &#8216;oh, that changes things&#8217; and walk through updated logic?&#8221; And Meta gives the same diagnosis from the company side. Its new interview format puts an AI assistant inside the session, partly because, in <a href="https://www.hellointerview.com/blog/meta-ai-enabled-coding">Meta&#8217;s own words</a>, it &#8220;makes LLM-based cheating less effective.&#8221; <strong>The companies that moved first aren&#8217;t fighting AI-polished candidates with detection tools. They moved the test to where polish can&#8217;t fake it.</strong></p><p>Meanwhile the requirement itself went up, not down. In Microsoft and LinkedIn&#8217;s <a href="https://news.microsoft.com/source/2024/05/08/microsoft-and-linkedin-release-the-2024-work-trend-index-on-the-state-of-ai-at-work/">Work Trend Index</a>, a survey of 31,000 people, <strong>66% of leaders said they wouldn&#8217;t hire someone without AI skills.</strong> That survey is from May 2024, and nothing published since suggests the number softened. So you&#8217;re expected to hire for a skill your instruments can&#8217;t see, using stages that stopped measuring anything. <strong>The fix isn&#8217;t a better lie detector. It&#8217;s a process that watches work instead of grading output.</strong> Five stages, five moves.</p><div><hr></div><h2>Rebuild the loop stage by stage</h2><p>Everything below comes from choices real companies have published, plus my own read on how to adapt them to a PM seat. <strong>Treat the five moves as parts to adapt, not a recipe to obey.</strong> Your org, your seat, your constraints. Run the ones that fit.</p><p>Here&#8217;s the full map before we go stage by stage.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mJbt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd5fc2e-0013-4ab0-9089-cc3a664e3ecd_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mJbt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd5fc2e-0013-4ab0-9089-cc3a664e3ecd_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!mJbt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd5fc2e-0013-4ab0-9089-cc3a664e3ecd_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!mJbt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd5fc2e-0013-4ab0-9089-cc3a664e3ecd_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!mJbt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd5fc2e-0013-4ab0-9089-cc3a664e3ecd_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mJbt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd5fc2e-0013-4ab0-9089-cc3a664e3ecd_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4dd5fc2e-0013-4ab0-9089-cc3a664e3ecd_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4590456,&quot;alt&quot;:&quot;Hand-drawn flow of five stages &#8212; job description that names real AI usage, screen asking for the last thing you built, interview with AI in the room, work sample as a live build, decision with a bar plus judgment.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/206622864?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd5fc2e-0013-4ab0-9089-cc3a664e3ecd_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Hand-drawn flow of five stages &#8212; job description that names real AI usage, screen asking for the last thing you built, interview with AI in the room, work sample as a live build, decision with a bar plus judgment." title="Hand-drawn flow of five stages &#8212; job description that names real AI usage, screen asking for the last thing you built, interview with AI in the room, work sample as a live build, decision with a bar plus judgment." srcset="https://substackcdn.com/image/fetch/$s_!mJbt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd5fc2e-0013-4ab0-9089-cc3a664e3ecd_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!mJbt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd5fc2e-0013-4ab0-9089-cc3a664e3ecd_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!mJbt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd5fc2e-0013-4ab0-9089-cc3a664e3ecd_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!mJbt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd5fc2e-0013-4ab0-9089-cc3a664e3ecd_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Write AI into the job description</h3><p>Stop writing &#8220;familiarity with AI tools is a plus.&#8221; The most advanced companies on this front put AI usage in the requirements section and name tools, the way postings used to name SQL. <strong>The strongest reqs treat AI usage as a requirement with teeth, not a vibe.</strong> All of these lines come from live postings I pulled off the companies&#8217; own job boards this week, quoted in full so you can borrow whole requirements, not fragments:</p><ul><li><p><strong><a href="https://jobs.ashbyhq.com/notion/35785e61-c4c3-44ec-a401-6741d89dd16a">Notion</a></strong> (PM, Workspaces, an everyday workspace-product seat): &#8220;AI-pilled: You have comfort and an ongoing curiosity with using AI tools for your product development process.&#8221; And on every one of its 141 live postings, Notion adds: &#8220;You don&#8217;t need deep AI expertise for every role, but we do expect every Notino to be intellectually curious, drawn to tinkering and discovery, and excited to use AI as a real collaborator in their work.&#8221;</p></li><li><p><strong><a href="https://jobs.ashbyhq.com/supabase/184c3ad5-5d5f-44a1-98f7-65ff6f287b2f">Supabase</a></strong> (PM, Interfaces; the line recurs across their PM postings): &#8220;You use AI to move faster. You use AI tools to compress the slow parts of the job (research, drafting, synthesizing feedback) so you spend more time on judgment calls, and you&#8217;ve built enough with agents to have real opinions on what makes an interface agent-friendly.&#8221;</p></li><li><p><strong><a href="https://careers.airbnb.com/positions/8044715?gh_jid=8044715">Airbnb</a></strong> (PM, Incubations, a consumer seat asking for 10+ years of experience): &#8220;Demonstrated curiosity and point of view on incorporating AI tools into the product workflow.&#8221;</p></li><li><p><strong><a href="https://jobs.generalcatalyst.com/companies/canva/jobs/82275771-pexels-product-manager">Canva</a></strong> (PM for Pexels, their stock-photo product): &#8220;We&#8217;re looking for an AI-embracing entrepreneurial type product manager.&#8221; And in the experience list: &#8220;You embrace AI for automation, prototyping, report generation, data analysis, etc.&#8221;</p></li><li><p><strong><a href="https://stripe.com/jobs/search?gh_jid=7809139">Stripe</a></strong> (growth PM, in Minimum Requirements): &#8220;Experience building AI-powered, conversational, or agentic products. You understand what it takes to ship AI that works reliably for real users, not just in demos.&#8221; And under preferred qualifications: &#8220;You have shipped products on top of these technologies, not just evaluated them.&#8221;</p></li><li><p><strong><a href="https://jobs.ashbyhq.com/ramp/a3afd259-ba6b-4eb0-a1b6-05d01dddacd8">Ramp</a></strong> (PM, Agentic CX): &#8220;We&#8217;re looking for builders who can vibe-code a prototype before lunch and write the rollout plan after.&#8221; The requirements spell it out: &#8220;Deep hands-on experience building with AI: you&#8217;ve prototyped, shipped, and iterated on AI tools, agents, or workflows, not just managed roadmaps about them. Technical fluency with modern AI coding harnesses (Cursor, Claude Code, Codex).&#8221; And: &#8220;Fluency in data and AI evals: you know when to trust numbers and when to lean on principles.&#8221;</p></li><li><p><strong><a href="https://job-boards.greenhouse.io/anthropic/jobs/5247407008">Anthropic</a></strong> (research PM, in Minimum Qualifications, in full): &#8220;Have a deep passion and curiosity for AI and LLMs. Use AI regularly.&#8221;</p></li></ul><p>One distinction before you borrow. At Anthropic or on Ramp&#8217;s agentic products, asking for AI depth is as natural as a payments seat asking for payments experience: the product is AI, so the requirement writes itself. The lines worth copying are the other kind: a workspace product, a home-rental team, and a stock-photo library writing AI usage into ordinary PM seats. <strong>That&#8217;s the expectation spreading beyond AI products,</strong> and it&#8217;s the part that applies to your posting whatever you build.</p><p>Now decide which ask you&#8217;re actually making. The postings above split into three distinct tiers, and mixing them up is how job descriptions turn into wish lists.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VE00!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F932e5fae-9d25-49dc-99de-93ab5e54c1b4_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VE00!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F932e5fae-9d25-49dc-99de-93ab5e54c1b4_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!VE00!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F932e5fae-9d25-49dc-99de-93ab5e54c1b4_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!VE00!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F932e5fae-9d25-49dc-99de-93ab5e54c1b4_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!VE00!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F932e5fae-9d25-49dc-99de-93ab5e54c1b4_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VE00!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F932e5fae-9d25-49dc-99de-93ab5e54c1b4_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/932e5fae-9d25-49dc-99de-93ab5e54c1b4_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4761785,&quot;alt&quot;:&quot;Hand-drawn three ascending shelves &#8212; works faster with AI (every PM seat), prototypes with AI tools (teams shipping weekly), owns evals (AI-product teams).&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/206622864?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F932e5fae-9d25-49dc-99de-93ab5e54c1b4_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Hand-drawn three ascending shelves &#8212; works faster with AI (every PM seat), prototypes with AI tools (teams shipping weekly), owns evals (AI-product teams)." title="Hand-drawn three ascending shelves &#8212; works faster with AI (every PM seat), prototypes with AI tools (teams shipping weekly), owns evals (AI-product teams)." srcset="https://substackcdn.com/image/fetch/$s_!VE00!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F932e5fae-9d25-49dc-99de-93ab5e54c1b4_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!VE00!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F932e5fae-9d25-49dc-99de-93ab5e54c1b4_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!VE00!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F932e5fae-9d25-49dc-99de-93ab5e54c1b4_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!VE00!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F932e5fae-9d25-49dc-99de-93ab5e54c1b4_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>Tier one asks for a PM who works faster with AI:</strong> the Notion, Supabase, and Airbnb language. <strong>Tier two asks for a PM who prototypes with AI coding tools by name:</strong> the Ramp language, echoed in <a href="https://job-boards.greenhouse.io/anthropic/jobs/5096878008">Anthropic&#8217;s Labs PM posting</a> (&#8221;Prototype with AI tools like Claude Code&#8221;). <strong>Tier three asks for a PM who owns evals</strong>, the tests that measure whether an AI feature actually works: Anthropic&#8217;s <a href="https://job-boards.greenhouse.io/anthropic/jobs/5247640008">Claude Code PM posting</a> wants someone who has &#8220;personally built agentic evals,&#8221; and <a href="https://boards.greenhouse.io/figma/jobs/6100482004">Figma</a> and <a href="https://databricks.com/company/careers/open-positions/job?gh_jid=8560772002">Databricks</a> write eval ownership straight into PM responsibilities. <strong>Most seats need tier one or two, and writing all three into one req doesn&#8217;t get you a unicorn, it gets you an empty pipeline.</strong> Pick the tier, write two or three specific bullets, and move on. The req is now making a promise the rest of your process has to keep.</p><h3>Screen for their last real AI workflow</h3><p>The old screening question (&#8221;are you familiar with AI tools?&#8221;) is answerable by anyone with a pulse and a ChatGPT subscription. Replace it with two questions that can&#8217;t be prepped.</p><ul><li><p>First: <strong>&#8220;Walk me through the last thing you used AI for, end to end.&#8221;</strong></p></li><li><p>Second: <strong>&#8220;When has AI been confidently wrong for you, and how did you catch it?&#8221;</strong></p></li></ul><p>Both were published by <a href="https://www.metaview.ai/resources/blog/ai-fluency-rubric-interview-skills-framework">Metaview</a>, a recruiting-software company, building on the fluency rubric Zapier&#8217;s co-founder Wade Foster made public. Vendor source, but the questions stand on their own. <strong>Ten minutes with these two questions tells you more than an hour of tool-name bingo.</strong></p><p>The second question is the real detector. Anyone who genuinely works with AI has been burned by it: the hallucinated citation, the confidently wrong data pull, the beautiful answer built on a misread premise. They&#8217;ll tell you the story with texture and a little embarrassment, and then, crucially, they&#8217;ll tell you <strong>what they changed about how they verify.</strong> A candidate who has only read about AI gives you abstractions about &#8220;hallucination risks.&#8221; <strong>Real usage leaves scar tissue, and scar tissue can&#8217;t be improvised in a screening call.</strong> The question is kind, too: you&#8217;re inviting a story they&#8217;ll enjoy telling, not running a quiz.</p><p>Zapier, the most codified case I found, is worth mining beyond the two questions. It checks AI fluency at four fixed points for every hire in every role (&#8221;The application, Initial (human or AI) screen, Skills test, Executive interview&#8221;) and probes four components: &#8220;<strong>AI mindset, strategy, building, and accountability.&#8221;</strong> The detail worth stealing came in <a href="https://zapier.com/blog/raising-ai-fluency-bar-in-hiring/">the rubric&#8217;s second version</a>: they now assess <strong>&#8220;AI fluency slope, not a snapshot,&#8221; the candidate&#8217;s trajectory rather than today&#8217;s toolkit.</strong> Listen for the slope in the workflow answer: someone whose story ends &#8220;and last month I changed how I do it&#8221; is climbing; someone reciting a setup from a year ago has plateaued. Metaview&#8217;s read of the same rubric describes what the top of the scale sounds like: <strong>someone who &#8220;redesigns the work around AI&#8221; and &#8220;builds systems, prompts, or agents that other people use.&#8221;</strong></p><p>You don&#8217;t need four checkpoints. <strong>You need these two questions asked early enough that nobody spends three weeks interviewing someone who fails the bar in minute ten.</strong> Your recruiter can ask them word for word, which is exactly the point. The candidates who clear them earn the round where things get interesting: the one with AI in the room.</p><h3>Put AI in the interview room</h3><p>Next decision: <strong>what happens when a candidate wants to use AI in your interviews?</strong> Right now most teams have no answer, which is the worst answer. Your interviewers assume it&#8217;s banned, your candidates assume it&#8217;s allowed, and whatever happens tells you nothing either way. The companies that took a position landed on three different doors, and all three work. <strong>The only wrong policy is not having one, and not telling candidates before they walk in.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!L153!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe702ae72-f950-47fa-b79a-7cb204f453d7_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!L153!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe702ae72-f950-47fa-b79a-7cb204f453d7_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!L153!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe702ae72-f950-47fa-b79a-7cb204f453d7_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!L153!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe702ae72-f950-47fa-b79a-7cb204f453d7_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!L153!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe702ae72-f950-47fa-b79a-7cb204f453d7_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!L153!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe702ae72-f950-47fa-b79a-7cb204f453d7_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e702ae72-f950-47fa-b79a-7cb204f453d7_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5032870,&quot;alt&quot;:&quot;Hand-drawn three doors labeled AI required, AI allowed and scored, no AI live &#8212; with a sign above all three reading &#8220;whichever door: tell the candidate before they walk in.&#8221;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/206622864?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe702ae72-f950-47fa-b79a-7cb204f453d7_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Hand-drawn three doors labeled AI required, AI allowed and scored, no AI live &#8212; with a sign above all three reading &#8220;whichever door: tell the candidate before they walk in.&#8221;" title="Hand-drawn three doors labeled AI required, AI allowed and scored, no AI live &#8212; with a sign above all three reading &#8220;whichever door: tell the candidate before they walk in.&#8221;" srcset="https://substackcdn.com/image/fetch/$s_!L153!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe702ae72-f950-47fa-b79a-7cb204f453d7_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!L153!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe702ae72-f950-47fa-b79a-7cb204f453d7_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!L153!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe702ae72-f950-47fa-b79a-7cb204f453d7_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!L153!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe702ae72-f950-47fa-b79a-7cb204f453d7_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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><ul><li><p><strong>Door one: require it.</strong> <a href="https://www.canva.dev/blog/engineering/yes-you-can-use-ai-in-our-interviews/">Canva insists</a> that engineering candidates use AI tools in its technical interviews, because the old process &#8220;asked candidates to solve coding problems without the very tools they&#8217;d use on the job.&#8221;</p></li><li><p><strong>Door two:</strong> allow it and score it. Shopify runs two AI interviews, and as candidates <a href="https://www.hellointerview.com/blog/shopify-ai-enabled-coding">describe them</a>, &#8220;Any AI tool is fair game. Cursor, Claude Code, ChatGPT, Copilot, whatever you normally use.&#8221;</p></li><li><p><strong>Door three:</strong> keep the live round unassisted. <a href="https://www.anthropic.com/candidate-ai-guidance">Anthropic publishes its candidate policy:</a> draft your application yourself and refine it with Claude, but the live interview is you alone.</p></li></ul><p>These examples all come from engineering hiring, and that&#8217;s worth being honest about. <strong>The policy decision transfers to a PM loop as-is; the exercise formats need adapting, and the work-sample stage does that adapting.</strong></p><p><strong>Once AI is in the room, score direction, not output.</strong> One Shopify interviewer, in those same candidate reports, put the rubric in one line: &#8220;We don&#8217;t want the AI to work for you. We want you to tell it what to do.&#8221; Canva&#8217;s own interviewer guide tells candidates to <a href="https://www.canva.dev/blog/engineering/ai-interview-success/">&#8221;take time to review and understand everything that gets generated&#8221;</a>. And <a href="https://www.hellointerview.com/learn/ai-coding/overview/introduction">Hello Interview</a>, the site documenting these formats, states the stakes plainly: &#8220;The moment it starts making the architectural calls while you sit and watch, you&#8217;ve given away the exact thing the interview is there to assess.&#8221; One Rippling candidate was rejected for having &#8220;relied too heavily on AI even though their initial approach was correct.&#8221; <strong>Over-delegation is a scoring axis now, not just under-use.</strong> Watching someone accept AI garbage without blinking is the most informative thirty seconds in the whole process.</p><p>For the conversational rounds, the questions change too. <a href="https://aakashgupta.medium.com/i-coached-47-people-into-ai-pm-roles-at-300k-here-are-the-exact-questions-they-got-asked-36e239182010">Aakash Gupta</a>, who coached dozens of PMs through these rounds and collected the exact questions they got asked, reports prompts like: &#8220;Your chatbot&#8217;s response quality dropped 15% last week. How do you debug this?&#8221;, &#8220;Tell me about a time you shipped an AI feature that backfired,&#8221; and &#8220;Explain embeddings to a product designer on your team.&#8221; <strong>Notice what these test: judgment about systems that fail probabilistically, not feature-design theater.</strong> Lift the ones that fit your product and retire a case study to make room.</p><h3>Swap the take-home for a live build</h3><p>The take-home is the most broken stage in the old process, because it&#8217;s a pure artifact produced entirely off-camera. You&#8217;ll be tempted to keep it and bolt on AI-detection. Don&#8217;t. <strong>Detection is a race you can&#8217;t win, and it aims at the wrong question:</strong> you don&#8217;t actually care whether AI touched the deck, <strong>you care whether this person can think.</strong> So replace the stage entirely: watch the work happen live.</p><p>There&#8217;s solid science behind this swap, and it&#8217;s older than the AI wave. A live build is a work-sample test, an instrument that personnel-selection research has ranked among the strongest predictors of job performance for decades (<a href="https://psycnet.apa.org/record/1998-10661-006">Schmidt and Hunter&#8217;s</a> 1998 meta-analysis of 85 years of hiring data; the <a href="https://pubmed.ncbi.nlm.nih.gov/34968080/">2021 revision by Sackett and colleagues</a> puts structured interviews at the very top). You&#8217;re not chasing a trend. <strong>You&#8217;re adopting the instrument hiring science recommended all along, now with AI in the room.</strong></p><p>The PM version already exists in the wild, usually as a 45-minute prototyping case. <a href="https://www.news.aakashg.com/p/vibe-coding-interview">Aakash Gupta has coached PMs through this round</a> at &#8220;v0, Bolt, Figma, and Perplexity,&#8221; with real prompts like &#8220;Design Google Maps for the Blind&#8221; and &#8220;How would you prototype a Facebook Dating app,&#8221; and candidates choosing tools like Lovable, Bolt, or v0 for prototyping, or Cursor and Replit if they lean technical. <a href="https://lewislin.substack.com/p/dear-lewis-how-do-i-survive-a-vibe">Lewis Lin</a>, who has written PM interview prep books for a decade, describes what it actually measures: <strong>&#8220;rapid problem-solving and product judgment under pressure,&#8221; not code quality.</strong> One calibration note so you don&#8217;t over-index: Google has only piloted this round, and it&#8217;s <a href="https://substack.com/@aakashgupta/note/c-136652951">&#8221;not a standard part of Google&#8217;s process (yet)&#8221;</a>. Where it does run, <a href="https://substack.com/@aakashgupta/note/c-171847295">Jaclyn Konzelmann, Director of AI Product at Google, has described what she looks for</a>. You&#8217;re early, not late.</p><p>If you want a deeper shape to borrow, <a href="https://sierra.ai/blog/the-ai-native-interview">Sierra published its redesigned onsite</a> in April 2026: Plan, a working session where <strong>&#8220;the candidate drives ideation, while interviewers ask questions to strengthen it&#8221;</strong>; Build, two hours with &#8220;the AI tooling and frameworks of their choice&#8221;; Review, where the team debates &#8220;the key product flows and choices they made.&#8221; It&#8217;s their engineering loop, so here&#8217;s my PM adaptation: <strong>plan a feature together for twenty minutes, give them a time box and whatever tools they like, then spend the last half hour on why they built what they built.</strong> What did they cut, what did they verify, what would they ship. <strong>The prototype is just the excuse. The review conversation is where the judgment shows.</strong></p><h3>Decide with a bar, not a ranking</h3><p>Now the debrief, where all of this either compounds or unravels. <strong>The move: treat AI fluency as a minimum bar, and product judgment as the ranking.</strong> You&#8217;re not hiring the most AI-enthusiastic candidate in the pool. <strong>You&#8217;re hiring the best product judgment among everyone who cleared the bar.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Vste!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26691aa1-eb2c-4ccd-815f-e142479f5c42_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Vste!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26691aa1-eb2c-4ccd-815f-e142479f5c42_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!Vste!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26691aa1-eb2c-4ccd-815f-e142479f5c42_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!Vste!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26691aa1-eb2c-4ccd-815f-e142479f5c42_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!Vste!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26691aa1-eb2c-4ccd-815f-e142479f5c42_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Vste!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26691aa1-eb2c-4ccd-815f-e142479f5c42_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/26691aa1-eb2c-4ccd-815f-e142479f5c42_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5052673,&quot;alt&quot;:&quot;Hand-drawn high-jump bar labeled AI fluency (clears it or not) next to a podium labeled product judgment (ranks everyone who cleared).&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/206622864?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26691aa1-eb2c-4ccd-815f-e142479f5c42_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Hand-drawn high-jump bar labeled AI fluency (clears it or not) next to a podium labeled product judgment (ranks everyone who cleared)." title="Hand-drawn high-jump bar labeled AI fluency (clears it or not) next to a podium labeled product judgment (ranks everyone who cleared)." srcset="https://substackcdn.com/image/fetch/$s_!Vste!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26691aa1-eb2c-4ccd-815f-e142479f5c42_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!Vste!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26691aa1-eb2c-4ccd-815f-e142479f5c42_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!Vste!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26691aa1-eb2c-4ccd-815f-e142479f5c42_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!Vste!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26691aa1-eb2c-4ccd-815f-e142479f5c42_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>Make the bar concrete, and borrow Zapier&#8217;s &#8220;Capable&#8221; level to do it: <strong>AI embedded in their actual work, &#8220;repeatable systems, not one-off prompts,&#8221; and clear impact on quality or speed.</strong> A candidate who can&#8217;t show a single real workflow in the screen, and who delegates every decision to the AI in the live build, doesn&#8217;t clear it. <strong>That&#8217;s a no in 2026 the same way &#8220;can&#8217;t write a PRD&#8221; was a no in 2019.</strong> But clearing the bar higher earns no extra points, because the ranking runs on something else.</p><p>The data backs the weighting. Across <a href="https://axialsearch.com/insights/ai-product-management-jobs/">592 AI-PM postings analyzed in early 2025</a>, product management and cross-functional collaboration each appeared in 32% of listings, while prompt engineering showed up in 9%. Even the roles with AI in the title rank on classic judgment. The sharpest new skill to probe for is evals. <a href="https://www.lennysnewsletter.com/p/kevin-weil-open-ai">Kevin Weil</a>, who was leading OpenAI&#8217;s product org at the time, said it plainly in April 2025: <strong>&#8220;Writing evals is going to become a core skill for product managers.&#8221;</strong> Honest calibration: eval experience is a hard requirement for AI-product seats (it&#8217;s literally in Anthropic&#8217;s and Figma&#8217;s postings) and a strong differentiator everywhere else. <strong>Match the evals expectation to the tier you picked when you wrote the req, and don&#8217;t punish a tier-one candidate for missing a tier-three skill.</strong></p><p>One more upgrade, borrowed from decision science. In <a href="https://www.hup.harvard.edu/books/9780316451406">Noise</a> (2021), Daniel Kahneman, Olivier Sibony, and Cass Sunstein show how wildly hiring judgments vary between judges, and prescribe the fix: <strong>score each dimension independently, and delay the overall verdict until the end.</strong> &#8220;Fluency is a bar, judgment is the ranking&#8221; is that protocol in one line. And in your judgment scoring, weight the moment Mckenzie Lock&#8217;s probe targets: did the candidate ever say &#8220;oh, that changes things&#8221; and re-reason live? <strong>That moment can&#8217;t be faked, and it&#8217;s the single strongest signal your new process produces.</strong> Which leaves one question: how hard should you actually push the AI requirement?</p><div><hr></div><h2>How much AI to actually demand</h2><p>Here&#8217;s the objection you might already be forming: &#8220;We&#8217;re not Ramp or Anthropic. Most PM postings don&#8217;t ask for any of this. My next PM still needs discovery, stakeholder work, and judgment. Isn&#8217;t rewriting the whole process premature?&#8221; The data honestly supports half of it. <a href="https://itamargilad.com/ai-pm-future/">Itamar Gilad&#8217;s analysis</a> of TrueUp data found that <strong>roughly one in seven open PM roles asked for AI skills as of early 2026,</strong> and he&#8217;s blunt about the hype: &#8220;There&#8217;s no indication that all PM roles will require deep AI knowledge and skills.&#8221; I&#8217;ll add my own check: when I scanned OpenAI&#8217;s 13 live PM postings this week, most carried no AI-usage bullets at all. <strong>At AI-native companies the expectation is ambient culture, not req language, and the explicit bullets cluster at companies making the shift deliberate.</strong> If your org writes its expectations down rather than absorbing them by osmosis, the bullets above are your template.</p><p>But look at what the objection is actually objecting to. The rebuilt process isn&#8217;t a higher AI bar bolted onto every stage. <strong>It&#8217;s better instruments for the things you already hire on.</strong> Even your most classic hire, the discovery-and-stakeholders PM with no AI ambitions, now walks through a world where every r&#233;sum&#233;, case answer, and take-home can be AI-generated. The screen question, the live build, and the re-reasoning probe measure judgment better than the old stages did, whatever the seat. <strong>Fix the instruments because they&#8217;re broken, not because every PM must become an AI specialist.</strong></p><p>The walk-backs teach the closing lesson. Duolingo went AI-first loudly in April 2025, and a year later its co-founder Luis von Ahn <a href="https://fortune.com/2026/04/13/duolingo-ceo-luis-von-ahn-ai-usage-requirement-employee-performance-evaluations/">dropped the idea of evaluating employees on AI usage</a>: <strong>&#8220;the most important thing in your performance is that you are doing whatever your job is as well as possible.</strong> A lot of times AI can help you with that. But if it can&#8217;t, I&#8217;m not going to force you to do that.&#8221; His mandate was about evaluating current employees, not hiring, but the lesson transfers to the bar you set at the door. <strong>Don&#8217;t make AI zealotry the bar. Make judgment-with-AI the bar.</strong> The process you just rebuilt does exactly that: fluency is one gate, and it&#8217;s never the ranking.</p><div><hr></div><h2>Start with the req on your desk</h2><p>When leadership or your recruiter asks what&#8217;s changing, here&#8217;s the paragraph to hand them:</p><blockquote><p>AI made polished artifacts free, so <strong>our hiring process can&#8217;t grade artifacts anymore.</strong> We&#8217;re redesigning it to <strong>watch how candidates work:</strong> the req names real AI usage, the screen asks for their last AI workflow end to end, the interview puts AI in the room with a policy we publish, the work sample is a live build we review together, and the decision holds a fluency bar while judgment keeps the casting vote. The bar isn&#8217;t &#8220;knows AI.&#8221; <strong>It&#8217;s &#8220;directs AI and catches it when it&#8217;s wrong.</strong></p></blockquote><p>It travels well: to leadership, to your recruiter, to the staff PM who&#8217;ll run half the interviews.</p><p>A generation of hiring managers learned from <a href="https://www.goodreads.com/book/show/6361445">Who</a>, Geoff Smart and Randy Street&#8217;s 2008 hiring classic, to write the scorecard before meeting a single candidate. Same discipline here, one page shorter. The checklist, for the opening you already have:</p><ul><li><p><strong>Job description:</strong> pick tier one, two, or three, and write it into the requirements as plainly as Anthropic&#8217;s &#8220;Use AI regularly.&#8221;</p></li><li><p><strong>Screen:</strong> the two questions, word for word, in the recruiter&#8217;s script.</p></li><li><p><strong>Interview:</strong> pick a policy (require, allow-and-score, or unassisted-live) and put it in the candidate prep email.</p></li><li><p><strong>Work sample:</strong> one prompt, their tools, 45 minutes, then thirty minutes on their choices.</p></li><li><p><strong>Decision:</strong> fluency is a bar, judgment is the ranking; one line in the debrief template.</p></li></ul><p>Your hiring process is also a message, and not just to candidates. The team you already have reads every posting you put up and every interview you run as a statement of what the org actually values. <strong>When they see you watching how people work with AI instead of counting buzzwords, that tells them more about the AI-first mandate than any kickoff deck.</strong> The first candidate through the rebuilt loop will show you more in 45 live minutes than the last ten take-homes combined. The posting on your desk is due Friday anyway. <strong>Make it the first artifact of the new process.</strong></p>]]></content:encoded></item><item><title><![CDATA[How to build AI agents business teams want]]></title><description><![CDATA[Decide if the job needs an agent. Interview the people who do it. Prototype from their answers. Hand your AI team a buildable spec. Start version one on the work nobody wants.]]></description><link>https://www.theaithinker.com/p/how-to-build-ai-agents-business-teams</link><guid isPermaLink="false">https://www.theaithinker.com/p/how-to-build-ai-agents-business-teams</guid><dc:creator><![CDATA[Adam Faik]]></dc:creator><pubDate>Mon, 13 Jul 2026 11:00:38 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/61f31694-eac6-4fbf-b31c-9de5a3d91ba4_1024x731.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The kickoff meeting for your first business-team agent has a shape you&#8217;ll recognize. On one side of the table sits the support team lead. She heard &#8220;AI agent&#8221; three weeks ago, and she&#8217;s been quietly updating her CV since. On the other side sits your data scientist, laptop open, asking the question he always asks: &#8220;So, what should the agent actually do? Send me the requirements and I&#8217;ll start building.&#8221; And in the middle sits you, the product person, holding a mandate from leadership that says agentify support and not much else. <strong>Nobody in that room has the spec, and everybody expects you to produce it.</strong></p><p>Here&#8217;s the thing nobody tells you about that meeting. <strong>The spec already exists.</strong> It just isn&#8217;t written anywhere: it lives in the heads of the people who do the job today, stored in a language no data scientist speaks. What the team&#8217;s best performer would tell a new hire on day one? That&#8217;s your system prompt. The tabs she keeps open while she works? Those are your tools. The things she&#8217;d never let a new hire do alone? Those are your guardrails. <strong>Your job isn&#8217;t to write the spec. It&#8217;s to run the interviews that surface it.</strong></p><p>In the previous post I wrote about <a href="https://www.theaithinker.com/p/how-to-pick-the-ai-agents-worth-building">how to pick the AI agents worth building</a>: point the next one at your team&#8217;s real constraint instead of sprinkling agents everywhere. This is what comes after you&#8217;ve picked the spot. The whole method fits in one sentence: <strong>every component of an agent is the answer to a plain-language question, and version one should only do the work the team would happily give away.</strong> The rest is knowing which questions to ask, and in what order.</p><p>The whole method runs through one worked example, a customer support team, picked to make every step tangible: swap in finance, sales ops, or HR and <strong>the moves stay the same. </strong>Here&#8217;s the path at a glance.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jkSV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0530b9da-2248-4493-b1eb-8b1195196898_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jkSV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0530b9da-2248-4493-b1eb-8b1195196898_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!jkSV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0530b9da-2248-4493-b1eb-8b1195196898_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!jkSV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0530b9da-2248-4493-b1eb-8b1195196898_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!jkSV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0530b9da-2248-4493-b1eb-8b1195196898_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jkSV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0530b9da-2248-4493-b1eb-8b1195196898_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0530b9da-2248-4493-b1eb-8b1195196898_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4005023,&quot;alt&quot;:&quot;Hand-drawn infographic showing four stops on a path. Stop 1, Decide: a person at a fork choosing between a script, an agent, and &#8220;not yet&#8221;. Stop 2, Interview: two people talking across a desk, one taking notes. Stop 3, Translate and prototype: interview notes turning into labeled building blocks, next to a person showing a cardboard robot to a team member. Stop 4, Land it: a small robot doing a chore while the team works.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/206599017?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0530b9da-2248-4493-b1eb-8b1195196898_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Hand-drawn infographic showing four stops on a path. Stop 1, Decide: a person at a fork choosing between a script, an agent, and &#8220;not yet&#8221;. Stop 2, Interview: two people talking across a desk, one taking notes. Stop 3, Translate and prototype: interview notes turning into labeled building blocks, next to a person showing a cardboard robot to a team member. Stop 4, Land it: a small robot doing a chore while the team works." title="Hand-drawn infographic showing four stops on a path. Stop 1, Decide: a person at a fork choosing between a script, an agent, and &#8220;not yet&#8221;. Stop 2, Interview: two people talking across a desk, one taking notes. Stop 3, Translate and prototype: interview notes turning into labeled building blocks, next to a person showing a cardboard robot to a team member. Stop 4, Land it: a small robot doing a chore while the team works." srcset="https://substackcdn.com/image/fetch/$s_!jkSV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0530b9da-2248-4493-b1eb-8b1195196898_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!jkSV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0530b9da-2248-4493-b1eb-8b1195196898_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!jkSV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0530b9da-2248-4493-b1eb-8b1195196898_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!jkSV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0530b9da-2248-4493-b1eb-8b1195196898_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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><ul><li><p><strong>The gate.</strong> I&#8217;ll give you the five questions that tell you whether a job needs an agent, a simple script, or nothing at all.</p></li><li><p><strong>The interviews.</strong> Three conversations with a support team, with the exact questions to ask and what each answer is for.</p></li><li><p><strong>The translation.</strong> Every answer becomes a spec component, and you&#8217;ll prototype the agent yourself before anyone commits a sprint.</p></li><li><p><strong>The landing.</strong> You&#8217;ll see how to scope version one so a team that fears the project ends up asking the agent to do more.</p></li></ul><p>By the end you&#8217;ll have the full interview script and the translation table between business answers and agent components. <strong>You walk into your next discovery meeting with questions the team can actually answer, and you walk out with a spec your AI team can actually build.</strong> There&#8217;s no platform to pick: the method works with whatever agent stack your company already chose (Amazon Bedrock AgentCore, Databricks, or something your AI team built themselves), and an AI workspace like Claude Cowork or Claude Code covers the prototype step.</p><p>Grab your notebook.</p><div><hr></div><h2>Decide if the job needs an agent</h2><p>The oldest failure mode in innovation has a name: <strong>a solution in search of a problem.</strong> A technology shows up, it&#8217;s impressive, and whole organizations start asking &#8220;where could we use this?&#8221; The question is backwards, and the people who build things for a living have been saying so for years. <a href="https://urilevine.com/book/">Uri Levine</a>, who co-founded Waze, put the fix on the cover of his book: <strong>fall in love with the problem, not the solution.</strong> Problems are constant; solutions are just the current best way to serve them. <strong>Nobody in your company needs an agent.</strong> They need the backlog to stop growing, the customer answered today, the notes written without staying late.</p><p>AI mandates invert this by design. <strong>&#8220;Agentify support&#8221; hands you a solution with the problem line left blank</strong>, and your own excitement pulls the same direction, because agents are genuinely fun to build. I&#8217;ve caught myself doing it: tool first, problem later, demo nobody asked for. <strong>So the first discipline of this job is to flip the sentence back.</strong> Start from the work, find the problem worth solving, then ask whether an agent is even the right shape of solution. <strong>Your job isn&#8217;t to bring agents to the business.</strong> It&#8217;s to bring the business a problem worth solving, with whatever technology fits.</p><p>The &#8220;right shape&#8221; question has a sharp edge to it. <a href="https://www.anthropic.com/engineering/building-effective-agents">Anthropic&#8217;s Building Effective Agents</a> draws the line I use in every scoping conversation. A workflow follows a path you script in advance: cheaper, faster, predictable. <strong>An agent decides its own path as it goes</strong>, and Anthropic reserves that for problems where <strong>&#8220;it&#8217;s difficult or impossible to predict the required number of steps.&#8221;</strong> In plain terms: if you can draw the flowchart, script the flowchart. <strong>An agent earns its complexity only when every case bends the flowchart.</strong></p><p>I run every candidate job through five questions before committing to anything. The team can answer all five without a single technical term.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zTRw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac27a36c-6236-4794-86dd-dbd8e12d5292_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zTRw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac27a36c-6236-4794-86dd-dbd8e12d5292_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!zTRw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac27a36c-6236-4794-86dd-dbd8e12d5292_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!zTRw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac27a36c-6236-4794-86dd-dbd8e12d5292_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!zTRw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac27a36c-6236-4794-86dd-dbd8e12d5292_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zTRw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac27a36c-6236-4794-86dd-dbd8e12d5292_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ac27a36c-6236-4794-86dd-dbd8e12d5292_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3477366,&quot;alt&quot;:&quot;Hand-drawn infographic of work items flowing toward a person holding a checklist of five questions, then through three doors labeled &#8220;Script it&#8221;, &#8220;Agent&#8221;, and &#8220;Not yet&#8221;.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/206599017?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac27a36c-6236-4794-86dd-dbd8e12d5292_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Hand-drawn infographic of work items flowing toward a person holding a checklist of five questions, then through three doors labeled &#8220;Script it&#8221;, &#8220;Agent&#8221;, and &#8220;Not yet&#8221;." title="Hand-drawn infographic of work items flowing toward a person holding a checklist of five questions, then through three doors labeled &#8220;Script it&#8221;, &#8220;Agent&#8221;, and &#8220;Not yet&#8221;." srcset="https://substackcdn.com/image/fetch/$s_!zTRw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac27a36c-6236-4794-86dd-dbd8e12d5292_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!zTRw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac27a36c-6236-4794-86dd-dbd8e12d5292_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!zTRw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac27a36c-6236-4794-86dd-dbd8e12d5292_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!zTRw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac27a36c-6236-4794-86dd-dbd8e12d5292_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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><ol><li><p><strong>Does the work arrive different every time?</strong> If every item looks the same, a script handles it. Variety is the first hint you&#8217;re in agent territory.</p></li><li><p><strong>Does handling it take judgment calls, or rules?</strong> If the team can write the rules on a whiteboard in an hour, write the rules into code instead.</p></li><li><p><strong>What does a wrong answer cost, and can a human catch it in time?</strong> High stakes plus no review point means you&#8217;re not ready for an agent here, whatever the mandate says.</p></li><li><p><strong>Does it happen often enough to matter?</strong> A judgment-heavy task that shows up twice a quarter never pays back the build.</p></li><li><p><strong>Can an agent even reach the work?</strong> If the job lives in phone calls, hallway conversations, and a cheat-sheet in someone&#8217;s drawer, no spec survives contact. </p></li></ol><p><a href="https://cdn.openai.com/business-guides-and-resources/a-practical-guide-to-building-agents.pdf">OpenAI&#8217;s practical guide to building agents</a> puts it bluntly: <strong>validate the use case first, &#8220;otherwise, a deterministic solution may suffice.&#8221;</strong></p><p>Two contrasting tickets show the gate at work.</p><ul><li><p>A password reset arrives identical every time, follows three rules, and costs nothing when retried: script it, done in two weeks.</p></li><li><p>A refund dispute arrives wrapped in order history, customer tone, and policy exceptions: <strong>that&#8217;s judgment, that&#8217;s volume, that&#8217;s agent territory.</strong></p></li></ul><p>The refund example isn&#8217;t even mine: OpenAI&#8217;s guide names &#8220;refund approval in customer service workflows&#8221; as its canonical case of agent-worthy work, the kind <strong>full of &#8220;nuanced judgment, exceptions, or context-sensitive decisions.&#8221;</strong></p><p>And sometimes the gate says no. Telling a team &#8220;you don&#8217;t need an agent, you need a script, and it&#8217;ll be done in two weeks&#8221; feels like walking away from the mandate. It&#8217;s the opposite. <strong>Saying &#8220;no agent needed&#8221; when it&#8217;s true is the cheapest trust you&#8217;ll ever buy,</strong> and it&#8217;s the reason the next team opens their door when you knock.</p><p>For the team you&#8217;re about to meet, the gate says yes. Time to walk in.</p><div><hr></div><h2>Run the three interviews</h2><h3>The use case: a support team under a mandate</h3><p>Time to run the method on something concrete, with you in the driver&#8217;s seat. Picture a mid-size B2B software company. A nine-person customer operations team handles order issues, refund disputes, and account changes: roughly sixty cases a day, forty minutes of handling time on an average case, a backlog that grows a little every month, and a hiring freeze. <strong>Leadership looks at those numbers and hands you the mandate: &#8220;bring AI to support.&#8221;</strong></p><p>The team lead, call her Claire, runs a team that&#8217;s proud of its judgment. They talk customers out of churning every single week. <strong>What Claire hears in &#8220;agentify support&#8221; is a project aimed at her team&#8217;s future</strong>, and she&#8217;s not wrong to hear it that way: plenty of these projects get pitched exactly like that. The fear is rational. <strong>Pretending the fear isn&#8217;t in the room poisons every interview that follows, so name it in the first meeting and don&#8217;t argue it away.</strong> You can&#8217;t logic someone out of a fear the headlines keep feeding. You can only design the project so the fear doesn&#8217;t come true, and let the design speak.</p><p>The posture you take matters as much as anything you say. You&#8217;re not the expert arriving to optimize anyone. <strong>You&#8217;re the apprentice, and they&#8217;re the master craftsman:</strong> you&#8217;re there to learn the job well enough to describe it faithfully. An apprentice studies the master&#8217;s craft; the master stays the master. <strong>That single stance changes what people tell you.</strong> Experts perform for auditors. They teach apprentices.</p><p>One more reframe before the first interview, this time for leadership. &#8220;AI in support&#8221; is not a deliverable. <strong>A deliverable is a number:</strong> minutes back per case, backlog age, first-response time, with quality held steady on the numbers the team already reports, like satisfaction scores and escalation rate. <strong>Commit to measuring before and after.</strong> An agent without a number attached is a demo, not a delivery.</p><p><strong>So you ask Claire for three slots on her team&#8217;s calendar</strong>, spread over one week: an hour with her at a whiteboard, ninety minutes with her two best people, and half a day sitting behind someone while they work. Plus ten recent cases: good, bad, and ugly.</p><p>The interview format descends from <a href="https://www.nngroup.com/articles/contextual-inquiry/">contextual inquiry</a>, a research method Hugh Beyer and Karen Holtzblatt developed at Digital Equipment Corporation in the late 1980s. Its core instruction: <strong>study the work as it happens, not the process as documented, in the posture of an apprentice learning a craft.</strong> Every team has a standard operating procedure, the SOP: the official document that says how the work is supposed to run. It describes the happy path, and the job lives in the exceptions. Never ask a business team &#8220;what are your requirements?&#8221; Nobody who does real work can answer that question. <strong>Ask about last Tuesday instead.</strong></p><p>Three conversations, three different jobs. Here&#8217;s the map.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!v1LN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d2f929a-846d-4713-9273-c5cd65f5a0f1_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!v1LN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d2f929a-846d-4713-9273-c5cd65f5a0f1_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!v1LN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d2f929a-846d-4713-9273-c5cd65f5a0f1_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!v1LN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d2f929a-846d-4713-9273-c5cd65f5a0f1_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!v1LN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d2f929a-846d-4713-9273-c5cd65f5a0f1_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!v1LN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d2f929a-846d-4713-9273-c5cd65f5a0f1_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7d2f929a-846d-4713-9273-c5cd65f5a0f1_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3967849,&quot;alt&quot;:&quot;Hand-drawn infographic with three panels: a team lead at a whiteboard sketching a case flow, two teammates replaying a case at a screen, and an observer taking notes behind someone working. Below, a stack of ten annotated cases labeled &#8220;what good looks like&#8221;.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/206599017?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d2f929a-846d-4713-9273-c5cd65f5a0f1_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Hand-drawn infographic with three panels: a team lead at a whiteboard sketching a case flow, two teammates replaying a case at a screen, and an observer taking notes behind someone working. Below, a stack of ten annotated cases labeled &#8220;what good looks like&#8221;." title="Hand-drawn infographic with three panels: a team lead at a whiteboard sketching a case flow, two teammates replaying a case at a screen, and an observer taking notes behind someone working. Below, a stack of ten annotated cases labeled &#8220;what good looks like&#8221;." srcset="https://substackcdn.com/image/fetch/$s_!v1LN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d2f929a-846d-4713-9273-c5cd65f5a0f1_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!v1LN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d2f929a-846d-4713-9273-c5cd65f5a0f1_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!v1LN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d2f929a-846d-4713-9273-c5cd65f5a0f1_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!v1LN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d2f929a-846d-4713-9273-c5cd65f5a0f1_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Interview 1: map the job</h3><p>One hour with Claire and a whiteboard. The goal is the map, not the details. Five questions do the work:</p><ul><li><p>&#8221;Walk me through what happens between a case landing and a case closing. Whiteboard-level.&#8221;</p></li><li><p>&#8221;Where does the time actually go? Not where the process doc says. Where it really goes.&#8221;</p></li><li><p>&#8221;Which cases does your team dread? Which ones do people fight over because they&#8217;re interesting?&#8221;</p></li><li><p>&#8221;What work would your team happily never do again?&#8221;</p></li><li><p>&#8221;What numbers do you already report on?&#8221;</p></li></ul><p>One hour of those questions produces something like this on the whiteboard.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QmqF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97e62e1a-52f8-4620-9ad9-5b9cc06830bd_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QmqF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97e62e1a-52f8-4620-9ad9-5b9cc06830bd_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!QmqF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97e62e1a-52f8-4620-9ad9-5b9cc06830bd_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!QmqF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97e62e1a-52f8-4620-9ad9-5b9cc06830bd_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!QmqF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97e62e1a-52f8-4620-9ad9-5b9cc06830bd_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QmqF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97e62e1a-52f8-4620-9ad9-5b9cc06830bd_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/97e62e1a-52f8-4620-9ad9-5b9cc06830bd_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3116431,&quot;alt&quot;:&quot;Hand-drawn example of a whiteboard map. A case flows from &#8220;lands in queue&#8221; through &#8220;gather context&#8221;, &#8220;decide&#8221;, &#8220;act&#8221;, &#8220;write the wrap-up note&#8221; to &#8220;closed&#8221;. Time markers show where the minutes go, a frown marks the wrap-up notes, a star marks the save-the-customer calls, and a corner box lists the team&#8217;s numbers.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/206599017?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97e62e1a-52f8-4620-9ad9-5b9cc06830bd_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Hand-drawn example of a whiteboard map. A case flows from &#8220;lands in queue&#8221; through &#8220;gather context&#8221;, &#8220;decide&#8221;, &#8220;act&#8221;, &#8220;write the wrap-up note&#8221; to &#8220;closed&#8221;. Time markers show where the minutes go, a frown marks the wrap-up notes, a star marks the save-the-customer calls, and a corner box lists the team&#8217;s numbers." title="Hand-drawn example of a whiteboard map. A case flows from &#8220;lands in queue&#8221; through &#8220;gather context&#8221;, &#8220;decide&#8221;, &#8220;act&#8221;, &#8220;write the wrap-up note&#8221; to &#8220;closed&#8221;. Time markers show where the minutes go, a frown marks the wrap-up notes, a star marks the save-the-customer calls, and a corner box lists the team&#8217;s numbers." srcset="https://substackcdn.com/image/fetch/$s_!QmqF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97e62e1a-52f8-4620-9ad9-5b9cc06830bd_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!QmqF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97e62e1a-52f8-4620-9ad9-5b9cc06830bd_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!QmqF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97e62e1a-52f8-4620-9ad9-5b9cc06830bd_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!QmqF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97e62e1a-52f8-4620-9ad9-5b9cc06830bd_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>Each answer has a destination:</p><ul><li><p>The walkthrough becomes the workflow skeleton.</p></li><li><p>The where-does-time-go answer becomes your pain heatmap.</p></li><li><p>The dread-versus-fight-over answer tells you what the team wants to keep, which matters more than what they want to lose.</p></li><li><p>The last question hands you a value baseline without building a single new dashboard.</p></li><li><p>And the &#8220;happily never again&#8221; question is the one to listen hardest to, because <strong>its answer becomes version one. </strong>For Claire&#8217;s team the answer is unanimous: the case wrap-up notes. Every closed case needs a summary in the CRM, the customer database where every interaction gets logged. Everyone writes them badly at 6pm. Nobody reads them until they desperately need them. Hold that thought.</p></li></ul><h3>Interview 2: learn the craft</h3><p>Ninety minutes with the two people Claire names as her best: Marco, eight years on the team, and Ana, three. Screens open, real cases on them. This is where the agent&#8217;s actual behavior gets specified, one plain question at a time:</p><ul><li><p>&#8221;Show me the last case that took you over an hour. Click through it exactly as you did.&#8221;</p></li><li><p>&#8221;What would you tell a new hire on day one that isn&#8217;t written anywhere?&#8221;</p></li><li><p>&#8221;What&#8217;s open on your screen while you work a case?&#8221;</p></li><li><p>&#8221;What do you find yourself re-explaining or re-looking-up, case after case?&#8221;</p></li><li><p>&#8221;When do you stop and pull in Claire or another team? What&#8217;s the trigger?&#8221;</p></li><li><p>&#8221;What would you never let a new hire do alone in their first month?&#8221;</p></li></ul><p><strong>The answers are the spec, verbatim.</strong> Marco&#8217;s day-one rule: &#8220;if the customer mentions a deadline, handle it today, even if the queue says otherwise.&#8221; That sentence goes straight into the agent&#8217;s instructions. His open tabs: the CRM, the order database, and the refund policy wiki page, which is outdated, and everyone knows exactly which parts to ignore. Write down which parts they ignore. That&#8217;s institutional knowledge no document holds. Then Ana pulls a laminated cheat-sheet out of her desk drawer, and that&#8217;s when you know the interview is working. Every team has one. It&#8217;s never in the wiki. And the never-alone list arrives without hesitation: refunds above a threshold, anything that smells legal, and any promise about delivery dates.</p><h3>Interview 3: shadow the work</h3><p>Half a day sitting behind Marco and Ana while they work real cases. No questions this time. <strong>You&#8217;re watching for the gap between the process document and the craft:</strong> the case that needs an actual phone call to the warehouse, the customer Ana recognizes as burned-twice-before from memory because the CRM has no field for it, the moment Marco overrides the policy page because he knows it&#8217;s stale. <strong>None of that appears in any SOP</strong>, and all of it decides whether an agent succeeds or embarrasses you.</p><p>You leave the shadow session with ten annotated real cases: the input, what the human did, and what &#8220;good&#8221; looked like. <strong>Those ten cases are the most valuable artifact of the entire discovery, because they become the test set your AI team grades the agent against.</strong> One honesty note: your three interviews will surface completely different specifics than these. The questions transfer. The answers won&#8217;t. That&#8217;s the point of asking.</p><p>Three conversations, one notebook full of plain-language answers. Now comes the translation.</p><div><hr></div><h2>Turn the answers into a buildable spec</h2><h3>Write the seven components</h3><p>An agent spec has seven components. Here&#8217;s the part that surprises people: the team just answered all seven, and <strong>nobody in the room had to learn a single AI term.</strong> Five components come straight from interview answers, and the remaining two get derived from those five.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9lwJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74efa1b2-7b5e-49d2-a54f-47d4dcd4f193_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9lwJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74efa1b2-7b5e-49d2-a54f-47d4dcd4f193_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!9lwJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74efa1b2-7b5e-49d2-a54f-47d4dcd4f193_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!9lwJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74efa1b2-7b5e-49d2-a54f-47d4dcd4f193_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!9lwJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74efa1b2-7b5e-49d2-a54f-47d4dcd4f193_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9lwJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74efa1b2-7b5e-49d2-a54f-47d4dcd4f193_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/74efa1b2-7b5e-49d2-a54f-47d4dcd4f193_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3654550,&quot;alt&quot;:&quot;Hand-drawn infographic of a bridge. Left side: sticky notes with team quotes like &#8220;what I&#8217;d tell a new hire&#8221; and &#8220;the tabs open on my screen&#8221;. Right side: building blocks labeled instructions, tools, memory, guardrails, evals. Arrows connect each note to its block. A footnote says workflow and model are derived afterwards.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/206599017?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74efa1b2-7b5e-49d2-a54f-47d4dcd4f193_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Hand-drawn infographic of a bridge. Left side: sticky notes with team quotes like &#8220;what I&#8217;d tell a new hire&#8221; and &#8220;the tabs open on my screen&#8221;. Right side: building blocks labeled instructions, tools, memory, guardrails, evals. Arrows connect each note to its block. A footnote says workflow and model are derived afterwards." title="Hand-drawn infographic of a bridge. Left side: sticky notes with team quotes like &#8220;what I&#8217;d tell a new hire&#8221; and &#8220;the tabs open on my screen&#8221;. Right side: building blocks labeled instructions, tools, memory, guardrails, evals. Arrows connect each note to its block. A footnote says workflow and model are derived afterwards." srcset="https://substackcdn.com/image/fetch/$s_!9lwJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74efa1b2-7b5e-49d2-a54f-47d4dcd4f193_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!9lwJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74efa1b2-7b5e-49d2-a54f-47d4dcd4f193_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!9lwJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74efa1b2-7b5e-49d2-a54f-47d4dcd4f193_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!9lwJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74efa1b2-7b5e-49d2-a54f-47d4dcd4f193_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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><ol><li><p><strong>Instructions: the agent&#8217;s system prompt.</strong> This is the day-one advice, the rules of thumb, the tone. It comes from &#8221;what would you tell a new hire that isn&#8217;t written anywhere?&#8221; Marco&#8217;s deadline rule goes into the prompt word for word. <strong>Collect the rules as the team says them, not translated into corporate language, because the best performer&#8217;s voice is the spec.</strong> Your data scientist will thank you: half of prompt writing is knowing what the expert actually does.</p></li><li><p><strong>Tools: what the agent can look at and what it can do.</strong> Every tab open during the walkthrough is a read-tool candidate. Every action taken is a write-tool candidate. The split matters because it maps directly to risk: letting the agent read the order database is cheap to grant, letting it issue a refund is not. <strong>Version one gets read access to the CRM, the order database, and the policy wiki, and exactly zero write actions.</strong></p></li><li><p><strong>Memory: what the agent keeps between cases.</strong> This comes from &#8221;what do you keep re-explaining?&#8221; and from Ana&#8217;s burned-twice customer. Three plain kinds cover most teams: facts about repeat customers, resolutions that worked before, and this-week context like a known shipping outage. <strong>The spec says what to remember in the team&#8217;s words, and the AI team picks how to store it.</strong> Skip the vector-database vocabulary entirely; it has no place in a spec meeting.</p></li><li><p><strong>Workflow: the path a case takes, where the agent sits, and what wakes it up.</strong> Interview 1&#8217;s whiteboard map plus the walkthrough give you the steps. Now mark each step with one of three labels: script it, agent judgment, or human only. The gate from earlier applies per-step here, not per-project, and most &#8220;agent&#8221; projects turn out to be a workflow with two or three genuinely agentic steps inside. Then name the trigger, because it&#8217;s the first thing your AI team will ask: what invokes this thing, an event, a schedule, or a person? <strong>Version one&#8217;s trigger is one line: the agent wakes when the human closes the case.</strong></p></li><li><p><strong>Model: the brain you rent.</strong> The business chooses a model without ever hearing a model name, by answering three questions: how much judgment does a case take, how fast does the answer need to come back, and what&#8217;s a case worth in money? <strong>Capability, latency, cost.</strong> Your AI team maps those three answers to an actual model tier, and <strong>your job is keeping the trade-off honest</strong> when someone wants the premium model for wrap-up notes.</p></li><li><p><strong>Guardrails and escalation: what it must never do alone, and who it calls.</strong> The never-alone list transfers verbatim: refunds above the threshold, legal-adjacent language, delivery-date promises, always a human. Escalation deserves the same respect: the trigger points from &#8221;when do you pull in Claire?&#8221; become the agent&#8217;s own escalation rules. <strong>An agent that says &#8220;this one&#8217;s for you, here&#8217;s the file so far&#8221; earns trust faster than one that guesses,</strong> so spec escalation as a feature, not a failure state. Add one more spec line to this bucket: every agent action gets logged and is reviewable. The weekly review you&#8217;re about to set up depends on those logs existing, and legal will ask for the trail before anything launches.</p></li><li><p><strong>Evals: how everyone knows it works.</strong> The ten annotated cases from the shadow session plus the metrics Claire already reports. The launch bar is simple: the agent drafts wrap-up notes for the ten golden cases, and Claire grades them blind against the human-written ones. <a href="https://hamel.dev/blog/posts/evals/">Hamel Husain</a>, whose evals guide is the one practitioners pass around, puts the stakes plainly: &#8220;Unsuccessful products almost always share a common root cause: a failure to create robust evaluation systems.&#8221; <strong>The evals aren&#8217;t the homework at the end of the project. They&#8217;re the first thing your AI team builds.</strong></p></li></ol><p>Now notice what just happened. <strong>The team wrote the spec.</strong> Nobody said &#8220;prompt engineering.&#8221; Nobody explained embeddings. Your entire contribution was asking questions about last Tuesday, sorting the answers into seven buckets, and reading them back until Claire said &#8220;yes, that&#8217;s the job.&#8221;</p><p>A spec in plain language, ready for builders. Almost. There&#8217;s one move left before the hand-off, and it&#8217;s the one that separates today&#8217;s product work from requirements-era product work.</p><h3>Prototype the agent yourself</h3><p>Here&#8217;s the gap in everything so far: three interviews captured what the team says about the work, and the shadow session caught some of what they do. <strong>Neither tells you how they&#8217;ll behave with the agent itself.</strong> Will Marco trust the draft, edit it, or quietly go back to writing notes his way? No document answers that, and a longer spec answers it least of all. In classic product work you already know the move: you don&#8217;t write a requirements document for a website and send it to developers. You click together a prototype in Figma or a no-code tool, put it in front of five users, and watch. <strong>Agents just got the same unlock: with AI coding tools, prototyping the agent is now cheaper than the meeting about the spec.</strong> Here&#8217;s the loop.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lOin!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15a4da34-f4a4-417c-828b-3b2cdfcbd932_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lOin!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15a4da34-f4a4-417c-828b-3b2cdfcbd932_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!lOin!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15a4da34-f4a4-417c-828b-3b2cdfcbd932_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!lOin!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15a4da34-f4a4-417c-828b-3b2cdfcbd932_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!lOin!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15a4da34-f4a4-417c-828b-3b2cdfcbd932_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lOin!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15a4da34-f4a4-417c-828b-3b2cdfcbd932_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/15a4da34-f4a4-417c-828b-3b2cdfcbd932_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3279637,&quot;alt&quot;:&quot;Hand-drawn loop. Interview notes feed a skill file in an AI workspace, ten real cases go in, drafts come out, a team member reacts with feedback, the skill gets adjusted, and an arrow exits the loop toward a hand-off package.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/206599017?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15a4da34-f4a4-417c-828b-3b2cdfcbd932_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Hand-drawn loop. Interview notes feed a skill file in an AI workspace, ten real cases go in, drafts come out, a team member reacts with feedback, the skill gets adjusted, and an arrow exits the loop toward a hand-off package." title="Hand-drawn loop. Interview notes feed a skill file in an AI workspace, ten real cases go in, drafts come out, a team member reacts with feedback, the skill gets adjusted, and an arrow exits the loop toward a hand-off package." srcset="https://substackcdn.com/image/fetch/$s_!lOin!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15a4da34-f4a4-417c-828b-3b2cdfcbd932_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!lOin!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15a4da34-f4a4-417c-828b-3b2cdfcbd932_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!lOin!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15a4da34-f4a4-417c-828b-3b2cdfcbd932_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!lOin!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15a4da34-f4a4-417c-828b-3b2cdfcbd932_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>So before handing anything to the AI team, <strong>build the smallest thing that behaves like the agent.</strong> In Claude Cowork or Claude Code, it&#8217;s an afternoon of work. Write the instructions component into a skill, with Marco&#8217;s rules verbatim. Drop the ten golden cases in as files. Ask it to draft the wrap-up note for each one. No connectors, no permissions, no access requests: copy-paste stands in for every tool the real agent will get. <strong>What comes out reads like the future agent&#8217;s output, and the output is the only part the team can judge anyway.</strong></p><p><strong>Then test it like a product prototype,</strong> not like a demo. Run the sessions on the <a href="https://youtu.be/U9ZG19XTbd4">five-act interview</a> the structure Google Ventures uses to test design sprint prototypes: a friendly welcome, a few context questions, introduce the prototype (&#8221;it&#8217;s cardboard, you won&#8217;t hurt my feelings&#8221;), real tasks, then a short debrief. Hand Ana a fresh case, let her work it, show the prototype&#8217;s note next to hers, and watch. <strong>The watching surfaces what three interviews didn&#8217;t:</strong> every note the team actually trusts ends with a who-to-call line, and nobody thought to say it out loud. <strong>The spec gains its most important line from twenty minutes of watching, not from any question you asked.</strong> There&#8217;s always a gap between what people tell you and what they do, and it closes only in front of something real.</p><p><strong>The prototype doesn&#8217;t replace the spec, it hardens it.</strong> The spec still tells your AI team what to build. The prototype proves the team will use it, catches misreadings while they&#8217;re an afternoon cheap, and hands your data scientist a tested first draft of the prompt instead of a blank page. <strong>And the fearful room from the kickoff has now touched the thing, shaped it, and seen it stay a drafting assistant.</strong> The hand-off package just gained its most convincing item.</p><h3>Hand it to your AI team</h3><p><strong>The hand-off package is six things,</strong> and none of them is a forty-page document. One page per spec component, in the team&#8217;s own words plus the derived decisions. The ten golden cases with the human answers attached. The prototype with its feedback log: what the team reacted to and what changed. The access list: which systems, read or write, granted to whom. The value baseline from Interview 1. And the escalation contacts with their triggers. <strong>That package answers most of the questions a AI team otherwise burns weeks discovering one standup at a time.</strong></p><p>Each role picks up a different end of it. The data scientist starts from component seven: the golden cases become a test harness before anyone writes a prompt, which is exactly the order Husain&#8217;s evals-first practice prescribes, and the prototype&#8217;s skill file gives them a first prompt draft that already survived contact with the team. The data engineer starts from component two: connectors, permissions, logging. <strong>And you stay in the loop as the translator, running one ritual that outweighs everything else:</strong> a weekly transcript review, with someone from the support team in the room. Marco reading the agent&#8217;s attempts catches misreadings in days. <strong>Without the business in the review loop, misreadings surface at launch, in front of customers, with the team&#8217;s name on the queue.</strong></p><p>Somewhere in that first planning meeting, you&#8217;ll get the pushback. It usually sounds like this: &#8220;Why all this ceremony? The process is documented. We can spec from the SOPs and ship this quarter.&#8221; Take it seriously, because it&#8217;s half right: the SOP is real and useful. It&#8217;s also only the happy path. The value and the risk both live in the exceptions only the team can name: the stale policy page, the burned-twice customer, the warehouse phone call. <strong>An agent spec&#8217;d from documentation automates the part that was never the problem, and breaks publicly on the part that is.</strong> And it breaks in front of a team that was never asked, who now has every reason to let it fail. That&#8217;s not a hypothetical. <a href="https://mlq.ai/media/quarterly_decks/v0.1_State_of_AI_in_Business_2025_Report.pdf">MIT&#8217;s Project NANDA</a> studied hundreds of enterprise GenAI initiatives in 2025 and found <strong>most fail from &#8220;brittle workflows, lack of contextual learning, and misalignment with day-to-day operations&#8221;:</strong> the documentation-spec&#8217;d agent, described in one sentence. One week of light discovery, against a quarter of rebuilding. That&#8217;s the whole trade.</p><p>One last thing about the spec itself: it&#8217;s a living contract, not a document you sign once and file away. When the AI team hits an ambiguity, and they will (&#8221;what exactly counts as legal-adjacent?&#8221;), the answer is another fifteen minutes with Marco, not a guess hidden inside a sprint. <strong>The interviews don&#8217;t end at discovery. They just get shorter.</strong></p><p>The build is underway. Now the part most agent projects skip until it&#8217;s too late: getting a team that fears the thing to want the thing.</p><div><hr></div><h2>Start with the work nobody wants</h2><p>Go back to Claire&#8217;s face in that kickoff meeting. You don&#8217;t fix that with a slide about how AI augments people. Nobody who&#8217;s afraid has ever been reassured by a slide. <strong>You fix the fear with scope.</strong></p><p><strong>The move: version one does only the work the team would happily give away.</strong> Remember the unanimous answer from Interview 1: the wrap-up notes. So version one drafts the case summary after the human closes the case. It talks to no customer. It makes no decision. It sends nothing. Every person on the team keeps every bit of their judgment, and everyone loses their least favorite chore the same week. The French have a name for this kind of maneuver: cheval de Troie, the Trojan horse. <strong>Except this horse gets welcomed for what it visibly removes, not for what it hides.</strong> There&#8217;s no deception in it. The full ladder is printed on the side.</p><p>Be honest about version one&#8217;s number, because it&#8217;s small on purpose. Five minutes of note-writing per case, sixty cases a day: call it five team-hours back daily, plus CRM notes that people can finally use. That&#8217;s real, and it&#8217;s nowhere near the handle-time and backlog numbers from the value conversation with leadership. Say so plainly. <strong>The small number is the design: a small verified win buys the trust, and the patience, for the versions that move the big metrics.</strong> A demo impresses for a week. A chore that stays gone convinces forever.</p><p>There&#8217;s a principled version of &#8220;work nobody wants,&#8221; and it comes from <a href="https://sre.google/sre-book/eliminating-toil/">Google&#8217;s site reliability engineering book</a>, in a chapter by Vivek Rau. He calls it toil: <strong>work that&#8217;s &#8220;manual, repetitive, automatable, tactical, devoid of enduring value, and that scales linearly as a service grows.&#8221;</strong> Read that list back against the wrap-up notes and every box ticks. The scales-linearly attribute even loops back to the volume question in the gate: toil grows with the business, which is exactly why automating it compounds. <strong>Every business team has a toil pile, and they can name it in five seconds when you ask,</strong> which is why the &#8220;happily never again&#8221; question sits in the very first interview.</p><p>From there, the agent climbs a ladder, and the ladder has a rule.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!an9a!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c70270d-e437-49d5-98a4-f99eb72dfc7e_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!an9a!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c70270d-e437-49d5-98a4-f99eb72dfc7e_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!an9a!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c70270d-e437-49d5-98a4-f99eb72dfc7e_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!an9a!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c70270d-e437-49d5-98a4-f99eb72dfc7e_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!an9a!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c70270d-e437-49d5-98a4-f99eb72dfc7e_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!an9a!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c70270d-e437-49d5-98a4-f99eb72dfc7e_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5c70270d-e437-49d5-98a4-f99eb72dfc7e_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3376933,&quot;alt&quot;:&quot;Hand-drawn infographic of a ladder with four rungs labeled &#8220;drafts the notes&#8221;, &#8220;preps the file&#8221;, &#8220;suggests the reply&#8221;, &#8220;handles the routine case&#8221;. A small robot climbs while team members at each rung ask &#8220;can it also...?&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/206599017?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c70270d-e437-49d5-98a4-f99eb72dfc7e_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Hand-drawn infographic of a ladder with four rungs labeled &#8220;drafts the notes&#8221;, &#8220;preps the file&#8221;, &#8220;suggests the reply&#8221;, &#8220;handles the routine case&#8221;. A small robot climbs while team members at each rung ask &#8220;can it also...?" title="Hand-drawn infographic of a ladder with four rungs labeled &#8220;drafts the notes&#8221;, &#8220;preps the file&#8221;, &#8220;suggests the reply&#8221;, &#8220;handles the routine case&#8221;. A small robot climbs while team members at each rung ask &#8220;can it also...?" srcset="https://substackcdn.com/image/fetch/$s_!an9a!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c70270d-e437-49d5-98a4-f99eb72dfc7e_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!an9a!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c70270d-e437-49d5-98a4-f99eb72dfc7e_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!an9a!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c70270d-e437-49d5-98a4-f99eb72dfc7e_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!an9a!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c70270d-e437-49d5-98a4-f99eb72dfc7e_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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><ul><li><p><strong>Rung one</strong> drafts the documentation after decisions are made.</p></li><li><p><strong>Rung two</strong> pre-assembles the case file before the human opens it: order history, past tickets, the relevant policy section.</p></li><li><p><strong>Rung three</strong> suggests a response the human edits and sends.</p></li><li><p><strong>Rung four</strong> handles one narrow, routine category end to end, with humans reviewing a sample.</p></li></ul><p><strong>The rule that makes this change management instead of scope creep: each rung happens when the team asks for it, not when the roadmap says so.</strong> Three weeks after launch, Marco asks why the agent can&#8217;t also pull the order history before he opens a case. That&#8217;s rung two, requested from the floor. And the ladder isn&#8217;t a trick I invented: it walks the classic automation-staging model that <a href="https://www.semanticscholar.org/paper/14ae6f2231e09e226b99002aa04b5c70f3c59f2b">Parasuraman, Sheridan and Wickens</a> formalized in 2000, from information gathering, to suggested decisions, to supervised action.</p><p>Two failure modes need naming, because the happy path above is only one data point. First, the stall: <strong>if nobody asks for rung two by month two, that&#8217;s data, not patience.</strong> It almost always means version one missed the actual most-hated chore. Rerun the &#8220;happily never again&#8221; question and re-aim; the miss costs weeks, not quarters. Second, the squeeze: <strong>leadership pushing the mandate faster than the floor pulls.</strong> The version-one number is what buys you the time. Report the small win monthly, and name the next rung&#8217;s trigger out loud: &#8220;we expand when the team asks, or when note quality holds for four weeks.&#8221; A named trigger turns &#8220;when will it do more?&#8221; into a measurable answer.</p><p>One caveat at the top rung. <a href="http://www.complexcognition.co.uk/2021/06/ironies-of-automation.html">Lisanne Bainbridge&#8217;s &#8220;Ironies of Automation&#8221;</a> (1983) showed that automating the routine work erodes exactly the skills humans need for the hard cases that remain. The fix belongs in the spec, not in a values statement: humans keep a rotation of routine cases, not just a review sample. <strong>The team stays sharp, and the agent stays supervised by people who still know the craft.</strong></p><p><strong>A few smaller moves compound alongside the ladder.</strong> Let the team name the agent; named things belong to the namer. Keep someone from the team in the weekly transcript review. Publish what the agent can&#8217;t do, the guardrail list, as prominently as what it can. And measure the team&#8217;s time back, never individual productivity: the first dashboard that ranks humans against the agent ends the whole experiment. When someone above you asks how you&#8217;re rolling out agents, here&#8217;s the paragraph to hand them:</p><blockquote><p>Before we build any agent, we run three interviews with the people who do the job. The spec falls out of the answers: what they&#8217;d tell a new hire becomes the instructions, what they look at becomes the tools, what they keep re-explaining becomes the memory, what they&#8217;d never let a new hire do alone becomes the guardrails. We prototype it ourselves and test it with the team before the AI team commits a sprint. And version one starts on the work they&#8217;d pay to stop doing. The agent earns the interesting work later.</p></blockquote><p>One team, one number, one chore removed. That&#8217;s how agent programs actually start.</p><div><hr></div><h2>Run your first interview this week</h2><p>The mandate said &#8220;agentify support.&#8221; What you delivered is narrower than the slide-deck version, and better: one team&#8217;s least-loved work removed, a prototype-tested spec the AI team built from directly, a small number that verifiably moved, and a support team asking what the agent can take on next. <strong>Delivering an agent to the business doesn&#8217;t mean delivering a platform. It means delivering a working relationship,</strong> between a team and a system it helped design.</p><p>The method travels as-is to any team whose work passes the gate. Finance, running invoice exceptions: version one drafts the dispute-resolution notes. Sales ops, answering RFPs (the long questionnaires big customers send before buying): version one drafts the compliance boilerplate everyone hates. HR, fielding onboarding questions: version one drafts FAQ answers from already-resolved tickets. Legal intake, triaging contract requests: version one pre-fills the intake summary. Marketing, reporting: version one drafts the weekly performance commentary. <strong>In every case the pattern holds: the interviews find the toil, the toil defines version one, and the team pulls the agent up from there.</strong></p><p>So here&#8217;s the move for this week. Pick one team. Ask their lead for one hour and ten recent cases. Open with &#8221;what work would your team happily never do again?&#8221; and write down everything that comes after. You&#8217;ll leave the room holding most of a spec, and the team will walk you to the door.</p><p><strong>Your next agent is three conversations away.</strong></p>]]></content:encoded></item><item><title><![CDATA[How to pick the AI agents worth building]]></title><description><![CDATA[Map out the steps your work goes through, from idea to done. Find the one step everything waits on. Aim your next agent at it, not at the part that&#8217;s already fast. Pace everything else to its speed.]]></description><link>https://www.theaithinker.com/p/how-to-pick-the-ai-agents-worth-building</link><guid isPermaLink="false">https://www.theaithinker.com/p/how-to-pick-the-ai-agents-worth-building</guid><dc:creator><![CDATA[Adam Faik]]></dc:creator><pubDate>Mon, 29 Jun 2026 11:01:43 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/d772069f-4dfd-4eae-afc4-d934196e2c9c_1024x731.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>By now the pitch is in every keynote. <a href="https://www.salesforce.com/agentforce/">Salesforce&#8217;s Agentforce</a> is busy turning its customers into &#8220;agentic enterprises.&#8221; <a href="https://www.microsoft.com/en-us/ai/agent-factory">Microsoft</a> ships a program literally named Agent Factory. <a href="https://www.ibm.com/products/watsonx-orchestrate">IBM&#8217;s watsonx Orchestrate</a> sells a control plane for running thousands of agents at once. The message is the same wherever you look, and now you&#8217;ve got the one-line version in your inbox: <strong>&#8221;Where&#8217;s our agent strategy? I want us building these by the dozen.&#8221;</strong> So now you&#8217;re sketching the list. A drafting agent here, a research agent there, a QA agent, a triage agent for the support queue. Twenty workflows, twenty agents, a real factory of them. It feels productive. It will demo beautifully.</p><p>Before you spin up the first one, let me hand you a book. It&#8217;s called <a href="https://en.wikipedia.org/wiki/The_Goal_%28novel%29">The Goal</a>, a novel published in 1984 by Eliyahu Goldratt. I first read it in mechanical engineering school. I went back to it a few weeks ago, and what struck me is how completely it still applies, except the factory I kept picturing was one running on AI agents. Yes, <strong>the book itself is about a real factory:</strong> steel, machines, a loading dock, not a line of code in sight. Trust me anyway, because it is the most useful thing you&#8217;ll read about AI agents all month.</p><p>The hero is Alex Rogo, a plant manager with three months before headquarters shuts his plant for good. Alex&#8217;s one bright spot is a set of new robots that pushed productivity in one department up 36%. Everyone&#8217;s proud of them. Then Alex runs into Jonah, an old physics professor of his who now consults for factories, and Jonah asks three simple questions. <strong>Did the robots increase your sales? Did they reduce your inventory? Did they lower your operating expense?</strong> The answer to all three is no. <strong>The robots made one station faster and the business no healthier.</strong> The plant is still three months from closing.</p><p>Here&#8217;s the part that makes me smile. Goldratt was writing about big, clunky factory robots, the most exciting technology of his day. The technology has changed completely since then. The move people make with it hasn&#8217;t changed at all. <strong>A powerful new tool shows up, everyone rushes to point it at every task at once, and all that activity gets mistaken for real progress.</strong> The tool gets an upgrade every few years. The trap ships unchanged.</p><p>What actually held up is harder and more useful. The Goal forces one question on Alex over and over: what is a company even for? Not to run machines. Not to look modern. Not to automate for the sake of it. The book&#8217;s answer is blunt, and it&#8217;s still exactly right: <strong>a company exists to make money, and every robot, every process, and now every agent is worthless unless it moves that number.</strong> Swap &#8220;robot&#8221; for &#8220;agent,&#8221; and the book turns into a warning for anyone building AI agents inside a company: the factory urge to make more and make them faster is exactly the trap, and <strong>the only thing that counts is whether each one moves the business.</strong></p><p>Agents are genuinely powerful, and building them is my day job. I find the use cases, work with developers to ship them for the company I work for, and build smaller ones for my own work on the side. But here&#8217;s the subtler truth the rush skips over: <strong>a powerful tool tends to create new problems while it solves old ones.</strong> An agent aimed at the wrong step doesn&#8217;t just fail to help. It quietly manufactures more work, a backlog of half-finished output that someone downstream now has to deal with. <strong>So the whole game is where you aim them</strong>, and that turns out to be the part everyone skips.</p><p>So here&#8217;s the bottom line, up front. A factory of agents is not the goal. <strong>The goal is throughput: the actual work that ships and moves the business.</strong> Pour agents onto a step that was never your slow point, and all you do is stack work in front of the one that actually is slow, which today is almost always a person reviewing and verifying what the agents produced. That slow step is your constraint. The winning move is the opposite of agents everywhere: <strong>find your one constraint, point your next agent at it, and pace everything else to its speed.</strong></p><p>Here&#8217;s where this article goes, in four stops.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rb3g!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a9da562-cff2-4387-b204-25fdbaaa694e_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rb3g!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a9da562-cff2-4387-b204-25fdbaaa694e_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!rb3g!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a9da562-cff2-4387-b204-25fdbaaa694e_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!rb3g!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a9da562-cff2-4387-b204-25fdbaaa694e_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!rb3g!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a9da562-cff2-4387-b204-25fdbaaa694e_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rb3g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a9da562-cff2-4387-b204-25fdbaaa694e_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2a9da562-cff2-4387-b204-25fdbaaa694e_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3488289,&quot;alt&quot;:&quot;hand-drawn black-and-white infographic showing four horizontal stops the article walks through: The trap (a row of agent icons stamping out work that piles into a stack, a dollar sign crossed out), The bottleneck (many arrows funneling to one narrow gate with a queue behind it), The principles (a small circular loop with arrows), The build (a hand at a keyboard with a single agent icon aimed straight at the narrow gate) &#8212; each labeled with a word or two.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/203930285?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a9da562-cff2-4387-b204-25fdbaaa694e_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="hand-drawn black-and-white infographic showing four horizontal stops the article walks through: The trap (a row of agent icons stamping out work that piles into a stack, a dollar sign crossed out), The bottleneck (many arrows funneling to one narrow gate with a queue behind it), The principles (a small circular loop with arrows), The build (a hand at a keyboard with a single agent icon aimed straight at the narrow gate) &#8212; each labeled with a word or two." title="hand-drawn black-and-white infographic showing four horizontal stops the article walks through: The trap (a row of agent icons stamping out work that piles into a stack, a dollar sign crossed out), The bottleneck (many arrows funneling to one narrow gate with a queue behind it), The principles (a small circular loop with arrows), The build (a hand at a keyboard with a single agent icon aimed straight at the narrow gate) &#8212; each labeled with a word or two." srcset="https://substackcdn.com/image/fetch/$s_!rb3g!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a9da562-cff2-4387-b204-25fdbaaa694e_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!rb3g!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a9da562-cff2-4387-b204-25fdbaaa694e_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!rb3g!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a9da562-cff2-4387-b204-25fdbaaa694e_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!rb3g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a9da562-cff2-4387-b204-25fdbaaa694e_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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><ul><li><p><strong>The trap.</strong> I&#8217;ll show you why building agents by the dozen stalls, and the factory novel that saw it coming.</p></li><li><p><strong>The bottleneck.</strong> You&#8217;ll find the one step everything waits on, which is rarely where you&#8217;d guess.</p></li><li><p><strong>The principles.</strong> A few ideas from the book for feeding that step instead of burying it under more agents.</p></li><li><p><strong>The build.</strong> What aiming your next agent at the right step actually looks like, hands on keyboard.</p></li></ul><p>By the end, you&#8217;ll have a simple way to look at any agent plan and say where the next agent actually belongs, plus the words to explain it to the people around you. <strong>It&#8217;s the difference between an agent strategy that looks busy and one that moves a number.</strong></p><p>Hard hats on.</p><div><hr></div><h2>Why agents everywhere stalls</h2><p>When the scoreboard is &#8220;agents deployed&#8221; or &#8220;workflows automated,&#8221; you optimize for the count, and the count is the easy thing to grow. Six new agents this quarter, twelve workflows touched, a demo that makes the room lean in. It feels like progress. But Goldratt put the whole trap in one line: &#8221;activating a resource and utilizing a resource are not synonymous.&#8221; In plain English, <strong>keeping something busy is not the same as using it well.</strong> A factory machine stamping out parts nobody ordered is busy, but useless. An agent churning out drafts faster than anyone can check them is busy in exactly the same way. <strong>None of that activity is the business.</strong></p><p>And the bill is already coming due. <a href="https://www.gartner.com/en/newsroom/press-releases/2025-06-25-gartner-predicts-over-40-percent-of-agentic-ai-projects-will-be-canceled-by-end-of-2027">Gartner expects </a><strong><a href="https://www.gartner.com/en/newsroom/press-releases/2025-06-25-gartner-predicts-over-40-percent-of-agentic-ai-projects-will-be-canceled-by-end-of-2027">more than 40% of agentic AI projects to be canceled by the end of 2027</a></strong>, citing runaway cost and unclear business value. That is the same verdict Jonah, the book&#8217;s mentor, gave those factory robots, only now it lands on AI agents instead of machines.</p><p>So keep his three questions on a sticky note. They were written to judge a factory, and they barely change to judge an agent rollout:</p><ul><li><p>Did you ship more of what the business actually needs?</p></li><li><p>Did the pile of half-finished, waiting-on-a-human work get smaller?</p></li><li><p>Did your cost to run the place, the model bills and the hours spent steering, go down?</p></li></ul><p><strong>If you can&#8217;t say yes to at least one without making another worse, you didn&#8217;t buy an agent strategy. You bought robots.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UndJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05f435b5-9920-4a3c-b51d-1195797d1ba9_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UndJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05f435b5-9920-4a3c-b51d-1195797d1ba9_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!UndJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05f435b5-9920-4a3c-b51d-1195797d1ba9_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!UndJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05f435b5-9920-4a3c-b51d-1195797d1ba9_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!UndJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05f435b5-9920-4a3c-b51d-1195797d1ba9_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UndJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05f435b5-9920-4a3c-b51d-1195797d1ba9_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/05f435b5-9920-4a3c-b51d-1195797d1ba9_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3705364,&quot;alt&quot;:&quot;hand-drawn two-column diagram titled &#8220;The three questions.&#8221; Left column labeled &#8220;Factory, 1984&#8221; lists three questions: Did sales go up? Did inventory go down? Did operating expense go down? Right column labeled &#8220;Your agent factory, today&#8221; lists the translated versions: Did more actually ship? Did the pile of unreviewed work shrink? Did the cost to run it drop? A big arrow points from the left column to the right, showing the questions carry over almost unchanged.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/203930285?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05f435b5-9920-4a3c-b51d-1195797d1ba9_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="hand-drawn two-column diagram titled &#8220;The three questions.&#8221; Left column labeled &#8220;Factory, 1984&#8221; lists three questions: Did sales go up? Did inventory go down? Did operating expense go down? Right column labeled &#8220;Your agent factory, today&#8221; lists the translated versions: Did more actually ship? Did the pile of unreviewed work shrink? Did the cost to run it drop? A big arrow points from the left column to the right, showing the questions carry over almost unchanged." title="hand-drawn two-column diagram titled &#8220;The three questions.&#8221; Left column labeled &#8220;Factory, 1984&#8221; lists three questions: Did sales go up? Did inventory go down? Did operating expense go down? Right column labeled &#8220;Your agent factory, today&#8221; lists the translated versions: Did more actually ship? Did the pile of unreviewed work shrink? Did the cost to run it drop? A big arrow points from the left column to the right, showing the questions carry over almost unchanged." srcset="https://substackcdn.com/image/fetch/$s_!UndJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05f435b5-9920-4a3c-b51d-1195797d1ba9_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!UndJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05f435b5-9920-4a3c-b51d-1195797d1ba9_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!UndJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05f435b5-9920-4a3c-b51d-1195797d1ba9_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!UndJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05f435b5-9920-4a3c-b51d-1195797d1ba9_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>Those questions come from the only three numbers Goldratt says a company should track. He names them <strong>&#8221;throughput, inventory and operational expense,&#8221;</strong> and once they click you start seeing them everywhere.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3rVy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c891482-38bc-4993-a442-84a9285427d2_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3rVy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c891482-38bc-4993-a442-84a9285427d2_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!3rVy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c891482-38bc-4993-a442-84a9285427d2_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!3rVy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c891482-38bc-4993-a442-84a9285427d2_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!3rVy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c891482-38bc-4993-a442-84a9285427d2_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3rVy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c891482-38bc-4993-a442-84a9285427d2_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6c891482-38bc-4993-a442-84a9285427d2_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3508889,&quot;alt&quot;:&quot;hand-drawn diagram of three panels side by side, each one a measure with a big arrow showing the goal direction. Throughput with an up arrow, money leaving as shipped work, noted &#8220;for agents: the work that actually ships.&#8221; Inventory with a down arrow, money stuck inside drawn as a stack of unfinished work, noted &#8220;for agents: drafts and PRs waiting on a human.&#8221; Operating expense with a down arrow, drawn as a stack of bills, noted &#8220;for agents: model bills plus the hours spent steering.&#8221; A banner underneath reads: make money = throughput up, the other two down.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/203930285?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c891482-38bc-4993-a442-84a9285427d2_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="hand-drawn diagram of three panels side by side, each one a measure with a big arrow showing the goal direction. Throughput with an up arrow, money leaving as shipped work, noted &#8220;for agents: the work that actually ships.&#8221; Inventory with a down arrow, money stuck inside drawn as a stack of unfinished work, noted &#8220;for agents: drafts and PRs waiting on a human.&#8221; Operating expense with a down arrow, drawn as a stack of bills, noted &#8220;for agents: model bills plus the hours spent steering.&#8221; A banner underneath reads: make money = throughput up, the other two down." title="hand-drawn diagram of three panels side by side, each one a measure with a big arrow showing the goal direction. Throughput with an up arrow, money leaving as shipped work, noted &#8220;for agents: the work that actually ships.&#8221; Inventory with a down arrow, money stuck inside drawn as a stack of unfinished work, noted &#8220;for agents: drafts and PRs waiting on a human.&#8221; Operating expense with a down arrow, drawn as a stack of bills, noted &#8220;for agents: model bills plus the hours spent steering.&#8221; A banner underneath reads: make money = throughput up, the other two down." srcset="https://substackcdn.com/image/fetch/$s_!3rVy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c891482-38bc-4993-a442-84a9285427d2_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!3rVy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c891482-38bc-4993-a442-84a9285427d2_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!3rVy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c891482-38bc-4993-a442-84a9285427d2_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!3rVy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c891482-38bc-4993-a442-84a9285427d2_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"></figcaption></figure></div><ul><li><p><strong>Throughput.</strong> The rate the system turns work into money out the door. For your team, it&#8217;s the work that actually ships and changes something for a customer, not the work that merely got generated.</p></li><li><p><strong>Inventory.</strong> Everything you&#8217;ve paid for that&#8217;s sitting around not yet sold. For you, it&#8217;s every draft, pull request, and ticket an agent produced that&#8217;s still waiting on a human to finish it.</p></li><li><p><strong>Operating expense.</strong> What you spend turning inventory into throughput, the cost of running the whole thing. For you, the model bills, the tools, and the hours your people spend steering and reviewing.</p></li></ul><p>The robots moved none of the three. They just made a station that was never the slow part run faster, so half-finished parts piled up behind the slow station instead.</p><p>Here&#8217;s the deeper problem underneath, the one it takes Alex most of the book to see.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DQVb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bff1d9-40fb-44bc-a8f8-fc2cff2e7623_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DQVb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bff1d9-40fb-44bc-a8f8-fc2cff2e7623_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!DQVb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bff1d9-40fb-44bc-a8f8-fc2cff2e7623_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!DQVb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bff1d9-40fb-44bc-a8f8-fc2cff2e7623_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!DQVb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bff1d9-40fb-44bc-a8f8-fc2cff2e7623_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DQVb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bff1d9-40fb-44bc-a8f8-fc2cff2e7623_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c5bff1d9-40fb-44bc-a8f8-fc2cff2e7623_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3561189,&quot;alt&quot;:&quot;hand-drawn horizontal chain of five links left to right, each link labeled as a workflow step: idea, draft, build, review, ship. Four links are strong and normal-sized; one link in the middle is drawn thin and strained, clearly the weak one, with work backing up against it. An arrow along the top labeled &#8220;speed of the whole chain&#8221; lines up with the slow link&#8217;s pace, not the fast links&#8217;. A handwritten note reads: making the strong links stronger changes nothing.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/203930285?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bff1d9-40fb-44bc-a8f8-fc2cff2e7623_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="hand-drawn horizontal chain of five links left to right, each link labeled as a workflow step: idea, draft, build, review, ship. Four links are strong and normal-sized; one link in the middle is drawn thin and strained, clearly the weak one, with work backing up against it. An arrow along the top labeled &#8220;speed of the whole chain&#8221; lines up with the slow link&#8217;s pace, not the fast links&#8217;. A handwritten note reads: making the strong links stronger changes nothing." title="hand-drawn horizontal chain of five links left to right, each link labeled as a workflow step: idea, draft, build, review, ship. Four links are strong and normal-sized; one link in the middle is drawn thin and strained, clearly the weak one, with work backing up against it. An arrow along the top labeled &#8220;speed of the whole chain&#8221; lines up with the slow link&#8217;s pace, not the fast links&#8217;. A handwritten note reads: making the strong links stronger changes nothing." srcset="https://substackcdn.com/image/fetch/$s_!DQVb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bff1d9-40fb-44bc-a8f8-fc2cff2e7623_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!DQVb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bff1d9-40fb-44bc-a8f8-fc2cff2e7623_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!DQVb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bff1d9-40fb-44bc-a8f8-fc2cff2e7623_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!DQVb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5bff1d9-40fb-44bc-a8f8-fc2cff2e7623_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A factory isn&#8217;t a set of independent machines you keep individually busy. It&#8217;s <strong>a chain of steps that depend on each other</strong>, and what the whole chain produces is set by its slowest link, not by how hard the other links work. Alex&#8217;s plant was run the other way, every station scored on its own efficiency, every machine pushed to stay busy because an idle machine looked like waste. So the fast stations overproduced, and their output piled up as inventory in front of the slow ones. <strong>Every local chart looked healthy while the plant as a whole lost money.</strong> The robots didn&#8217;t cause that pattern. They poured fuel on it, supercharging a station that was never the constraint.</p><p>Sit with that, because <strong>your company is a factory too, even if nobody calls it one.</strong> Work comes in as a request and leaves as something shipped, and in between it moves down a line: someone drafts, someone reviews, someone approves, someone ships. Agents are the shiny new machines you just bolted onto the front of that line, and they make the drafting station absolutely roar. <strong>A line is only ever as fast as the station every job has to squeeze through, no matter how loud the front end gets.</strong> Build it the plant&#8217;s old way, with each agent scored on how busy it is, and you earn the plant&#8217;s old result.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!k1W9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14cadb91-957b-40a9-abee-b8239f5583c5_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!k1W9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14cadb91-957b-40a9-abee-b8239f5583c5_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!k1W9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14cadb91-957b-40a9-abee-b8239f5583c5_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!k1W9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14cadb91-957b-40a9-abee-b8239f5583c5_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!k1W9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14cadb91-957b-40a9-abee-b8239f5583c5_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!k1W9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14cadb91-957b-40a9-abee-b8239f5583c5_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/14cadb91-957b-40a9-abee-b8239f5583c5_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3481816,&quot;alt&quot;:&quot;hand-drawn side-by-side comparison. Left, labeled 1984: a fast robot arm stamps out metal parts that stack into a tall pile in front of a slower downstream machine, with a note reading &#8220;efficiency up 36%, still losing money.&#8221; Right, labeled 2026: a row of AI agents generates documents, code, and chat bubbles that stack into an identical pile in front of one tired human reviewer at a desk, with a note reading &#8220;agents everywhere, nothing ships faster.&#8221; A dotted line splits the two scenes; both piles are drawn the same height.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/203930285?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14cadb91-957b-40a9-abee-b8239f5583c5_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="hand-drawn side-by-side comparison. Left, labeled 1984: a fast robot arm stamps out metal parts that stack into a tall pile in front of a slower downstream machine, with a note reading &#8220;efficiency up 36%, still losing money.&#8221; Right, labeled 2026: a row of AI agents generates documents, code, and chat bubbles that stack into an identical pile in front of one tired human reviewer at a desk, with a note reading &#8220;agents everywhere, nothing ships faster.&#8221; A dotted line splits the two scenes; both piles are drawn the same height." title="hand-drawn side-by-side comparison. Left, labeled 1984: a fast robot arm stamps out metal parts that stack into a tall pile in front of a slower downstream machine, with a note reading &#8220;efficiency up 36%, still losing money.&#8221; Right, labeled 2026: a row of AI agents generates documents, code, and chat bubbles that stack into an identical pile in front of one tired human reviewer at a desk, with a note reading &#8220;agents everywhere, nothing ships faster.&#8221; A dotted line splits the two scenes; both piles are drawn the same height." srcset="https://substackcdn.com/image/fetch/$s_!k1W9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14cadb91-957b-40a9-abee-b8239f5583c5_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!k1W9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14cadb91-957b-40a9-abee-b8239f5583c5_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!k1W9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14cadb91-957b-40a9-abee-b8239f5583c5_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!k1W9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14cadb91-957b-40a9-abee-b8239f5583c5_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>That pile is the part most teams never name, and it&#8217;s worse than the factory kind. The robot&#8217;s parts were all good. This pile isn&#8217;t, because some of the output is wrong in confident, plausible ways, so the human downstream is inspecting for quality, not just clearing a backlog. <strong>You paid to create all of it, and none of it counts until someone finishes it and ships it.</strong> Which means the real question isn&#8217;t &#8220;how many agents.&#8221; It&#8217;s <strong>&#8220;where&#8217;s the slow station,&#8221;</strong> and the book finds the answer on a hiking trail.</p><div><hr></div><h2>Find your real bottleneck</h2><p>Goldratt teaches the idea away from the factory, and it&#8217;s the scene that stuck with me for years. Halfway through the book, Alex, the plant manager, gets roped into leading a weekend hike for his son Dave&#8217;s scout troop, and he can&#8217;t keep the line together. The fast kids race ahead, a long gap opens in the middle, and the whole troop falls behind no matter how he reshuffles it. Watching that gap stretch and snap shut, he has the realization the rest of the book turns on. <strong>The troop is a chain, and a chain doesn&#8217;t travel at the speed of its quickest kid. It travels at the speed of its slowest.</strong> That kid is Herbie, a heavy boy lugging an overloaded pack at the very back. No amount of hustle from the kids up front buys back a minute, because sooner or later they all have to wait for Herbie.</p><p>So Alex does two things that feel backwards. He moves Herbie to the front, where nobody can be stuck behind someone slower. Then he opens Herbie&#8217;s pack and parcels the heavy gear out to the fast kids who have room to carry it. Herbie speeds up, and <strong>because Herbie now sets the pace, the whole troop speeds up with him.</strong> Pushing the fast kids was never the answer. Helping the slow one was.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fzvG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b711fe9-70bb-4076-9f3d-2040202fda74_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fzvG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b711fe9-70bb-4076-9f3d-2040202fda74_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!fzvG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b711fe9-70bb-4076-9f3d-2040202fda74_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!fzvG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b711fe9-70bb-4076-9f3d-2040202fda74_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!fzvG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b711fe9-70bb-4076-9f3d-2040202fda74_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fzvG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b711fe9-70bb-4076-9f3d-2040202fda74_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0b711fe9-70bb-4076-9f3d-2040202fda74_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4425995,&quot;alt&quot;:&quot;hand-drawn two-panel diagram of a scout troop hiking a trail. Top panel, &#8220;Before&#8221;: the line is stretched into a long gap, fast kids far ahead, a heavy boy labeled Herbie lagging at the back under a big pack, the group spread out and behind schedule. Bottom panel, &#8220;After&#8221;: Herbie moved to the front setting the pace, the contents of his pack redistributed into the other kids&#8217; packs, the whole line tight and moving together.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/203930285?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b711fe9-70bb-4076-9f3d-2040202fda74_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="hand-drawn two-panel diagram of a scout troop hiking a trail. Top panel, &#8220;Before&#8221;: the line is stretched into a long gap, fast kids far ahead, a heavy boy labeled Herbie lagging at the back under a big pack, the group spread out and behind schedule. Bottom panel, &#8220;After&#8221;: Herbie moved to the front setting the pace, the contents of his pack redistributed into the other kids&#8217; packs, the whole line tight and moving together." title="hand-drawn two-panel diagram of a scout troop hiking a trail. Top panel, &#8220;Before&#8221;: the line is stretched into a long gap, fast kids far ahead, a heavy boy labeled Herbie lagging at the back under a big pack, the group spread out and behind schedule. Bottom panel, &#8220;After&#8221;: Herbie moved to the front setting the pace, the contents of his pack redistributed into the other kids&#8217; packs, the whole line tight and moving together." srcset="https://substackcdn.com/image/fetch/$s_!fzvG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b711fe9-70bb-4076-9f3d-2040202fda74_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!fzvG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b711fe9-70bb-4076-9f3d-2040202fda74_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!fzvG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b711fe9-70bb-4076-9f3d-2040202fda74_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!fzvG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b711fe9-70bb-4076-9f3d-2040202fda74_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>That&#8217;s the whole theory of constraints in one walk. Every system has one step that sets the pace for all the others, and improving any step that isn&#8217;t that one is a mirage. Goldratt says it flatly: <strong>&#8221;An hour lost at a bottleneck is an hour lost for the entire system. An hour saved at a non-bottleneck is a mirage.&#8221;</strong> Speed up the fast kids and the line just spreads out further. The only move that matters is finding Herbie and taking weight off Herbie.</p><p>So how do you find your Herbie? The book&#8217;s method is refreshingly low-tech: <strong>follow the piles.</strong> Alex doesn&#8217;t spot his slow machines in a report. He finds them by walking the factory floor and seeing the mountains of half-finished parts stacked up in front of them. A bottleneck always looks the same. <strong>There is a pile of work waiting in front of it, because the steps before it keep feeding it faster than it can keep up.</strong> And there are idle, starved steps behind it, because they have run out of work to do while everything is stuck upstream. So don&#8217;t theorize about where your slow step is. <strong>Go find where the work stacks up, and where people are stuck waiting on someone else.</strong></p><p>Run that test on an AI-powered workflow today and the pile shows up in a predictable place. Generation got cheap and fast. A model writes the first draft, the first version of the code, the first pass of almost anything, and it costs almost nothing. <strong>When the cheap step gets ten times cheaper, it stops being the constraint, and the constraint moves to whatever it feeds. What it feeds is judgment.</strong> Someone has to read the output, decide whether it&#8217;s right, catch the confident mistake, and put their name on it. <strong>Review, verification, and the taste to know what&#8217;s worth shipping: that&#8217;s the heavy pack now.</strong></p><p>The receipts back this up. When METR, an AI research lab, <a href="https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/">ran a randomized trial</a> on experienced developers in 2025, the developers believed AI tools had made them 20% faster, and the measurements showed they&#8217;d actually gone 19% slower. Feeling productive and being productive came apart. <a href="https://dora.dev/dora-report-2025/">Google Cloud&#8217;s 2025 DORA report</a> found the matching pattern at the team level: AI lifts how much you produce, but it lowers delivery stability, because the acceleration exposes the weak step downstream instead of removing it. <strong>The time you save generating gets spent right back auditing, because nobody can review the volume the agents produce.</strong></p><p>And this isn&#8217;t only an engineering story. Point agents at a marketing team and the one brand reviewer who keeps fifty draft variants on-voice becomes the slow step. Point them at support and the person who owns tone and policy is the gate a hundred suggested replies wait behind. <strong>Wherever a human still has to verify the work and own the result, that judgment is the new bottleneck, no matter how cheap the drafting got.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!eMgg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb551c075-2fa3-4a05-8b99-0f6d49850e70_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eMgg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb551c075-2fa3-4a05-8b99-0f6d49850e70_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!eMgg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb551c075-2fa3-4a05-8b99-0f6d49850e70_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!eMgg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb551c075-2fa3-4a05-8b99-0f6d49850e70_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!eMgg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb551c075-2fa3-4a05-8b99-0f6d49850e70_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eMgg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb551c075-2fa3-4a05-8b99-0f6d49850e70_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b551c075-2fa3-4a05-8b99-0f6d49850e70_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3849392,&quot;alt&quot;:&quot;hand-drawn horizontal pipeline with four stages &#8212; Idea, Generate, Review, Ship. The Generate stage is wide and busy with several agent icons feeding it, labeled &#8220;fast / cheap.&#8221; Between Generate and Review a thick stack of waiting papers and code files piles up. The Review stage is a single narrow gate with one human icon, labeled &#8220;the constraint.&#8221; The Ship stage at the far right is nearly empty. A caption underneath reads &#8220;adding agents to Generate just grows the queue.&#8221;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/203930285?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb551c075-2fa3-4a05-8b99-0f6d49850e70_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="hand-drawn horizontal pipeline with four stages &#8212; Idea, Generate, Review, Ship. The Generate stage is wide and busy with several agent icons feeding it, labeled &#8220;fast / cheap.&#8221; Between Generate and Review a thick stack of waiting papers and code files piles up. The Review stage is a single narrow gate with one human icon, labeled &#8220;the constraint.&#8221; The Ship stage at the far right is nearly empty. A caption underneath reads &#8220;adding agents to Generate just grows the queue.&#8221;" title="hand-drawn horizontal pipeline with four stages &#8212; Idea, Generate, Review, Ship. The Generate stage is wide and busy with several agent icons feeding it, labeled &#8220;fast / cheap.&#8221; Between Generate and Review a thick stack of waiting papers and code files piles up. The Review stage is a single narrow gate with one human icon, labeled &#8220;the constraint.&#8221; The Ship stage at the far right is nearly empty. A caption underneath reads &#8220;adding agents to Generate just grows the queue.&#8221;" srcset="https://substackcdn.com/image/fetch/$s_!eMgg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb551c075-2fa3-4a05-8b99-0f6d49850e70_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!eMgg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb551c075-2fa3-4a05-8b99-0f6d49850e70_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!eMgg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb551c075-2fa3-4a05-8b99-0f6d49850e70_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!eMgg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb551c075-2fa3-4a05-8b99-0f6d49850e70_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>Now watch what the typical agent factory does: it pours more agents into generation, the step that was already fast. <strong>Every agent you add upstream of the constraint just hands it a taller pile.</strong> That&#8217;s not a throughput machine. It&#8217;s an inventory machine, and a very impressive one. Engineering teams already hit this exact wall with AI coding tools. Output jumped at first, then flattened out, because the extra code just piled up waiting for a human to review it.</p><p>Finding the bottleneck is the easy half. What you do once you&#8217;ve found it is where the throughput actually comes from, and the book gave me a handful of principles for that.</p><div><hr></div><h2>Work your real constraint</h2><p>A quick word on what follows. These are principles from the book, not a rigid checklist to run top to bottom. The order helps, but take the ones that fit your situation and try them.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gMDz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0418ce0e-68ed-4c27-84cf-bec6e91eb05f_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gMDz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0418ce0e-68ed-4c27-84cf-bec6e91eb05f_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!gMDz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0418ce0e-68ed-4c27-84cf-bec6e91eb05f_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!gMDz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0418ce0e-68ed-4c27-84cf-bec6e91eb05f_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!gMDz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0418ce0e-68ed-4c27-84cf-bec6e91eb05f_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gMDz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0418ce0e-68ed-4c27-84cf-bec6e91eb05f_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0418ce0e-68ed-4c27-84cf-bec6e91eb05f_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3451870,&quot;alt&quot;:&quot;hand-drawn loop of five principles for working a constraint. Map the flow (a simple boxes-and-arrows pipeline from idea to shipped). Find the constraint (a magnifying glass over the one step with a queue in front of it). Get more from it (hands lifting weight off that step). Pace the rest to it (a small speed dial set to the slow step&#8217;s pace). Widen it (a wrench tightening the constraint, with a new agent icon pointed at it). The loop closes with a handwritten note: &#8220;the constraint moves, come back around.&#8221;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/203930285?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0418ce0e-68ed-4c27-84cf-bec6e91eb05f_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="hand-drawn loop of five principles for working a constraint. Map the flow (a simple boxes-and-arrows pipeline from idea to shipped). Find the constraint (a magnifying glass over the one step with a queue in front of it). Get more from it (hands lifting weight off that step). Pace the rest to it (a small speed dial set to the slow step&#8217;s pace). Widen it (a wrench tightening the constraint, with a new agent icon pointed at it). The loop closes with a handwritten note: &#8220;the constraint moves, come back around.&#8221;" title="hand-drawn loop of five principles for working a constraint. Map the flow (a simple boxes-and-arrows pipeline from idea to shipped). Find the constraint (a magnifying glass over the one step with a queue in front of it). Get more from it (hands lifting weight off that step). Pace the rest to it (a small speed dial set to the slow step&#8217;s pace). Widen it (a wrench tightening the constraint, with a new agent icon pointed at it). The loop closes with a handwritten note: &#8220;the constraint moves, come back around.&#8221;" srcset="https://substackcdn.com/image/fetch/$s_!gMDz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0418ce0e-68ed-4c27-84cf-bec6e91eb05f_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!gMDz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0418ce0e-68ed-4c27-84cf-bec6e91eb05f_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!gMDz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0418ce0e-68ed-4c27-84cf-bec6e91eb05f_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!gMDz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0418ce0e-68ed-4c27-84cf-bec6e91eb05f_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Map your flow first</h3><p>The honest starting point isn&#8217;t &#8220;find the constraint.&#8221; You can&#8217;t find a thing you can&#8217;t see. <strong>The first move is to draw your actual flow, the path one real piece of work takes from idea to shipped.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4L4K!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c4492bd-d9ac-4466-9581-074cb76c9074_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4L4K!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c4492bd-d9ac-4466-9581-074cb76c9074_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!4L4K!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c4492bd-d9ac-4466-9581-074cb76c9074_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!4L4K!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c4492bd-d9ac-4466-9581-074cb76c9074_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!4L4K!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c4492bd-d9ac-4466-9581-074cb76c9074_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4L4K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c4492bd-d9ac-4466-9581-074cb76c9074_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2c4492bd-d9ac-4466-9581-074cb76c9074_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3574652,&quot;alt&quot;:&quot;hand-drawn value-stream map. A horizontal row of labeled boxes for the steps of a workflow: request, spec, build, review, approve, ship. Between each pair of boxes a small clock or zig-zag wait marker with a time under it (for example &#8220;2 hours&#8221;, &#8220;3 days&#8221;), and the wait times are visibly much larger than the short work times inside the boxes. A note reads: most of the time is spent waiting between steps, not inside them.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/203930285?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c4492bd-d9ac-4466-9581-074cb76c9074_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="hand-drawn value-stream map. A horizontal row of labeled boxes for the steps of a workflow: request, spec, build, review, approve, ship. Between each pair of boxes a small clock or zig-zag wait marker with a time under it (for example &#8220;2 hours&#8221;, &#8220;3 days&#8221;), and the wait times are visibly much larger than the short work times inside the boxes. A note reads: most of the time is spent waiting between steps, not inside them." title="hand-drawn value-stream map. A horizontal row of labeled boxes for the steps of a workflow: request, spec, build, review, approve, ship. Between each pair of boxes a small clock or zig-zag wait marker with a time under it (for example &#8220;2 hours&#8221;, &#8220;3 days&#8221;), and the wait times are visibly much larger than the short work times inside the boxes. A note reads: most of the time is spent waiting between steps, not inside them." srcset="https://substackcdn.com/image/fetch/$s_!4L4K!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c4492bd-d9ac-4466-9581-074cb76c9074_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!4L4K!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c4492bd-d9ac-4466-9581-074cb76c9074_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!4L4K!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c4492bd-d9ac-4466-9581-074cb76c9074_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!4L4K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c4492bd-d9ac-4466-9581-074cb76c9074_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>Put one box per step in a row: request, spec, build, review, approve, ship. Then do the part everyone forgets. Between each pair of boxes, write down how long work usually sits there waiting to be picked up. <strong>In knowledge work, a task spends most of its life parked in a queue, not being worked on</strong>, which is exactly why <a href="https://en.wikipedia.org/wiki/Value-stream_mapping">value-stream mapping</a> puts wait time on the board right next to work time. It&#8217;s also what Alex does when he walks his plant floor instead of reading reports: he follows the piles. Do it on a wall, in half an hour, with the people who actually do the work. They already know where it jams; the map just makes it impossible to deny.</p><h3>Find your one real constraint</h3><p>With the map and its wait times in front of you, the biggest pile of waiting work usually points straight at your bottleneck.</p><p>Right now, for most teams using AI, that slow step is review. <strong>Generation got cheap, so work piles up wherever a human still has to read it, judge it, and sign off.</strong> But usual is not the same as always, and reaching for the fashionable answer is its own trap. Look at your own map and check. For one team the slow step is writing the spec, because nothing gets built until the requirements are nailed down. For another it&#8217;s pulling the data, because one tricky query sits between every question and a real answer. For another it&#8217;s the security sign-off, or the final deploy, or any step that hangs on a rare approval.</p><p><strong>Notice that none of those is a person. It&#8217;s a step in the process</strong>. The reviewer is not your bottleneck; the review step is. The difference matters, because you fix a step, you don&#8217;t fix a human. <strong>Find the step where work piles up, name it out loud, and write it down before you spend a dollar.</strong></p><h3>Get more out of it before you spend</h3><p>Before you spend a dollar widening the slow step, get more out of the capacity it already has. This is the cheapest win there is, and the book makes it concrete.</p><p>In Alex&#8217;s plant, the bottleneck machines sat idle during lunch, because the operators all broke at the same time. So they staggered the breaks and the machines ran straight through: same machines, more output, zero dollars spent. They made two more moves like it. They moved quality inspection to before the bottleneck, so it never wasted a minute on a part that was going to be scrapped later. And they stopped feeding it parts for orders that weren&#8217;t even due, so every hour went to work that actually mattered.</p><p>Run those same three moves on a review step that has become your bottleneck:</p><ul><li><p><strong>Never let it sit idle.</strong> Keep a small batch of work queued and ready in front of it, so the review step never stalls waiting for something to land.</p></li><li><p><strong>Never feed it junk.</strong> Put an AI agent in front of review to do a first pass. It waves through the obviously fine and flags the obviously broken, so the only things that reach a human are the genuine judgment calls.</p></li><li><p><strong>Never feed it work that doesn&#8217;t matter.</strong> Stop sending output to review for a feature that just got cut or a draft nobody asked for. Every review hour should go to something that&#8217;s actually shipping.</p></li></ul><p>None of that costs money or a new hire. <strong>You&#8217;re not making the slow step bigger yet. You&#8217;re making sure not a minute of it is wasted.</strong></p><h3>Pace the rest of the work to it</h3><p>This is the one almost everyone gets wrong, because it feels backwards. Once you know your slow step, you deliberately slow everything else down to match its pace.</p><p>The book calls the mechanism the drum, the buffer, and the rope. <strong>The slow step is the drum: it sets the beat for the whole line.</strong> A small buffer of work sits right in front of it so it never starves. And a &#8220;rope&#8221; holds back the start of the line, releasing new work only as fast as the slow step can actually take it. In the plant, Alex stops dumping raw material onto the floor just to keep people busy, and the mountains of half-finished inventory melt away.</p><p>For an AI workflow it comes down to one rule: <strong>don&#8217;t let your agents generate faster than your slow step can absorb.</strong> In practice you cap how much unreviewed work is allowed to pile up. Say the review step can clear about thirty pull requests a day. You set the limit at roughly a day&#8217;s worth in the queue. When the queue hits that cap, generation pauses, and the people who would have started new work go help clear the backlog instead.</p><p>If that sounds like a Kanban board with <a href="https://en.wikipedia.org/wiki/Kanban_(development)">work-in-progress limits</a>, that is exactly where the idea came from. The rule of thumb is blunt, and it works: <strong>stop starting, and start finishing.</strong></p><h3>Then widen it, and aim your next agent there</h3><p>Only now, after you&#8217;ve squeezed the free gains out of the slow step, do you actually spend on it. And <strong>the spending goes to the slow step, never to the part that&#8217;s already fast.</strong></p><p>When Alex&#8217;s team ran out of no-cost tricks, they got their hands dirty. They hauled two old machines out of storage to take some load off the bottleneck, and they sent the overflow to an outside vendor. Not elegant, but it widened the exact step that was holding the whole plant back.</p><p>Your version is the same idea, aimed at your slow step. <strong>If review is the bottleneck, the most valuable thing you can build is not another generator. It is something that widens review itself:</strong></p><ul><li><p>A <strong>first-pass review agent</strong> that handles the easy 80% of changes, so a human only has to look at the hard 20%.</p></li><li><p>An <strong>eval</strong> (a quick automated check against examples you trust) that clears the routine cases, so a human only sees the ones it flags.</p></li></ul><p>If your slow step is writing the spec instead, you build the agent that drafts the first version of the spec from the request, so the work starts at &#8220;edit this&#8221; rather than &#8220;write this from a blank page.&#8221; <strong>The agent worth building is the one that widens your slowest step. Every other agent just makes a bigger pile.</strong></p><h3>Expect the constraint to move</h3><p>Here&#8217;s the part that catches people off guard. <strong>The moment you widen one slow step, the bottleneck doesn&#8217;t vanish. It jumps somewhere else.</strong> Fix review, and the slow step becomes deployment, or one overloaded approval, or a sign-off that was invisible only because review was hiding it.</p><p>In the book, once Alex fixes his machines, the constraint leaves the factory floor entirely. It moves first to the market, and then, to everyone&#8217;s surprise, to the company&#8217;s own outdated rules, policies that made sense years before and were now quietly throttling everything. Goldratt&#8217;s word for that trap is inertia: pouring effort into yesterday&#8217;s bottleneck long after it stopped being the problem. Half the time the real constraint isn&#8217;t a machine or even a step. It&#8217;s a rule nobody has revisited, like &#8220;every change needs three approvals.&#8221;</p><p><strong>So this is never a one-time project.</strong> Put a recurring half-hour on the calendar to re-walk your flow map and ask one question: <strong>where does the work pile up now?</strong> The answer will have moved, and so should your next fix and your next agent.</p><p>That is what replaces &#8220;twenty workflows, twenty agents.&#8221; Not a sprawl you launch all at once, but one constraint found, fed, and widened, then the next one. <strong>Fewer agents, pointed at better places, and a number that finally moves.</strong></p><div><hr></div><h2>Build the one that matters</h2><p>So what does building that agent actually look like? Smaller than you&#8217;d think. Say your slow step is review. <strong>You don&#8217;t need a platform or a six-month program.</strong> In <a href="https://code.claude.com/docs/en/sub-agents">Claude Code</a>, the smallest version is a subagent: <strong>a short markdown file (just a plain text file)</strong> in your project that gives an agent a name, a set of tools that can only read and never change anything, and a system prompt (a written instruction) spelling out exactly what to check on a first pass. It reads every change, flags the handful that need a person, and waves the rest through. Your reviewer stops drowning in trivial diffs and spends their scarce attention on the calls that actually need judgment. The same shape works far from code: a subagent that drafts the first version of a spec, or one that writes the first cut of the gnarly query for your analyst to correct.</p><p>The part people skip is what the agent checks against. <strong>The teams getting real mileage out of agents right now aren&#8217;t the ones with the best model, they&#8217;re the ones with the best evals.</strong> An eval is just a test with an answer key. For a first-pass review agent, the answer key is a handful of past changes where you already know which ones had real problems. You run the agent over them and see where it disagrees with you. Does it catch the genuinely broken ones and wave the clean ones through? You tighten its instructions until its calls line up with yours, and only then do you trust it on live work. <a href="https://www.anthropic.com/engineering/demystifying-evals-for-ai-agents">Anthropic&#8217;s own write-up on evals</a> is a hype-free place to start. <strong>An agent at your constraint with no eval behind it is just a faster way to be confidently wrong.</strong></p><p>You don&#8217;t have to do any of this alone, and you shouldn&#8217;t. <strong>The people doing the work already know where it jams.</strong> Put the flow map on a wall and let your engineers point at the step that always stalls; ask the analyst what they wait on; ask the designer what sits in their queue. The framing that tends to land, whether you&#8217;re explaining it to the team or the people who hold the budget, is short: <strong>we don&#8217;t have an agent shortage, we have a constraint we haven&#8217;t named.</strong> Once everyone is looking at the same slow step, the argument about how many agents to build mostly answers itself.</p><p>One last thing, and it&#8217;s the part I find genuinely fun. The specific tools in this article will age fast. A year from now, generation will be cheaper, the agents sharper, and your slow step sitting somewhere new. None of that changes the move. <strong>Draw the flow, find the one step everything waits on, feed it, and aim your next build straight at it.</strong> That is why a novel about a steel plant still reads like a manual for building AI agents. The machines changed. The mistake didn&#8217;t, and neither did the fix.</p>]]></content:encoded></item><item><title><![CDATA[How to get your team past the AI coding plateau]]></title><description><![CDATA[Get a working definition of agentic coding. Walk through the principles and the learnings. Plot your team on the grid. Fill the readiness checklist. Bring the next move to your CTO.]]></description><link>https://www.theaithinker.com/p/how-to-get-your-team-past-the-ai</link><guid isPermaLink="false">https://www.theaithinker.com/p/how-to-get-your-team-past-the-ai</guid><dc:creator><![CDATA[Adam Faik]]></dc:creator><pubDate>Mon, 25 May 2026 15:03:12 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/412445a3-d11a-414b-820c-2aeaf3d73f18_1024x731.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Your engineering team installed Cursor or Claude Code six months ago. Maybe Copilot before that. They use it daily. <strong>PRs go out a bit faster, code reviews catch a bit less, everyone agrees it&#8217;s good.</strong> And then last week, someone said the quiet part out loud at your team meeting. &#8221;Wait, is this it?&#8221;</p><p>The team learned a new tool. They got a small productivity bump. The next jump never came. <strong>And now, sitting in the all-hands, you can feel the air going out of the room.</strong> You sold this to your CTO as a step-change in time to market. It&#8217;s looking more like an autocomplete upgrade.</p><p>I want you to spend 35 minutes on a video before your team decides this is as good as it gets. It&#8217;s a talk from Szczepan Faber and Mike Nakhimovich, two engineers on Airbnb&#8217;s developer platform team. They explain how their org went from zero to 64% of PRs materialized through agentic coding in nine months. <strong>No marketing slides, no vendor pitch, two practitioners with diagrams and the receipts.</strong></p><div id="youtube2-o6oYc9-X9Iw" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;o6oYc9-X9Iw&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/o6oYc9-X9Iw?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>I know. Another AI talk. <strong>But this one is different.</strong> Most agentic engineering announcements recently read like product trailers. Stripe wrote up their <a href="https://stripe.dev/blog/minions-stripes-one-shot-end-to-end-coding-agents">Minions</a>, one-shot end-to-end coding agents that ship code from issue to PR. Spotify wrote up their <a href="https://engineering.atspotify.com/2025/11/spotifys-background-coding-agent-part-1">background coding agent</a> you can fire off from Slack. Both are real engineering teams shipping real systems. But the writing is announcement-shaped, and you walk away knowing what they built, not how to bring your own team along.</p><p>This one is two practitioners walking through their methodology, their mistakes, the proficiency model they built for engineers, and the org structure that scaled it. With actual numbers. With actual diagrams. <strong>Practitioner depth, not announcement depth.</strong></p><p>A disclaimer before you watch. <strong>The talk is from October 2025, which is roughly prehistory in AI time.</strong> A few things they mention have already evolved. Their internal stack is theirs, not yours. You shouldn&#8217;t copy what they did. Since then, Airbnb&#8217;s CEO has publicly stated AI writes nearly 60% of new code at Airbnb (<a href="https://techcrunch.com/2026/05/08/airbnb-says-ai-now-writes-60-of-its-new-code/">TechCrunch coverage of the May 2026 earnings call</a>). The platform team&#8217;s October talk is still the operating manual. The May number is the receipt. The definitions, principles, and learnings travel.</p><p>This post is the distillation. A working definition of agentic coding so you can say it cleanly to your team. The principles their team operated by. The mistakes they fixed. And a small grid you can use to plot your tech function and pick the next project to push for. Watch the video first if you have the time. If you don&#8217;t, <strong>this post stands on its own.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!w_c_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b886815-e430-4cf8-abee-d6487819d278_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!w_c_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b886815-e430-4cf8-abee-d6487819d278_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!w_c_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b886815-e430-4cf8-abee-d6487819d278_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!w_c_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b886815-e430-4cf8-abee-d6487819d278_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!w_c_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b886815-e430-4cf8-abee-d6487819d278_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!w_c_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b886815-e430-4cf8-abee-d6487819d278_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0b886815-e430-4cf8-abee-d6487819d278_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3865730,&quot;alt&quot;:&quot;hand-drawn black-and-white infographic showing five horizontal stops the article walks through &#8212; Plateau, Definition, Principles, Learnings, Grid &#8212; each represented by a small icon and labeled with what to expect.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/199143416?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b886815-e430-4cf8-abee-d6487819d278_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="hand-drawn black-and-white infographic showing five horizontal stops the article walks through &#8212; Plateau, Definition, Principles, Learnings, Grid &#8212; each represented by a small icon and labeled with what to expect." title="hand-drawn black-and-white infographic showing five horizontal stops the article walks through &#8212; Plateau, Definition, Principles, Learnings, Grid &#8212; each represented by a small icon and labeled with what to expect." srcset="https://substackcdn.com/image/fetch/$s_!w_c_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b886815-e430-4cf8-abee-d6487819d278_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!w_c_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b886815-e430-4cf8-abee-d6487819d278_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!w_c_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b886815-e430-4cf8-abee-d6487819d278_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!w_c_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b886815-e430-4cf8-abee-d6487819d278_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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><ul><li><p><strong>The plateau.</strong> I&#8217;ll show you why AI coding tools alone gave your team a small bump and stalled.</p></li><li><p><strong>The definition.</strong> I&#8217;ll give you a clean working definition of agentic coding to quote to your team.</p></li><li><p><strong>The principles.</strong> I&#8217;ll walk you through the org moves Airbnb&#8217;s team built around the tools.</p></li><li><p><strong>The learnings.</strong> I&#8217;ll point out the post-mortems you&#8217;d repeat without them.</p></li><li><p><strong>The grid.</strong> I&#8217;ll hand you a four-cell grid to plot your team and pick the next move.</p></li></ul><p>By the end, you&#8217;ll have the working definition, the principles, the learnings, and a four-cell grid plotted with your tech team&#8217;s location and a next-move sentence. You&#8217;ll also walk away with a 7-category readiness checklist you can paste into a Google Doc and fill in row by row. <strong>You walk away with the conversation to have with your CTO on Monday, and a way to reframe AI tool ROI as agentic coding maturity.</strong></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://docs.google.com/document/d/11BG_m9-e0kcuwVp-ycy9fO6kcHhIeH6elt8BMoRvbqM/edit?usp=sharing&quot;,&quot;text&quot;:&quot;Read the checklist&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://docs.google.com/document/d/11BG_m9-e0kcuwVp-ycy9fO6kcHhIeH6elt8BMoRvbqM/edit?usp=sharing"><span>Read the checklist</span></a></p><p>Let&#8217;s pin it down.</p><div><hr></div><h2>Name the plateau</h2><p>Every team is hitting the same wall right now. The AI coding tool went in, the productivity bump was real, and then nothing. The team starts wondering out loud whether they bought the future or just a faster autocomplete. <strong>Naming the wall is the first move, because the wall has a shape and the shape tells you what comes next.</strong></p><p>Airbnb&#8217;s platform team measured it. They ran the velocity numbers across three engineer cohorts. Non-AI users moved at the team&#8217;s baseline pace. AI-aided non-agentic users (the autocomplete-and-chat crowd) shipped PRs at +27% velocity. Full agentic users shipped at +38%. <strong>The eleven-point gap between tools-only and agentic is the ceiling teams hit when they stop at the tool.</strong> That gap is not a tool failure. It&#8217;s the natural plateau most teams sit on right now.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KrBZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d72b116-6430-4e03-bcb4-86a512765300_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KrBZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d72b116-6430-4e03-bcb4-86a512765300_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!KrBZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d72b116-6430-4e03-bcb4-86a512765300_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!KrBZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d72b116-6430-4e03-bcb4-86a512765300_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!KrBZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d72b116-6430-4e03-bcb4-86a512765300_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KrBZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d72b116-6430-4e03-bcb4-86a512765300_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0d72b116-6430-4e03-bcb4-86a512765300_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2563125,&quot;alt&quot;:&quot;hand-drawn bar chart with three vertical bars representing PR velocity uplift: non-AI users at 0%, AI-aided tools-only at 27%, and full agentic coding at 38%. A curly brace between the second and third bars highlights the eleven-point gap, labeled &#8220;where infrastructure, practice, and leadership live.&#8221;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/199143416?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d72b116-6430-4e03-bcb4-86a512765300_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="hand-drawn bar chart with three vertical bars representing PR velocity uplift: non-AI users at 0%, AI-aided tools-only at 27%, and full agentic coding at 38%. A curly brace between the second and third bars highlights the eleven-point gap, labeled &#8220;where infrastructure, practice, and leadership live.&#8221;" title="hand-drawn bar chart with three vertical bars representing PR velocity uplift: non-AI users at 0%, AI-aided tools-only at 27%, and full agentic coding at 38%. A curly brace between the second and third bars highlights the eleven-point gap, labeled &#8220;where infrastructure, practice, and leadership live.&#8221;" srcset="https://substackcdn.com/image/fetch/$s_!KrBZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d72b116-6430-4e03-bcb4-86a512765300_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!KrBZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d72b116-6430-4e03-bcb4-86a512765300_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!KrBZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d72b116-6430-4e03-bcb4-86a512765300_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!KrBZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d72b116-6430-4e03-bcb4-86a512765300_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>One honest caveat before we keep going. The wider data is messier than Airbnb&#8217;s three bars suggest. Google Cloud&#8217;s <a href="https://dora.dev/dora-report-2025/">2025 DORA report</a> found individual output rises while team delivery stays flat. <a href="https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/">METR&#8217;s July 2025 RCT</a> found experienced open-source devs were 19% slower with AI tools, while they believed they were 20% faster. <strong>Airbnb&#8217;s three bars are one of the cleanest team-level signals we have, not the universal shape.</strong> Treat them as the strongest existing public benchmark, not the law of nature.</p><p>Three things sit inside that eleven-point gap.</p><ul><li><p>The first is <strong>practice maturity</strong>: how engineers actually use the tool day to day, whether they auto-approve, whether they review every diff, whether they push back when the agent is confidently wrong.</p></li><li><p>The second is <strong>org infrastructure</strong>: the paved paths, the internal champions, the sandboxed environments, the MCP servers that wire internal context into the loop.</p></li><li><p>The third is <strong>leadership conviction</strong>: whether the org frames agentic coding as a step-change worth funding or a productivity tweak worth tolerating.</p></li></ul><p><strong>Each one is a stop on a journey your team has been walking since the IDE era.</strong> None of them gets fixed by buying a better tool.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_I2o!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83b3e4e9-82bb-4af3-8c9c-7242c7f0705c_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_I2o!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83b3e4e9-82bb-4af3-8c9c-7242c7f0705c_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!_I2o!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83b3e4e9-82bb-4af3-8c9c-7242c7f0705c_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!_I2o!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83b3e4e9-82bb-4af3-8c9c-7242c7f0705c_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!_I2o!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83b3e4e9-82bb-4af3-8c9c-7242c7f0705c_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_I2o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83b3e4e9-82bb-4af3-8c9c-7242c7f0705c_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/83b3e4e9-82bb-4af3-8c9c-7242c7f0705c_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4007457,&quot;alt&quot;:&quot;hand-drawn three-stage timeline showing the evolution of software engineering, from a solo engineer typing alone (Stage 1: Legacy development), to the same engineer with a small agent icon offering autocomplete (Stage 2: AI-assisted), to one engineer steering multiple agents in parallel (Stage 3: Agentic coding).&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/199143416?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83b3e4e9-82bb-4af3-8c9c-7242c7f0705c_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="hand-drawn three-stage timeline showing the evolution of software engineering, from a solo engineer typing alone (Stage 1: Legacy development), to the same engineer with a small agent icon offering autocomplete (Stage 2: AI-assisted), to one engineer steering multiple agents in parallel (Stage 3: Agentic coding)." title="hand-drawn three-stage timeline showing the evolution of software engineering, from a solo engineer typing alone (Stage 1: Legacy development), to the same engineer with a small agent icon offering autocomplete (Stage 2: AI-assisted), to one engineer steering multiple agents in parallel (Stage 3: Agentic coding)." srcset="https://substackcdn.com/image/fetch/$s_!_I2o!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83b3e4e9-82bb-4af3-8c9c-7242c7f0705c_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!_I2o!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83b3e4e9-82bb-4af3-8c9c-7242c7f0705c_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!_I2o!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83b3e4e9-82bb-4af3-8c9c-7242c7f0705c_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!_I2o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83b3e4e9-82bb-4af3-8c9c-7242c7f0705c_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>Your team is at Stage 2. The plateau is not a sign you picked the wrong tool. It&#8217;s a sign the next investment is in the things around the tool. That reframe is the one you carry into the leadership conversation. <strong>You bought the engine. Now you&#8217;re missing the chassis.</strong></p><p>Naming the gap is the first move. Naming what agentic coding actually is comes next. That&#8217;s the language you&#8217;ll use upstream.</p><div><hr></div><h2>Define what agentic coding is</h2><p>Part of why your team is stuck in the plateau is that they&#8217;re using one word for two different things. Autocomplete is not agentic coding. Copy-paste from ChatGPT is not agentic coding. A single-shot retrieval over your codebase is not agentic coding. <strong>None of those is the thing Airbnb measured at +38%.</strong> Clean the definition first, then have the budget conversation honestly.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0UtW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F868fb635-3be2-44ce-aa50-f80858ab0b30_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0UtW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F868fb635-3be2-44ce-aa50-f80858ab0b30_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!0UtW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F868fb635-3be2-44ce-aa50-f80858ab0b30_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!0UtW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F868fb635-3be2-44ce-aa50-f80858ab0b30_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!0UtW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F868fb635-3be2-44ce-aa50-f80858ab0b30_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0UtW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F868fb635-3be2-44ce-aa50-f80858ab0b30_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/868fb635-3be2-44ce-aa50-f80858ab0b30_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1318513,&quot;alt&quot;:&quot;hand-drawn diagram of the agentic coding loop. An engineer at a laptop writes a spec. The spec feeds into a circular loop containing four labeled nodes: multiple LLM calls, multiple tool and MCP calls, configuration files, and guardrails. The loop outputs a code change. A human reviews the change before it merges into a PR.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/199143416?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F868fb635-3be2-44ce-aa50-f80858ab0b30_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="hand-drawn diagram of the agentic coding loop. An engineer at a laptop writes a spec. The spec feeds into a circular loop containing four labeled nodes: multiple LLM calls, multiple tool and MCP calls, configuration files, and guardrails. The loop outputs a code change. A human reviews the change before it merges into a PR." title="hand-drawn diagram of the agentic coding loop. An engineer at a laptop writes a spec. The spec feeds into a circular loop containing four labeled nodes: multiple LLM calls, multiple tool and MCP calls, configuration files, and guardrails. The loop outputs a code change. A human reviews the change before it merges into a PR." srcset="https://substackcdn.com/image/fetch/$s_!0UtW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F868fb635-3be2-44ce-aa50-f80858ab0b30_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!0UtW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F868fb635-3be2-44ce-aa50-f80858ab0b30_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!0UtW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F868fb635-3be2-44ce-aa50-f80858ab0b30_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!0UtW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F868fb635-3be2-44ce-aa50-f80858ab0b30_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>An engineer writes a short spec or prompt. That spec kicks off an autonomous loop. Inside the loop, an LLM is called several times. Tools and MCPs are called several times. The loop loads config files (AGENTS.md, CLAUDE.md, cursor rules) and runs against guardrails. Out the other side comes a materialized code change. A human reviews every line before it merges. <strong>The thing that makes it agentic is the autonomy in the middle, not the input or the output.</strong></p><p>The engineer doesn&#8217;t know exactly what&#8217;s happening in there. Szczepan put it bluntly:</p><blockquote><p>An engineer who is leveraging an agentic tool, you don&#8217;t know how many [calls happen]. You start your agentic session, but you don&#8217;t know exactly what prompts the agentic tool will use when it calls LLMs. You don&#8217;t know exactly how many times it&#8217;s going to call LLMs. You don&#8217;t know exactly what tools it&#8217;s going to use.</p></blockquote><p><strong>That uncertainty is the point.</strong> The loop owns the path. You own the spec and the review.</p><p>Three things people call agentic coding that aren&#8217;t. Autocomplete in your IDE is not agentic coding (one-shot, no tool calls). Pasting code into a chat window and copying the answer back is not agentic coding (no loop, no autonomy). A single-shot RAG search returning a snippet is not agentic coding (no decision-making, no tool composition). Szczepan made the same point.</p><blockquote><p>That&#8217;s not where the magic happens. This is not this paradigm shifting change where a human engineer can steer multiple agentic sessions and materialize code changes.</p></blockquote><p><strong>The +27% in the velocity chart is what you get from those. The +38% is what you get from the loop.</strong></p><p><strong>The cleanest way to explain the shape to leadership is borrowed from pair programming.</strong> You probably have engineers who&#8217;ve done it. In classic pair programming, the driver holds the keyboard and is tactical. The navigator looks at the whole forest and is strategic. They alternate roles through the day. Agentic coding flips that into something stable.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RBpe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77667215-3d5b-4270-bfcc-15d3cd341caf_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RBpe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77667215-3d5b-4270-bfcc-15d3cd341caf_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!RBpe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77667215-3d5b-4270-bfcc-15d3cd341caf_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!RBpe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77667215-3d5b-4270-bfcc-15d3cd341caf_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!RBpe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77667215-3d5b-4270-bfcc-15d3cd341caf_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RBpe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77667215-3d5b-4270-bfcc-15d3cd341caf_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/77667215-3d5b-4270-bfcc-15d3cd341caf_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4519234,&quot;alt&quot;:&quot;hand-drawn side-by-side comparison. Left panel: two engineers at one laptop in classic pair programming, one as the tactical driver at the keyboard, the other as the strategic navigator looking at the screen, alternating roles. Right panel: one engineer as the permanent navigator gesturing at the screen, a robot as the permanent driver at the keyboard materializing code.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/199143416?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77667215-3d5b-4270-bfcc-15d3cd341caf_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="hand-drawn side-by-side comparison. Left panel: two engineers at one laptop in classic pair programming, one as the tactical driver at the keyboard, the other as the strategic navigator looking at the screen, alternating roles. Right panel: one engineer as the permanent navigator gesturing at the screen, a robot as the permanent driver at the keyboard materializing code." title="hand-drawn side-by-side comparison. Left panel: two engineers at one laptop in classic pair programming, one as the tactical driver at the keyboard, the other as the strategic navigator looking at the screen, alternating roles. Right panel: one engineer as the permanent navigator gesturing at the screen, a robot as the permanent driver at the keyboard materializing code." srcset="https://substackcdn.com/image/fetch/$s_!RBpe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77667215-3d5b-4270-bfcc-15d3cd341caf_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!RBpe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77667215-3d5b-4270-bfcc-15d3cd341caf_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!RBpe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77667215-3d5b-4270-bfcc-15d3cd341caf_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!RBpe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77667215-3d5b-4270-bfcc-15d3cd341caf_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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 engineer becomes the permanent navigator. The agent becomes the permanent driver. The engineer steers the session with chat, click, voice, or image. The agent materializes the code. Szczepan said it directly:</p><blockquote><p>Agentic coding is where a developer becomes this permanent navigator and it&#8217;s steering that agentic session, and an agent or your tool is materializing code changes.</p></blockquote><p><strong>The leadership analogy travels because every CTO over the age of 35 has done pair programming.</strong></p><p>The technical version of the analogy is sharper. What the navigator is actually doing has a name. Andrej Karpathy <a href="https://x.com/karpathy/status/1937902205765607626">coined &#8220;context engineering&#8221;</a> in June 2025 as the successor to prompt engineering. He called it &#8221;the delicate art and science of filling the context window with just the right information for the next step.&#8221; That&#8217;s the navigator&#8217;s job. <strong>Pair programming is the analogy that lands. Context engineering is the technical second skin.</strong></p><p>Now that you can name it, here&#8217;s what Airbnb&#8217;s team learned about making it actually pay off.</p><div><hr></div><h2>Borrow these principles</h2><p>The tool was the easy part. The principles are the actual work. None of these cost engineering headcount. <strong>All of them are decisions you can push for from where you sit.</strong> Here are five that travel from Airbnb&#8217;s context to almost any other org.</p><h3>Start with a bold vision, work backwards</h3><p>Airbnb&#8217;s platform team opened their January 2025 leadership pitch with a single sentence:</p><blockquote><p>AI-powered, agentic coding will eventually replace traditional programming methods. How do we work backwards from that end state?</p></blockquote><p>Then they actually worked backwards. They didn&#8217;t ask &#8220;what experiment do we run next quarter?&#8221; They asked &#8220;what does Step 10 look like?&#8221; and walked backwards to Step 1. Szczepan was direct about why.</p><blockquote><p>If you only think about incremental improvements, it&#8217;s kind of hard to make a big change.</p></blockquote><p><strong>The move is the same for you.</strong> Put the destination on a slide before you put the roadmap on a slide.</p><h3>Use an analogy with leadership</h3><p>The pair-programming analogy didn&#8217;t land at Airbnb because it was clever. It landed because leadership had done pair programming.</p><blockquote><p>The way we&#8217;ve explained that to our leadership at start of 2025, we&#8217;ve used pair programming analogy for this.</p></blockquote><p>Szczepan said. Pick an analogy your leadership already trusts. Map agentic coding into it. <strong>Leadership conversations don&#8217;t move on facts. They move on framings your audience already believes.</strong> If they came from a team that used trunk-based development, talk in those terms. If they came from agile, talk in those terms.</p><h3>Measure holistically, never personally</h3><p>The default trap is to pick one number. Velocity goes up. Ship it. Sentiment goes down. Drop it. <strong>Airbnb uses three lenses together, never individually:</strong> developer sentiment from quarterly surveys, tool adoption across surfaces and PRs, and engineering output like PR velocity aggregated across the team.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KEnH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b1a8a8-056d-4a51-95d7-fdcd3c81498a_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KEnH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b1a8a8-056d-4a51-95d7-fdcd3c81498a_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!KEnH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b1a8a8-056d-4a51-95d7-fdcd3c81498a_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!KEnH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b1a8a8-056d-4a51-95d7-fdcd3c81498a_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!KEnH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b1a8a8-056d-4a51-95d7-fdcd3c81498a_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KEnH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b1a8a8-056d-4a51-95d7-fdcd3c81498a_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b1b1a8a8-056d-4a51-95d7-fdcd3c81498a_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2073002,&quot;alt&quot;:&quot;hand-drawn three-panel diagram. Panel 1 shows a thought bubble labeled &#8220;Sentiment, do engineers feel the tool is helping?&#8221; Panel 2 shows a bar chart labeled &#8220;Adoption, who is using it on which surfaces.&#8221; Panel 3 shows a line graph labeled &#8220;Engineering output, aggregated team velocity.&#8221; A banner underneath reads &#8220;Used together. Aggregated. For insight, not oversight.&#8221;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/199143416?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b1a8a8-056d-4a51-95d7-fdcd3c81498a_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="hand-drawn three-panel diagram. Panel 1 shows a thought bubble labeled &#8220;Sentiment, do engineers feel the tool is helping?&#8221; Panel 2 shows a bar chart labeled &#8220;Adoption, who is using it on which surfaces.&#8221; Panel 3 shows a line graph labeled &#8220;Engineering output, aggregated team velocity.&#8221; A banner underneath reads &#8220;Used together. Aggregated. For insight, not oversight.&#8221;" title="hand-drawn three-panel diagram. Panel 1 shows a thought bubble labeled &#8220;Sentiment, do engineers feel the tool is helping?&#8221; Panel 2 shows a bar chart labeled &#8220;Adoption, who is using it on which surfaces.&#8221; Panel 3 shows a line graph labeled &#8220;Engineering output, aggregated team velocity.&#8221; A banner underneath reads &#8220;Used together. Aggregated. For insight, not oversight.&#8221;" srcset="https://substackcdn.com/image/fetch/$s_!KEnH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b1a8a8-056d-4a51-95d7-fdcd3c81498a_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!KEnH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b1a8a8-056d-4a51-95d7-fdcd3c81498a_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!KEnH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b1a8a8-056d-4a51-95d7-fdcd3c81498a_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!KEnH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b1a8a8-056d-4a51-95d7-fdcd3c81498a_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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 philosophy slide from their talk is forwardable on its own.</p><blockquote><p>Our aim is to learn how AI impacts developer experience and software quality so we can improve both. Not to micromanage or rank individual performance. Focus on insight, not oversight.</p></blockquote><p>This is the principle to use when leadership asks for ROI metrics that don&#8217;t exist yet. <strong>The answer is not one metric.</strong> The answer is three, read together, looked at the team level. If you want a public framework they&#8217;ve heard of, Airbnb&#8217;s three lenses overlap with what <a href="https://getdx.com/news/introducing-the-dx-core-4/">DX calls the Core 4</a> (Noda and Tacho, January 2025): Speed, Effectiveness, Quality, Impact. Same principle: never one number, never per-individual.</p><h3>Meet developers where they are</h3><p>Sixty percent of Airbnb&#8217;s engineers prefer remote workspaces. Forty percent prefer local. IDE lovers stayed in IntelliJ. CLI lovers stayed in Vim. Mike tried the migration play once.</p><blockquote><p>We considered, maybe for a few days, grabbing all of our IntelliJ users and moving them over to VS Code. That lasted for a few days before I had to fear for my life that someone would come after me.</p></blockquote><p>He said. <strong>The principle: build parity across surfaces, not migrations.</strong> Or as Mike put it elsewhere:</p><blockquote><p>We don&#8217;t have one typical engineer at Airbnb.</p></blockquote><p>You probably don&#8217;t either.</p><h3>Invest in the org around the tool</h3><p><strong>This is the biggest gap most teams skip.</strong> The tool ships. The infra doesn&#8217;t. Nobody builds a champions network, no one paves the install path, no one wires internal context into the agent. Airbnb invested in all three. A champions network of thirty cross-functional engineers (not the core team of four). Paved paths with single-command install, automagic auth, and project templates. Over a dozen internal MCP servers connecting agents to internal systems. Szczepan said the line out loud:</p><blockquote><p>Your agentic tool is not enough. You will have to have a lot of tech around it.</p></blockquote><p>If you want a second public example to back this up, Shopify built the same pattern at roughly 10x the scale. CEO Tobi L&#252;tke&#8217;s leaked AI memo became an internal movement. The eng org built an internal LLM proxy, standardized MCP servers wired to their wiki and PM tool and data warehouse, and bi-annual performance reviews that explicitly evaluate &#8220;AI-reflexivity.&#8221; Two-anchor evidence is sturdier than one-anchor evidence. (<a href="https://www.firstround.com/ai/shopify">First Round wrote it up</a>; <a href="https://www.bvp.com/atlas/inside-shopifys-ai-first-engineering-playbook">Bessemer wrote up the engineering playbook</a>.) <strong>This is the line item to fight for in your next budget cycle.</strong></p><h3>Add three engineering principles</h3><p>Three more principles, briefly. First, wrap open source instead of building your own orchestrator. The rule is &#8220;don&#8217;t build a full orchestrator from scratch,&#8221; not &#8220;wrap whatever&#8217;s hosted externally.&#8221; Even Airbnb wraps their own <code>airchat-cli</code>, not raw OpenAI or Anthropic. In regulated orgs (finance, healthcare, EU-AI-Act-bound), routing internal code through a third-party CLI is a procurement and legal fight, not a one-line decision. <strong>Build the thin wrapper layer locally if compliance demands it.</strong></p><p><strong>Second, bring context to agents through tool calling, not by training models.</strong> &#8221;Tool calling is all you need,&#8221; Mike said. He&#8217;s riffing on the 2017 Transformer paper title. His point: the LLM doesn&#8217;t need bespoke training on your codebase. It just needs the right tools available. Whether tool calling alone is enough versus the richer MCP pattern is contested in 2026. <a href="https://www.anthropic.com/engineering/code-execution-with-mcp">Anthropic&#8217;s November 2025 &#8220;Code execution with MCP&#8221;</a> pushes more sophisticated patterns. Mike&#8217;s line still holds as the directional claim.</p><p>Third, never drop human review on the way to the PR. Szczepan&#8217;s line is the one to forward to anyone tempted to &#8220;ship faster&#8221;:</p><blockquote><p>I don&#8217;t trust the AI. I trust my skill in prompting and using the tools.</p></blockquote><p><strong>The agentic loop ends at the diff.</strong> Every line is reviewed by a human before merge, especially the test code.</p><p>Worth knowing what to avoid too. Here&#8217;s what Airbnb&#8217;s team got wrong before getting it right.</p><div><hr></div><h2>Avoid these mistakes</h2><p>Even Airbnb&#8217;s platform team got things wrong before they got them right. They have four engineers, a dedicated mandate from leadership, and the resources of a 7,000-engineer parent org. They still hit these. <strong>Worth borrowing the post-mortems before you make them yourself.</strong></p><h3>Don&#8217;t bet on a slow curve</h3><p>Airbnb&#8217;s platform team predicted at the start of 2025 that materializing code through agentic sessions would hit 20% to 40% of PRs by the end of the year. By the time they gave their talk in October 2025, they were at 64%.</p><blockquote><p>We were sandbagging them a bit too much, I think, because we were not ambitious enough. It&#8217;s going faster.</p></blockquote><p>Szczepan said. <strong>If the people building the platform underestimated their own curve by a factor of two, the &#8220;wait and see&#8221; position upstream is probably already late.</strong></p><p>There&#8217;s a name for that position. Geoffrey Moore called it &#8220;<a href="https://en.wikipedia.org/wiki/Crossing_the_Chasm">early majority pragmatism</a>&#8221; in Crossing the Chasm (1991). Pragmatists wait for proof. Visionaries (early adopters) ship before the proof exists. Recent commentary suggests consumer GenAI has crossed the chasm; agentic enterprise systems are mid-crossing. <strong>The frame gives you a named, well-known concept to drop in the 1:1:</strong> &#8221;You&#8217;re in classic early majority position. The data suggests the chasm has already been crossed.&#8221;</p><h3>Don&#8217;t build your own orchestrator, wrap one</h3><p>Mike&#8217;s team spent months building an internal agentic orchestrator. Registered agents. Planning chained to coding chained to validation. It was elegant. It never shipped.</p><blockquote><p>AI moves way too fast. We were still planning, figuring out what we were going to do that existed in the market, and the market now is five steps ahead of us. It wasn&#8217;t going to work.</p></blockquote><p>He said. They walked away from the orchestrator and pivoted to a thin shim over <code>airchat-cli</code>.</p><blockquote><p>Can&#8217;t beat them, join them. We pivoted and instead delegated to our Airchat CLI.</p></blockquote><p>The rule for any size team: <strong>if open source is iterating faster than you can ship, wrap it.</strong></p><h3>Slow down before you auto-approve</h3><p>There&#8217;s a temptation, once an engineer gets comfortable with agentic coding, to skip straight to auto-approve. Don&#8217;t. Three things happen when engineers skip the manual-approval stage too fast. PRs get huge. The engineer doesn&#8217;t actually read every line of the diff. <strong>Test code drops in quality first, because test code gets reviewed less carefully than production code.</strong> Airbnb&#8217;s Level 3 (auto-approve plus diff review) is a learned skill, not a default. Szczepan said it cleanly:</p><blockquote><p>An engineer may create very large PRs that they don&#8217;t review fully. They don&#8217;t actually understand and review every single line of code. They may not review test code as eagerly as the production code.</p></blockquote><p><strong>The fix, when you&#8217;re in the loop, is to push back on the tool when it&#8217;s confidently wrong.</strong> Szczepan walked through it.</p><blockquote><p>You don&#8217;t trust it. If something feels suspicious, you ask it: &#8220;Why did you do this in line 120?&#8221; And after a couple of rounds, you get to this satisfying moment where the agentic tool gives up and says, &#8220;Oh yeah, you&#8217;re right. I&#8217;m sorry. I was wrong. Let&#8217;s fix it.&#8221;</p></blockquote><p>That&#8217;s not friction. That&#8217;s the practice.</p><h3>Close the skill gap fast</h3><p>This one comes from Mike&#8217;s lived experience, not a number on a slide. Mike is a college dropout who admits he doesn&#8217;t know Git from the command line. With agents, he ships across multiple languages.</p><blockquote><p>I&#8217;m one of those non-believers. This is all going to be slop. This is all going to be vibe coding. This is going to be worse than what I can write by hand. And when I was using GPT 3.5, that was true. I personally got lapped by agentic coding.</p></blockquote><p>He said. <strong>In Mike&#8217;s team&#8217;s setup, the gap between agentic-fluent and non-agentic engineers widened faster than anyone predicted.</strong></p><p>Definition, principles, learnings. Now plot where you actually are.</p><div><hr></div><h2>Plot your team on the grid</h2><p>Reading the principles and learnings is one thing. Doing something with them this quarter is another. <strong>The grid below is the diagnostic.</strong> It&#8217;s not a model of who you are. It&#8217;s a map of where to invest next.</p><p>The grid has two axes. The vertical axis is median engineer fluency. The horizontal axis is org infrastructure. For the vertical axis, plot the median engineer on your team, not your top performer. Airbnb published a four-level fluency ladder that travels well.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8o8U!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F585362aa-0174-42ab-b2da-233c624ebc04_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8o8U!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F585362aa-0174-42ab-b2da-233c624ebc04_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!8o8U!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F585362aa-0174-42ab-b2da-233c624ebc04_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!8o8U!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F585362aa-0174-42ab-b2da-233c624ebc04_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!8o8U!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F585362aa-0174-42ab-b2da-233c624ebc04_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8o8U!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F585362aa-0174-42ab-b2da-233c624ebc04_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/585362aa-0174-42ab-b2da-233c624ebc04_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3605835,&quot;alt&quot;:&quot;hand-drawn four-rung ladder showing the agentic coding fluency journey. Rung 1: First Steps, autocomplete and copy-paste. Rung 2: Agentic Learner, agentic tool with manual approval. Rung 3: Advanced Practitioner, auto-approve and parallel sessions. Rung 4: Pioneer, building MCPs and leading team transformation. A small figure climbs the ladder.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/199143416?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F585362aa-0174-42ab-b2da-233c624ebc04_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="hand-drawn four-rung ladder showing the agentic coding fluency journey. Rung 1: First Steps, autocomplete and copy-paste. Rung 2: Agentic Learner, agentic tool with manual approval. Rung 3: Advanced Practitioner, auto-approve and parallel sessions. Rung 4: Pioneer, building MCPs and leading team transformation. A small figure climbs the ladder." title="hand-drawn four-rung ladder showing the agentic coding fluency journey. Rung 1: First Steps, autocomplete and copy-paste. Rung 2: Agentic Learner, agentic tool with manual approval. Rung 3: Advanced Practitioner, auto-approve and parallel sessions. Rung 4: Pioneer, building MCPs and leading team transformation. A small figure climbs the ladder." srcset="https://substackcdn.com/image/fetch/$s_!8o8U!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F585362aa-0174-42ab-b2da-233c624ebc04_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!8o8U!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F585362aa-0174-42ab-b2da-233c624ebc04_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!8o8U!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F585362aa-0174-42ab-b2da-233c624ebc04_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!8o8U!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F585362aa-0174-42ab-b2da-233c624ebc04_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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><ul><li><p><strong>Level 1 is first steps.</strong> Autocomplete, occasional chat, copy-paste from ChatGPT. </p></li><li><p><strong>Level 2 is agentic learner.</strong> Uses an agentic tool with manual approval; improving prompts and configs.</p></li><li><p><strong>Level 3 is advanced practitioner.</strong> Auto-approves, reviews diffs, runs parallel sessions across multiple workspaces.</p></li><li><p><strong>Level 4 is pioneer.</strong> Builds custom MCPs, leads team transformation.</p></li></ul><p><strong>One caveat that matters: Level 4 (pioneer) is an organizational role, not just a personal skill.</strong> It requires platform-team mandate and org permission, not only individual fluency. Pioneers are usually the output of being in Multiplier mode (the top-right cell of the grid), not a prerequisite.</p><p>For the horizontal axis, ask plainly: is there a champions network, paved paths, internal MCP servers, sandboxed environments? Or is everyone on their own? You&#8217;ll know within five minutes.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!c2YS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd446ee8d-7666-41fa-b29e-2102d5e67ac7_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!c2YS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd446ee8d-7666-41fa-b29e-2102d5e67ac7_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!c2YS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd446ee8d-7666-41fa-b29e-2102d5e67ac7_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!c2YS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd446ee8d-7666-41fa-b29e-2102d5e67ac7_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!c2YS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd446ee8d-7666-41fa-b29e-2102d5e67ac7_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!c2YS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd446ee8d-7666-41fa-b29e-2102d5e67ac7_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d446ee8d-7666-41fa-b29e-2102d5e67ac7_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3329792,&quot;alt&quot;:&quot;hand-drawn 2x2 grid. The vertical axis is median engineer fluency from mostly beginners to mostly power users. The horizontal axis is org infrastructure from none/scattered to paved (champions, MCP servers, sandboxes). The four cells are named: Tourist phase (bottom-left), Hero phase (top-left), Onboarded but underused (bottom-right), Multiplier mode (top-right with a small star). Small arrows point each cell toward Multiplier mode. &quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/199143416?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd446ee8d-7666-41fa-b29e-2102d5e67ac7_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="hand-drawn 2x2 grid. The vertical axis is median engineer fluency from mostly beginners to mostly power users. The horizontal axis is org infrastructure from none/scattered to paved (champions, MCP servers, sandboxes). The four cells are named: Tourist phase (bottom-left), Hero phase (top-left), Onboarded but underused (bottom-right), Multiplier mode (top-right with a small star). Small arrows point each cell toward Multiplier mode. " title="hand-drawn 2x2 grid. The vertical axis is median engineer fluency from mostly beginners to mostly power users. The horizontal axis is org infrastructure from none/scattered to paved (champions, MCP servers, sandboxes). The four cells are named: Tourist phase (bottom-left), Hero phase (top-left), Onboarded but underused (bottom-right), Multiplier mode (top-right with a small star). Small arrows point each cell toward Multiplier mode. " srcset="https://substackcdn.com/image/fetch/$s_!c2YS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd446ee8d-7666-41fa-b29e-2102d5e67ac7_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!c2YS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd446ee8d-7666-41fa-b29e-2102d5e67ac7_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!c2YS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd446ee8d-7666-41fa-b29e-2102d5e67ac7_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!c2YS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd446ee8d-7666-41fa-b29e-2102d5e67ac7_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>Each cell has a name, a description, and a next-move sentence for you.</p><ul><li><p><strong>Tourist phase (low fluency, low infrastructure).</strong> Everyone copy-pastes from ChatGPT. No champions, no shared standards, no one paving anything.</p><ul><li><p><strong>Next move:</strong> push for one champion in your tech team and one paved tool. Don&#8217;t try to do five things at once. Sequencing matters more here than ambition.</p></li></ul></li><li><p><strong>Hero phase (high fluency, low infrastructure).</strong> One or two senior engineers shipping miracles with agentic coding. The rest of the team hasn&#8217;t moved. The seniors burn out, leave, or get poached.</p><ul><li><p><strong>Next move:</strong> make the cost-of-burnout case to leadership. The hero&#8217;s productivity doesn&#8217;t scale without the infra.</p></li></ul></li><li><p><strong>Onboarded but underused (low fluency, high infrastructure).</strong> The tools exist, the infra is paved, but engagement is flat. Usually a culture gap, not a skills gap.</p><ul><li><p><strong>Next move:</strong> push for three Shopify-style moves. Visible leader use (a senior engineering leader ships a PR with an agent during the next all-hands). A paved-path simplification audit (every extra click between an engineer and an agent kills adoption). And AI-fluency woven into performance reviews, not as a productivity metric but as an expectation. Not more tools.</p></li></ul></li><li><p><strong>Multiplier mode (high fluency, high infrastructure).</strong> This is where Airbnb&#8217;s 64% PR adoption lives. Power users running five parallel sessions, MCP ecosystem growing organically, the working group of champions teaching everyone else.</p><ul><li><p><strong>Next move:</strong> defend the budget, bring product into agentic workflows (PMs prototyping with the same loop), start measuring time-to-market shifts.</p></li></ul></li></ul><p>The 2x2 is the headline. The roadmap lives in a row-by-row diagnostic with seven categories: direction and adoption posture, measurement, tooling stack, internal context, engineer skill journey, org structure, and quality bar. Each category has two or three rows. Each row asks one question. &#8221;What does your team actually have here?&#8221; Fill in the empties. Count them. <strong>Pick one row to push for this quarter. Not five.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IdMw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02ed7678-bae3-479e-98b4-97d4c1c7dc35_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IdMw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02ed7678-bae3-479e-98b4-97d4c1c7dc35_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!IdMw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02ed7678-bae3-479e-98b4-97d4c1c7dc35_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!IdMw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02ed7678-bae3-479e-98b4-97d4c1c7dc35_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!IdMw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02ed7678-bae3-479e-98b4-97d4c1c7dc35_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IdMw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02ed7678-bae3-479e-98b4-97d4c1c7dc35_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/02ed7678-bae3-479e-98b4-97d4c1c7dc35_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3621892,&quot;alt&quot;:&quot;hand-drawn report-card sheet titled &#8220;Your team&#8217;s roadmap&#8221; with seven horizontal rows labeled with the seven categories of the readiness checklist. Each row has two or three empty checkboxes and hand-drawn underlines suggesting &#8220;fill in your answer here.&#8221; A pencil rests at the bottom-left corner.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/199143416?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02ed7678-bae3-479e-98b4-97d4c1c7dc35_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="hand-drawn report-card sheet titled &#8220;Your team&#8217;s roadmap&#8221; with seven horizontal rows labeled with the seven categories of the readiness checklist. Each row has two or three empty checkboxes and hand-drawn underlines suggesting &#8220;fill in your answer here.&#8221; A pencil rests at the bottom-left corner." title="hand-drawn report-card sheet titled &#8220;Your team&#8217;s roadmap&#8221; with seven horizontal rows labeled with the seven categories of the readiness checklist. Each row has two or three empty checkboxes and hand-drawn underlines suggesting &#8220;fill in your answer here.&#8221; A pencil rests at the bottom-left corner." srcset="https://substackcdn.com/image/fetch/$s_!IdMw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02ed7678-bae3-479e-98b4-97d4c1c7dc35_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!IdMw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02ed7678-bae3-479e-98b4-97d4c1c7dc35_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!IdMw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02ed7678-bae3-479e-98b4-97d4c1c7dc35_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!IdMw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02ed7678-bae3-479e-98b4-97d4c1c7dc35_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://docs.google.com/document/d/11BG_m9-e0kcuwVp-ycy9fO6kcHhIeH6elt8BMoRvbqM/edit?usp=sharing&quot;,&quot;text&quot;:&quot;Read the checklist&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://docs.google.com/document/d/11BG_m9-e0kcuwVp-ycy9fO6kcHhIeH6elt8BMoRvbqM/edit?usp=sharing"><span>Read the checklist</span></a></p><p>Paste it into a Google Doc, fill in the &#8220;Where you are&#8221; column row by row, and bring it to your next 1:1. The empties are your roadmap.</p><p>One honest caveat. This grid is a snapshot of one company&#8217;s landing point and what travels from it. Your context is different. Your org is smaller. The talk is six months old in AI time. <strong>Use the grid as a starting point, not a verdict. Use the checklist as a conversation starter, not a scorecard.</strong> Revisit it in 90 days.</p><p>Once you know where you are, the upstream conversation changes.</p><div><hr></div><h2>Bring it to your CTO on Monday</h2><p>Drop this sentence in the 1:1. Replace the bracketed bits with what you plotted.</p><blockquote><p>Our AI tool was step 1. On the grid, we&#8217;re in [cell name]. On the checklist, we have empties in [row X], [row Y], and [row Z]. The next investment we should make is [the row that unblocks the others]. Here&#8217;s why it matters for time to market.</p></blockquote><p>That&#8217;s the line that reframes the conversation. The unanswerable version is &#8220;what&#8217;s the ROI on our AI coding tool?&#8221; The answerable version is &#8220;where are we on agentic coding maturity, and what&#8217;s the next investment?&#8221; <strong>The grid gives the headline. The checklist gives the specifics.</strong> Your CTO can disagree with the cell. She can argue about the next investment. She can&#8217;t pretend you haven&#8217;t done the work.</p><p>Four moves for the week, in order.</p><ol><li><p><strong>Watch the <a href="https://youtu.be/o6oYc9-X9Iw">35-minute talk</a>.</strong> You can do this over a coffee.</p></li><li><p><strong>Plot your tech function on the grid.</strong> Fifteen minutes.</p></li><li><p><strong><a href="https://docs.google.com/document/d/11BG_m9-e0kcuwVp-ycy9fO6kcHhIeH6elt8BMoRvbqM/edit?usp=sharing">Read the checklist</a></strong>, copy it, fill the &#8220;Where you are&#8221; column row by row. Honest beats complete. Thirty minutes.</p></li><li><p>Schedule a 30-minute 1:1 with your CTO. Send the filled checklist before the meeting. Pick the one row you want her to fund this quarter.</p></li></ol><p>The principles travel. The specifics don&#8217;t. Your context isn&#8217;t theirs. <strong>Trust your read over the diagnostic. </strong>Reply and tell me where you plotted your team!</p>]]></content:encoded></item><item><title><![CDATA[How to build an AI helper for your team with Cowork]]></title><description><![CDATA[Build a skill that knows your context. Open Cowork and follow the article&#8217;s example. Adapt the pattern for OKRs, feedback, or any other workflow. Hand off the routine questions and get focus back.]]></description><link>https://www.theaithinker.com/p/how-to-build-an-ai-helper-for-your</link><guid isPermaLink="false">https://www.theaithinker.com/p/how-to-build-an-ai-helper-for-your</guid><dc:creator><![CDATA[Adam Faik]]></dc:creator><pubDate>Mon, 18 May 2026 11:02:14 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/65758959-b0b0-44c5-ae3b-6064dba71afa_1024x731.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A colleague pinged me on Slack last month. &#8221;We don&#8217;t have an AI playbook.&#8221; I had heard the same question from four other people that week. Everyone at the company is trying out AI tools right now. They want to know what&#8217;s allowed and what isn&#8217;t. <strong>And nobody wants to be the one who pastes customer data into the wrong tool.</strong></p><p>I said yes, let me build one. Three weeks later, I had three Claude Code skills running. One drafted AI cards from real team questions. One reviewed every card. One shipped the approved cards to Confluence. <strong>I felt proud of what I had built.</strong> I was already planning the next skill, the one that would check every card each month for stale answers.</p><p>Then I sat down and did the math. How many cards would I need to answer every AI question anyone might ask? Roughly 10 approved AI tools. About 10 common questions for each tool. About 10 less-common questions for each. <strong>That comes to one thousand cards.</strong> Cards I would have to update every time a vendor changed a page or legal added a rule. My industrial engineering professors taught us one rule above all others: never produce stock you don&#8217;t have an order for. I had spent three weeks producing stock. So I stopped.</p><p>The second time, I was chasing the same outcome. Answers about AI tools, grounded in our company&#8217;s rules, available to anyone who asks. The first build would have taken me months. The second took one focused afternoon in Cowork. Same use case. Two very different ways to apply AI. <strong>AI doesn&#8217;t make you faster on its own. The direction you pick with AI does.</strong></p><p>There are three acts to this. Each one builds on the last. <strong>I&#8217;ll walk you through all three.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!okgZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ecdd352-109b-4f55-a6e3-32ca93d612c7_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!okgZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ecdd352-109b-4f55-a6e3-32ca93d612c7_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!okgZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ecdd352-109b-4f55-a6e3-32ca93d612c7_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!okgZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ecdd352-109b-4f55-a6e3-32ca93d612c7_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!okgZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ecdd352-109b-4f55-a6e3-32ca93d612c7_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!okgZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ecdd352-109b-4f55-a6e3-32ca93d612c7_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5ecdd352-109b-4f55-a6e3-32ca93d612c7_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3672444,&quot;alt&quot;:&quot;A three-panel infographic previewing the article&#8217;s structure. Panel 1 (&#8221;The story&#8221;): an overflowing stack of Confluence cards on one side, a single tidy context page paired with a skill icon on the other, with an arrow showing the shift from stock to flow. Panel 2 (&#8221;The build&#8221;): a horizontal sequence of small numbered steps representing scaffold, fill the page, install, test, iterate, ship. Panel 3 (&#8221;The pattern&#8221;): a single skill icon at the top with multiple labeled context pages branching off underneath &#8212; AI rules, OKRs, brand voice, feedback.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/198048642?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ecdd352-109b-4f55-a6e3-32ca93d612c7_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A three-panel infographic previewing the article&#8217;s structure. Panel 1 (&#8221;The story&#8221;): an overflowing stack of Confluence cards on one side, a single tidy context page paired with a skill icon on the other, with an arrow showing the shift from stock to flow. Panel 2 (&#8221;The build&#8221;): a horizontal sequence of small numbered steps representing scaffold, fill the page, install, test, iterate, ship. Panel 3 (&#8221;The pattern&#8221;): a single skill icon at the top with multiple labeled context pages branching off underneath &#8212; AI rules, OKRs, brand voice, feedback." title="A three-panel infographic previewing the article&#8217;s structure. Panel 1 (&#8221;The story&#8221;): an overflowing stack of Confluence cards on one side, a single tidy context page paired with a skill icon on the other, with an arrow showing the shift from stock to flow. Panel 2 (&#8221;The build&#8221;): a horizontal sequence of small numbered steps representing scaffold, fill the page, install, test, iterate, ship. Panel 3 (&#8221;The pattern&#8221;): a single skill icon at the top with multiple labeled context pages branching off underneath &#8212; AI rules, OKRs, brand voice, feedback." srcset="https://substackcdn.com/image/fetch/$s_!okgZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ecdd352-109b-4f55-a6e3-32ca93d612c7_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!okgZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ecdd352-109b-4f55-a6e3-32ca93d612c7_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!okgZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ecdd352-109b-4f55-a6e3-32ca93d612c7_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!okgZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ecdd352-109b-4f55-a6e3-32ca93d612c7_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Three acts: the story, the build, the pattern.</figcaption></figure></div><ul><li><p><strong>The story.</strong> Why every AI playbook ends up unused. The instinct to build one is universal, but the math breaks every time. I&#8217;ll show you the shape that worked for me instead.</p></li><li><p><strong>The build.</strong> Walk through the build with me in Cowork. The whole thing takes one focused afternoon, end to end. By the time you finish reading, your skill is shipped and ready for your team.</p></li><li><p><strong>The pattern.</strong> The AI helper is one example of a reusable shape. Swap the context page and you have a different helper. OKRs, feedback, brand voice, onboarding: all from the same skill scaffold.</p></li></ul><p>By the end, you will have built an AI helper your team uses. <strong>Teammates ask it first, before they DM you.</strong> The routine questions get answered without you. The complex ones still come to you, but only after the helper has handled what it can. The example I walk through is the one I built: an AI helper for &#8221;can I use this AI tool, and how?&#8221; questions in our specific context. <strong>The same shape works for any routine team question that depends on context, like OKRs, feedback, brand voice, or onboarding.</strong> I&#8217;m sharing the GitHub repo too, so you can clone it and start from a working example: <a href="https://github.com/adamfaik/ai-ask">github.com/adamfaik/ai-ask</a>.</p><p>One prerequisite to follow along. You need Claude Cowork, which is the agentic surface in the Claude desktop app. It comes with any paid Claude plan: Pro, Team, Max, or Enterprise. <strong>The build won&#8217;t work in plain chat mode.</strong></p><p>Let&#8217;s jump into it!</p><div><hr></div><h2>The trap, the prism, the use case</h2><h3>The playbook trap</h3><p>The playbook instinct feels right at first. Cards are the right unit. Each card answers one question. Each card lives in Confluence where everyone can find it. <strong>I just had to write the cards.</strong> That&#8217;s where Claude Code skills came in. Why write a thousand cards by hand when I could build a small factory to produce them?</p><p>So I built three skills, each with a clear job. Each skill produced a clear output for the next one in line. The whole thing was a small assembly line for documentation cards. <strong>Together they would keep the documentation always fresh, always on-brand, always in the right place.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!g-hC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22a1def1-aab0-4664-a553-1d1ee84a1e23_2752x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!g-hC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22a1def1-aab0-4664-a553-1d1ee84a1e23_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!g-hC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22a1def1-aab0-4664-a553-1d1ee84a1e23_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!g-hC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22a1def1-aab0-4664-a553-1d1ee84a1e23_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!g-hC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22a1def1-aab0-4664-a553-1d1ee84a1e23_2752x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!g-hC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22a1def1-aab0-4664-a553-1d1ee84a1e23_2752x1536.png" width="1456" height="813" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/22a1def1-aab0-4664-a553-1d1ee84a1e23_2752x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:813,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3748077,&quot;alt&quot;:&quot;A horizontal flow diagram. A team question enters on the left as a speech bubble (&#8221;Can I use Cursor on my Mac?&#8221;). It flows through three labeled skill boxes left-to-right: Drafter (researches the answer and writes the first draft), Reviewer (runs the card against a quality checklist, with a small dashed arrow looping back to the Drafter for cards that fail), Shipper (formats the card, picks the right labels and parent page, publishes). The output is a finished Confluence card on the right with a &#8220;Published&#8221; stamp, sitting in a stack labeled &#8220;Confluence&#8221;.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/198048642?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22a1def1-aab0-4664-a553-1d1ee84a1e23_2752x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A horizontal flow diagram. A team question enters on the left as a speech bubble (&#8221;Can I use Cursor on my Mac?&#8221;). It flows through three labeled skill boxes left-to-right: Drafter (researches the answer and writes the first draft), Reviewer (runs the card against a quality checklist, with a small dashed arrow looping back to the Drafter for cards that fail), Shipper (formats the card, picks the right labels and parent page, publishes). The output is a finished Confluence card on the right with a &#8220;Published&#8221; stamp, sitting in a stack labeled &#8220;Confluence&#8221;." title="A horizontal flow diagram. A team question enters on the left as a speech bubble (&#8221;Can I use Cursor on my Mac?&#8221;). It flows through three labeled skill boxes left-to-right: Drafter (researches the answer and writes the first draft), Reviewer (runs the card against a quality checklist, with a small dashed arrow looping back to the Drafter for cards that fail), Shipper (formats the card, picks the right labels and parent page, publishes). The output is a finished Confluence card on the right with a &#8220;Published&#8221; stamp, sitting in a stack labeled &#8220;Confluence&#8221;." srcset="https://substackcdn.com/image/fetch/$s_!g-hC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22a1def1-aab0-4664-a553-1d1ee84a1e23_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!g-hC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22a1def1-aab0-4664-a553-1d1ee84a1e23_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!g-hC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22a1def1-aab0-4664-a553-1d1ee84a1e23_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!g-hC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22a1def1-aab0-4664-a553-1d1ee84a1e23_2752x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Three skills, one assembly line.</figcaption></figure></div><p>The first skill was the <strong>drafter</strong>. I would paste a real team question into it, like &#8221;Can I use Cursor on my Mac?&#8221; The drafter would research the answer. It would search the web for the vendor docs, the official install steps, recent policy updates. Then it would produce a draft card with a consistent structure: a clear title, the answer, the contact for follow-up, links to the official documentation. <strong>The output was a complete first draft, ready for review.</strong></p><p>The second skill was the <strong>reviewer</strong>. It took the drafter&#8217;s output and ran it against a quality checklist. Is the answer specific? Is the contact named? Is the link still live? Are there any AI-policy red flags? If the checklist passed, the card moved on. If it failed, the reviewer suggested fixes and sent the card back to me. <strong>The reviewer was the gatekeeper that kept the factory from shipping bad cards.</strong></p><p>The third skill was the <strong>shipper</strong>. It took an approved card and prepared it for publication. It formatted the markdown for Confluence. It generated the right labels by tool, by topic, by audience. It picked the right parent page in our information architecture. Then it published. <strong>The shipper turned a clean draft into a live page my teammates could actually find.</strong></p><p>I was proud of the architecture. The three skills handed cards to each other in a clean line. Real questions came in on one side. Polished, labeled, published cards came out the other. I was already planning the fourth skill, the one that would crawl every card each month and flag the ones that had gone stale. <strong>The factory would run itself.</strong></p><p>Then I sat down and did the math. How many cards would I need to answer every AI question the company might ask? About 10 approved tools. About 10 common questions for each tool. About 10 less-common questions for each. <strong>That comes to one thousand cards.</strong> A thousand cards I would have to update every time a vendor changed a page or legal added a rule.</p><p>My industrial engineering professors taught us one rule above all others. <strong>Never produce stock you don&#8217;t have an order for.</strong> Toyota built an empire on this idea. Don&#8217;t make the part until someone needs it. The factory I was building would produce stock the team would never visit. So I stopped.</p><h3>What I built instead</h3><p>What did I actually need? An LLM already knows a lot. It has read the Internet many times during training. It can search the web for recent information. <strong>For most questions, it can already give a reasonable answer on its own.</strong></p><p>If a teammate asks &#8221;how do I install Cursor on my Mac?&#8221;, a fresh Claude chat can tell them. It will give the standard install steps from cursor.com. The answer will be correct. <strong>But the answer will be generic.</strong> It will not know that at my company, Cursor requires SSO. It will not know about the Confluence MCP integration. It will not know that autocomplete is disabled on certain file paths.</p><p><strong>The missing piece was a layer of context specific to the company.</strong> What&#8217;s allowed and what isn&#8217;t. Who to contact when something is unclear. What gotchas surprise new joiners. The playbook was trying to be that layer, but it tried to do it as a stack of cards. I needed something different.</p><p>So I built one skill instead. I called it <code>/ai-ask</code>. The skill reads one document on every invocation. That document holds the company-specific layer of context. <strong>One source of truth. Every question pulls from it. Every answer comes out grounded in our reality.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9DHy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73583b2f-9d84-4f2c-8e1b-61204cb47554_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9DHy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73583b2f-9d84-4f2c-8e1b-61204cb47554_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!9DHy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73583b2f-9d84-4f2c-8e1b-61204cb47554_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!9DHy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73583b2f-9d84-4f2c-8e1b-61204cb47554_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!9DHy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73583b2f-9d84-4f2c-8e1b-61204cb47554_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9DHy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73583b2f-9d84-4f2c-8e1b-61204cb47554_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/73583b2f-9d84-4f2c-8e1b-61204cb47554_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3473113,&quot;alt&quot;:&quot;A teammate&#8217;s free-form AI question on the left flows into a Claude skill labeled &#8220;ai-ask&#8221; in the middle, which reads from a single document labeled &#8220;company context&#8221;. On the right, the skill returns a two-part structured answer: &#8220;Company context&#8221; followed by &#8220;General guidance&#8221;.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/198048642?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73583b2f-9d84-4f2c-8e1b-61204cb47554_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A teammate&#8217;s free-form AI question on the left flows into a Claude skill labeled &#8220;ai-ask&#8221; in the middle, which reads from a single document labeled &#8220;company context&#8221;. On the right, the skill returns a two-part structured answer: &#8220;Company context&#8221; followed by &#8220;General guidance&#8221;." title="A teammate&#8217;s free-form AI question on the left flows into a Claude skill labeled &#8220;ai-ask&#8221; in the middle, which reads from a single document labeled &#8220;company context&#8221;. On the right, the skill returns a two-part structured answer: &#8220;Company context&#8221; followed by &#8220;General guidance&#8221;." srcset="https://substackcdn.com/image/fetch/$s_!9DHy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73583b2f-9d84-4f2c-8e1b-61204cb47554_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!9DHy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73583b2f-9d84-4f2c-8e1b-61204cb47554_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!9DHy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73583b2f-9d84-4f2c-8e1b-61204cb47554_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!9DHy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73583b2f-9d84-4f2c-8e1b-61204cb47554_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">One skill, one company-context page, every team question grounded.</figcaption></figure></div><p>And that&#8217;s when it clicked. <strong>I now see this skill as a prism, like the one on the cover of Pink Floyd&#8217;s Dark Side of the Moon.</strong> Picture it. White light enters one side. The prism refracts it. A rainbow comes out the other.</p><p>In our case, the white light is what the LLM already knows. The Internet, vaguely remembered from training, plus what the model can pull from a web search. The prism is the company-context page. <strong>The rainbow is the answer: what the LLM knows in general, refracted through what is true at my company in particular.</strong></p><p>This is the same logic as just-in-time manufacturing. Don&#8217;t produce stock you don&#8217;t have an order for. Produce the answer when someone asks the question. The context page is the only thing you maintain. Every answer regenerates from it. <strong>You don&#8217;t keep a stack of stale cards.</strong></p><p>The skill re-reads the context page on every invocation. That&#8217;s not a side effect. <strong>It&#8217;s the whole design.</strong> Memory from earlier in the conversation can be stale. The page may have been updated. <strong>Stale answers about policy are worse than no answer at all.</strong></p><h3>The use case: an AI helper</h3><p>So what does this look like in practice? Teammates type <code>/ai-ask</code> followed by their question instead of DM&#8217;ing you. The questions are the kind you have already answered a hundred times: &#8221;Can I use ChatGPT free for this customer feedback?&#8221;, &#8221;Is Cursor approved on my Mac?&#8221;, &#8221;What model should I use for code review?&#8221; <strong>The skill answers all of them in the same shape: company context first, general guidance second.</strong></p><p>The answer they get is grounded in your team&#8217;s rules. The right contact is named. A link to the official documentation is at the end. <strong>They get a real answer, fast, without waiting on you. </strong>What does this deliver for you? Your DMs go down. The team self-serves answers grounded in your rules. <strong>You get your focus back.</strong></p><p>I built mine for AI questions because that&#8217;s the routine question I kept getting. You can see the live code in the public repo at <a href="https://github.com/adamfaik/ai-ask">github.com/adamfaik/ai-ask</a>. <strong>But the same pattern works for any routine team question that depends on company-specific context.</strong> Swap the context page for a different document, and you have a different team helper.</p><p>OKR alignment (does this initiative line up with our quarterly goals?). Feedback reviews (is this the way our team gives feedback?). Brand voice checking (is this on-brand for us?). New-joiner onboarding (who do I ask about X?). <strong>You&#8217;re learning a pattern, not just an AI Q&amp;A bot.</strong></p><p>Open Cowork.</p><div><hr></div><h2>Build the helper in Cowork</h2><p>One focused afternoon, end-to-end. Here are the seven steps you&#8217;ll go through. <strong>Glance at the map before we dive in.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OXzU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e6b541-4bcc-495a-8aec-7b5aed2e55d5_2752x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OXzU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e6b541-4bcc-495a-8aec-7b5aed2e55d5_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!OXzU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e6b541-4bcc-495a-8aec-7b5aed2e55d5_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!OXzU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e6b541-4bcc-495a-8aec-7b5aed2e55d5_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!OXzU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e6b541-4bcc-495a-8aec-7b5aed2e55d5_2752x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OXzU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e6b541-4bcc-495a-8aec-7b5aed2e55d5_2752x1536.png" width="1456" height="813" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/29e6b541-4bcc-495a-8aec-7b5aed2e55d5_2752x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:813,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3200075,&quot;alt&quot;:&quot;A horizontal flow of seven numbered boxes labeled Step 1 &#8220;Start the skill&#8221;, Step 2 &#8220;Read what was created&#8221;, Step 3 &#8220;Write the company context&#8221;, Step 4 &#8220;Save the .skill file&#8221;, Step 5 &#8220;Test in Chat mode&#8221;, Step 6 &#8220;Iterate by chat&#8221;, Step 7 &#8220;Ship to your team&#8221;. An arrow connects each box to the next. A small note at the bottom indicates that Step 5 happens in Chat mode while the others happen in Cowork.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/198048642?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e6b541-4bcc-495a-8aec-7b5aed2e55d5_2752x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A horizontal flow of seven numbered boxes labeled Step 1 &#8220;Start the skill&#8221;, Step 2 &#8220;Read what was created&#8221;, Step 3 &#8220;Write the company context&#8221;, Step 4 &#8220;Save the .skill file&#8221;, Step 5 &#8220;Test in Chat mode&#8221;, Step 6 &#8220;Iterate by chat&#8221;, Step 7 &#8220;Ship to your team&#8221;. An arrow connects each box to the next. A small note at the bottom indicates that Step 5 happens in Chat mode while the others happen in Cowork." title="A horizontal flow of seven numbered boxes labeled Step 1 &#8220;Start the skill&#8221;, Step 2 &#8220;Read what was created&#8221;, Step 3 &#8220;Write the company context&#8221;, Step 4 &#8220;Save the .skill file&#8221;, Step 5 &#8220;Test in Chat mode&#8221;, Step 6 &#8220;Iterate by chat&#8221;, Step 7 &#8220;Ship to your team&#8221;. An arrow connects each box to the next. A small note at the bottom indicates that Step 5 happens in Chat mode while the others happen in Cowork." srcset="https://substackcdn.com/image/fetch/$s_!OXzU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e6b541-4bcc-495a-8aec-7b5aed2e55d5_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!OXzU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e6b541-4bcc-495a-8aec-7b5aed2e55d5_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!OXzU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e6b541-4bcc-495a-8aec-7b5aed2e55d5_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!OXzU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e6b541-4bcc-495a-8aec-7b5aed2e55d5_2752x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Seven steps. One afternoon. Step 5 happens in Chat; the rest happen in Cowork.</figcaption></figure></div><p>Before Step 1, a quick setup. Download the Claude desktop app from <a href="https://claude.com/download">claude.com/download</a> if you don&#8217;t have it yet. Sign in with your paid Claude account. Confirm you see three tabs at the top: <strong>Chat</strong>, <strong>Cowork</strong>, and <strong>Code</strong>. <strong>We will spend most of our time in Cowork.</strong> Cowork is the agentic surface that can read and write files, run skills, and operate on a folder. The last step uses Chat to test the finished skill.</p><p>Three things to keep in mind as you go. <strong>The prism page is where the real work lives.</strong> Scaffolding is fast. Every meaningful step is one prompt to Cowork, not manual file editing.</p><h3>Step 1: Start the skill with skill-creator</h3><p>Open Cowork. Below the chat input, click <strong>Work in a project &#8594; Choose a folder</strong>. The native folder picker opens. Navigate to wherever you keep code projects. Mine is <code>~/Documents/GitHub/</code>. Click <strong>New Folder</strong>, name it <code>ai-ask</code>, and select it. <strong>One folder, three jobs: source of truth for editing, install target for Cowork, repo root for the GitHub push later.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zC_H!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0ed0fed-cbc9-490e-a343-0fbd950ec9ca_2624x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zC_H!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0ed0fed-cbc9-490e-a343-0fbd950ec9ca_2624x1824.png 424w, https://substackcdn.com/image/fetch/$s_!zC_H!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0ed0fed-cbc9-490e-a343-0fbd950ec9ca_2624x1824.png 848w, https://substackcdn.com/image/fetch/$s_!zC_H!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0ed0fed-cbc9-490e-a343-0fbd950ec9ca_2624x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!zC_H!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0ed0fed-cbc9-490e-a343-0fbd950ec9ca_2624x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zC_H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0ed0fed-cbc9-490e-a343-0fbd950ec9ca_2624x1824.png" width="1456" height="1012" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b0ed0fed-cbc9-490e-a343-0fbd950ec9ca_2624x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1012,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:783549,&quot;alt&quot;:&quot;The Cowork home screen with the &#8220;Work in a project&#8221; dropdown open, showing two options: &#8220;Create new project&#8221; and &#8220;Choose a folder&#8221;.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/198048642?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0ed0fed-cbc9-490e-a343-0fbd950ec9ca_2624x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Cowork home screen with the &#8220;Work in a project&#8221; dropdown open, showing two options: &#8220;Create new project&#8221; and &#8220;Choose a folder&#8221;." title="The Cowork home screen with the &#8220;Work in a project&#8221; dropdown open, showing two options: &#8220;Create new project&#8221; and &#8220;Choose a folder&#8221;." srcset="https://substackcdn.com/image/fetch/$s_!zC_H!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0ed0fed-cbc9-490e-a343-0fbd950ec9ca_2624x1824.png 424w, https://substackcdn.com/image/fetch/$s_!zC_H!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0ed0fed-cbc9-490e-a343-0fbd950ec9ca_2624x1824.png 848w, https://substackcdn.com/image/fetch/$s_!zC_H!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0ed0fed-cbc9-490e-a343-0fbd950ec9ca_2624x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!zC_H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0ed0fed-cbc9-490e-a343-0fbd950ec9ca_2624x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Pick a folder; Cowork operates from there.</figcaption></figure></div><p>Now use Anthropic&#8217;s <code>skill-creator</code> to scaffold the skill. Don&#8217;t write the <code>SKILL.md</code> file by hand. <code>skill-creator</code><strong> interviews you about the skill you want and generates the file structure for you.</strong> Type <code>/skill-cr</code> in the chat input and <code>skill-creator</code> should appear in the autocomplete dropdown. If it isn&#8217;t there, install it from <strong>Customize &#8594; Skills &#8594; + &#8594; Browse skills &#8594; search &#8220;skill-creator&#8221; &#8594; Install</strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aWbt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc164ea03-e8c5-4905-ac53-477773a59c59_2624x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aWbt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc164ea03-e8c5-4905-ac53-477773a59c59_2624x1824.png 424w, https://substackcdn.com/image/fetch/$s_!aWbt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc164ea03-e8c5-4905-ac53-477773a59c59_2624x1824.png 848w, https://substackcdn.com/image/fetch/$s_!aWbt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc164ea03-e8c5-4905-ac53-477773a59c59_2624x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!aWbt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc164ea03-e8c5-4905-ac53-477773a59c59_2624x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aWbt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc164ea03-e8c5-4905-ac53-477773a59c59_2624x1824.png" width="1456" height="1012" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c164ea03-e8c5-4905-ac53-477773a59c59_2624x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1012,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:793798,&quot;alt&quot;:&quot;The Cowork chat input showing the autocomplete dropdown with &#8220;skill-creator&#8221; highlighted, including its description about creating new skills.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/198048642?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc164ea03-e8c5-4905-ac53-477773a59c59_2624x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Cowork chat input showing the autocomplete dropdown with &#8220;skill-creator&#8221; highlighted, including its description about creating new skills." title="The Cowork chat input showing the autocomplete dropdown with &#8220;skill-creator&#8221; highlighted, including its description about creating new skills." srcset="https://substackcdn.com/image/fetch/$s_!aWbt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc164ea03-e8c5-4905-ac53-477773a59c59_2624x1824.png 424w, https://substackcdn.com/image/fetch/$s_!aWbt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc164ea03-e8c5-4905-ac53-477773a59c59_2624x1824.png 848w, https://substackcdn.com/image/fetch/$s_!aWbt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc164ea03-e8c5-4905-ac53-477773a59c59_2624x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!aWbt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc164ea03-e8c5-4905-ac53-477773a59c59_2624x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">skill-creator is the scaffolder.</figcaption></figure></div><p>One detail matters before you send the prompt. Switch the model to <strong>Opus 4.7</strong> in the chat input bar. Cowork&#8217;s model picker is session-locked. The choice you make now applies to the whole conversation. <strong>Invest the smart model on the work that defines a system once. Use the efficient model on the daily work that runs that system every day.</strong> Building a skill is the first kind. Using it every Monday is the second.</p><p>Invoke <code>/skill-creator</code> and either paste or dictate this paragraph as the opening brief. <strong>I usually open <a href="https://superwhisper.com/">SuperWhisper</a> and just talk the prompt out loud</strong>, as if I were explaining what I need to a teammate, a friend, or an intern I&#8217;m asking for help. Either way, the content is the same:</p><div class="callout-block" data-callout="true"><p><strong>/skill-creator</strong> I want to build a skill called ai-ask. Its purpose is to answer any AI-related question from someone on my team by combining general AI knowledge with my company&#8217;s specific rules and context. The skill should trigger whenever the user asks about AI tools, models, prompts, data handling, licensing, or AI-related workflows. Examples of phrasings to trigger on: &#8221;can I use X?&#8221;, &#8221;how do I install Y?&#8221;, &#8221;is Z allowed?&#8221;, &#8221;what&#8217;s the best model for...?&#8221;. It takes a free-form question as input. It should always answer in two parts: first the company-specific context (allowed or forbidden tools, data-handling rules, contacts, escalation paths) drawn from a bundled file called company-context.md; second, the general AI guidance (how-to steps, prompt patterns, official documentation links).</p></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7Gx2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53c713db-cb25-4609-9cf4-a7de42405a16_2624x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7Gx2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53c713db-cb25-4609-9cf4-a7de42405a16_2624x1824.png 424w, https://substackcdn.com/image/fetch/$s_!7Gx2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53c713db-cb25-4609-9cf4-a7de42405a16_2624x1824.png 848w, https://substackcdn.com/image/fetch/$s_!7Gx2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53c713db-cb25-4609-9cf4-a7de42405a16_2624x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!7Gx2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53c713db-cb25-4609-9cf4-a7de42405a16_2624x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7Gx2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53c713db-cb25-4609-9cf4-a7de42405a16_2624x1824.png" width="1456" height="1012" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/53c713db-cb25-4609-9cf4-a7de42405a16_2624x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1012,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:912007,&quot;alt&quot;:&quot;The Cowork chat input shows the long opening prompt pasted in, with the ai-ask project active and Opus 4.7 selected as the model in the input bar.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/198048642?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53c713db-cb25-4609-9cf4-a7de42405a16_2624x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Cowork chat input shows the long opening prompt pasted in, with the ai-ask project active and Opus 4.7 selected as the model in the input bar." title="The Cowork chat input shows the long opening prompt pasted in, with the ai-ask project active and Opus 4.7 selected as the model in the input bar." srcset="https://substackcdn.com/image/fetch/$s_!7Gx2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53c713db-cb25-4609-9cf4-a7de42405a16_2624x1824.png 424w, https://substackcdn.com/image/fetch/$s_!7Gx2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53c713db-cb25-4609-9cf4-a7de42405a16_2624x1824.png 848w, https://substackcdn.com/image/fetch/$s_!7Gx2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53c713db-cb25-4609-9cf4-a7de42405a16_2624x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!7Gx2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53c713db-cb25-4609-9cf4-a7de42405a16_2624x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">One paragraph in, the whole skill spec out.</figcaption></figure></div><p><code>skill-creator</code> reads the brief and asks a few clarifying questions. <strong>Your exact questions might be slightly different from mine.</strong> Each session is a little unpredictable, that&#8217;s just how LLMs work. The principle is the same: it fills in the gaps before it starts writing files.</p><p>The first asks <strong>what should go in company-context.md</strong>. Pick <strong>&#8221;I&#8217;ll provide content myself.&#8221;</strong> You&#8217;ll fill the page in the next step. Letting <code>skill-creator</code> interview you for the content here would slow things down for no reason.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!skY7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef59bdaf-eecc-48c5-8869-756cd02a66d1_2624x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!skY7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef59bdaf-eecc-48c5-8869-756cd02a66d1_2624x1824.png 424w, https://substackcdn.com/image/fetch/$s_!skY7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef59bdaf-eecc-48c5-8869-756cd02a66d1_2624x1824.png 848w, https://substackcdn.com/image/fetch/$s_!skY7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef59bdaf-eecc-48c5-8869-756cd02a66d1_2624x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!skY7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef59bdaf-eecc-48c5-8869-756cd02a66d1_2624x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!skY7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef59bdaf-eecc-48c5-8869-756cd02a66d1_2624x1824.png" width="1456" height="1012" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ef59bdaf-eecc-48c5-8869-756cd02a66d1_2624x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1012,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:822842,&quot;alt&quot;:&quot;The skill-creator QCM showing question 1 of 3, &#8220;What should I put in company-context.md?&#8221;, with options for a template with placeholders, having Claude ask questions to fill it in, or providing content yourself.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/198048642?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef59bdaf-eecc-48c5-8869-756cd02a66d1_2624x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The skill-creator QCM showing question 1 of 3, &#8220;What should I put in company-context.md?&#8221;, with options for a template with placeholders, having Claude ask questions to fill it in, or providing content yourself." title="The skill-creator QCM showing question 1 of 3, &#8220;What should I put in company-context.md?&#8221;, with options for a template with placeholders, having Claude ask questions to fill it in, or providing content yourself." srcset="https://substackcdn.com/image/fetch/$s_!skY7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef59bdaf-eecc-48c5-8869-756cd02a66d1_2624x1824.png 424w, https://substackcdn.com/image/fetch/$s_!skY7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef59bdaf-eecc-48c5-8869-756cd02a66d1_2624x1824.png 848w, https://substackcdn.com/image/fetch/$s_!skY7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef59bdaf-eecc-48c5-8869-756cd02a66d1_2624x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!skY7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef59bdaf-eecc-48c5-8869-756cd02a66d1_2624x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Q1: pick &#8220;I&#8217;ll provide content myself.&#8221;</figcaption></figure></div><p>The second asks <strong>how rigorous evaluation should be</strong>. Pick <strong>&#8221;Quick draft only.&#8221;</strong> We don&#8217;t need to test this skill in an industrialized way. We will just try a few real questions on it ourselves in the next step. <strong>A quick draft is enough for that.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-ssQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F034bfe2c-53b0-4b06-9775-e6a62de6b113_2624x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-ssQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F034bfe2c-53b0-4b06-9775-e6a62de6b113_2624x1824.png 424w, https://substackcdn.com/image/fetch/$s_!-ssQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F034bfe2c-53b0-4b06-9775-e6a62de6b113_2624x1824.png 848w, https://substackcdn.com/image/fetch/$s_!-ssQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F034bfe2c-53b0-4b06-9775-e6a62de6b113_2624x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!-ssQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F034bfe2c-53b0-4b06-9775-e6a62de6b113_2624x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-ssQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F034bfe2c-53b0-4b06-9775-e6a62de6b113_2624x1824.png" width="1456" height="1012" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/034bfe2c-53b0-4b06-9775-e6a62de6b113_2624x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1012,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:825168,&quot;alt&quot;:&quot;The skill-creator QCM showing question 2 of 3, &#8220;How rigorous should evaluation be?&#8221;, with options for a full eval loop (recommended) or quick draft only.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/198048642?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F034bfe2c-53b0-4b06-9775-e6a62de6b113_2624x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The skill-creator QCM showing question 2 of 3, &#8220;How rigorous should evaluation be?&#8221;, with options for a full eval loop (recommended) or quick draft only." title="The skill-creator QCM showing question 2 of 3, &#8220;How rigorous should evaluation be?&#8221;, with options for a full eval loop (recommended) or quick draft only." srcset="https://substackcdn.com/image/fetch/$s_!-ssQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F034bfe2c-53b0-4b06-9775-e6a62de6b113_2624x1824.png 424w, https://substackcdn.com/image/fetch/$s_!-ssQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F034bfe2c-53b0-4b06-9775-e6a62de6b113_2624x1824.png 848w, https://substackcdn.com/image/fetch/$s_!-ssQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F034bfe2c-53b0-4b06-9775-e6a62de6b113_2624x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!-ssQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F034bfe2c-53b0-4b06-9775-e6a62de6b113_2624x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Q2: pick &#8220;Quick draft only.&#8221;</figcaption></figure></div><p>The third asks <strong>where the final skill should live</strong>. Pick <strong>&#8221;Both.&#8221;</strong> You need both formats for two different jobs. The folder is what makes editing and <code>git init</code>-ing work. The <code>.skill</code> package is what Cowork installs in Step 4. <strong>Without the package, you cannot install the skill the right way.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mghy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c9e2f94-6ace-4909-b4de-228a6af644e9_2624x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mghy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c9e2f94-6ace-4909-b4de-228a6af644e9_2624x1824.png 424w, https://substackcdn.com/image/fetch/$s_!mghy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c9e2f94-6ace-4909-b4de-228a6af644e9_2624x1824.png 848w, https://substackcdn.com/image/fetch/$s_!mghy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c9e2f94-6ace-4909-b4de-228a6af644e9_2624x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!mghy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c9e2f94-6ace-4909-b4de-228a6af644e9_2624x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mghy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c9e2f94-6ace-4909-b4de-228a6af644e9_2624x1824.png" width="1456" height="1012" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8c9e2f94-6ace-4909-b4de-228a6af644e9_2624x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1012,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:825833,&quot;alt&quot;:&quot;The skill-creator QCM showing question 3 of 3, &#8220;Where should the final skill live?&#8221;, with options for the ai-ask folder, packaged as .skill file, or both.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/198048642?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c9e2f94-6ace-4909-b4de-228a6af644e9_2624x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The skill-creator QCM showing question 3 of 3, &#8220;Where should the final skill live?&#8221;, with options for the ai-ask folder, packaged as .skill file, or both." title="The skill-creator QCM showing question 3 of 3, &#8220;Where should the final skill live?&#8221;, with options for the ai-ask folder, packaged as .skill file, or both." srcset="https://substackcdn.com/image/fetch/$s_!mghy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c9e2f94-6ace-4909-b4de-228a6af644e9_2624x1824.png 424w, https://substackcdn.com/image/fetch/$s_!mghy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c9e2f94-6ace-4909-b4de-228a6af644e9_2624x1824.png 848w, https://substackcdn.com/image/fetch/$s_!mghy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c9e2f94-6ace-4909-b4de-228a6af644e9_2624x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!mghy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c9e2f94-6ace-4909-b4de-228a6af644e9_2624x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Q3: pick &#8220;Both.&#8221; This matters more than it looks.</figcaption></figure></div><p>After the third answer, <code>skill-creator</code> lays out its plan and starts writing files. The completion summary at the end is worth reading. It surfaces design choices the skill author would otherwise miss: the &#8221;Read it fresh every time&#8221; anti-staleness rule, the &#8221;Don&#8217;t invent rules&#8221; guardrail, the two-part answer format with exact headings. <strong>Once it finishes, the project folder holds </strong><code>SKILL.md</code><strong> and an empty </strong><code>company-context.md</code><strong>.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nVAk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c786f46-e95e-46b3-a1b9-e7c43126e09e_2624x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nVAk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c786f46-e95e-46b3-a1b9-e7c43126e09e_2624x1824.png 424w, https://substackcdn.com/image/fetch/$s_!nVAk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c786f46-e95e-46b3-a1b9-e7c43126e09e_2624x1824.png 848w, https://substackcdn.com/image/fetch/$s_!nVAk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c786f46-e95e-46b3-a1b9-e7c43126e09e_2624x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!nVAk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c786f46-e95e-46b3-a1b9-e7c43126e09e_2624x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nVAk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c786f46-e95e-46b3-a1b9-e7c43126e09e_2624x1824.png" width="1456" height="1012" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8c786f46-e95e-46b3-a1b9-e7c43126e09e_2624x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1012,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1030291,&quot;alt&quot;:&quot;Cowork shows the completion summary from skill-creator, describing what was built including the two-part answer format in SKILL.md and the placeholder structure in company-context.md, with both files visible in the project pane.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/198048642?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c786f46-e95e-46b3-a1b9-e7c43126e09e_2624x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Cowork shows the completion summary from skill-creator, describing what was built including the two-part answer format in SKILL.md and the placeholder structure in company-context.md, with both files visible in the project pane." title="Cowork shows the completion summary from skill-creator, describing what was built including the two-part answer format in SKILL.md and the placeholder structure in company-context.md, with both files visible in the project pane." srcset="https://substackcdn.com/image/fetch/$s_!nVAk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c786f46-e95e-46b3-a1b9-e7c43126e09e_2624x1824.png 424w, https://substackcdn.com/image/fetch/$s_!nVAk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c786f46-e95e-46b3-a1b9-e7c43126e09e_2624x1824.png 848w, https://substackcdn.com/image/fetch/$s_!nVAk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c786f46-e95e-46b3-a1b9-e7c43126e09e_2624x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!nVAk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c786f46-e95e-46b3-a1b9-e7c43126e09e_2624x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Skill is ready. Here&#8217;s what got built.</figcaption></figure></div><p>The scaffold is done. Now we read what Cowork actually made.</p><h3>Step 2: Read what skill-creator created</h3><p>Before going further, take a minute to read what <code>skill-creator</code> actually generated. Open <code>SKILL.md</code> in your text editor or in Cowork&#8217;s preview pane. <strong>Make sure the skill matches what you asked for.</strong></p><p>This file is what Claude reads every time someone calls <code>/ai-ask</code>. It has YAML frontmatter at the top (name and description), then a body that defines: when the skill should trigger, what input it takes, what shape the answer must follow, and the rule that it must always read <code>company-context.md</code> first.</p><p>If something is missing or off, ask <code>skill-creator</code> in the same chat to update it. The skill is just text. You can iterate. <strong>Don&#8217;t move on until you trust the </strong><code>SKILL.md</code><strong>.</strong></p><p>For reference, you can see the version I ended up with on GitHub: <a href="https://github.com/adamfaik/ai-ask/blob/main/SKILL.md">github.com/adamfaik/ai-ask/blob/main/SKILL.md</a>. Your version will look similar but tuned to your own brief.</p><p>With the skill itself in shape, we move to the most important step: writing the company context.</p><h3>Step 3: Write the company context page</h3><p>This is the most important step. Once you define your company&#8217;s rules clearly, the skill will work or not based on what&#8217;s in this page. <strong>The page IS the prism.</strong> Take your time here.</p><p><code>skill-creator</code> already wrote a 7-section template in <code>company-context.md</code> with <code>[FILL IN]</code> placeholders. Open the file in Cowork&#8217;s preview pane to see it. The template has seven sections: approved tools, forbidden tools, data handling, licensing, approval paths, preferred providers, open questions. <strong>The scaffolding is there. The content is yours.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FuI-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aa91515-c1f2-413b-8695-769c16c8e27c_2624x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FuI-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aa91515-c1f2-413b-8695-769c16c8e27c_2624x1824.png 424w, https://substackcdn.com/image/fetch/$s_!FuI-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aa91515-c1f2-413b-8695-769c16c8e27c_2624x1824.png 848w, https://substackcdn.com/image/fetch/$s_!FuI-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aa91515-c1f2-413b-8695-769c16c8e27c_2624x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!FuI-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aa91515-c1f2-413b-8695-769c16c8e27c_2624x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FuI-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aa91515-c1f2-413b-8695-769c16c8e27c_2624x1824.png" width="1456" height="1012" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9aa91515-c1f2-413b-8695-769c16c8e27c_2624x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1012,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1125648,&quot;alt&quot;:&quot;Split view showing skill-creator&#8217;s hand-off message on the left explaining the [FILL IN] placeholders, and the rendered company-context.md template on the right with empty sections for Approved AI tools and Forbidden tools, both populated with placeholder bullets.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/198048642?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aa91515-c1f2-413b-8695-769c16c8e27c_2624x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Split view showing skill-creator&#8217;s hand-off message on the left explaining the [FILL IN] placeholders, and the rendered company-context.md template on the right with empty sections for Approved AI tools and Forbidden tools, both populated with placeholder bullets." title="Split view showing skill-creator&#8217;s hand-off message on the left explaining the [FILL IN] placeholders, and the rendered company-context.md template on the right with empty sections for Approved AI tools and Forbidden tools, both populated with placeholder bullets." srcset="https://substackcdn.com/image/fetch/$s_!FuI-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aa91515-c1f2-413b-8695-769c16c8e27c_2624x1824.png 424w, https://substackcdn.com/image/fetch/$s_!FuI-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aa91515-c1f2-413b-8695-769c16c8e27c_2624x1824.png 848w, https://substackcdn.com/image/fetch/$s_!FuI-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aa91515-c1f2-413b-8695-769c16c8e27c_2624x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!FuI-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aa91515-c1f2-413b-8695-769c16c8e27c_2624x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The &#8220;before&#8221; state: structure in place, content empty.</figcaption></figure></div><p>You can fill this page however you like. You could have a back-and-forth discussion with Cowork, building the page one section at a time. You could draft it yourself in your text editor and paste it in. You could send one structural prompt and let Cowork generate the whole thing at once. <strong>There is no one right way. The page is yours, and the process should match how you think.</strong></p><p>For this article, I happened to do it in one prompt. <strong>That worked because I had already thought through what each section needed.</strong> Your first version will probably take longer because you are figuring out the rules as you write them. That is the point of this step. Expect to spend real time here.</p><p>Here is the prompt I used, as an example of what one approach looks like. The prompt uses a fictional company called <strong>Acme</strong> because my real company&#8217;s content is private. At your real company, swap the proper nouns. <strong>The structure stays the same.</strong></p><div class="callout-block" data-callout="true"><p>Update this company-context.md file in two passes.</p><p>Pass 1. Fill every [FILL IN] placeholder with content for a fictional company called Acme: a 300-person B2B SaaS for product teams, mid-AI-adoption, with SSO, IT, and legal review in place. Use clearly-fictional proper nouns: AI Champions Sarah K (Product) and Jordan L (Engineering); Legal contact Maya P at legal-ai@acme; IT at support-it@acme; vendor risk at vendor-risk@acme; internal access portal at access.acme/forms/ai-tools; Slack channels #ai-help, #ai-discussion, #ai-tools-feedback. Approved tools include Claude (Pro, Team, Max, Enterprise), Cursor with Acme SSO, GitHub Copilot for Engineering, NotebookLM, Perplexity. Split Data handling rules into four tiers (Public, Internal, Customer data, Regulated).</p><p>Pass 2. Add three new sections: Approved use cases by function, Sharing rules, and Acme-specific gotchas.</p><p>Keep the existing intro blockquote. Plain prose.</p></div><p>Cowork executes both passes in one turn. It verifies the output: both files at the project root, byte counts match, the intro blockquote is preserved, all section headings are in place. <strong>What comes out is a ten-section company context page ready to be tested.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2Pa5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa62e57-f541-4e77-a9a9-600e1855a270_2624x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2Pa5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa62e57-f541-4e77-a9a9-600e1855a270_2624x1824.png 424w, https://substackcdn.com/image/fetch/$s_!2Pa5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa62e57-f541-4e77-a9a9-600e1855a270_2624x1824.png 848w, https://substackcdn.com/image/fetch/$s_!2Pa5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa62e57-f541-4e77-a9a9-600e1855a270_2624x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!2Pa5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa62e57-f541-4e77-a9a9-600e1855a270_2624x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2Pa5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa62e57-f541-4e77-a9a9-600e1855a270_2624x1824.png" width="1456" height="1012" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1fa62e57-f541-4e77-a9a9-600e1855a270_2624x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1012,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1138973,&quot;alt&quot;:&quot;The Cowork chat shows the enhancement prompt sent and the confirmation that both passes ran successfully, with the rendered company-context.md visible on the right side displaying the Approved AI tools and models section with concrete Acme content about Claude plans, Cursor with SSO, GitHub Copilot for Engineering, NotebookLM, and Perplexity.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/198048642?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa62e57-f541-4e77-a9a9-600e1855a270_2624x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Cowork chat shows the enhancement prompt sent and the confirmation that both passes ran successfully, with the rendered company-context.md visible on the right side displaying the Approved AI tools and models section with concrete Acme content about Claude plans, Cursor with SSO, GitHub Copilot for Engineering, NotebookLM, and Perplexity." title="The Cowork chat shows the enhancement prompt sent and the confirmation that both passes ran successfully, with the rendered company-context.md visible on the right side displaying the Approved AI tools and models section with concrete Acme content about Claude plans, Cursor with SSO, GitHub Copilot for Engineering, NotebookLM, and Perplexity." srcset="https://substackcdn.com/image/fetch/$s_!2Pa5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa62e57-f541-4e77-a9a9-600e1855a270_2624x1824.png 424w, https://substackcdn.com/image/fetch/$s_!2Pa5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa62e57-f541-4e77-a9a9-600e1855a270_2624x1824.png 848w, https://substackcdn.com/image/fetch/$s_!2Pa5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa62e57-f541-4e77-a9a9-600e1855a270_2624x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!2Pa5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa62e57-f541-4e77-a9a9-600e1855a270_2624x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">One prompt, ten sections, full prism page.</figcaption></figure></div><p>For reference, you can see the full version on GitHub: <a href="https://github.com/adamfaik/ai-ask/blob/main/company-context.md">github.com/adamfaik/ai-ask/blob/main/company-context.md</a>. It will give you a sense of what your version could look like once it&#8217;s filled in.</p><p>The prism page is human-editable markdown. Your team can update it without touching the skill code. <strong>Store the prompt, not the result.</strong> The result regenerates every time the page changes.</p><p>Now install it. There&#8217;s a trap.</p><h3>Step 4: Save the skill as a .skill file</h3><p>Cowork&#8217;s Save Skill button can install your skill in two different formats. <strong>The format you pick matters more than it looks.</strong></p><ul><li><p>If you save the skill as a <code>.md</code> file, only <code>SKILL.md</code> gets installed in your Personal Skills. Your <code>company-context.md</code>, the prism, stays on disk in the project folder. The skill is now installed, but without the file it is instructed to read on every invocation. <strong>The skill is there. The prism is not.</strong></p></li><li><p>If you save it as a <code>.skill</code> file, both <code>SKILL.md</code> and <code>company-context.md</code> get bundled together and installed as a unit. The skill has its prism wherever it goes. <strong>This is the format you want.</strong></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RskE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe45290e0-7436-47c0-8235-77038e9b01d1_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RskE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe45290e0-7436-47c0-8235-77038e9b01d1_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!RskE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe45290e0-7436-47c0-8235-77038e9b01d1_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!RskE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe45290e0-7436-47c0-8235-77038e9b01d1_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!RskE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe45290e0-7436-47c0-8235-77038e9b01d1_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RskE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe45290e0-7436-47c0-8235-77038e9b01d1_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e45290e0-7436-47c0-8235-77038e9b01d1_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3308342,&quot;alt&quot;:&quot;Side-by-side diagram. Left: a lone SKILL.md flying into Claude on its own, with the company-context.md left behind on the desk; the answer below approves ChatGPT generically. Right: SKILL.md and company-context.md wrapped together in a single .skill bundle; the answer below refuses with the Tier 3 customer-data rule.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/198048642?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe45290e0-7436-47c0-8235-77038e9b01d1_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Side-by-side diagram. Left: a lone SKILL.md flying into Claude on its own, with the company-context.md left behind on the desk; the answer below approves ChatGPT generically. Right: SKILL.md and company-context.md wrapped together in a single .skill bundle; the answer below refuses with the Tier 3 customer-data rule." title="Side-by-side diagram. Left: a lone SKILL.md flying into Claude on its own, with the company-context.md left behind on the desk; the answer below approves ChatGPT generically. Right: SKILL.md and company-context.md wrapped together in a single .skill bundle; the answer below refuses with the Tier 3 customer-data rule." srcset="https://substackcdn.com/image/fetch/$s_!RskE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe45290e0-7436-47c0-8235-77038e9b01d1_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!RskE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe45290e0-7436-47c0-8235-77038e9b01d1_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!RskE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe45290e0-7436-47c0-8235-77038e9b01d1_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!RskE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe45290e0-7436-47c0-8235-77038e9b01d1_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Ship the prism with the skill.</figcaption></figure></div><p>To get a <code>.skill</code> file, ask Cowork to package the skill before you click Save. <strong>A </strong><code>.skill</code><strong> file is a zip bundle with both files at the root.</strong> Paste this in the same chat:</p><div class="callout-block" data-callout="true"><p>Please package the ai-ask skill as a .skill file. It should bundle both SKILL.md and company-context.md at the root of the archive (no enclosing subfolder), so I can install it into Cowork through the Save Skill button. Save the .skill file inside the project folder, and confirm the archive contents.</p></div><p>Cowork creates <code>ai-ask.skill</code> and verifies the contents. The format requirements are the same as Cowork&#8217;s Upload Skill dialog accepts: a <code>.zip</code> or <code>.skill</code> archive that includes <code>SKILL.md</code> at the root. <strong>The format Cowork generates matches the format Claude accepts.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qGVm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92c5c7dc-78ae-418c-8e12-4003cd8645ab_2624x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qGVm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92c5c7dc-78ae-418c-8e12-4003cd8645ab_2624x1824.png 424w, https://substackcdn.com/image/fetch/$s_!qGVm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92c5c7dc-78ae-418c-8e12-4003cd8645ab_2624x1824.png 848w, https://substackcdn.com/image/fetch/$s_!qGVm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92c5c7dc-78ae-418c-8e12-4003cd8645ab_2624x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!qGVm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92c5c7dc-78ae-418c-8e12-4003cd8645ab_2624x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qGVm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92c5c7dc-78ae-418c-8e12-4003cd8645ab_2624x1824.png" width="1456" height="1012" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/92c5c7dc-78ae-418c-8e12-4003cd8645ab_2624x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1012,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1089811,&quot;alt&quot;:&quot;The Customize &#8594; Skills &#8594; Upload skill dialog showing the file requirements: the .md file must contain skill name and description formatted in YAML, and the .zip or .skill file must include a SKILL.md file.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/198048642?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92c5c7dc-78ae-418c-8e12-4003cd8645ab_2624x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Customize &#8594; Skills &#8594; Upload skill dialog showing the file requirements: the .md file must contain skill name and description formatted in YAML, and the .zip or .skill file must include a SKILL.md file." title="The Customize &#8594; Skills &#8594; Upload skill dialog showing the file requirements: the .md file must contain skill name and description formatted in YAML, and the .zip or .skill file must include a SKILL.md file." srcset="https://substackcdn.com/image/fetch/$s_!qGVm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92c5c7dc-78ae-418c-8e12-4003cd8645ab_2624x1824.png 424w, https://substackcdn.com/image/fetch/$s_!qGVm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92c5c7dc-78ae-418c-8e12-4003cd8645ab_2624x1824.png 848w, https://substackcdn.com/image/fetch/$s_!qGVm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92c5c7dc-78ae-418c-8e12-4003cd8645ab_2624x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!qGVm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92c5c7dc-78ae-418c-8e12-4003cd8645ab_2624x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The format Cowork generates matches the format Claude accepts.</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZyBc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facfbf1f6-f2b6-436a-bfda-2217e42819aa_2536x1736.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZyBc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facfbf1f6-f2b6-436a-bfda-2217e42819aa_2536x1736.png 424w, https://substackcdn.com/image/fetch/$s_!ZyBc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facfbf1f6-f2b6-436a-bfda-2217e42819aa_2536x1736.png 848w, https://substackcdn.com/image/fetch/$s_!ZyBc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facfbf1f6-f2b6-436a-bfda-2217e42819aa_2536x1736.png 1272w, https://substackcdn.com/image/fetch/$s_!ZyBc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facfbf1f6-f2b6-436a-bfda-2217e42819aa_2536x1736.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZyBc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facfbf1f6-f2b6-436a-bfda-2217e42819aa_2536x1736.png" width="1456" height="997" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/acfbf1f6-f2b6-436a-bfda-2217e42819aa_2536x1736.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:997,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:789643,&quot;alt&quot;:&quot;Cowork&#8217;s post-packaging verification message stating that the archive contains exactly two entries at the root, SKILL.md (5,755 bytes) and company-context.md (11,157 bytes), with no enclosing subfolder and YAML frontmatter intact, with the ai-ask.skill file visible in the project pane.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/198048642?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facfbf1f6-f2b6-436a-bfda-2217e42819aa_2536x1736.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Cowork&#8217;s post-packaging verification message stating that the archive contains exactly two entries at the root, SKILL.md (5,755 bytes) and company-context.md (11,157 bytes), with no enclosing subfolder and YAML frontmatter intact, with the ai-ask.skill file visible in the project pane." title="Cowork&#8217;s post-packaging verification message stating that the archive contains exactly two entries at the root, SKILL.md (5,755 bytes) and company-context.md (11,157 bytes), with no enclosing subfolder and YAML frontmatter intact, with the ai-ask.skill file visible in the project pane." srcset="https://substackcdn.com/image/fetch/$s_!ZyBc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facfbf1f6-f2b6-436a-bfda-2217e42819aa_2536x1736.png 424w, https://substackcdn.com/image/fetch/$s_!ZyBc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facfbf1f6-f2b6-436a-bfda-2217e42819aa_2536x1736.png 848w, https://substackcdn.com/image/fetch/$s_!ZyBc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facfbf1f6-f2b6-436a-bfda-2217e42819aa_2536x1736.png 1272w, https://substackcdn.com/image/fetch/$s_!ZyBc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facfbf1f6-f2b6-436a-bfda-2217e42819aa_2536x1736.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Two files at root, frontmatter intact.</figcaption></figure></div><p>Now click <strong>Save Skill</strong>. With <code>ai-ask.skill</code> as the current artifact in the chat, the Save Skill button installs the full bundle. Open <strong>Customize &#8594; Skills</strong>. <code>ai-ask</code> appears under <strong>Personal skills</strong>, expanded to show both <code>SKILL.md</code> AND <code>company-context.md</code> nested underneath. <strong>The bundle landed. Both files installed.</strong> Toggle is on, trigger set to &#8221;Slash command + auto.&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nn1H!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc30ce8c2-9e99-4cb4-9400-27a8c941c1c9_2624x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nn1H!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc30ce8c2-9e99-4cb4-9400-27a8c941c1c9_2624x1824.png 424w, https://substackcdn.com/image/fetch/$s_!nn1H!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc30ce8c2-9e99-4cb4-9400-27a8c941c1c9_2624x1824.png 848w, https://substackcdn.com/image/fetch/$s_!nn1H!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc30ce8c2-9e99-4cb4-9400-27a8c941c1c9_2624x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!nn1H!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc30ce8c2-9e99-4cb4-9400-27a8c941c1c9_2624x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nn1H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc30ce8c2-9e99-4cb4-9400-27a8c941c1c9_2624x1824.png" width="1456" height="1012" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c30ce8c2-9e99-4cb4-9400-27a8c941c1c9_2624x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1012,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:859471,&quot;alt&quot;:&quot;The Customize panel with ai-ask listed under Personal skills, expanded to show SKILL.md and company-context.md nested as files under the skill, with the toggle on, trigger &#8220;Slash command + auto&#8221;, and the rendered SKILL.md body visible in the right pane.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/198048642?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc30ce8c2-9e99-4cb4-9400-27a8c941c1c9_2624x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Customize panel with ai-ask listed under Personal skills, expanded to show SKILL.md and company-context.md nested as files under the skill, with the toggle on, trigger &#8220;Slash command + auto&#8221;, and the rendered SKILL.md body visible in the right pane." title="The Customize panel with ai-ask listed under Personal skills, expanded to show SKILL.md and company-context.md nested as files under the skill, with the toggle on, trigger &#8220;Slash command + auto&#8221;, and the rendered SKILL.md body visible in the right pane." srcset="https://substackcdn.com/image/fetch/$s_!nn1H!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc30ce8c2-9e99-4cb4-9400-27a8c941c1c9_2624x1824.png 424w, https://substackcdn.com/image/fetch/$s_!nn1H!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc30ce8c2-9e99-4cb4-9400-27a8c941c1c9_2624x1824.png 848w, https://substackcdn.com/image/fetch/$s_!nn1H!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc30ce8c2-9e99-4cb4-9400-27a8c941c1c9_2624x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!nn1H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc30ce8c2-9e99-4cb4-9400-27a8c941c1c9_2624x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The bundle landed. Both files installed.</figcaption></figure></div><p>The principle to take with you: if your skill uses bundled context files, make sure you generate a <code>.skill</code> file before clicking Save. <strong>A skill without its prism is just a skill.</strong></p><p>Now test it.</p><h3>Step 5: Test the skill in Chat mode</h3><p>Three questions cover the spectrum. One that should refuse (gated by company rules). One that needs company context before generic instructions. One that&#8217;s generic enough the skill should stay quiet.</p><p><strong>Before you test, switch to Chat mode in the Claude desktop app.</strong> The <code>/ai-ask</code> skill triggers from the Chat tab, not from Cowork. Cowork is where you build skills. Chat is where you and your team actually use them. Open a fresh Chat conversation and pick <strong>Sonnet 4.6</strong> as the model. Sonnet is fine for daily use, per the ROI principle from earlier.</p><p><strong>Test 1: refusal.</strong></p><div class="callout-block" data-callout="true"><p><strong>/ai-ask</strong> Can I use ChatGPT free tier to summarize a customer feedback I exported?</p></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jqWf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a65eda1-102b-4865-999e-d9e0a18959ed_2624x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jqWf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a65eda1-102b-4865-999e-d9e0a18959ed_2624x1824.png 424w, https://substackcdn.com/image/fetch/$s_!jqWf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a65eda1-102b-4865-999e-d9e0a18959ed_2624x1824.png 848w, https://substackcdn.com/image/fetch/$s_!jqWf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a65eda1-102b-4865-999e-d9e0a18959ed_2624x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!jqWf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a65eda1-102b-4865-999e-d9e0a18959ed_2624x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jqWf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a65eda1-102b-4865-999e-d9e0a18959ed_2624x1824.png" width="1456" height="1012" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7a65eda1-102b-4865-999e-d9e0a18959ed_2624x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1012,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:886135,&quot;alt&quot;:&quot;The full /ai-ask chat showing the question about ChatGPT free for customer feedback and the refusal answer in two parts: &#8220;Company context&#8221; leading with the No, then &#8220;General guidance&#8221; recommending Claude Enterprise as the default and explaining the Claude Projects file-retention gotcha.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/198048642?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a65eda1-102b-4865-999e-d9e0a18959ed_2624x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The full /ai-ask chat showing the question about ChatGPT free for customer feedback and the refusal answer in two parts: &#8220;Company context&#8221; leading with the No, then &#8220;General guidance&#8221; recommending Claude Enterprise as the default and explaining the Claude Projects file-retention gotcha." title="The full /ai-ask chat showing the question about ChatGPT free for customer feedback and the refusal answer in two parts: &#8220;Company context&#8221; leading with the No, then &#8220;General guidance&#8221; recommending Claude Enterprise as the default and explaining the Claude Projects file-retention gotcha." srcset="https://substackcdn.com/image/fetch/$s_!jqWf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a65eda1-102b-4865-999e-d9e0a18959ed_2624x1824.png 424w, https://substackcdn.com/image/fetch/$s_!jqWf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a65eda1-102b-4865-999e-d9e0a18959ed_2624x1824.png 848w, https://substackcdn.com/image/fetch/$s_!jqWf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a65eda1-102b-4865-999e-d9e0a18959ed_2624x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!jqWf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a65eda1-102b-4865-999e-d9e0a18959ed_2624x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The &#8220;no, and here&#8217;s why, and here&#8217;s what to do instead&#8221; pattern.</figcaption></figure></div><p><strong>Test 2: company context first.</strong></p><div class="callout-block" data-callout="true"><p><strong>/ai-ask</strong> I want to install Cursor on my Mac. How do I do it?</p></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!liEi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddda0a8b-b609-40fb-9619-eedf3b40e4ff_2624x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!liEi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddda0a8b-b609-40fb-9619-eedf3b40e4ff_2624x1824.png 424w, https://substackcdn.com/image/fetch/$s_!liEi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddda0a8b-b609-40fb-9619-eedf3b40e4ff_2624x1824.png 848w, https://substackcdn.com/image/fetch/$s_!liEi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddda0a8b-b609-40fb-9619-eedf3b40e4ff_2624x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!liEi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddda0a8b-b609-40fb-9619-eedf3b40e4ff_2624x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!liEi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddda0a8b-b609-40fb-9619-eedf3b40e4ff_2624x1824.png" width="1456" height="1012" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ddda0a8b-b609-40fb-9619-eedf3b40e4ff_2624x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1012,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:857916,&quot;alt&quot;:&quot;The /ai-ask chat showing the question about installing Cursor on Mac and the answer with company context (SSO setup, Confluence MCP integration, magic-link gotcha, customer-data autocomplete limitation) leading before the standard Cursor install steps.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/198048642?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddda0a8b-b609-40fb-9619-eedf3b40e4ff_2624x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The /ai-ask chat showing the question about installing Cursor on Mac and the answer with company context (SSO setup, Confluence MCP integration, magic-link gotcha, customer-data autocomplete limitation) leading before the standard Cursor install steps." title="The /ai-ask chat showing the question about installing Cursor on Mac and the answer with company context (SSO setup, Confluence MCP integration, magic-link gotcha, customer-data autocomplete limitation) leading before the standard Cursor install steps." srcset="https://substackcdn.com/image/fetch/$s_!liEi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddda0a8b-b609-40fb-9619-eedf3b40e4ff_2624x1824.png 424w, https://substackcdn.com/image/fetch/$s_!liEi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddda0a8b-b609-40fb-9619-eedf3b40e4ff_2624x1824.png 848w, https://substackcdn.com/image/fetch/$s_!liEi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddda0a8b-b609-40fb-9619-eedf3b40e4ff_2624x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!liEi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fddda0a8b-b609-40fb-9619-eedf3b40e4ff_2624x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Acme process leads. Generic install steps follow.</figcaption></figure></div><p>The ordering is the proof. Acme&#8217;s actual process comes first: SSO, the Confluence MCP gotcha, the customer-data autocomplete limitation. The generic Cursor install steps come after as a reference. <strong>The teammate who reads this knows what to do AND why the company path matters first.</strong> Without the prism, the answer would have led with the generic install steps and skipped the company context entirely.</p><p><strong>Test 3: restraint.</strong></p><div class="callout-block" data-callout="true"><p><strong>/ai-ask</strong> How do I write a good prompt for code review?</p></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!O_Qc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb263ac2-a96d-43a1-a129-a61528301b9b_2624x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!O_Qc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb263ac2-a96d-43a1-a129-a61528301b9b_2624x1824.png 424w, https://substackcdn.com/image/fetch/$s_!O_Qc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb263ac2-a96d-43a1-a129-a61528301b9b_2624x1824.png 848w, https://substackcdn.com/image/fetch/$s_!O_Qc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb263ac2-a96d-43a1-a129-a61528301b9b_2624x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!O_Qc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb263ac2-a96d-43a1-a129-a61528301b9b_2624x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!O_Qc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb263ac2-a96d-43a1-a129-a61528301b9b_2624x1824.png" width="1456" height="1012" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eb263ac2-a96d-43a1-a129-a61528301b9b_2624x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1012,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:857220,&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.theaithinker.com/i/198048642?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb263ac2-a96d-43a1-a129-a61528301b9b_2624x1824.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_!O_Qc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb263ac2-a96d-43a1-a129-a61528301b9b_2624x1824.png 424w, https://substackcdn.com/image/fetch/$s_!O_Qc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb263ac2-a96d-43a1-a129-a61528301b9b_2624x1824.png 848w, https://substackcdn.com/image/fetch/$s_!O_Qc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb263ac2-a96d-43a1-a129-a61528301b9b_2624x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!O_Qc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb263ac2-a96d-43a1-a129-a61528301b9b_2624x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Restraint: short company context, then heavy generic guidance.</figcaption></figure></div><p>Now sharpen the format.</p><h3>Step 6: Iterate by talking to Cowork</h3><p>The tests passed, but the answers were long. They also didn&#8217;t link to official docs. Real iteration is structural feedback. Length, ordering, what to include or exclude. Not single-answer tweaking. <strong>And it&#8217;s a plain-English conversation in the same </strong><code>skill-creator</code><strong> chat: no manual </strong><code>SKILL.md</code><strong> editing, no toggle dance.</strong></p><p>Send the feedback as a plain prompt:</p><div class="callout-block" data-callout="true"><p>The skill works but the answers are too long and there are no links to official docs. Restructure the answer format. Company context: maximum 1-2 sentences. Only the specific rule that applies. Skip the surrounding explanation. Steps: a numbered checklist with one action per line. No paragraphs. Reference docs: at the very end, include a link to the official documentation for the tool or topic the question is about. Search the web for the canonical URL. Update SKILL.md, re-package as .skill, then tell me when it&#8217;s ready to re-save.</p></div><p>Cowork updates <code>SKILL.md</code> and re-packages the bundle. <strong>The new </strong><code>SKILL.md</code><strong> is 119 bytes shorter than the previous version.</strong> Not that the byte count is what matters. The real proof is the re-run.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2v1w!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F161dd84b-45c1-46be-8e6c-386e4ab17c4d_2624x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2v1w!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F161dd84b-45c1-46be-8e6c-386e4ab17c4d_2624x1824.png 424w, https://substackcdn.com/image/fetch/$s_!2v1w!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F161dd84b-45c1-46be-8e6c-386e4ab17c4d_2624x1824.png 848w, https://substackcdn.com/image/fetch/$s_!2v1w!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F161dd84b-45c1-46be-8e6c-386e4ab17c4d_2624x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!2v1w!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F161dd84b-45c1-46be-8e6c-386e4ab17c4d_2624x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2v1w!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F161dd84b-45c1-46be-8e6c-386e4ab17c4d_2624x1824.png" width="1456" height="1012" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/161dd84b-45c1-46be-8e6c-386e4ab17c4d_2624x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1012,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1013230,&quot;alt&quot;:&quot;Cowork&#8217;s iteration recap describing the new SKILL.md format including a non-negotiable &#8220;shape&#8221; with three sections, explicit good-vs-bad examples for the Steps section, and an allow-list (vendor docs, install guides, model cards, pricing pages) and deny-list (blog posts, third-party tutorials, AI-generated summaries) for the Reference docs section.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/198048642?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F161dd84b-45c1-46be-8e6c-386e4ab17c4d_2624x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Cowork&#8217;s iteration recap describing the new SKILL.md format including a non-negotiable &#8220;shape&#8221; with three sections, explicit good-vs-bad examples for the Steps section, and an allow-list (vendor docs, install guides, model cards, pricing pages) and deny-list (blog posts, third-party tutorials, AI-generated summaries) for the Reference docs section." title="Cowork&#8217;s iteration recap describing the new SKILL.md format including a non-negotiable &#8220;shape&#8221; with three sections, explicit good-vs-bad examples for the Steps section, and an allow-list (vendor docs, install guides, model cards, pricing pages) and deny-list (blog posts, third-party tutorials, AI-generated summaries) for the Reference docs section." srcset="https://substackcdn.com/image/fetch/$s_!2v1w!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F161dd84b-45c1-46be-8e6c-386e4ab17c4d_2624x1824.png 424w, https://substackcdn.com/image/fetch/$s_!2v1w!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F161dd84b-45c1-46be-8e6c-386e4ab17c4d_2624x1824.png 848w, https://substackcdn.com/image/fetch/$s_!2v1w!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F161dd84b-45c1-46be-8e6c-386e4ab17c4d_2624x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!2v1w!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F161dd84b-45c1-46be-8e6c-386e4ab17c4d_2624x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The recap: shorter context, numbered steps, web-searched reference docs.</figcaption></figure></div><p>When you click <strong>Save Skill</strong>, Cowork prompts a confirmation: &#8221;There&#8217;s an existing skill with the same name. Uploading this skill will replace the existing one, which can&#8217;t be restored.&#8221; Click <strong>Upload and replace</strong>. <strong>The new bundle takes over for any future invocation.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!N8ms!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff373f5a4-de9c-4464-b522-5c341a6996b4_2624x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N8ms!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff373f5a4-de9c-4464-b522-5c341a6996b4_2624x1824.png 424w, https://substackcdn.com/image/fetch/$s_!N8ms!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff373f5a4-de9c-4464-b522-5c341a6996b4_2624x1824.png 848w, https://substackcdn.com/image/fetch/$s_!N8ms!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff373f5a4-de9c-4464-b522-5c341a6996b4_2624x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!N8ms!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff373f5a4-de9c-4464-b522-5c341a6996b4_2624x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N8ms!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff373f5a4-de9c-4464-b522-5c341a6996b4_2624x1824.png" width="1456" height="1012" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f373f5a4-de9c-4464-b522-5c341a6996b4_2624x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1012,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1191912,&quot;alt&quot;:&quot;A confirmation modal titled &#8220;Replace ai-ask skill?&#8221; with the message about an existing skill being replaced and two buttons: Cancel and Upload and replace.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/198048642?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff373f5a4-de9c-4464-b522-5c341a6996b4_2624x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A confirmation modal titled &#8220;Replace ai-ask skill?&#8221; with the message about an existing skill being replaced and two buttons: Cancel and Upload and replace." title="A confirmation modal titled &#8220;Replace ai-ask skill?&#8221; with the message about an existing skill being replaced and two buttons: Cancel and Upload and replace." srcset="https://substackcdn.com/image/fetch/$s_!N8ms!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff373f5a4-de9c-4464-b522-5c341a6996b4_2624x1824.png 424w, https://substackcdn.com/image/fetch/$s_!N8ms!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff373f5a4-de9c-4464-b522-5c341a6996b4_2624x1824.png 848w, https://substackcdn.com/image/fetch/$s_!N8ms!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff373f5a4-de9c-4464-b522-5c341a6996b4_2624x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!N8ms!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff373f5a4-de9c-4464-b522-5c341a6996b4_2624x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Confirm the replace; the new bundle takes over.</figcaption></figure></div><p>Now re-run the Cursor-install question. The answer shape is exactly what you asked for. Two-sentence company context. Five-step numbered checklist. Two canonical doc links at the bottom. The header reads &#8221;Viewed 3 files, searched the web &#8250;&#8221;: proof that the skill now searches for official URLs on every invocation.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZrnO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0055f30d-893a-409c-a65b-dde91e604ed7_2624x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZrnO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0055f30d-893a-409c-a65b-dde91e604ed7_2624x1824.png 424w, https://substackcdn.com/image/fetch/$s_!ZrnO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0055f30d-893a-409c-a65b-dde91e604ed7_2624x1824.png 848w, https://substackcdn.com/image/fetch/$s_!ZrnO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0055f30d-893a-409c-a65b-dde91e604ed7_2624x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!ZrnO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0055f30d-893a-409c-a65b-dde91e604ed7_2624x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZrnO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0055f30d-893a-409c-a65b-dde91e604ed7_2624x1824.png" width="1456" height="1012" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0055f30d-893a-409c-a65b-dde91e604ed7_2624x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1012,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:775904,&quot;alt&quot;:&quot;The /ai-ask answer for installing Cursor on Mac after iteration, showing the new structure: a 2-sentence Company context section, a 5-item numbered Steps checklist (download installer, drag to Applications, launch and sign in with SSO, verify Confluence MCP, flag AI-assisted commits), and a Reference docs section at the bottom with two links to Cursor&#8217;s official documentation.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/198048642?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0055f30d-893a-409c-a65b-dde91e604ed7_2624x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The /ai-ask answer for installing Cursor on Mac after iteration, showing the new structure: a 2-sentence Company context section, a 5-item numbered Steps checklist (download installer, drag to Applications, launch and sign in with SSO, verify Confluence MCP, flag AI-assisted commits), and a Reference docs section at the bottom with two links to Cursor&#8217;s official documentation." title="The /ai-ask answer for installing Cursor on Mac after iteration, showing the new structure: a 2-sentence Company context section, a 5-item numbered Steps checklist (download installer, drag to Applications, launch and sign in with SSO, verify Confluence MCP, flag AI-assisted commits), and a Reference docs section at the bottom with two links to Cursor&#8217;s official documentation." srcset="https://substackcdn.com/image/fetch/$s_!ZrnO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0055f30d-893a-409c-a65b-dde91e604ed7_2624x1824.png 424w, https://substackcdn.com/image/fetch/$s_!ZrnO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0055f30d-893a-409c-a65b-dde91e604ed7_2624x1824.png 848w, https://substackcdn.com/image/fetch/$s_!ZrnO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0055f30d-893a-409c-a65b-dde91e604ed7_2624x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!ZrnO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0055f30d-893a-409c-a65b-dde91e604ed7_2624x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">One prompt of feedback. Every future answer reshapes.</figcaption></figure></div><p>This is the moment that pays off the whole build. One short prompt of feedback. Every future answer reshapes. <strong>Tune the lens once, every answer benefits.</strong></p><p>This is also where the real time goes on a build like this. Scaffolding a skill takes one focused session. Getting the answer format your team will actually use takes several rounds of iteration across several conversations. <strong>Plan the calendar around iteration, not scaffolding.</strong> In practice, one to three hours of feedback rounds.</p><p>Now share it.</p><h3>Step 7: Ship it to your team</h3><p>Two distribution paths, different jobs. Pick both. <strong>Each one solves a different problem.</strong> Let me show you why.</p><p>Inside Claude, shared skills are <strong>view-only on the recipient side</strong>. Your teammates can enable, disable, and use the skill. But they can&#8217;t edit <code>SKILL.md</code> or <code>company-context.md</code>. <strong>That single constraint is why the right answer is two paths.</strong> One for fast install. One for collaborative iteration. Solve the constraint, don&#8217;t fight it.</p><p><strong>Path A: Org install via Claude.</strong> If you&#8217;re on Team or Enterprise, the official path is <strong>Organization settings &#8594; Skills &#8594; Share with organization</strong>. The toggle is off by default. Once on, click <strong>Share</strong> on your skill in Customize. The skill appears in your org&#8217;s directory. Teammates install with one click. <strong>The fastest way to put a working skill in 50 teammates&#8217; hands.</strong></p><p><a href="https://support.claude.com/en/articles/13119606-provision-and-manage-skills-for-your-organization">Two prerequisites worth flagging for your IT conversation</a>. The admin needs to enable <strong>Code execution + File creation</strong> at <strong>Organization settings &#8594; Capabilities</strong> before the Skills toggle takes effect. And org-wide sharing has no approval workflow. Once enabled, any member can publish a skill to the directory without review. <strong>Useful intelligence to bring to that conversation.</strong></p><p><strong>Path B: Public GitHub.</strong> One prompt to Cowork handles the whole publish. Cowork uses <code>gh repo create</code> to make the public repo, writes a README with a fictional-Acme disclaimer, commits, and pushes. The live repo is at <a href="https://github.com/adamfaik/ai-ask">github.com/adamfaik/ai-ask</a>. <strong>You can clone it, swap in your context, and start from there.</strong></p><p>The AI helper is one use case. Here&#8217;s what else this pattern handles.</p><div><hr></div><h2>Adapt the pattern for any team workflow</h2><p>Everything you just built is a pattern, not just an AI helper. One skill. One context page. A structured two-part answer. <strong>Anywhere your team asks the same routine question that depends on your specific context, the prism applies.</strong> The article&#8217;s example is AI Q&amp;A. The pattern handles much more.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!iQUl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3822c5cf-2e54-440f-9b36-f125e749edc5_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iQUl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3822c5cf-2e54-440f-9b36-f125e749edc5_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!iQUl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3822c5cf-2e54-440f-9b36-f125e749edc5_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!iQUl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3822c5cf-2e54-440f-9b36-f125e749edc5_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!iQUl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3822c5cf-2e54-440f-9b36-f125e749edc5_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iQUl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3822c5cf-2e54-440f-9b36-f125e749edc5_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3822c5cf-2e54-440f-9b36-f125e749edc5_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2887001,&quot;alt&quot;:&quot;A single Claude skill at the center of the diagram, surrounded by four context pages labeled &#8220;AI rules&#8221;, &#8220;Quarterly OKRs&#8221;, &#8220;Brand voice&#8221;, &#8220;Feedback rubric&#8221;. Below the skill, four matching answer bubbles in the same two-part format. The caption inside the diagram reads &#8220;Same skill. Different lens. Build one, run a hundred.&#8221;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/198048642?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3822c5cf-2e54-440f-9b36-f125e749edc5_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A single Claude skill at the center of the diagram, surrounded by four context pages labeled &#8220;AI rules&#8221;, &#8220;Quarterly OKRs&#8221;, &#8220;Brand voice&#8221;, &#8220;Feedback rubric&#8221;. Below the skill, four matching answer bubbles in the same two-part format. The caption inside the diagram reads &#8220;Same skill. Different lens. Build one, run a hundred.&#8221;" title="A single Claude skill at the center of the diagram, surrounded by four context pages labeled &#8220;AI rules&#8221;, &#8220;Quarterly OKRs&#8221;, &#8220;Brand voice&#8221;, &#8220;Feedback rubric&#8221;. Below the skill, four matching answer bubbles in the same two-part format. The caption inside the diagram reads &#8220;Same skill. Different lens. Build one, run a hundred.&#8221;" srcset="https://substackcdn.com/image/fetch/$s_!iQUl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3822c5cf-2e54-440f-9b36-f125e749edc5_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!iQUl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3822c5cf-2e54-440f-9b36-f125e749edc5_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!iQUl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3822c5cf-2e54-440f-9b36-f125e749edc5_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!iQUl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3822c5cf-2e54-440f-9b36-f125e749edc5_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Same skill. Different lens. Build one, run a hundred.</figcaption></figure></div><p>Here are four use cases where the same shape earns its keep. Each one swaps the context page for a different document. The skill scaffold stays the same. <strong>Build the skill once, point it at four different pages, ship four different helpers.</strong></p><ul><li><p><strong>OKR alignment helper.</strong></p><ul><li><p>Audience: PMs drafting features.</p></li><li><p>User request: &#8221;Does this initiative line up with our quarterly OKRs, and which one?&#8221;</p></li><li><p>What comes back: &#8221;Closest match: OKR-Q2-3 &#8216;increase activation by 15%&#8217; (alignment 0.6). Two stronger fits to consider before locking: OKR-Q2-1 (north-star activation rate) and OKR-Q2-7 (week-one retention).&#8221;</p></li><li><p>Context page: the team&#8217;s current-quarter OKR doc.</p></li></ul></li><li><p><strong>Feedback reviewer.</strong></p><ul><li><p>Audience: anyone shipping a draft.</p></li><li><p>User request: &#8221;Is this feedback the way our team gives feedback?&#8221;</p></li><li><p>What comes back: &#8221;Reads well overall. Two SBI-format gaps: paragraph 2 names the situation but not the behavior; paragraph 4 gives behavior but no impact. Add one sentence each.&#8221;</p></li><li><p>Context page: the team&#8217;s feedback rubric (SBI, Radical Candor, or whatever you standardized on).</p></li></ul></li><li><p><strong>Brand voice checker.</strong></p><ul><li><p>Audience: marketing, sales, or support drafting external copy.</p></li><li><p>User request: &#8221;Is this on-brand for us?&#8221;</p></li><li><p>What comes back: &#8221;Three off-tone moments. Paragraph 1 uses &#8216;revolutionary,&#8217; which the brand guide bans as hype. Paragraph 3 leads with what we did rather than what the customer gets. The CTA is passive; our voice is action-first. Suggested swaps listed inline.&#8221;</p></li><li><p>Context page: the brand voice guide.</p></li></ul></li><li><p><strong>Onboarding concierge.</strong></p><ul><li><p>Audience: new joiners in week one (and anyone three months in who still doesn&#8217;t know who to ask).</p></li><li><p>User request: &#8221;Who do I ask about X at this company?&#8221;</p></li><li><p>What comes back: &#8221;For laptop and SSO issues, support-it@. For new-tool requests, vendor-risk@. For OKR questions, Sarah K in Product. Fastest path: #ai-help in Slack, answered within a day.&#8221;</p></li><li><p>Context page: an org-chart-style page mapping topics to contacts and channels.</p></li></ul></li></ul><p>Here is the principle. <strong>The skill is the lens. The context page is what you&#8217;re looking through it at.</strong> Swap the context page, get a different team helper from the same skill scaffold. Build one prism. Run a hundred queries through it.</p><div><hr></div><h2>Your turn!</h2><p>If you&#8217;ve been holding the &#8220;we need an AI playbook&#8221; assignment from your manager, you don&#8217;t need a 1,000-card Confluence space. <strong>You need one skill, one context page, and an afternoon in Cowork.</strong> The team gets answers grounded in your rules without DM&#8217;ing you. You get your focus back. <strong>And the same pattern adapts to OKRs, feedback, brand voice, anything routine that depends on context.</strong></p><p>Here is where to start. Pick the routine question your team asks you most often. Write a one-page context document for it. Open Cowork. Run <code>skill-creator</code>. Answer the QCM. <strong>The scaffolding takes one focused session. </strong>Then send one enhancement prompt to fill the page. Package as <code>.skill</code>. Click Save Skill. Test against three real questions from your inbox. Iterate by chat until the answer shape is what your team will actually use. Ship to your team via the org install or GitHub. <strong>You&#8217;ll have a working helper the same week you read this.</strong></p><p>If you want a head start, clone the repo at <a href="https://github.com/adamfaik/ai-ask">github.com/adamfaik/ai-ask</a>. Fork it. Replace the Acme content with your context. <strong>And tell me what you built.</strong></p>]]></content:encoded></item><item><title><![CDATA[How to bring a company up to speed on AI]]></title><description><![CDATA[Identify the fast movers. Build a shared backlog. Run 2-week sprints with a single owner per topic. Pair-do with the rest of the team.]]></description><link>https://www.theaithinker.com/p/how-to-bring-a-company-up-to-speed</link><guid isPermaLink="false">https://www.theaithinker.com/p/how-to-bring-a-company-up-to-speed</guid><dc:creator><![CDATA[Adam Faik]]></dc:creator><pubDate>Mon, 11 May 2026 11:00:30 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/6dd2f487-44c2-47d0-aa0f-5d613ca1a955_1024x731.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>It&#8217;s Monday morning. You&#8217;re scanning your week. Leadership offsite, three product reviews, a check-in with each of your team leads. And the same pattern keeps showing up. In every team across the company, two or three people have AI prompts pinned to their second monitor and a half-finished agent in their personal repo. The rest haven&#8217;t really started. You&#8217;ve been telling yourself this gap is fine. Early days. Give it time. But it&#8217;s been months, and the gap keeps widening across every team you look at. <strong>The fast ones are getting faster. The rest aren&#8217;t moving.</strong></p><p>You don&#8217;t have a process problem. <strong>You have a channeling problem.</strong> The energy is there, scattered across the company. It&#8217;s just spilling.</p><p>You may have read the headline. <a href="https://fortune.com/2025/08/18/mit-report-95-percent-generative-ai-pilots-at-companies-failing-cfo/">MIT&#8217;s 2025 NANDA report</a> found that 95% of enterprise GenAI pilots ship no measurable P&amp;L impact. The press read it as a scandal. <strong>It isn&#8217;t.</strong> Five percent succeeding is roughly what any innovation portfolio produces, in any domain, in any decade. That&#8217;s the math of betting on early ideas. The real question isn&#8217;t whether your pilots will fail. <strong>It&#8217;s whether they&#8217;ll fail in a way that teaches you anything.</strong></p><p>After installing this in several companies, the same pattern shows up every time. Each team has its few fast movers and its many non-starters, and the gap compounds without coordination. <strong>Eighteen months into AI going mainstream, that gap has stopped closing on its own.</strong> The thing that actually works is the lightest possible governance: three innovation principles plus four agile rituals. <strong>Common sense. Borrowed from places you trust. Applied to AI.</strong></p><p>If you&#8217;ve tried something like this and watched it fizzle (a guild, an AI team, an AI working group), stay with me. The networks I&#8217;ve watched fail didn&#8217;t fail because the framework was wrong. They failed because one of four conditions stopped holding underneath. <strong>We&#8217;ll work from the innovation principles to the rituals, and finish with the four conditions that keep the system alive.</strong> The result is a playbook you can start running next sprint without repeating the same fizzle.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UnbQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ecb9463-aeb5-47f5-8933-270b5a7a5f5a_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UnbQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ecb9463-aeb5-47f5-8933-270b5a7a5f5a_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!UnbQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ecb9463-aeb5-47f5-8933-270b5a7a5f5a_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!UnbQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ecb9463-aeb5-47f5-8933-270b5a7a5f5a_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!UnbQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ecb9463-aeb5-47f5-8933-270b5a7a5f5a_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UnbQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ecb9463-aeb5-47f5-8933-270b5a7a5f5a_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3ecb9463-aeb5-47f5-8933-270b5a7a5f5a_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4246059,&quot;alt&quot;:&quot;Hand-drawn black-and-white infographic showing three milestones connected by arrows. First block (a stack of folders): &#8220;Three principles.&#8221; Second block (a circular flow): &#8220;Four rituals + pair-doing.&#8221; Third block (a starting flag): &#8220;Six-step kickoff.&#8221; The path leads to a final block on the right showing a small group of figures together: &#8220;Whole company up to speed.&#8221;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/196991812?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ecb9463-aeb5-47f5-8933-270b5a7a5f5a_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Hand-drawn black-and-white infographic showing three milestones connected by arrows. First block (a stack of folders): &#8220;Three principles.&#8221; Second block (a circular flow): &#8220;Four rituals + pair-doing.&#8221; Third block (a starting flag): &#8220;Six-step kickoff.&#8221; The path leads to a final block on the right showing a small group of figures together: &#8220;Whole company up to speed.&#8221;" title="Hand-drawn black-and-white infographic showing three milestones connected by arrows. First block (a stack of folders): &#8220;Three principles.&#8221; Second block (a circular flow): &#8220;Four rituals + pair-doing.&#8221; Third block (a starting flag): &#8220;Six-step kickoff.&#8221; The path leads to a final block on the right showing a small group of figures together: &#8220;Whole company up to speed.&#8221;" srcset="https://substackcdn.com/image/fetch/$s_!UnbQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ecb9463-aeb5-47f5-8933-270b5a7a5f5a_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!UnbQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ecb9463-aeb5-47f5-8933-270b5a7a5f5a_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!UnbQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ecb9463-aeb5-47f5-8933-270b5a7a5f5a_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!UnbQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ecb9463-aeb5-47f5-8933-270b5a7a5f5a_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Principles, rituals, kickoff: three stages from gap to whole-company lift.</figcaption></figure></div><ul><li><p>Manage AI as an innovation portfolio: three principles to borrow before you build any rhythm.</p></li><li><p>Run it on agile rituals: a 2-week cycle, a pair-doing move, and four conditions that keep the system alive.</p></li><li><p>Start it next sprint, in six concrete moves.</p></li></ul><p>The first principle is about organization. Two debates live there, and they have the same answer.</p><div><hr></div><h2>Manage AI as an innovation portfolio</h2><h3>Combine top-down and bottom-up</h3><p><strong>Debate 1: top-down or bottom-up.</strong> Most leaders facing AI default to one or the other. Top-down: &#8221;the platform team will pick the tools and roll them out.&#8221; Bottom-up: &#8221;everyone will figure it out on their own.&#8221; Both are partial.</p><ul><li><p><strong>Top-down</strong> is the right move for mid-term consolidation and governance. Once a tool, prompt library, or skill has proven its value, you need top-down to scale it company-wide: security review, legal sign-off, procurement, mandatory training, integration with existing systems. <strong>That&#8217;s all real.</strong> The problem is when top-down is your only AI strategy. The AI landscape moves faster than any procurement cycle.</p></li><li><p><strong>Bottom-up</strong> is the right move for short-term experimentation and speed. Motivated people moving fast on their own tasks is how you discover what actually works. Without it, you have a strategy with no signal. <strong>The problem is when bottom-up is your only strategy.</strong> Three teams build three different prompt libraries that don&#8217;t talk to each other. Six other teams don&#8217;t start at all because nobody told them where to begin. Within six months, the gap is structural, and the libraries don&#8217;t merge cleanly into anything reusable.</p></li></ul><p>You need both. The challenge is connecting them. <strong>A small protected community in between: lets bottom-up energy run, captures what works, and hands it to top-down once it&#8217;s ready to scale.</strong> <a href="https://www.wenger-trayner.com/introduction-to-communities-of-practice/">Etienne Wenger named this pattern in 1998</a>. He called it a community of practice: a group that shares a concern, learns by doing, and decides what&#8217;s good enough to scale. AI is the latest domain it applies to.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vuXO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F219d658b-3a63-4b8f-aa42-27f3601738cb_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vuXO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F219d658b-3a63-4b8f-aa42-27f3601738cb_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!vuXO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F219d658b-3a63-4b8f-aa42-27f3601738cb_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!vuXO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F219d658b-3a63-4b8f-aa42-27f3601738cb_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!vuXO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F219d658b-3a63-4b8f-aa42-27f3601738cb_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vuXO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F219d658b-3a63-4b8f-aa42-27f3601738cb_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/219d658b-3a63-4b8f-aa42-27f3601738cb_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3927493,&quot;alt&quot;:&quot;Hand-drawn black-and-white diagram with three horizontal layers stacked vertically. Top layer (a shield): &#8220;Top-down: governance, scaling.&#8221; Middle layer, larger and emphasized (a cluster of figures connected by lines): &#8220;The community network.&#8221; Bottom layer (a small spark): &#8220;Bottom-up: experiments, speed.&#8221; Arrows flow upward from the bottom into the middle and downward from the top into the middle.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/196991812?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F219d658b-3a63-4b8f-aa42-27f3601738cb_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Hand-drawn black-and-white diagram with three horizontal layers stacked vertically. Top layer (a shield): &#8220;Top-down: governance, scaling.&#8221; Middle layer, larger and emphasized (a cluster of figures connected by lines): &#8220;The community network.&#8221; Bottom layer (a small spark): &#8220;Bottom-up: experiments, speed.&#8221; Arrows flow upward from the bottom into the middle and downward from the top into the middle." title="Hand-drawn black-and-white diagram with three horizontal layers stacked vertically. Top layer (a shield): &#8220;Top-down: governance, scaling.&#8221; Middle layer, larger and emphasized (a cluster of figures connected by lines): &#8220;The community network.&#8221; Bottom layer (a small spark): &#8220;Bottom-up: experiments, speed.&#8221; Arrows flow upward from the bottom into the middle and downward from the top into the middle." srcset="https://substackcdn.com/image/fetch/$s_!vuXO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F219d658b-3a63-4b8f-aa42-27f3601738cb_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!vuXO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F219d658b-3a63-4b8f-aa42-27f3601738cb_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!vuXO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F219d658b-3a63-4b8f-aa42-27f3601738cb_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!vuXO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F219d658b-3a63-4b8f-aa42-27f3601738cb_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Top-down meets bottom-up through the community network in the middle.</figcaption></figure></div><p><strong>Debate 2: dedicated team or embedded innovation.</strong> A close cousin of debate 1. Some companies create a dedicated innovation team. Others leave innovation in each existing team. Same answer: both, ideally hybrid. A dedicated AI core team owns the cross-cutting work (a shared prompt library, an internal Claude skill catalog, the shared backlog itself). Embedded contributors in each team own the process improvements specific to their domain. They know their work best. <strong>If you can only run one, run embedded.</strong> Their proximity to the actual work beats the dedicated team&#8217;s coordination advantage. Running both, knit through the same network, is what scales.</p><p>The community network is the operational form of both answers. Top-down meets bottom-up there. Dedicated meets embedded there. <strong>The network is where the connection happens.</strong></p><p>Once the connective layer exists, the next question is how to track the work happening inside it. AI experiments aren&#8217;t projects.</p><h3>Stop tracking AI work like projects</h3><p>The second principle is about measurement: <strong>AI work is innovation, not a project.</strong> What you track has to change.</p><p>A normal project tracks planning, budget, and deliverables. An innovation effort tracks pivots, failures, and learnings. The two look similar from a distance. Up close, they&#8217;re opposites.</p><p><strong>What makes AI work specifically weird: the technology shifts under your feet faster than your sprint cadence.</strong> The Mistral model that beat your benchmark in March will be replaced by July. The Claude skill that solved your QA problem in Q1 may be obsolete by Q3 when the next context-engineering pattern replaces it. <strong>Outputs go stale. Learnings don&#8217;t.</strong> That&#8217;s the shift you&#8217;re really making: from tracking what shipped to tracking what you understood.</p><p>Three concrete shifts in measurement:</p><ul><li><p><strong>Expect 80% of experiments to fail.</strong> Not &#8220;tolerate.&#8221; Expect. The 95% pilot-failure rate from the intro is what you get when nobody runs AI work as a portfolio: pilots commissioned, run, and forgotten. Inside a working network the rate drops, but it stays high on purpose. <strong>Eighty percent is the target, not the accident.</strong> If your hit rate is much higher, you&#8217;re picking targets that are too safe. If it&#8217;s much lower, you&#8217;re picking targets too speculative. The 80% is how you find the 20% that scales.</p></li><li><p><strong>Measure learnings, not outputs.</strong> What did you learn from the failed experiments? Which assumption was wrong? What would you try differently next time? A failed experiment with a clear lesson is more valuable than a successful one with no insight.</p></li><li><p><strong>Don&#8217;t celebrate failure for its own sake.</strong> Some companies overdo this: failure parties, &#8220;fail fast&#8221; t-shirts. That&#8217;s theater. A real failure is one where you learned something. A non-failure is one where you didn&#8217;t. Stay honest about which kind you&#8217;re shipping.</p></li></ul><p>This shift in measurement is what most companies skip when they &#8220;do AI experiments.&#8221; They run experiments but track them on a project dashboard: completion percentage, on-time delivery, ROI estimates pulled out of thin air. Then they wonder why nothing scales. <strong>The reframe is the foundation. Without it, no ritual you bolt on top will hold.</strong></p><p>The operational form of this principle (what counts as a successful learning, written down) is an artifact of the agile rhythm, not of the principle itself. Change what you measure before you formalize how you record it.</p><p>Once you measure learnings, the next question is where to place your bets.</p><h3>Diversify your AI bets</h3><p>The third principle: <strong>don&#8217;t put all your AI eggs in one basket.</strong> Spread bets across distances from your current work.</p><p>A simple way to classify any AI experiment is by how far it sits from how you operate today.</p><ul><li><p><strong>Close-in bets.</strong> Improvements to an existing process. An agent that drafts your weekly status report. A Claude skill that turns customer interview transcripts into a clustered theme list. Low risk, fast feedback, modest payoff. You need these to build trust and momentum.</p></li><li><p><strong>Mid-distance bets.</strong> New workflows that change how a team operates without rewriting the whole org chart. A pair-doing ritual that lets non-builders ship their first prompt. A shared prompt library that becomes the team&#8217;s first AI artifact.</p></li><li><p><strong>Far bets.</strong> Bets that imagine the work fundamentally differently. What if half the approval committees disappeared because every prototype was already testable end-to-end? What if QA happened through monitoring instead of dedicated review? Most of these will not work. The few that do will reset what your company is capable of.</p></li></ul><p>A backlog with only close-in bets produces incremental wins forever and never compounds. A backlog with only far bets produces theater and never ships anything usable. <strong>A healthy backlog has all three.</strong></p><p><a href="https://www.lifelongfaith.com/uploads/5/1/6/4/5164069/managing_your_innovation_portfolio.pdf">Bansi Nagji and Geoff Tuff named this exact pattern in Harvard Business Review in 2012.</a> They call the three categories core, adjacent, and transformational, and they have a famous allocation rule: <strong>70-20-10</strong>. Roughly seventy percent of the work on close-in bets, twenty percent on mid-distance, ten percent on far. It&#8217;s a default, not a law. But it&#8217;s a useful counterweight to the two failure modes above.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ku91!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8bc6c767-9d3a-4c92-95ac-a91f6bb76b77_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ku91!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8bc6c767-9d3a-4c92-95ac-a91f6bb76b77_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!ku91!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8bc6c767-9d3a-4c92-95ac-a91f6bb76b77_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!ku91!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8bc6c767-9d3a-4c92-95ac-a91f6bb76b77_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!ku91!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8bc6c767-9d3a-4c92-95ac-a91f6bb76b77_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ku91!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8bc6c767-9d3a-4c92-95ac-a91f6bb76b77_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8bc6c767-9d3a-4c92-95ac-a91f6bb76b77_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3879156,&quot;alt&quot;:&quot;Hand-drawn black-and-white diagram with a horizontal axis labeled &#8220;Distance from how you operate today.&#8221; Left end: &#8220;Close to today.&#8221; Right end: &#8220;Fundamentally different.&#8221; Three labeled zones across the axis: &#8220;Close-in: improve current work,&#8221; &#8220;Mid-distance: new workflows,&#8221; &#8220;Far: rethink the work.&#8221; Ten dots scattered across the axis showing the 70-20-10 allocation: about seven on the left, two in the middle, one on the right.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/196991812?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8bc6c767-9d3a-4c92-95ac-a91f6bb76b77_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Hand-drawn black-and-white diagram with a horizontal axis labeled &#8220;Distance from how you operate today.&#8221; Left end: &#8220;Close to today.&#8221; Right end: &#8220;Fundamentally different.&#8221; Three labeled zones across the axis: &#8220;Close-in: improve current work,&#8221; &#8220;Mid-distance: new workflows,&#8221; &#8220;Far: rethink the work.&#8221; Ten dots scattered across the axis showing the 70-20-10 allocation: about seven on the left, two in the middle, one on the right." title="Hand-drawn black-and-white diagram with a horizontal axis labeled &#8220;Distance from how you operate today.&#8221; Left end: &#8220;Close to today.&#8221; Right end: &#8220;Fundamentally different.&#8221; Three labeled zones across the axis: &#8220;Close-in: improve current work,&#8221; &#8220;Mid-distance: new workflows,&#8221; &#8220;Far: rethink the work.&#8221; Ten dots scattered across the axis showing the 70-20-10 allocation: about seven on the left, two in the middle, one on the right." srcset="https://substackcdn.com/image/fetch/$s_!ku91!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8bc6c767-9d3a-4c92-95ac-a91f6bb76b77_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!ku91!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8bc6c767-9d3a-4c92-95ac-a91f6bb76b77_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!ku91!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8bc6c767-9d3a-4c92-95ac-a91f6bb76b77_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!ku91!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8bc6c767-9d3a-4c92-95ac-a91f6bb76b77_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A healthy AI portfolio: roughly 70% close-in, 20% mid-distance, 10% far.</figcaption></figure></div><p><strong>The cautionary anecdote: prompt engineering, then context engineering.</strong> When LLMs first hit the mainstream, the loudest trend was prompt engineering. Prompt libraries, prompt courses, prompt job titles. By mid-2025, Andrej Karpathy (<a href="https://x.com/karpathy/status/1937902205765607626">post</a>) and Simon Willison (<a href="https://simonwillison.net/2025/Jun/27/context-engineering/">post</a>) were both publicly calling the shift. Context engineering, how the model gets fed the right retrieval, tools, memory, and state, is the load-bearing skill, and prompts are one ingredient inside it. <strong>Prompts didn&#8217;t die. They got demoted from the whole skill to one ingredient.</strong> A company that bet only on prompt infrastructure in 2023 didn&#8217;t waste the work. But two years later, they&#8217;re rebuilding most of the surrounding system to keep up. The companies that placed bets at varied distances (prompts and retrieval pipelines, prompts and agent tooling, prompts and internal context layers) compounded. <strong>The principle isn&#8217;t predict the next trend. It&#8217;s don&#8217;t bet only on this one.</strong></p><p>Three principles tell you how to organize, what to measure, and where to bet. They need a rhythm. That&#8217;s what agile rituals give you.</p><div><hr></div><h2>Run it on agile rituals</h2><h3>Borrow two artifacts and four rituals</h3><p>Here&#8217;s where the answer surprises me as I write it: <strong>the cleanest framework is something you already know.</strong></p><p>It&#8217;s the bones of agile. Stripped of the certifications, the ceremony, and the eight-page Confluence templates. <strong>Two artifacts</strong> (the things the work produces) and <strong>four rituals</strong> (when the work happens). That&#8217;s it.</p><p><strong>Two artifacts:</strong></p><ul><li><p><strong>The backlog</strong>. A single shared list of every AI experiment, idea, and pain point worth exploring. Anyone in the company can add to it. Some items are precise (&#8221;test Mistral Codestral on a real bug fix and report what it ships&#8221;); others are vague (&#8221;explore using LLMs for our weekly customer-research synthesis&#8221;). Both are fine. Vague items get sharpened by whoever picks them up. The backlog is a living queue, not a roadmap.</p></li><li><p><strong>The Definition of Done.</strong> The same idea you&#8217;ve used in software work, applied here. Five criteria that have to hold for any experiment to count as shipped:</p><ul><li><p><strong>Tested by a non-creator.</strong> Someone who didn&#8217;t build the tool has used it on a real task and it worked.</p></li><li><p><strong>Documented.</strong> Step-by-step instructions including required inputs and expected outputs.</p></li><li><p><strong>Centralized.</strong> Published somewhere everyone can find it (a shared playbook, a wiki page, a folder).</p></li><li><p><strong>Demoed.</strong> Presented at the next demo.</p></li><li><p><strong>Success metric defined.</strong> A simple way to measure impact (time saved, frequency of use, quality lift) is named.</p></li></ul></li></ul><p>The &#8220;tested by a non-creator&#8221; criterion is the sharpest one. <strong>It&#8217;s dogfooding in its strict form: not &#8220;the team uses it,&#8221; but &#8220;someone other than the author can run it.&#8221;</strong> It forces the owner to make the work usable, not just buildable. A prompt that only the author can run is half the work. A prompt the author&#8217;s teammate can run on Monday is the whole work.</p><p><strong>Four rituals:</strong></p><ul><li><p><strong>The planning.</strong> Every two weeks, the contributors gather for 30 minutes. They look at the backlog, pick what each of them will own for the next sprint, and commit to a demo at the end. <strong>One owner per item, always.</strong> Others can help. The owner is accountable.</p></li><li><p><strong>The sprint.</strong> Two weeks. Each contributor spends roughly <strong>one day</strong> of focused work on their item. That&#8217;s the contract: eight hours per sprint, negotiated with their manager up front. If they don&#8217;t have the capacity in a given sprint, they sit it out. No drama.</p></li><li><p><strong>The demo.</strong> End of the sprint. Every owner presents what they shipped, what they learned, and whether it should scale to the rest of the company. This is the meeting that makes the network real. Skip it for two sprints in a row and the network dies.</p></li><li><p><strong>The retro.</strong> Every few sprints (every quarter is a good rhythm), you stop and ask: what&#8217;s working, what&#8217;s not, what should we change? This is the meeting that lets the system itself adapt. Without it, the rituals drift into ceremony and the work gets stale.</p></li></ul><p>Picture the cycle.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cIlS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e098aa2-9558-4c07-b65a-695ef7ab9d9c_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cIlS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e098aa2-9558-4c07-b65a-695ef7ab9d9c_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!cIlS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e098aa2-9558-4c07-b65a-695ef7ab9d9c_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!cIlS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e098aa2-9558-4c07-b65a-695ef7ab9d9c_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!cIlS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e098aa2-9558-4c07-b65a-695ef7ab9d9c_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cIlS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e098aa2-9558-4c07-b65a-695ef7ab9d9c_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4e098aa2-9558-4c07-b65a-695ef7ab9d9c_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4194243,&quot;alt&quot;:&quot;Hand-drawn black-and-white diagram in classic Scrum-cycle style. Backlog (a stack of index cards) sits to the left as input feeding into Sprint Planning (around 30 min). Planning leads into a 2-week Sprint timebox (an hourglass) with a callout &#8220;about one day per contributor.&#8221; Sprint leads to a Demo (a small presentation screen) at the end, then loops back to the Backlog. A separate annotation, &#8220;Retro every quarter,&#8221; cuts across the loop with a dashed connector. A small Definition of Done checklist is attached to the demo step.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/196991812?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e098aa2-9558-4c07-b65a-695ef7ab9d9c_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Hand-drawn black-and-white diagram in classic Scrum-cycle style. Backlog (a stack of index cards) sits to the left as input feeding into Sprint Planning (around 30 min). Planning leads into a 2-week Sprint timebox (an hourglass) with a callout &#8220;about one day per contributor.&#8221; Sprint leads to a Demo (a small presentation screen) at the end, then loops back to the Backlog. A separate annotation, &#8220;Retro every quarter,&#8221; cuts across the loop with a dashed connector. A small Definition of Done checklist is attached to the demo step." title="Hand-drawn black-and-white diagram in classic Scrum-cycle style. Backlog (a stack of index cards) sits to the left as input feeding into Sprint Planning (around 30 min). Planning leads into a 2-week Sprint timebox (an hourglass) with a callout &#8220;about one day per contributor.&#8221; Sprint leads to a Demo (a small presentation screen) at the end, then loops back to the Backlog. A separate annotation, &#8220;Retro every quarter,&#8221; cuts across the loop with a dashed connector. A small Definition of Done checklist is attached to the demo step." srcset="https://substackcdn.com/image/fetch/$s_!cIlS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e098aa2-9558-4c07-b65a-695ef7ab9d9c_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!cIlS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e098aa2-9558-4c07-b65a-695ef7ab9d9c_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!cIlS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e098aa2-9558-4c07-b65a-695ef7ab9d9c_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!cIlS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e098aa2-9558-4c07-b65a-695ef7ab9d9c_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Two artifacts and four rituals: backlog, planning, sprint, demo. Retro every quarter.</figcaption></figure></div><p><strong>Why this lands.</strong> A two-week cadence is fast enough to keep up with how AI evolves. It&#8217;s slow enough to actually deliver. Eight hours per sprint is small enough that managers approve it without renegotiating org structure. It&#8217;s large enough to ship something demoable. The sprint length and the time commitment are both human-scale. That&#8217;s not a coincidence. It&#8217;s the same reason agile works for software in the first place.</p><p>The rituals give the fast movers a rhythm. They don&#8217;t, by themselves, lift the rest of the team. That takes one more move.</p><h3>Lift the team with pair-doing</h3><p>Here&#8217;s the question the rituals don&#8217;t answer: <strong>how does the 5% actually help the 95%?</strong></p><p>If the answer is &#8221;by demoing,&#8221; it doesn&#8217;t work. Watching a demo doesn&#8217;t move someone from &#8220;I haven&#8217;t started&#8221; to &#8220;I just shipped my first prompt.&#8221; It produces admiration, then forgetting. <strong>You need a different ritual for that, and it has a name: pair-doing.</strong></p><p>The lineage is borrowed, not invented. Pair programming (Extreme Programming, late 1990s) and <a href="https://mobprogramming.org/">Woody Zuill&#8217;s mob programming</a> (mid-2010s), applied outside engineering. <strong>Same mechanic, different domain.</strong></p><p>Pair-doing is what it sounds like. One fast mover blocks 30 to 60 minutes on their calendar. Anyone on the team can sign up. <strong>The non-mover brings a real task from their week</strong>: not a hypothetical, not a tutorial. A specific email they have to write, a customer call they have to summarize, a feature spec they have to draft. They sit together (in person or on a video call), and <strong>the fast mover walks them through doing the task with AI.</strong> Live. Hands on the keyboard.</p><p>The non-mover leaves having actually completed a piece of their own work with AI. Not having watched someone else do it.</p><p><strong>Why pair-doing works when workshops don&#8217;t:</strong></p><ul><li><p><strong>It uses real work, not exercises.</strong> Exercises are forgotten by Friday. Real work is the thing they were going to do anyway.</p></li><li><p><strong>It produces a finished output that day.</strong> The customer-call summary is done. They&#8217;re not building a portfolio of practice runs. They&#8217;re shipping their actual job.</p></li><li><p><strong>It scales linearly with capacity.</strong> That&#8217;s a feature, not a bug. It keeps the network honest about its size. If you have two fast movers and they each run two pair-doing slots a week, that&#8217;s four people lifted per week. After a quarter, that&#8217;s roughly 50 people who&#8217;ve shipped their first AI-assisted piece of work. Workshop attendance doesn&#8217;t translate that way.</p></li></ul><p><strong>Different people need different support.</strong> Not everyone in the 95% is in the same place. A simple grid clarifies who needs what.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PNiB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17da779e-f5f1-4a13-b279-00ffb1234131_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PNiB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17da779e-f5f1-4a13-b279-00ffb1234131_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!PNiB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17da779e-f5f1-4a13-b279-00ffb1234131_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!PNiB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17da779e-f5f1-4a13-b279-00ffb1234131_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!PNiB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17da779e-f5f1-4a13-b279-00ffb1234131_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PNiB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17da779e-f5f1-4a13-b279-00ffb1234131_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/17da779e-f5f1-4a13-b279-00ffb1234131_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3480926,&quot;alt&quot;:&quot;Hand-drawn black-and-white diagram with four equal columns connected left-to-right by thin arrows showing progression. Column 1 (an eye): &#8220;Observer needs awareness.&#8221; Column 2 (a compass): &#8220;Explorer needs templates.&#8221; Column 3 (a wrench): &#8220;Practitioner needs workflows.&#8221; Column 4 (a small trophy): &#8220;Champion needs recognition.&#8221;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/196991812?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17da779e-f5f1-4a13-b279-00ffb1234131_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Hand-drawn black-and-white diagram with four equal columns connected left-to-right by thin arrows showing progression. Column 1 (an eye): &#8220;Observer needs awareness.&#8221; Column 2 (a compass): &#8220;Explorer needs templates.&#8221; Column 3 (a wrench): &#8220;Practitioner needs workflows.&#8221; Column 4 (a small trophy): &#8220;Champion needs recognition.&#8221;" title="Hand-drawn black-and-white diagram with four equal columns connected left-to-right by thin arrows showing progression. Column 1 (an eye): &#8220;Observer needs awareness.&#8221; Column 2 (a compass): &#8220;Explorer needs templates.&#8221; Column 3 (a wrench): &#8220;Practitioner needs workflows.&#8221; Column 4 (a small trophy): &#8220;Champion needs recognition.&#8221;" srcset="https://substackcdn.com/image/fetch/$s_!PNiB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17da779e-f5f1-4a13-b279-00ffb1234131_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!PNiB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17da779e-f5f1-4a13-b279-00ffb1234131_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!PNiB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17da779e-f5f1-4a13-b279-00ffb1234131_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!PNiB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17da779e-f5f1-4a13-b279-00ffb1234131_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Each level needs a different kind of support to move up.</figcaption></figure></div><p>The grid matters because <strong>treating an Observer like a Champion burns them out, and treating a Champion like an Observer wastes them.</strong> Pair-doing is most powerful for moving Explorers to Practitioners. That&#8217;s where the gap is widest and the lift compounds fastest.</p><p>The rituals plus pair-doing are the engine. Four conditions keep the engine running past cycle three.</p><h3>Set up the four conditions of success</h3><p>These conditions aren&#8217;t extra rituals to bolt on. They&#8217;re the underlying things that have to hold for everything else to work. Set them up at kickoff. Check on them at every retro.</p><ol><li><p><strong>Lock in an active sponsor.</strong> A sponsor isn&#8217;t a manager who approves the network. A sponsor is a manager who protects time, attends demos, and amplifies wins. Picture the most senior person who&#8217;d be willing to walk into a Wednesday demo, ask a sharp question about what was shipped, and Slack a kudos to the contributor&#8217;s manager afterward. That&#8217;s the sponsor. Without one, contributors get pulled back into day-job delivery and the network dies in cycle three. <strong>If you can&#8217;t name your sponsor in one sentence and describe what they did at the last demo, you don&#8217;t have one.</strong></p></li><li><p><strong>Enforce the Definition of Done.</strong> Defining the DoD is easy. Enforcing it is the work. Hold every owner to all five criteria, especially &#8221;tested by a non-creator.&#8221; If an owner shows up at a demo with a prompt that only they can run, the demo isn&#8217;t done. It&#8217;s a status update. Push back warmly: &#8221;Great start. Who on your team can try it before next demo?&#8221; The DoD is what turns &#8220;I built something&#8221; into &#8220;the team can use it,&#8221; and it only happens if someone holds the line.</p></li><li><p><strong>Switch from parallel to themed when the signal appears.</strong> Early on, let contributors pick whatever pain point lights them up. That&#8217;s how you harvest motivation and self-selection. Once the rhythm holds, switch modes: <strong>one theme per cycle, all experiments target it.</strong> Themed cycles produce something the rest of the company can adopt. Parallel sandboxes produce a scattered playbook nobody references. The trick is when. Too early and you kill motivation. Too late and the output stays shallow. <strong>Watch for the signal: more than half the demos start pulling from the same problem area without anyone asking.</strong> When that happens, the team is ready. In practice this lands somewhere between sprint 4 and sprint 6. The signal is the trigger, not the calendar.</p></li><li><p><strong>Make pair-doing a habit, not a one-off.</strong> A single pair-doing session doesn&#8217;t shift behavior. A weekly slot, repeated for a quarter, does. <strong>Hold the calendar slot even when nobody signs up.</strong> The slot itself is the signal that this is how the team works now. After a few quiet weeks, somebody will book in. Usually the explorer who&#8217;s been watching from the sidelines and finally has a real task to bring.</p></li></ol><p>The pattern across all four: <strong>easy to introduce, hard to sustain.</strong> Anyone can stand up a network in a kickoff meeting. The networks that last past cycle three keep these four conditions true after the launch energy fades.</p><p>Which makes the question concrete: how do you actually start?</p><div><hr></div><h2>Start it next sprint</h2><p>Six concrete moves. None require executive buy-in beyond a sponsor and roughly 8 hours per contributor per sprint.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cZ0x!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c7bda9d-c365-401d-9564-acc98c275a62_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cZ0x!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c7bda9d-c365-401d-9564-acc98c275a62_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!cZ0x!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c7bda9d-c365-401d-9564-acc98c275a62_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!cZ0x!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c7bda9d-c365-401d-9564-acc98c275a62_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!cZ0x!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c7bda9d-c365-401d-9564-acc98c275a62_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cZ0x!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c7bda9d-c365-401d-9564-acc98c275a62_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6c7bda9d-c365-401d-9564-acc98c275a62_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4154614,&quot;alt&quot;:&quot;Hand-drawn black-and-white timeline with six numbered checkpoints arranged left-to-right along a path, each connected by an arrow. Step 1 (a checklist): &#8220;Identify fast movers.&#8221; Step 2 (a handshake): &#8220;Get manager buy-in.&#8221; Step 3 (a meeting circle): &#8220;Run kickoff workshop.&#8221; Step 4 (a stack of post-its): &#8220;Brainstorm the backlog.&#8221; Step 5 (an hourglass): &#8220;Run the first sprint.&#8221; Step 6 (a forking arrow merging into one path): &#8220;Switch parallel to themed.&#8221; A thin time-marker line runs underneath labeled &#8220;Week 0&#8221; on the left and &#8220;Week 12+&#8221; on the right.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/196991812?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c7bda9d-c365-401d-9564-acc98c275a62_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Hand-drawn black-and-white timeline with six numbered checkpoints arranged left-to-right along a path, each connected by an arrow. Step 1 (a checklist): &#8220;Identify fast movers.&#8221; Step 2 (a handshake): &#8220;Get manager buy-in.&#8221; Step 3 (a meeting circle): &#8220;Run kickoff workshop.&#8221; Step 4 (a stack of post-its): &#8220;Brainstorm the backlog.&#8221; Step 5 (an hourglass): &#8220;Run the first sprint.&#8221; Step 6 (a forking arrow merging into one path): &#8220;Switch parallel to themed.&#8221; A thin time-marker line runs underneath labeled &#8220;Week 0&#8221; on the left and &#8220;Week 12+&#8221; on the right." title="Hand-drawn black-and-white timeline with six numbered checkpoints arranged left-to-right along a path, each connected by an arrow. Step 1 (a checklist): &#8220;Identify fast movers.&#8221; Step 2 (a handshake): &#8220;Get manager buy-in.&#8221; Step 3 (a meeting circle): &#8220;Run kickoff workshop.&#8221; Step 4 (a stack of post-its): &#8220;Brainstorm the backlog.&#8221; Step 5 (an hourglass): &#8220;Run the first sprint.&#8221; Step 6 (a forking arrow merging into one path): &#8220;Switch parallel to themed.&#8221; A thin time-marker line runs underneath labeled &#8220;Week 0&#8221; on the left and &#8220;Week 12+&#8221; on the right." srcset="https://substackcdn.com/image/fetch/$s_!cZ0x!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c7bda9d-c365-401d-9564-acc98c275a62_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!cZ0x!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c7bda9d-c365-401d-9564-acc98c275a62_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!cZ0x!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c7bda9d-c365-401d-9564-acc98c275a62_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!cZ0x!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c7bda9d-c365-401d-9564-acc98c275a62_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The kickoff path: six moves over twelve weeks.</figcaption></figure></div><ol><li><p><strong>Identify the fast movers.</strong> They&#8217;re easy to spot. They post AI things in Slack. They corner you after presentations to show you their latest prototype. They ask whether legal will finally approve a tool they&#8217;ve been quietly using. Make a list. Aim for 4 to 8 names at the team scale, 8 to 15 across functions at the company scale.</p></li><li><p><strong>Get manager buy-in for the time.</strong> Walk to each name&#8217;s manager. Explain the network in two sentences (a small group of motivated people who&#8217;ll experiment, share, and lift the rest of the team) and the time commitment (one day per two weeks, if the contributor has the capacity that sprint). Most managers say yes once the time is bounded.</p></li><li><p><strong>Run a kickoff workshop.</strong> 90 minutes. Four blocks: vision (where is the company on AI maturity, where does it want to be), the three innovation principles (so leadership doesn&#8217;t measure the network only on quick wins), accountabilities (what contributors are signing up for), and an open floor for concerns. The output is alignment, not a deliverable.</p></li><li><p><strong>Brainstorm the first backlog.</strong> Within a week of the kickoff, run a 60-minute session where each contributor lists the friction points they hit in their work. Cluster into 4 to 6 candidate themes. Pick the first sprint&#8217;s items and put them in your existing tooling: Jira, Linear, Notion, whatever the company already uses. <strong>Do not introduce a new tool for this.</strong></p></li><li><p><strong>Run the first sprint, and prime the pump if you have to.</strong> The first demo is the most fragile moment. If two contributors couldn&#8217;t finish, present yourself. Or pull in a piece of pre-existing work and frame it explicitly: &#8221;this is something I built before the network started. I&#8217;m using it today to model what a demo looks like.&#8221; <strong>The goal in cycle one isn&#8217;t volume. It&#8217;s establishing the rhythm.</strong> Once cycle two arrives, real demos start happening and you don&#8217;t have to push anymore.</p></li><li><p><strong>Switch from parallel to themed when the signal appears.</strong> The first cycles are deliberately scattered. Let people pick what they&#8217;re motivated by. Once more than half the demos pull from the same problem area without anyone asking, the rhythm is real and you can switch to themed cycles: one pain point per cycle, all experiments target it. In practice this lands around sprint 4 to sprint 6. The signal is the trigger, not the calendar. <strong>This is the move that turns a fun network into something the rest of the company adopts.</strong></p></li></ol><p>Six moves. Twelve weeks. The network either has a rhythm by then or you&#8217;ve learned what was missing.</p><div><hr></div><h2>Start here</h2><p>Innovation portfolios. Agile rhythm. Pair work. None of these principles are new. <strong>What&#8217;s new is the cost of trying.</strong> A sponsor, a backlog, four rituals, a calendar slot for pair-doing. That&#8217;s the kit.</p><p>Pick a sponsor. Pick four people. Pick a sprint length. <strong>Start.</strong></p><p>In a few months, look at your teams again. Either the gap closed, or you&#8217;ll know exactly which condition stopped holding.</p>]]></content:encoded></item><item><title><![CDATA[How to turn work into cinematic videos with NotebookLM]]></title><description><![CDATA[Open NotebookLM. Add one focused source. Pick the cinematic format. Write instructions with a bold central metaphor. Generate and wait 30 minutes.]]></description><link>https://www.theaithinker.com/p/how-to-turn-work-into-cinematic-videos</link><guid isPermaLink="false">https://www.theaithinker.com/p/how-to-turn-work-into-cinematic-videos</guid><dc:creator><![CDATA[Adam Faik]]></dc:creator><pubDate>Mon, 04 May 2026 11:02:59 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/cbf4fb2d-5af7-4b57-8e58-de65a0473728_1024x731.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>NotebookLM keeps quietly dropping new things. A month ago I opened it for something else and spotted <strong>a new video format hiding in the studio panel: cinematic</strong>. I generated one with zero instructions. The result was unexpectedly polished.</p><p>A few weeks later I came back with proper time. Wrote instructions. Specified duration, format, on-screen elements. <strong>The output mostly ignored them.</strong> Tried again. Same thing. I was a few minutes from dropping this article.</p><p>Then <strong>NotebookLM surprised me with this one.</strong> Take a look.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;2ccea835-8176-4df0-b350-4bba306a9efe&quot;,&quot;duration&quot;:null}"></div><p>Honestly, not bad, right? Style. The Netflix logo woven into the staging. Animated transitions, generated charts, stock-footage cuts that fit the narration. <strong>It felt like someone had art-directed it.</strong></p><p>That&#8217;s what&#8217;s possible when the brief lands. Most briefs don&#8217;t. <strong>One in ten does.</strong></p><blockquote><p>Cinematic is a creative tool, not a prompt-and-go tool. <strong>Write it like a film brief</strong>, not like a chat message.</p></blockquote><p>Here&#8217;s the rough flow that produces a generation worth keeping.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jbAl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc62bc549-7d0a-46f8-b8d0-76b5fd139c40_2752x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jbAl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc62bc549-7d0a-46f8-b8d0-76b5fd139c40_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!jbAl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc62bc549-7d0a-46f8-b8d0-76b5fd139c40_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!jbAl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc62bc549-7d0a-46f8-b8d0-76b5fd139c40_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!jbAl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc62bc549-7d0a-46f8-b8d0-76b5fd139c40_2752x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jbAl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc62bc549-7d0a-46f8-b8d0-76b5fd139c40_2752x1536.png" width="1456" height="813" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c62bc549-7d0a-46f8-b8d0-76b5fd139c40_2752x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:813,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2952362,&quot;alt&quot;:&quot;A hand-drawn five-step infographic showing the linear flow from picking a focused source, through opening Cinematic, writing bold instructions, generating, and iterating on the result.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/196106672?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc62bc549-7d0a-46f8-b8d0-76b5fd139c40_2752x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A hand-drawn five-step infographic showing the linear flow from picking a focused source, through opening Cinematic, writing bold instructions, generating, and iterating on the result." title="A hand-drawn five-step infographic showing the linear flow from picking a focused source, through opening Cinematic, writing bold instructions, generating, and iterating on the result." srcset="https://substackcdn.com/image/fetch/$s_!jbAl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc62bc549-7d0a-46f8-b8d0-76b5fd139c40_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!jbAl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc62bc549-7d0a-46f8-b8d0-76b5fd139c40_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!jbAl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc62bc549-7d0a-46f8-b8d0-76b5fd139c40_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!jbAl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc62bc549-7d0a-46f8-b8d0-76b5fd139c40_2752x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>Three sections from here to your own working video:</p><ol><li><p><strong>Learn from my experiments:</strong> what I tested and where it broke.</p></li><li><p><strong>Make your first cinematic video:</strong> the click-by-click and the five patterns that worked.</p></li><li><p><strong>Apply it to real work:</strong> five product-work use cases plus when to play these in a meeting.</p></li></ol><p>Press play.</p><div><hr></div><h2>Learn from my experiments</h2><h3>The setup: one PRD, +10 cinematic videos</h3><p>I didn&#8217;t go far for the topic. I&#8217;m reusing the same fictional Netflix feature I built around in my previous post on visual storytelling:</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;0bc6c294-1d06-47c2-8b0e-b49821fe686f&quot;,&quot;caption&quot;:&quot;Short on time? I get it. Here is the entire step-by-step guide summarized in a single visual:&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;How to elevate visual storytelling with Nano Banana Pro&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:4824458,&quot;name&quot;:&quot;Adam Faik&quot;,&quot;bio&quot;:&quot;Helping product managers become AI-native builders. Join for weekly, step-by-step AI playbooks and real-world projects you can apply to your work.&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/41de16f9-51a4-4763-ba7d-dfb35429b196_1585x1585.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-02-09T12:02:45.556Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4b5f9ccf-7eb9-4aa6-9ff2-175c909c0e0b_1024x731.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://www.theaithinker.com/p/how-to-elevate-visual-storytelling&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:187191446,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:3,&quot;comment_count&quot;:0,&quot;publication_id&quot;:6132538,&quot;publication_name&quot;:&quot;The AI Thinker&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!s5nF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37afd3e1-3442-4517-94cb-068668baf9ef_1024x1024.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>The pretend feature is &#8220;random shuffle.&#8221; One button on the Netflix home screen that picks a comfort show and starts playing it instantly, so you don&#8217;t lose another twenty minutes scrolling at 11pm. I wrote a PRD for it. Last time, I turned that PRD into a visual library using Nano Banana Pro and a voice note. This time: <strong>same PRD, same notebook, generating videos instead of static images.</strong></p><p>NotebookLM offers three video formats. The differences matter.</p><ul><li><p><strong>Cinematic (New!):</strong> A stitched composition of animated clips, generated images, stock-footage cuts, and on-screen graphs, with a visual style that changes per generation. The video at the top is one.</p></li><li><p><strong>Explainer:</strong> A structured, comprehensive overview that connects the dots within your sources. Single voice, single visual style, more linear.</p></li><li><p><strong>Brief:</strong> A bite-sized version of the &#8220;explainer&#8221;. Same single voice and recognizable style, just shorter. Useful when you want a quick summary, not a vibe.</p></li></ul><p>To feel the difference, here&#8217;s a &#8220;brief &#8220;generation from the same workspace.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;a4c6e999-8ed0-49a2-b4c4-322494fc14ff&quot;,&quot;duration&quot;:null}"></div><p>Cinematic is the one I came to test. <strong>Same source, very different output per generation.</strong></p><p>I generated more than ten cinematic videos with different instructions, varying the framing, the audience, and the visual style each time. The list piled up in the studio panel.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rTvq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b5c79be-3f75-4d29-bd30-dc0b6783a431_3248x1956.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rTvq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b5c79be-3f75-4d29-bd30-dc0b6783a431_3248x1956.png 424w, https://substackcdn.com/image/fetch/$s_!rTvq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b5c79be-3f75-4d29-bd30-dc0b6783a431_3248x1956.png 848w, https://substackcdn.com/image/fetch/$s_!rTvq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b5c79be-3f75-4d29-bd30-dc0b6783a431_3248x1956.png 1272w, https://substackcdn.com/image/fetch/$s_!rTvq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b5c79be-3f75-4d29-bd30-dc0b6783a431_3248x1956.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rTvq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b5c79be-3f75-4d29-bd30-dc0b6783a431_3248x1956.png" width="1456" height="877" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5b5c79be-3f75-4d29-bd30-dc0b6783a431_3248x1956.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:877,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1166701,&quot;alt&quot;:&quot;The right-hand Studio panel of NotebookLM showing a list of generated Cinematic videos, with one in progress at the top.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/196106672?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b5c79be-3f75-4d29-bd30-dc0b6783a431_3248x1956.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The right-hand Studio panel of NotebookLM showing a list of generated Cinematic videos, with one in progress at the top." title="The right-hand Studio panel of NotebookLM showing a list of generated Cinematic videos, with one in progress at the top." srcset="https://substackcdn.com/image/fetch/$s_!rTvq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b5c79be-3f75-4d29-bd30-dc0b6783a431_3248x1956.png 424w, https://substackcdn.com/image/fetch/$s_!rTvq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b5c79be-3f75-4d29-bd30-dc0b6783a431_3248x1956.png 848w, https://substackcdn.com/image/fetch/$s_!rTvq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b5c79be-3f75-4d29-bd30-dc0b6783a431_3248x1956.png 1272w, https://substackcdn.com/image/fetch/$s_!rTvq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b5c79be-3f75-4d29-bd30-dc0b6783a431_3248x1956.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The queue of generated videos in the right-hand Studio panel.</figcaption></figure></div><p>To see every prompt I tested, <a href="https://notebooklm.google.com/notebook/c134df52-1f2d-4deb-b5cd-bfb653c9c231">open the workspace</a>, click any video, hit the &#8220;&#8230;&#8221; menu, and pick &#8220;show prompt&#8221;. The full instructions for that generation appear on the right.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://notebooklm.google.com/notebook/c134df52-1f2d-4deb-b5cd-bfb653c9c231&quot;,&quot;text&quot;:&quot;Open NotebookLM&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://notebooklm.google.com/notebook/c134df52-1f2d-4deb-b5cd-bfb653c9c231"><span>Open NotebookLM</span></a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RI-x!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8d05f3e-ecbb-41b1-a20d-94890c175ea4_3248x1956.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RI-x!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8d05f3e-ecbb-41b1-a20d-94890c175ea4_3248x1956.png 424w, https://substackcdn.com/image/fetch/$s_!RI-x!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8d05f3e-ecbb-41b1-a20d-94890c175ea4_3248x1956.png 848w, https://substackcdn.com/image/fetch/$s_!RI-x!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8d05f3e-ecbb-41b1-a20d-94890c175ea4_3248x1956.png 1272w, https://substackcdn.com/image/fetch/$s_!RI-x!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8d05f3e-ecbb-41b1-a20d-94890c175ea4_3248x1956.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RI-x!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8d05f3e-ecbb-41b1-a20d-94890c175ea4_3248x1956.png" width="1456" height="877" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e8d05f3e-ecbb-41b1-a20d-94890c175ea4_3248x1956.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:877,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1870950,&quot;alt&quot;:&quot;A NotebookLM video opened with the Custom Prompt panel revealed on the right side, displaying the full instructions used to generate the video.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/196106672?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8d05f3e-ecbb-41b1-a20d-94890c175ea4_3248x1956.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A NotebookLM video opened with the Custom Prompt panel revealed on the right side, displaying the full instructions used to generate the video." title="A NotebookLM video opened with the Custom Prompt panel revealed on the right side, displaying the full instructions used to generate the video." srcset="https://substackcdn.com/image/fetch/$s_!RI-x!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8d05f3e-ecbb-41b1-a20d-94890c175ea4_3248x1956.png 424w, https://substackcdn.com/image/fetch/$s_!RI-x!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8d05f3e-ecbb-41b1-a20d-94890c175ea4_3248x1956.png 848w, https://substackcdn.com/image/fetch/$s_!RI-x!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8d05f3e-ecbb-41b1-a20d-94890c175ea4_3248x1956.png 1272w, https://substackcdn.com/image/fetch/$s_!RI-x!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8d05f3e-ecbb-41b1-a20d-94890c175ea4_3248x1956.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Click the three-dot menu, pick &#8220;show prompt,&#8221; and the full instructions appear on the right.</figcaption></figure></div><p>Honest summary of the batch: <strong>V04 is my favorite</strong>, the one at the top. V05 is also nice, the kind you&#8217;d ship if V04 didn&#8217;t exist. The other eight are okay. Animated graphs, on-screen diagrams, transitions that work. Maybe I&#8217;m being too demanding, but they&#8217;re not at the same level. Not bad videos. Just okay ones.</p><p>You&#8217;ll find the full instructions behind the video further down, plus a template to inspire your own.</p><h3>The honest fight: three constraints to know</h3><p>I want to be honest about <strong>three constraints I hit.</strong> They set the rules of the game.</p><ol><li><p><strong>Instruction-following: partial.</strong> Specify duration, on-screen elements, narrator register, and the system honors maybe half of what you asked for. Sometimes less. <strong>You write a brief; the model interprets.</strong> The output is a mix of what you said and what the model decided to do anyway.</p></li><li><p><strong>The quota: punishing on Pro.</strong> Two cinematic generations per day on AI Pro. Twenty on Ultra. You&#8217;re probably on Pro. Two shots before tomorrow. <strong>A bad brief costs you the whole day.</strong></p></li><li><p><strong>No feedback loop, at all.</strong> You can&#8217;t say &#8221;redo this but tighten the third beat.&#8221; <strong>Each generation is one-shot.</strong> If you don&#8217;t love it, you scrap it and start over with a new full brief.</p></li></ol><p>That&#8217;s what made V04 feel lucky. None of these are reasons not to try cinematic, <strong>they&#8217;re reasons the method has to be deliberate</strong>.</p><h2>Make your first cinematic video</h2><h3>Set up your first generation</h3><p><strong>The clicks are the easy part.</strong> Five steps to a generation in flight.</p><ol><li><p><strong>Create a new notebook.</strong> Go to <a href="https://notebooklm.google.com">notebooklm.google.com</a>. Click &#8220;New notebook&#8221;.</p></li><li><p><strong>Add one focused source.</strong> One. The reflex is to dump every PDF, slide deck, and meeting transcript into the notebook. <strong>More context &#8800; better output.</strong> A PRD. A brief. A one-page strategy doc. A research summary. Pick one. If you really need several, merge them into a single document and read every line: keep only what&#8217;s useful, still valid, and meant to be there.</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1IpD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd84d2449-379f-4bf2-baa2-9b4d28830732_3248x1956.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1IpD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd84d2449-379f-4bf2-baa2-9b4d28830732_3248x1956.png 424w, https://substackcdn.com/image/fetch/$s_!1IpD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd84d2449-379f-4bf2-baa2-9b4d28830732_3248x1956.png 848w, https://substackcdn.com/image/fetch/$s_!1IpD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd84d2449-379f-4bf2-baa2-9b4d28830732_3248x1956.png 1272w, https://substackcdn.com/image/fetch/$s_!1IpD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd84d2449-379f-4bf2-baa2-9b4d28830732_3248x1956.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1IpD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd84d2449-379f-4bf2-baa2-9b4d28830732_3248x1956.png" width="1456" height="877" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d84d2449-379f-4bf2-baa2-9b4d28830732_3248x1956.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:877,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1116916,&quot;alt&quot;:&quot;NotebookLM workspace showing one PRD document loaded as the source on the left side, and the Video Overview tile selected in the Studio panel on the right.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/196106672?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd84d2449-379f-4bf2-baa2-9b4d28830732_3248x1956.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="NotebookLM workspace showing one PRD document loaded as the source on the left side, and the Video Overview tile selected in the Studio panel on the right." title="NotebookLM workspace showing one PRD document loaded as the source on the left side, and the Video Overview tile selected in the Studio panel on the right." srcset="https://substackcdn.com/image/fetch/$s_!1IpD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd84d2449-379f-4bf2-baa2-9b4d28830732_3248x1956.png 424w, https://substackcdn.com/image/fetch/$s_!1IpD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd84d2449-379f-4bf2-baa2-9b4d28830732_3248x1956.png 848w, https://substackcdn.com/image/fetch/$s_!1IpD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd84d2449-379f-4bf2-baa2-9b4d28830732_3248x1956.png 1272w, https://substackcdn.com/image/fetch/$s_!1IpD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd84d2449-379f-4bf2-baa2-9b4d28830732_3248x1956.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The Netflix workspace with the PRD as the only source on the left, and Video Overview highlighted in the Studio panel on the right.</figcaption></figure></div><ol start="3"><li><p><strong>Open Cinematic.</strong> Studio panel &#8594; Video overview tile &#8594;small arrow.  Three formats appear. Pick cinematic.</p></li><li><p><strong>Write your instructions.</strong> The field is labeled, exact wording, &#8221;How would you like the video to be customized?&#8221; Style, structure, central metaphor, narrator register, brand hooks, visual style cues. Everything goes here.</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oGPN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0afaa9b-dde1-4d05-b110-87dfd92c94c9_3248x1956.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oGPN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0afaa9b-dde1-4d05-b110-87dfd92c94c9_3248x1956.png 424w, https://substackcdn.com/image/fetch/$s_!oGPN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0afaa9b-dde1-4d05-b110-87dfd92c94c9_3248x1956.png 848w, https://substackcdn.com/image/fetch/$s_!oGPN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0afaa9b-dde1-4d05-b110-87dfd92c94c9_3248x1956.png 1272w, https://substackcdn.com/image/fetch/$s_!oGPN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0afaa9b-dde1-4d05-b110-87dfd92c94c9_3248x1956.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oGPN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0afaa9b-dde1-4d05-b110-87dfd92c94c9_3248x1956.png" width="1456" height="877" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d0afaa9b-dde1-4d05-b110-87dfd92c94c9_3248x1956.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:877,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1117765,&quot;alt&quot;:&quot;NotebookLM&#8217;s Customize Video Overview modal with the Cinematic format selected and a long instructions block visible in the customization field.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/196106672?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0afaa9b-dde1-4d05-b110-87dfd92c94c9_3248x1956.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="NotebookLM&#8217;s Customize Video Overview modal with the Cinematic format selected and a long instructions block visible in the customization field." title="NotebookLM&#8217;s Customize Video Overview modal with the Cinematic format selected and a long instructions block visible in the customization field." srcset="https://substackcdn.com/image/fetch/$s_!oGPN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0afaa9b-dde1-4d05-b110-87dfd92c94c9_3248x1956.png 424w, https://substackcdn.com/image/fetch/$s_!oGPN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0afaa9b-dde1-4d05-b110-87dfd92c94c9_3248x1956.png 848w, https://substackcdn.com/image/fetch/$s_!oGPN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0afaa9b-dde1-4d05-b110-87dfd92c94c9_3248x1956.png 1272w, https://substackcdn.com/image/fetch/$s_!oGPN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0afaa9b-dde1-4d05-b110-87dfd92c94c9_3248x1956.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The customization modal: pick Cinematic, then write everything into the single instructions field.</figcaption></figure></div><ol start="5"><li><p><strong>Generate. Wait.</strong> Fifteen to thirty minutes. NotebookLM doesn&#8217;t block the tab. The mobile app sends a push when it&#8217;s ready, worth installing for that reason alone.</p></li></ol><p>The clicks are easy. The instructions are the work.</p><h3>Write instructions that land</h3><p><strong>Five patterns showed up across V04 and V05.</strong> Here they are, with one example each, pulled from the briefs that produced both videos.</p><ol><li><p><strong>First-person setup.</strong> Tell the system who you are, who you&#8217;re presenting to, and the feeling you want in the room. Specific, not abstract.</p></li></ol><blockquote><p>I&#8217;m the PM who wrote the random shuffle PRD. I&#8217;m walking the engineering team through the wireframes at sprint planning, and I want it memorable, not sleepy.</p></blockquote><ol start="2"><li><p><strong>One bold genre or format metaphor.</strong> Game show. Sports broadcast. Movie trailer. Late-night talk show. The metaphor gives the model permission to leave its default explainer voice and produce something with actual style.</p></li></ol><blockquote><p>Pitch the wireframes as a 1980s prime-time TV game show called &#8220;spin to unwind.&#8221;</p></blockquote><ol start="3"><li><p><strong>A named central scene with brand woven in.</strong> The brand belongs in the first paragraph, not as an afterthought.</p></li></ol><blockquote><p>Behind them, a velvet-curtain wall is studded with Netflix show tiles. Friends, Seinfeld, Brooklyn 99, Breaking Bad. Each glowing under studio spotlights.</p></blockquote><ol start="4"><li><p><strong>Segmented beats with PRD-element labels.</strong> This is the trick. Each beat of the metaphor gets a name and a label pointing at its source-document equivalent in parentheses. The model uses both.</p></li></ol><blockquote><p>The buzzer (a.k.a. the random shuffle button): A gigantic red buzzer sits center stage. Dramatic close-up. The audience gasps.</p></blockquote><ol start="5"><li><p><strong>A tone directive, a sign-off, a visual style paragraph.</strong> Tone translates content into the metaphor&#8217;s currency. Sign-off lands the metaphor. Visual style is 8 to 12 comma-separated phrases on palette, lighting, typography, voiceover, and sound, appended to the same block.</p></li></ol><blockquote><p>Tone: Treat every wireframe element like a game-show set piece.</p><p>Sign-off: Press the button. Win the night.</p><p>Visual style: 1980s American prime-time game show, neon-accented set, chunky Las Vegas-style typography, studio spotlights, velvet curtains, lower-third prize graphics in flashing yellow...</p></blockquote><p><strong>The reusable template.</strong> Strip out the Netflix specifics and you have a fill-in-the-blanks shape that works for any source artifact and any audience.</p><blockquote><p>I&#8217;m the [role] who [authored the source artifact]. I&#8217;m presenting [the artifact] to [audience] at [occasion], and I want the room to feel [the desired register].</p><p>Deliver it as [a bold genre or format metaphor]. [Two sentences naming the central setting, with at least one brand visual hook woven in.]</p><p>The beats:</p><p>- [Beat 1] (a.k.a. [source element]): [vivid scene + how the narrator frames it].</p><p>- [Beat 2] (a.k.a. [source element]): [same shape].</p><p>- [Beat 3] (a.k.a. [source element]): [same shape].</p><p>- [Beat 4] (a.k.a. [source element]): [same shape].</p><p>Sign-off: [one closing line that lands the metaphor].</p><p>Tone: [three-word descriptor]. No irony. Treat [the source content] like [the metaphor&#8217;s currency].</p><p>Visual style: [8 to 12 comma-separated phrases on palette, lighting, typography, graphics, voiceover, sound, with 1 to 2 brand-specific hooks].</p></blockquote><p><strong>The patterns in action: V04 in full.</strong> Here&#8217;s the actual instructions block that produced the video at the top. Read it as a showcase of how the five patterns play out together, not as something to copy. The template above is your starting point.</p><blockquote><p>You are the product manager who wrote the PRD for Netflix&#8217;s random shuffle feature. You&#8217;re walking the engineering and design teams through the low-fidelity wireframes so the whole room sees the interaction flow before sprint planning, and you want it memorable, not sleepy.</p><p>Pitch the wireframes as a 1980s prime-time TV game show called &#8220;spin to unwind.&#8221; The host wears a sparkly navy suit, smiles too hard, and narrates every interaction like a big reveal. Tired Tom is tonight&#8217;s lucky contestant.</p><p>- Segment 1: The wheel (a.k.a. the home screen). The host stands in front of a giant spinning wheel made of Netflix tiles. &#8220;Behind each of these tiles, Tom, is another agonizing decision. But we&#8217;ve got a better way.&#8221;</p><p>- Segment 2: The warm-up round (a.k.a. onboarding). The host walks Tom through three quick onboarding taps with studio applause after each one. &#8220;Now choose your three favorite sitcoms, Tom. Lock &#8216;em in!&#8221;</p><p>- Segment 3: The buzzer (a.k.a. the random shuffle button). A gigantic red buzzer sits center stage. Dramatic close-up. The audience gasps as Tom hovers. Slam cut when he presses. Lights go wild.</p><p>- Segment 4: The prize (a.k.a. the playback screen). The Friends opening credits begin. Confetti falls. Tom lifts a trophy shaped like a remote control.</p><p>The host narrates wireframe elements as game-show set pieces, not as UX components. Each step gets a studio sting, a lower-third prize-value graphic, and at least one audience reaction shot. Around 2 minutes total.</p><p>Visual style: 1980s American prime-time game show, neon-accented set, chunky Las Vegas-style block typography, studio spotlights, enthusiastic announcer voiceover, orchestral stings between segments, lower-third prize graphics in flashing yellow, velvet curtains, audience reaction shots.</p></blockquote><p>This worked once. Plenty of close variants didn&#8217;t. <strong>The five patterns above are your best shot at finding your own working version.</strong></p><h3>Iterate on what almost worked</h3><p><strong>No native feedback loop in NotebookLM.</strong> You can&#8217;t comment on a generation and ask for a tweak the way you would in chat. Each Cinematic generation is one-shot. Default move: scrap it and start over with a new full brief.</p><p>There&#8217;s a workaround I haven&#8217;t tested on cinematic yet. I think it&#8217;s the path forward when you land a near-perfect generation.</p><p><strong>Download the video. Add it back to the notebook as a source.</strong> NotebookLM accepts video files. Once it&#8217;s in there, launch a new generation that starts from that source video with small adjustments. The kind of feedback you&#8217;d give:</p><ul><li><p>Change one specific sequence and keep the others as they are.</p></li><li><p>Swap a specific line of narration for new wording.</p></li><li><p>Restructure the order of the beats.</p></li><li><p>Adjust the visual style or palette of one segment.</p></li></ul><p>I haven&#8217;t run this on cinematic, quota burned. I tested the same trick on slides for the slides post a few months ago, and it worked surprisingly well:</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;ad090496-b35f-4fdf-8b83-31cf6d5af7d6&quot;,&quot;caption&quot;:&quot;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;How to create top-tier slides with NotebookLM&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:4824458,&quot;name&quot;:&quot;Adam Faik&quot;,&quot;bio&quot;:&quot;Helping product managers become AI-native builders. Join for weekly, step-by-step AI playbooks and real-world projects you can apply to your work.&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/41de16f9-51a4-4763-ba7d-dfb35429b196_1585x1585.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-12-22T12:03:10.622Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/71b97be0-3c4e-41a6-8743-32e4001419c3_1024x731.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://www.theaithinker.com/p/how-to-create-top-tier-slides-with&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:182238903,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:2,&quot;comment_count&quot;:0,&quot;publication_id&quot;:6132538,&quot;publication_name&quot;:&quot;The AI Thinker&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!s5nF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37afd3e1-3442-4517-94cb-068668baf9ef_1024x1024.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p><strong>Same idea:</strong> feed the system its own previous output as a starting point, then steer.</p><p>It&#8217;s not officially documented. It emerged from how NotebookLM treats video as a valid source format. <strong>If you try it on cinematic before I do, tell me what you find.</strong></p><h2>Apply it to real work</h2><h3>Pick from five use cases</h3><p>With only two cinematic generations per day on AI Pro, the question is <strong>which moments at work are worth one of your shots</strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vXWt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a198d0f-2e41-4bd5-bba5-89bb5c057f37_2752x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vXWt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a198d0f-2e41-4bd5-bba5-89bb5c057f37_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!vXWt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a198d0f-2e41-4bd5-bba5-89bb5c057f37_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!vXWt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a198d0f-2e41-4bd5-bba5-89bb5c057f37_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!vXWt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a198d0f-2e41-4bd5-bba5-89bb5c057f37_2752x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vXWt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a198d0f-2e41-4bd5-bba5-89bb5c057f37_2752x1536.png" width="1456" height="813" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5a198d0f-2e41-4bd5-bba5-89bb5c057f37_2752x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:813,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3821495,&quot;alt&quot;:&quot;A vertical list of five cards showing product-work use cases for a cinematic video: pitch the strategic case to leadership, walk the dev team through the wireframes, brief marketing on the campaign positioning, kick off cross-functional research with design, and open the all-hands with the long-term vision.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/196106672?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a198d0f-2e41-4bd5-bba5-89bb5c057f37_2752x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A vertical list of five cards showing product-work use cases for a cinematic video: pitch the strategic case to leadership, walk the dev team through the wireframes, brief marketing on the campaign positioning, kick off cross-functional research with design, and open the all-hands with the long-term vision." title="A vertical list of five cards showing product-work use cases for a cinematic video: pitch the strategic case to leadership, walk the dev team through the wireframes, brief marketing on the campaign positioning, kick off cross-functional research with design, and open the all-hands with the long-term vision." srcset="https://substackcdn.com/image/fetch/$s_!vXWt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a198d0f-2e41-4bd5-bba5-89bb5c057f37_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!vXWt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a198d0f-2e41-4bd5-bba5-89bb5c057f37_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!vXWt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a198d0f-2e41-4bd5-bba5-89bb5c057f37_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!vXWt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a198d0f-2e41-4bd5-bba5-89bb5c057f37_2752x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Five places this format genuinely pays off. Each comes with a one-line snippet to spark your own brief.</p><ol><li><p><strong>Pitch the strategic case to leadership.</strong> Quarterly reviews, board prep, exec narrative. Makes the bet feel like a story, not a slide deck.</p></li></ol><blockquote><p>Deliver it as an ESPN SportsCenter broadcast. The anchor calls activation, watch-through, and retention like championship stats.</p></blockquote><ol start="2"><li><p><strong>Walk the dev team through the wireframes.</strong> Sprint planning, design reviews, kickoff sessions. Forces the room to pay attention to a UI flow they&#8217;d otherwise zone out on.</p></li></ol><blockquote><p>Pitch the wireframes as a 1980s prime-time TV game show called &#8220;spin to unwind.&#8221; A host in a sparkly navy suit narrates every interaction like a big reveal.</p></blockquote><ol start="3"><li><p><strong>Brief marketing on the campaign positioning.</strong> Before anyone writes a line of copy. Marketing writes copy after feeling the trailer, not before.</p></li></ol><blockquote><p>Deliver it as a summer-blockbuster trailer drop. A booming voiceover, a hundred-foot Netflix marquee, lens flares across every brand reveal.</p></blockquote><ol start="4"><li><p><strong>Kick off cross-functional research with design.</strong> Surface the user pain before the team designs around it. Each viewer persona becomes a guest with a story.</p></li></ol><blockquote><p>Pitch it as a late-night talk show. Three guests walk through the curtain, each tells a 20-second story of last night&#8217;s viewing chaos.</p></blockquote><ol start="5"><li><p><strong>Open the all-hands with the long-term vision.</strong> Town hall, off-site, Product Week. Makes the long-term bet feel inevitable, not abstract.</p></li></ol><blockquote><p>Render it as a prestige-drama teaser. Somewhere between Black Mirror and Stranger Things in tone. Serious. Cinematic. Slightly melodramatic.</p></blockquote><h3>Use it before the meeting, not in it</h3><p><strong>These videos don&#8217;t belong inside most meetings.</strong> A working meeting is an exchange between people. A generated video is a broadcast. Stopping a discussion to play two to four minutes of a robotic AI voice saying exactly what the person could have said is awkward. The two don&#8217;t mix.</p><p><strong>The exception is broadcast moments:</strong> all-hands, off-site keynotes, product week openers. The room has already accepted that one person is going to talk at them. A 2-minute cinematic video as the cold open lands hard. That&#8217;s exactly why use case 5 above is the one meeting where I&#8217;d press play in the room.</p><p>For every other kind of meeting, these videos earn their place <strong>before the meeting starts.</strong> Drop the link in the calendar invite. Send it the morning of, in a Slack message, or as the first item in a pre-read packet.</p><p>The audience arrives with the picture in their heads, with formed opinions, with sharper questions. <strong>The meeting becomes the discussion the picture provoked, not the picture itself.</strong></p><p>That&#8217;s where this format unlocks something a static deck doesn&#8217;t: <strong>a shared visual frame</strong> the room arrives with, instead of one you spend the meeting building from scratch.</p><h2>Try it and tell me what landed</h2><p><strong>One in ten generations produced something I&#8217;d share with a team.</strong> The other nine taught me what a working brief looks like.</p><p>The patterns from V04 and V05 are the closest thing I have to a recipe. Recipes for creative tools are aspirational, not deterministic. Plenty of close variants of the same brief produced forgettable output.</p><p>NotebookLM recently added a <strong>per-slide feedback feature for slides.</strong> You comment on a single slide, and the system regenerates that slide with the comment applied. If that pattern lands on cinematic, the workaround above becomes unnecessary, and real iteration becomes possible inside the tool. Worth checking back in a few months.</p><p>In the meantime: try it on something you&#8217;d otherwise put in a deck. <strong>Tell me what landed.</strong> If you crack a different pattern that works, send the instructions, I&#8217;ll share it in a follow-up post.</p>]]></content:encoded></item><item><title><![CDATA[How to use AI to actually learn to code]]></title><description><![CDATA[Open Claude.ai or any other LLM chat. Paste a Kaggle dataset and ask it to be your tutor. Follow the plan one phase at a time. Get a second opinion at the end to catch what you missed.]]></description><link>https://www.theaithinker.com/p/how-to-use-ai-to-actually-learn-to</link><guid isPermaLink="false">https://www.theaithinker.com/p/how-to-use-ai-to-actually-learn-to</guid><dc:creator><![CDATA[Adam Faik]]></dc:creator><pubDate>Mon, 27 Apr 2026 11:00:55 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/8dbcfe11-74af-461e-9469-fc815d450cd1_1024x731.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A few months ago, I was preparing a user research session with Gemini. It generated a full set of interview questions with complete confidence. Most of them were fine, solid junior-level work, the kind a new PM might hand in on their first session. <strong>But a few were terrible.</strong> Asking users what they want from the product. Asking them to predict the future. Classic discovery-principle violations I&#8217;d spent years learning to spot.</p><p>I caught the bad ones instantly. The AI didn&#8217;t flag them as risky. It produced them with the same tone as the good ones. <strong>The point: this is competent junior output that still needs an expert in the room.</strong> What happens to someone who isn&#8217;t?</p><p>The same thing happens with code, only worse. The output looks competent. The notebook runs. The accuracy number sounds plausible. <strong>And you ship a model that&#8217;s been cheating on the test the whole time, because you didn&#8217;t have the vocabulary to spot it.</strong> It&#8217;s a pattern I&#8217;ve seen repeatedly, and the project we&#8217;re about to walk through illustrates it better than any abstract example could.</p><p><strong>AI amplifies what you already know.</strong> Your expertise, and your gaps. That&#8217;s why learning still matters even when the AI writes the code, and it&#8217;s also why learning has never been easier, because <strong>the same AI that exposes the gaps can be the patient tutor that closes them.</strong></p><p>Five sections to get from there to a working model on GitHub:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KLBn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45096f3c-d135-4692-b646-90179a5682bd_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KLBn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45096f3c-d135-4692-b646-90179a5682bd_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!KLBn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45096f3c-d135-4692-b646-90179a5682bd_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!KLBn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45096f3c-d135-4692-b646-90179a5682bd_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!KLBn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45096f3c-d135-4692-b646-90179a5682bd_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KLBn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45096f3c-d135-4692-b646-90179a5682bd_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/45096f3c-d135-4692-b646-90179a5682bd_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3375484,&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.theaithinker.com/i/195446977?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45096f3c-d135-4692-b646-90179a5682bd_2816x1536.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_!KLBn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45096f3c-d135-4692-b646-90179a5682bd_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!KLBn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45096f3c-d135-4692-b646-90179a5682bd_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!KLBn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45096f3c-d135-4692-b646-90179a5682bd_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!KLBn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45096f3c-d135-4692-b646-90179a5682bd_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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><ul><li><p>Why I changed my mind about PMs and code</p></li><li><p>The build, narrated from the inside: from a Kaggle dataset to a working model, with one classic ML mistake caught along the way</p></li><li><p>The best practices for using an LLM as your tutor, plus what it actually feels like</p></li><li><p>What AI changes about learning, ten years apart, same author, different experience</p></li><li><p>Your first project, this evening</p></li></ul><p>Let&#8217;s start with what I believed a year ago, and how the year proved me wrong.</p><div><hr></div><h2>Why this matters</h2><p>Two objections come up every time I talk about this with another PM. They were my objections too, word for word, until a year ago.</p><ul><li><p><strong>Objection 1.</strong> PMs work with developers by design. Discovery, specs, handoff. No one expects a PM to write production code. That&#8217;s the job description.</p></li><li><p><strong>Objection 2.</strong> AI coding tools exist. A few prompts and you have a working prototype. So why spend time learning a skill the machine already does?</p></li></ul><p><strong>Short answer to both, before the long version:</strong></p><ul><li><p>The job description is shifting toward <strong>people who can build</strong>, not just specify.</p></li><li><p><strong>AI amplifies what you already know</strong>, including the gaps.</p></li></ul><p>The PM who learns to code becomes more autonomous, not redundant. The PM who outsources to AI without understanding what it produces becomes more dependent, not less. I held both objections anyway until a year ago. The rest of this section is how the year answered them.</p><h3>The conversion: what I thought, and what actually changed</h3><p>I&#8217;ve been working with AI for ten years, well before LLMs. The unglamorous kind: fraud detection in the public sector, classical machine learning, the kind nobody mentioned at dinner parties. <strong>When LLMs arrived and suddenly everyone was an &#8220;AI expert&#8221; from one ChatGPT prompt, something felt off.</strong> I needed to prove something more durable than prompt fluency.</p><p>I enrolled in a <a href="https://formations.pantheonsorbonne.fr/fr/catalogue-des-formations/diplome-d-universite-DU/diplome-d-universite-KBVXM363/diplome-d-universite-sorbonne-data-analytics-KPMK3V7Z.html">one-year evening program at the Sorbonne</a>. Real projects, actual rigor. My mindset going in: give the minimum, collect the diploma, move on. <strong>I told myself product people don&#8217;t need to code. I believed that.</strong></p><p>Something strange happened. The code wasn&#8217;t the surprise. Writing Python is mechanical, and AI handles most of it. <strong>What was surprising was the development process itself.</strong> Going from a notebook on a laptop to something running in production. Monitoring whether a model is drifting. Routing predictions in real time. Managing data across knowledge graphs. All those questions about how things move from theory to actual production turned out to be more interesting than I&#8217;d expected.</p><p>Then a second shift. I started seeing the same process in PM work. We produce ideas, specifications, prototypes too. <strong>That workflow benefits from the same rigor:</strong> version control, structured checkpoints, outputs that can be reviewed and improved. Product decisions are constrained and unlocked by what&#8217;s technically feasible. PMs who understand the development side don&#8217;t just communicate better with engineers. <strong>They make different bets</strong>, earlier and more confidently, with fewer surprises in sprint review.</p><p>The Git and GitHub mindset shift came last and landed hardest. <strong>I started seeing every project as a GitHub project.</strong> Not just code. Everything. Every commit is an undo button, so experiments become cheap. Every README is a spec for whoever reads it next, human or AI. Every public repo is portable proof of work, the modern PM portfolio. Every conversation with an engineer suddenly has a shared vocabulary, which makes meetings shorter. That mental shift is worth more than the Python syntax.</p><h3>AI amplifies what you already know, including your gaps</h3><p>The Gemini moment from the intro is the principle in one scene. <strong>AI enforces bad habits more efficiently.</strong> It didn&#8217;t invent bad discovery questions. It amplified the prompter&#8217;s lack of domain knowledge and produced them at scale, with confidence.</p><p>The coding parallel is direct and uncomfortable. If you don&#8217;t know what clean, correct code looks like, AI produces messy code and you won&#8217;t catch it. You&#8217;ll think it worked. You&#8217;ll ship the leak. Y<strong>ou&#8217;ll trust the accuracy number without knowing it was built on a cheating feature.</strong> All of that happened in this build. It was a second AI session, not the first, that caught it.</p><p>The synthesis: you don&#8217;t need to learn to code from scratch so you can replace the AI. <strong>You need enough vocabulary to audit what it produces.</strong> That&#8217;s what autonomy looks like in 2026. Not prompting faster, but catching errors earlier and asking sharper questions.</p><p>After one year, that vocabulary includes data leakage, overfitting, class imbalance, training versus test accuracy, feature importance versus SHAP values. <strong>Each term is a filter.</strong> AI output now has to pass through those filters before I trust it.</p><p>The future belongs to people who can think about the future and build in the present. The PM role isn&#8217;t disappearing. <strong>It&#8217;s expanding toward something between product management, design, and development.</strong> This is the right time to close the gap, because the tools to do it have never been more accessible.</p><h3>Use an LLM chat, not a coding tool</h3><p>Start with the popular narrative. There&#8217;s a wave of YouTube videos and op-eds claiming that learning with AI makes people shallow or lazy. Brain-rot, dependency, the death of expertise. Pick the framing. <strong>It&#8217;s true if you let it. It&#8217;s false if you don&#8217;t.</strong> The tool isn&#8217;t the problem. The shortcut is the problem.</p><p>You&#8217;ve almost certainly used an LLM to learn something already. Summarizing a long article, formalizing messy notes, debating a concept, getting a 24/7 explainer for anything you were curious about. That&#8217;s not the new thing. <strong>The new thing is that code is one of the highest-leverage things to learn this way, and almost nobody is doing it right.</strong></p><p>It has never been easier to learn coding from scratch. Ten years ago, the alternatives were a 30-hour video course and a Stack Overflow thread that might get answered tomorrow. Today it&#8217;s a one-on-one tutor that explains every line on demand, never gets impatient, and adjusts to your pace. The blocker for most people isn&#8217;t whether AI can teach code. <strong>It&#8217;s that they&#8217;ve been pointing AI at the wrong job.</strong></p><p>The wrong job is the AI that <strong>generates code instead of teaching it</strong>. Claude Code, Cursor, vibe-coding agents. They produce too much output too fast. You can&#8217;t follow. You can&#8217;t ask. The notebook works because the machine did everything, and the moment something breaks in front of someone, <strong>you discover you didn&#8217;t actually learn anything.</strong> The output looks like productivity. The reality is dependency.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XRmt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ceb8da5-26c1-4b63-97b2-09b6a7e86c83_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XRmt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ceb8da5-26c1-4b63-97b2-09b6a7e86c83_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!XRmt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ceb8da5-26c1-4b63-97b2-09b6a7e86c83_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!XRmt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ceb8da5-26c1-4b63-97b2-09b6a7e86c83_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!XRmt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ceb8da5-26c1-4b63-97b2-09b6a7e86c83_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XRmt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ceb8da5-26c1-4b63-97b2-09b6a7e86c83_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0ceb8da5-26c1-4b63-97b2-09b6a7e86c83_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3340411,&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.theaithinker.com/i/195446977?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ceb8da5-26c1-4b63-97b2-09b6a7e86c83_2816x1536.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_!XRmt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ceb8da5-26c1-4b63-97b2-09b6a7e86c83_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!XRmt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ceb8da5-26c1-4b63-97b2-09b6a7e86c83_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!XRmt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ceb8da5-26c1-4b63-97b2-09b6a7e86c83_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!XRmt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ceb8da5-26c1-4b63-97b2-09b6a7e86c83_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>Important nuance: t<strong>his isn&#8217;t an argument against code-agent tools as a category.</strong> It&#8217;s an argument about when to use them. When you&#8217;re learning, stay in chat mode and stay in the loop. One step, confirm, ask, next step. When you&#8217;re delivering work you already understand (you know what good code looks like, you know the failure modes, you can read what the agent produces and catch what&#8217;s wrong), switching to a code agent is exactly the right move. <strong>The trap is using a code agent to learn. The win is using one when you no longer need to.</strong></p><p>The rule that flips the LLM from code generator to patient instructor, set at the very start of the conversation: &#8220;<strong>Explain before every command.</strong> Wait for my confirmation before the next step.&#8221; That single sentence is the difference between a notebook that teaches you and a notebook that teaches the AI.</p><p><strong>For a PM, the deliverable was never the notebook.</strong> It&#8217;s the vocabulary you can use in the next sprint review. A model you can explain is one you can defend in a meeting, challenge when the numbers look off, and redirect when the team is asking the wrong question. The patient-instructor approach builds that. The code generator skips it entirely.</p><div><hr></div><h2>The project</h2><h3>From data to a working model: the workflow</h3><p>If you want to follow this build yourself, step by step, <strong>the complete guide is here on <a href="https://docs.google.com/document/d/1J4rloRvZ55dYR4-yfxPcOfEco5N6P84IZq1wPNx1LZo/edit?usp=sharing">Google Docs</a></strong>. The final notebook is at <a href="https://github.com/adamfaik/churn-prediction">github.com/adamfaik/churn-prediction</a>. Open it and you&#8217;ll see every cell, every chart, and every commit.</p><p><strong>Why churn prediction.</strong> Understanding how the product is used, or not used, is one of the core jobs of a product person. Why are users leaving? Which segments are at risk? What&#8217;s the gap in lifetime value between cohorts? These are the questions a PM brings to every retention meeting.</p><p>Before LLMs, the answer came down to two slow paths. Either I filed a ticket with the data team and waited two or three weeks for a chart in a slide deck, readable but not mine and not something I could iterate on. Or I tried to learn the analysis myself: a 30-hour Udemy course, half-finished side projects, no one to ask when something broke. <strong>Both paths were inefficient enough that most decisions still got made on intuition and dashboard glances.</strong></p><p>There&#8217;s now a third path, and it&#8217;s the entire reason this article exists. The PM picks a real dataset, opens an LLM chat, and walks through the analysis themselves in an evening. They probably won&#8217;t ship the model to production. <strong>That&#8217;s not the point.</strong> They bring sharper questions to the next retention meeting, having seen the data with their own eyes and built a working model on it. This is the autonomy the section above promised.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bC3-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd16f1ddb-5964-4b5b-9b82-1d0cd6722ec3_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bC3-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd16f1ddb-5964-4b5b-9b82-1d0cd6722ec3_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!bC3-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd16f1ddb-5964-4b5b-9b82-1d0cd6722ec3_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!bC3-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd16f1ddb-5964-4b5b-9b82-1d0cd6722ec3_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!bC3-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd16f1ddb-5964-4b5b-9b82-1d0cd6722ec3_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bC3-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd16f1ddb-5964-4b5b-9b82-1d0cd6722ec3_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d16f1ddb-5964-4b5b-9b82-1d0cd6722ec3_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3626673,&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.theaithinker.com/i/195446977?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd16f1ddb-5964-4b5b-9b82-1d0cd6722ec3_2816x1536.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_!bC3-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd16f1ddb-5964-4b5b-9b82-1d0cd6722ec3_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!bC3-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd16f1ddb-5964-4b5b-9b82-1d0cd6722ec3_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!bC3-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd16f1ddb-5964-4b5b-9b82-1d0cd6722ec3_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!bC3-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd16f1ddb-5964-4b5b-9b82-1d0cd6722ec3_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>The workflow itself, before zooming into the build.</strong> The build guide for this project distills four meta-steps that make the whole thing work. They&#8217;re the workflow of <strong>discussing with the LLM</strong>, not the data-science workflow itself. The seven machine learning phases came from the LLM during step 2 and are narrated phase by phase in the next sub-sections.</p><ol><li><p><strong>Set up your workspace once.</strong> VS Code with the integrated terminal, Python and Jupyter inside it. Not the focus, but it has to exist before the rest works. Thirty minutes the first time, never again.</p></li><li><p><strong>Hand the LLM your problem and ask for a plan.</strong> Don&#8217;t ask for code. Paste the dataset description, your full context, and the kind of beginner you are. What comes back is a multi-phase plan with checkpoints. For this build, seven phases of classic ML.</p></li><li><p><strong>Work the plan one phase at a time, with the LLM as patient tutor.</strong> Inside this step lives a five-move loop that runs once per phase: expand the phase into actions, do one action, share the result back (success or failure), ask the deep-dive &#8220;why&#8221; question, verify the checkpoint. Push back when the plan misses something you know is important.</p></li><li><p><strong>Get a second opinion before declaring done.</strong> Open a fresh LLM session with no shared history, attach the GitHub repo, ask &#8220;any feedback?&#8221;. Two AIs disagreeing is the highest-value moment in any build, and in this project it&#8217;s where a data leakage that the tutor never spotted got caught.</p></li></ol><p><strong>For PMs specifically: this isn&#8217;t a one-off ritual for the churn project.</strong> It&#8217;s a portable workflow that runs on any technical topic: the analytics question you&#8217;d normally file with the data team, a feature spec where you need to understand a backend constraint, a competitive analysis where you want to reverse-engineer how a tool works. Same four steps, same five-move loop. The churn project just happens to be where this article shows it in action.</p><h3>Set up your workspace once</h3><p>Before any conversation with the LLM can produce code that runs, the workspace needs to exist. <strong>The setup is light: three installs, one folder, one verification command.</strong> The full step-by-step (with screenshots, troubleshooting notes, and Mac/Windows variants) lives in <a href="https://docs.google.com/document/d/1J4rloRvZ55dYR4-yfxPcOfEco5N6P84IZq1wPNx1LZo/edit?usp=sharing">the reader guide</a>.</p><ul><li><p><strong>Python</strong>, downloaded from <a href="https://www.python.org/downloads/">python.org</a>. macOS and Windows installers are straightforward. On Windows, the only must-do is checking &#8220;Add Python to PATH&#8221; during install, otherwise the terminal won&#8217;t find Python later.</p></li><li><p><strong>VS Code</strong>, downloaded from <a href="https://code.visualstudio.com/">code.visualstudio.com</a>. It&#8217;s the editor where the notebook will live. Two extensions get installed inside it from the Extensions panel on the left sidebar: the <strong>Python</strong> extension (by Microsoft) and the <strong>Jupyter</strong> extension (by Microsoft).</p></li><li><p><strong>A project folder</strong> created on disk wherever you keep projects. This build called it <code>churn-prediction</code>. VS Code opens it via File &#8594; Open Folder. The sidebar shows the folder name at the top and an empty tree below, the canvas before the first file.</p></li></ul><p>Once the folder is open in VS Code, <strong>the integrated terminal opens at the bottom</strong> of the window via View &#8594; Terminal (or <code>Ctrl + `</code>) and is already scoped to the project folder. <strong>From here on, every terminal command runs inside this panel.</strong> No separate terminal app, no confusion about which directory you&#8217;re in.</p><p>A quick verification: <code>python3 --version</code> in the integrated terminal. If it returns <code>Python 3.11.x</code> or newer, the workspace is ready. T<strong>he whole setup takes about 30 minutes the first time and is reusable across every future project.</strong> Accounts you&#8217;ll need by this point: <a href="https://github.com/">GitHub</a> (free), <a href="https://www.kaggle.com/">Kaggle</a> (free), and an LLM chat (Claude.ai or equivalent). Detailed install steps for Mac and Windows live in the <a href="https://docs.google.com/document/d/1J4rloRvZ55dYR4-yfxPcOfEco5N6P84IZq1wPNx1LZo/edit?usp=sharing">reader guide</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!p1Q_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c33f90-dddb-4b33-afa8-90fc79d2abdd_3248x1956.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!p1Q_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c33f90-dddb-4b33-afa8-90fc79d2abdd_3248x1956.png 424w, https://substackcdn.com/image/fetch/$s_!p1Q_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c33f90-dddb-4b33-afa8-90fc79d2abdd_3248x1956.png 848w, https://substackcdn.com/image/fetch/$s_!p1Q_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c33f90-dddb-4b33-afa8-90fc79d2abdd_3248x1956.png 1272w, https://substackcdn.com/image/fetch/$s_!p1Q_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c33f90-dddb-4b33-afa8-90fc79d2abdd_3248x1956.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!p1Q_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c33f90-dddb-4b33-afa8-90fc79d2abdd_3248x1956.png" width="1456" height="877" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/54c33f90-dddb-4b33-afa8-90fc79d2abdd_3248x1956.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:877,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:700556,&quot;alt&quot;:&quot;Dark VS Code window with an empty churn-prediction folder in the Explorer panel and the integrated terminal panel showing a clean shell prompt at the bottom&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/195446977?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c33f90-dddb-4b33-afa8-90fc79d2abdd_3248x1956.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Dark VS Code window with an empty churn-prediction folder in the Explorer panel and the integrated terminal panel showing a clean shell prompt at the bottom" title="Dark VS Code window with an empty churn-prediction folder in the Explorer panel and the integrated terminal panel showing a clean shell prompt at the bottom" srcset="https://substackcdn.com/image/fetch/$s_!p1Q_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c33f90-dddb-4b33-afa8-90fc79d2abdd_3248x1956.png 424w, https://substackcdn.com/image/fetch/$s_!p1Q_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c33f90-dddb-4b33-afa8-90fc79d2abdd_3248x1956.png 848w, https://substackcdn.com/image/fetch/$s_!p1Q_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c33f90-dddb-4b33-afa8-90fc79d2abdd_3248x1956.png 1272w, https://substackcdn.com/image/fetch/$s_!p1Q_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c33f90-dddb-4b33-afa8-90fc79d2abdd_3248x1956.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Nothing in the workspace yet. The setup is done.</figcaption></figure></div><p>That&#8217;s it for setup. The next conversation is the one that turns this empty workspace into a project.</p><h3>Hand the LLM your problem and ask for a plan</h3><p>With the workspace ready, the first conversation that matters: <strong>the build starts at the dataset.</strong> The <a href="https://www.kaggle.com/datasets/blastchar/telco-customer-churn">IBM Telco Customer Churn dataset on Kaggle</a> is the canonical first ML problem. 7,043 customers, twenty-one attributes, one binary target (did they cancel?). Small enough to finish in an evening, big enough to teach real lessons.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2TR4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc76f3a7-9f20-4b68-bd69-71c057d85746_3248x1956.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2TR4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc76f3a7-9f20-4b68-bd69-71c057d85746_3248x1956.png 424w, https://substackcdn.com/image/fetch/$s_!2TR4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc76f3a7-9f20-4b68-bd69-71c057d85746_3248x1956.png 848w, https://substackcdn.com/image/fetch/$s_!2TR4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc76f3a7-9f20-4b68-bd69-71c057d85746_3248x1956.png 1272w, https://substackcdn.com/image/fetch/$s_!2TR4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc76f3a7-9f20-4b68-bd69-71c057d85746_3248x1956.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2TR4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc76f3a7-9f20-4b68-bd69-71c057d85746_3248x1956.png" width="1456" height="877" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bc76f3a7-9f20-4b68-bd69-71c057d85746_3248x1956.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:877,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1049623,&quot;alt&quot;:&quot;Kaggle dataset page for Telco Customer Churn showing the dataset description, columns metadata including demographics, services, account info, and churn label&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/195446977?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc76f3a7-9f20-4b68-bd69-71c057d85746_3248x1956.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Kaggle dataset page for Telco Customer Churn showing the dataset description, columns metadata including demographics, services, account info, and churn label" title="Kaggle dataset page for Telco Customer Churn showing the dataset description, columns metadata including demographics, services, account info, and churn label" srcset="https://substackcdn.com/image/fetch/$s_!2TR4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc76f3a7-9f20-4b68-bd69-71c057d85746_3248x1956.png 424w, https://substackcdn.com/image/fetch/$s_!2TR4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc76f3a7-9f20-4b68-bd69-71c057d85746_3248x1956.png 848w, https://substackcdn.com/image/fetch/$s_!2TR4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc76f3a7-9f20-4b68-bd69-71c057d85746_3248x1956.png 1272w, https://substackcdn.com/image/fetch/$s_!2TR4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc76f3a7-9f20-4b68-bd69-71c057d85746_3248x1956.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The dataset on Kaggle. About Dataset, columns metadata, all visible.</figcaption></figure></div><p>Ctrl+A, Ctrl+C the dataset description and column list. Open Claude.ai in a new browser tab. Paste it in along with full context: VS Code open, Python installed, first project, want to learn.</p><p><strong>What comes back is a plan, not code.</strong> A 7-phase plan with goals and checkpoints per phase. The first instinct is to start executing immediately. The right move is to read the whole thing end to end first and ask &#8220;why&#8221; on anything that&#8217;s unclear before touching a keyboard.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jYOc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c0e3aeb-8d64-4f36-9f17-9148fd79f96c_3248x1956.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jYOc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c0e3aeb-8d64-4f36-9f17-9148fd79f96c_3248x1956.png 424w, https://substackcdn.com/image/fetch/$s_!jYOc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c0e3aeb-8d64-4f36-9f17-9148fd79f96c_3248x1956.png 848w, https://substackcdn.com/image/fetch/$s_!jYOc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c0e3aeb-8d64-4f36-9f17-9148fd79f96c_3248x1956.png 1272w, https://substackcdn.com/image/fetch/$s_!jYOc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c0e3aeb-8d64-4f36-9f17-9148fd79f96c_3248x1956.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jYOc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c0e3aeb-8d64-4f36-9f17-9148fd79f96c_3248x1956.png" width="1456" height="877" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5c0e3aeb-8d64-4f36-9f17-9148fd79f96c_3248x1956.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:877,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1006595,&quot;alt&quot;:&quot;Claude.ai chat showing the user&#8217;s first prompt with bullet-pointed setup context, followed by Claude&#8217;s response titled &#8220;Your Churn Prediction Project: The Full Plan&#8221;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/195446977?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c0e3aeb-8d64-4f36-9f17-9148fd79f96c_3248x1956.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Claude.ai chat showing the user&#8217;s first prompt with bullet-pointed setup context, followed by Claude&#8217;s response titled &#8220;Your Churn Prediction Project: The Full Plan&#8221;" title="Claude.ai chat showing the user&#8217;s first prompt with bullet-pointed setup context, followed by Claude&#8217;s response titled &#8220;Your Churn Prediction Project: The Full Plan&#8221;" srcset="https://substackcdn.com/image/fetch/$s_!jYOc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c0e3aeb-8d64-4f36-9f17-9148fd79f96c_3248x1956.png 424w, https://substackcdn.com/image/fetch/$s_!jYOc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c0e3aeb-8d64-4f36-9f17-9148fd79f96c_3248x1956.png 848w, https://substackcdn.com/image/fetch/$s_!jYOc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c0e3aeb-8d64-4f36-9f17-9148fd79f96c_3248x1956.png 1272w, https://substackcdn.com/image/fetch/$s_!jYOc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c0e3aeb-8d64-4f36-9f17-9148fd79f96c_3248x1956.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The first prompt with full PM context. Claude opens with &#8220;Your Churn Prediction Project: The Full Plan.&#8221;</figcaption></figure></div><p>The plan that came back for this build (yours will look similar): set up the project (libraries, dataset, notebook) &#8594; load and look at the data &#8594; clean what&#8217;s broken &#8594; explore patterns &#8594; prepare for modeling &#8594; train and compare models &#8594; interpret and ship. Seven phases, each with a checkpoint, each one ready to expand into specific actions when its turn comes.</p><p>The simple framing matters. You don&#8217;t ask the LLM to write a churn model. <strong>You ask it to walk you through how to build one.</strong> Same tool, completely different output. Code without learning versus learning that produces code.</p><h3>Work the plan one phase at a time</h3><p>Now the plan turns into a working model. <strong>Each phase runs through the five-move loop introduced above:</strong> expand into actions, do one action, share the result back, ask the deep-dive &#8220;why&#8221; question, verify the checkpoint. Six phases of work, narrated in order.</p><h4>Phase 1: finish the workspace setup with the LLM</h4><p>The LLM&#8217;s Phase 1 isn&#8217;t &#8220;install Python.&#8221; That&#8217;s already done. <strong>It&#8217;s the first concrete output the project needs: a </strong><code>requirements.txt</code><strong> file.</strong> The LLM introduces it as &#8220;a shopping list for Python libraries.&#8221; Eight dependencies, each pinned to a specific version so the project behaves the same way in a year.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3vyL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a565d63-adf7-438c-a0aa-e9e8dc5b87c0_3248x1956.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3vyL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a565d63-adf7-438c-a0aa-e9e8dc5b87c0_3248x1956.png 424w, https://substackcdn.com/image/fetch/$s_!3vyL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a565d63-adf7-438c-a0aa-e9e8dc5b87c0_3248x1956.png 848w, https://substackcdn.com/image/fetch/$s_!3vyL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a565d63-adf7-438c-a0aa-e9e8dc5b87c0_3248x1956.png 1272w, https://substackcdn.com/image/fetch/$s_!3vyL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a565d63-adf7-438c-a0aa-e9e8dc5b87c0_3248x1956.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3vyL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a565d63-adf7-438c-a0aa-e9e8dc5b87c0_3248x1956.png" width="1456" height="877" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6a565d63-adf7-438c-a0aa-e9e8dc5b87c0_3248x1956.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:877,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1028071,&quot;alt&quot;:&quot;Claude.ai chat showing &#8220;What is a requirements.txt? Think of it like a shopping list for Python libraries&#8221; with eight pinned package versions&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/195446977?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a565d63-adf7-438c-a0aa-e9e8dc5b87c0_3248x1956.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Claude.ai chat showing &#8220;What is a requirements.txt? Think of it like a shopping list for Python libraries&#8221; with eight pinned package versions" title="Claude.ai chat showing &#8220;What is a requirements.txt? Think of it like a shopping list for Python libraries&#8221; with eight pinned package versions" srcset="https://substackcdn.com/image/fetch/$s_!3vyL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a565d63-adf7-438c-a0aa-e9e8dc5b87c0_3248x1956.png 424w, https://substackcdn.com/image/fetch/$s_!3vyL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a565d63-adf7-438c-a0aa-e9e8dc5b87c0_3248x1956.png 848w, https://substackcdn.com/image/fetch/$s_!3vyL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a565d63-adf7-438c-a0aa-e9e8dc5b87c0_3248x1956.png 1272w, https://substackcdn.com/image/fetch/$s_!3vyL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a565d63-adf7-438c-a0aa-e9e8dc5b87c0_3248x1956.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The shopping-list metaphor. Eight pinned dependencies, ready to install with one command.</figcaption></figure></div><p>One install command later (<code>pip install -r requirements.txt</code>), all eight libraries are on the machine.</p><p>A pushback that became the first meta-lesson. The LLM&#8217;s plan never included GitHub versioning. Phase 1 was setting everything up locally, with nothing saved anywhere else. I stopped mid-phase and said so plainly: &#8220;I want to save to GitHub from the start, not just at the end.&#8221; Claude adjusted immediately: &#8220;Great instinct, that&#8217;s exactly what real developers do.&#8221; <strong>The plan was a draft. It was always meant to be reshaped.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2-7V!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F644440fa-eb3e-4fe5-9603-3e262f6c51a4_3248x1956.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2-7V!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F644440fa-eb3e-4fe5-9603-3e262f6c51a4_3248x1956.png 424w, https://substackcdn.com/image/fetch/$s_!2-7V!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F644440fa-eb3e-4fe5-9603-3e262f6c51a4_3248x1956.png 848w, https://substackcdn.com/image/fetch/$s_!2-7V!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F644440fa-eb3e-4fe5-9603-3e262f6c51a4_3248x1956.png 1272w, https://substackcdn.com/image/fetch/$s_!2-7V!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F644440fa-eb3e-4fe5-9603-3e262f6c51a4_3248x1956.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2-7V!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F644440fa-eb3e-4fe5-9603-3e262f6c51a4_3248x1956.png" width="1456" height="877" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/644440fa-eb3e-4fe5-9603-3e262f6c51a4_3248x1956.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:877,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:938265,&quot;alt&quot;:&quot;VS Code window showing .gitignore file open in the editor and the integrated terminal with successful pip install, git init, and git config commands&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/195446977?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F644440fa-eb3e-4fe5-9603-3e262f6c51a4_3248x1956.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="VS Code window showing .gitignore file open in the editor and the integrated terminal with successful pip install, git init, and git config commands" title="VS Code window showing .gitignore file open in the editor and the integrated terminal with successful pip install, git init, and git config commands" srcset="https://substackcdn.com/image/fetch/$s_!2-7V!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F644440fa-eb3e-4fe5-9603-3e262f6c51a4_3248x1956.png 424w, https://substackcdn.com/image/fetch/$s_!2-7V!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F644440fa-eb3e-4fe5-9603-3e262f6c51a4_3248x1956.png 848w, https://substackcdn.com/image/fetch/$s_!2-7V!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F644440fa-eb3e-4fe5-9603-3e262f6c51a4_3248x1956.png 1272w, https://substackcdn.com/image/fetch/$s_!2-7V!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F644440fa-eb3e-4fe5-9603-3e262f6c51a4_3248x1956.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Workspace in shape. <code>.gitignore</code>, the notebook, requirements installed, Git initialized with my name and email.</figcaption></figure></div><p>Two small VS Code rhythms learned during this phase. <strong>A dot next to a filename in the tab bar means unsaved.</strong> Save before every commit, always. After the first push, the source control panel lights up with file colors: green for new files never tracked before, orange for modified files. Both disappear after a clean commit. The empty source control panel becomes the live &#8220;nothing waiting&#8221; status.</p><p>Phase 1 ends with the dataset downloaded into the project folder, the first Jupyter notebook (<code>churn_analysis.ipynb</code>) created and open in VS Code, and the first commit pushed to a fresh GitHub repo.</p><h4>Phase 2: load and look at the data</h4><p>One line of Python and 7,043 customer records appear in a notebook cell. <strong>The LLM calls a DataFrame &#8220;a spreadsheet but with superpowers.&#8221;</strong> Every row is one customer, every column is one thing known about them. The output shows (<code>7043, 21)</code>: 7,043 customers, 21 features. That number becomes the baseline everything is measured against.</p><p>The LLM&#8217;s checkpoint after Phase 2: &#8220;You&#8217;ve loaded 7,043 customer records, confirmed 21 columns, and seen the first few rows. Say the word and we move to Phase 3, where we clean what needs cleaning.&#8221;</p><p><strong>Checkpoints like that became a rhythm.</strong> Each one confirmed what was done, named the state of the data, and bridged to what was next. They made it possible to stop for the day and pick up the next morning without losing the thread.</p><h4>Phase 3: clean what&#8217;s broken</h4><p>The data is messier than it looks. <strong>The </strong><code>TotalCharges</code><strong> column appears to contain numbers but is actually stored as text, a quirk of how the CSV was exported.</strong> Converting it reveals 11 rows with blank values that quietly get dropped. 7,043 becomes 7,032. This is the reality of working with real data: the first thing you do is clean what shouldn&#8217;t need cleaning.</p><p>A small but important move in the same phase: the <code>Churn</code> column gets converted from &#8220;Yes/No&#8221; to 1/0. <strong>Models can&#8217;t read text. Anything binary becomes a number before going further.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!a3aY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabd8025a-ae85-4b12-aedc-b8443dd3136d_3248x1956.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!a3aY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabd8025a-ae85-4b12-aedc-b8443dd3136d_3248x1956.png 424w, https://substackcdn.com/image/fetch/$s_!a3aY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabd8025a-ae85-4b12-aedc-b8443dd3136d_3248x1956.png 848w, https://substackcdn.com/image/fetch/$s_!a3aY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabd8025a-ae85-4b12-aedc-b8443dd3136d_3248x1956.png 1272w, https://substackcdn.com/image/fetch/$s_!a3aY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabd8025a-ae85-4b12-aedc-b8443dd3136d_3248x1956.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!a3aY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabd8025a-ae85-4b12-aedc-b8443dd3136d_3248x1956.png" width="1456" height="877" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/abd8025a-ae85-4b12-aedc-b8443dd3136d_3248x1956.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:877,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1025319,&quot;alt&quot;:&quot;VS Code Jupyter notebook showing the output of df.isnull().sum() with all columns reading 0, integrated terminal showing the Phase 3 commit being pushed to GitHub&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/195446977?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabd8025a-ae85-4b12-aedc-b8443dd3136d_3248x1956.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="VS Code Jupyter notebook showing the output of df.isnull().sum() with all columns reading 0, integrated terminal showing the Phase 3 commit being pushed to GitHub" title="VS Code Jupyter notebook showing the output of df.isnull().sum() with all columns reading 0, integrated terminal showing the Phase 3 commit being pushed to GitHub" srcset="https://substackcdn.com/image/fetch/$s_!a3aY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabd8025a-ae85-4b12-aedc-b8443dd3136d_3248x1956.png 424w, https://substackcdn.com/image/fetch/$s_!a3aY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabd8025a-ae85-4b12-aedc-b8443dd3136d_3248x1956.png 848w, https://substackcdn.com/image/fetch/$s_!a3aY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabd8025a-ae85-4b12-aedc-b8443dd3136d_3248x1956.png 1272w, https://substackcdn.com/image/fetch/$s_!a3aY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabd8025a-ae85-4b12-aedc-b8443dd3136d_3248x1956.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Checkpoint after Phase 3. Zero missing values across all 20 columns. Ready to explore.</figcaption></figure></div><p>After Phase 3, zero missing values. The LLM&#8217;s checkpoint: &#8220;You independently caught the data leakage concept. That&#8217;s genuinely impressive for someone on their first project.&#8221; (More on what that means in the second-opinion section below.)</p><h4>Phase 4: explore the data</h4><p>EDA, Exploratory Data Analysis, is the habit of looking at the data before doing anything with it. <strong>Not modeling, just looking.</strong> Five or six charts.</p><p>The first chart: overall churn rate. 73.4% stayed, 26.6% left. <strong>That 73.4% number matters more than it looks. It&#8217;s the naive baseline.</strong> A dumb model that predicts &#8220;no churn&#8221; for everyone would be 73.4% accurate by default. Any model has to beat that to be worth anything. Accuracy alone is therefore a terrible metric on imbalanced data, a lesson that comes back hard in Phase 6.</p><p><strong>The chart that changes everything is the second one: churn by contract type.</strong> Month-to-month customers churn at 42.7%, one-year contract customers at 11.3%, two-year customers at 2.8%. The LLM&#8217;s note: &#8220;As a PM, this is the chart that will make you want to immediately call your retention team.&#8221; Month-to-month customers churn at 15 times the rate of two-year customers. That&#8217;s not a pattern. That&#8217;s a business decision waiting to be made.</p><p>A third chart: churn by tenure.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GI1v!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F937eae97-eba8-4238-8312-8e83c5bf9db2_3248x1956.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GI1v!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F937eae97-eba8-4238-8312-8e83c5bf9db2_3248x1956.png 424w, https://substackcdn.com/image/fetch/$s_!GI1v!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F937eae97-eba8-4238-8312-8e83c5bf9db2_3248x1956.png 848w, https://substackcdn.com/image/fetch/$s_!GI1v!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F937eae97-eba8-4238-8312-8e83c5bf9db2_3248x1956.png 1272w, https://substackcdn.com/image/fetch/$s_!GI1v!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F937eae97-eba8-4238-8312-8e83c5bf9db2_3248x1956.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GI1v!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F937eae97-eba8-4238-8312-8e83c5bf9db2_3248x1956.png" width="1456" height="877" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/937eae97-eba8-4238-8312-8e83c5bf9db2_3248x1956.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:877,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:948712,&quot;alt&quot;:&quot;Claude.ai chat showing tenure analysis with the bullet &#8220;0-12 months: 47.7% churn &#8212; nearly half of new customers leave in year one&#8221; alongside a small embedded staircase chart&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/195446977?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F937eae97-eba8-4238-8312-8e83c5bf9db2_3248x1956.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Claude.ai chat showing tenure analysis with the bullet &#8220;0-12 months: 47.7% churn &#8212; nearly half of new customers leave in year one&#8221; alongside a small embedded staircase chart" title="Claude.ai chat showing tenure analysis with the bullet &#8220;0-12 months: 47.7% churn &#8212; nearly half of new customers leave in year one&#8221; alongside a small embedded staircase chart" srcset="https://substackcdn.com/image/fetch/$s_!GI1v!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F937eae97-eba8-4238-8312-8e83c5bf9db2_3248x1956.png 424w, https://substackcdn.com/image/fetch/$s_!GI1v!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F937eae97-eba8-4238-8312-8e83c5bf9db2_3248x1956.png 848w, https://substackcdn.com/image/fetch/$s_!GI1v!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F937eae97-eba8-4238-8312-8e83c5bf9db2_3248x1956.png 1272w, https://substackcdn.com/image/fetch/$s_!GI1v!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F937eae97-eba8-4238-8312-8e83c5bf9db2_3248x1956.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The descending staircase. Year one is the critical retention window.</figcaption></figure></div><p>47.7% of customers churn within their first 12 months. After five years, the rate drops to 6.6%. <strong>Year one is the critical retention window.</strong></p><p>A fourth chart compares monthly charges. Higher-bill customers churn more. The LLM uses this to surface a critical PM lesson: <strong>&#8221;Correlation isn&#8217;t causation.&#8221;</strong> This chart raises the question, it doesn&#8217;t answer it. Do they leave because the bill is high, or are high-bill customers structurally more likely to leave for other reasons? That distinction is exactly the kind of thing AI can&#8217;t tell you on its own. You have to bring the framing.</p><p>The LLM&#8217;s checkpoint after Phase 4: &#8220;You have 5-6 charts that tell a clear story about what drives churn. <strong>You could explain it to a colleague without showing any code.</strong>&#8221; That&#8217;s the sentence that makes a PM feel like a data person for the first time.</p><h4>Phase 5: prepare the data for the model</h4><p>Data needs to be reshaped before a model can read it. <strong>ML models only understand numbers.</strong> They can&#8217;t process text like &#8220;Month-to-month&#8221; or &#8220;Fiber optic.&#8221; The solution is one-hot encoding. The LLM&#8217;s explanation: &#8220;You can&#8217;t say DSL=0, Fiber=1, No service=2 because that implies Fiber is mathematically twice DSL, which is nonsense. One-hot encoding gives each category its own 0/1 column.&#8221;</p><p>Then the train/test split: 80% to train, 20% hidden until the end. The LLM&#8217;s metaphor: &#8221;<strong>like an unseen exam.</strong> If you test the model on data it trained on, it looks brilliant and is useless on real new customers.&#8221; <strong>The 80/20 split is stratified</strong>, which means the original churn rate (26.6%) is preserved in both halves. Without stratification, the test set could randomly end up with 15% churners or 40%, and the reported performance number would be misleading. Stratification keeps the test honest.</p><p>A subtle but critical moment: numerical columns get scaled. Without scaling, a <code>tenure</code> value of 72 dominates a <code>SeniorCitizen</code> value of 1 just because the number is bigger. <strong>The order matters: scale after the split, not before, and only learn the scaling factors from training data.</strong> The LLM&#8217;s framing: &#8220;fit on training, then apply to test, never the other way around.&#8221; A few exchanges earlier I&#8217;d instinctively asked whether scaling should happen before or after the split. Claude&#8217;s reaction: &#8220;You&#8217;ve just independently discovered one of the most important concepts in machine learning.&#8221; First encounter with data leakage thinking, well before the formal catch in the next section.</p><h4>Phase 6: train and compare three models</h4><p><strong>Logistic Regression is the simplest baseline.</strong> It draws a straight line through the data, very explainable. <strong>Random Forest is a committee of decision trees.</strong> The LLM&#8217;s metaphor: &#8220;500 different analysts each studying the data independently, then going with the majority opinion.&#8221; And XGBoost, with the metaphor that&#8217;s actually worth remembering: &#8221;where Random Forest builds trees independently and votes, <strong>XGBoost builds them sequentially.</strong> Each new tree specifically focuses on fixing the mistakes the previous trees made.&#8221;</p><p>Five metrics, set up before any model trains. Each answers a different question:</p><ul><li><p><strong>Accuracy.</strong> Of all predictions, how many were right? Misleading on its own here, since the naive &#8220;predict no churn for everyone&#8221; already hits 73.4%.</p></li><li><p><strong>Precision.</strong> Of the customers the model flagged as churners, how many actually churned? Optimize for precision when false alarms are expensive (wasted retention spend on people who weren&#8217;t leaving).</p></li><li><p><strong>Recall.</strong> Of the actual churners, how many did the model catch? Optimize for recall when missing a churner is expensive (a customer who could have been saved). For most retention teams, recall wins.</p></li><li><p><strong>F1 score.</strong> The balance of precision and recall in one number, useful when both matter.</p></li><li><p><strong>ROC-AUC.</strong> How well the model separates churners from stayers across every possible decision threshold. 1.0 is perfect, 0.5 is a coin flip. The gold standard for churn models because it doesn&#8217;t depend on where you draw the line.</p></li></ul><p><strong>The confusion matrix visualizes all of this in a 2x2 grid:</strong> true positives (correctly flagged churners), false positives (flagged but stayed), true negatives (correctly identified stayers), false negatives (the churners the model missed). One glance tells you what kind of mistakes the model is making, and which kind your team can afford.</p><p>The overfitting catch came right away. <strong>Random Forest reached 100% accuracy on training data but only 79% on the test set.</strong> The LLM named it immediately: &#8220;Classic overfitting, the forest memorized the training set but didn&#8217;t generalize.&#8221; Logistic Regression, the simplest model, held steady at 80% on both. XGBoost hit 74.9% accuracy but 71.4% recall, the best at actually catching churners. That&#8217;s the one that got chosen.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MlZ7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa822991-e794-4643-84e1-f9249db39f18_3248x1956.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MlZ7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa822991-e794-4643-84e1-f9249db39f18_3248x1956.png 424w, https://substackcdn.com/image/fetch/$s_!MlZ7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa822991-e794-4643-84e1-f9249db39f18_3248x1956.png 848w, https://substackcdn.com/image/fetch/$s_!MlZ7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa822991-e794-4643-84e1-f9249db39f18_3248x1956.png 1272w, https://substackcdn.com/image/fetch/$s_!MlZ7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa822991-e794-4643-84e1-f9249db39f18_3248x1956.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MlZ7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa822991-e794-4643-84e1-f9249db39f18_3248x1956.png" width="1456" height="877" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fa822991-e794-4643-84e1-f9249db39f18_3248x1956.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:877,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:891148,&quot;alt&quot;:&quot;Claude.ai chat showing a comparison table of Logistic Regression, Random Forest, and XGBoost across Accuracy, Precision, Recall, F1 Score, and ROC-AUC, with XGBoost recall (0.714) bolded as the best&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/195446977?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa822991-e794-4643-84e1-f9249db39f18_3248x1956.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Claude.ai chat showing a comparison table of Logistic Regression, Random Forest, and XGBoost across Accuracy, Precision, Recall, F1 Score, and ROC-AUC, with XGBoost recall (0.714) bolded as the best" title="Claude.ai chat showing a comparison table of Logistic Regression, Random Forest, and XGBoost across Accuracy, Precision, Recall, F1 Score, and ROC-AUC, with XGBoost recall (0.714) bolded as the best" srcset="https://substackcdn.com/image/fetch/$s_!MlZ7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa822991-e794-4643-84e1-f9249db39f18_3248x1956.png 424w, https://substackcdn.com/image/fetch/$s_!MlZ7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa822991-e794-4643-84e1-f9249db39f18_3248x1956.png 848w, https://substackcdn.com/image/fetch/$s_!MlZ7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa822991-e794-4643-84e1-f9249db39f18_3248x1956.png 1272w, https://substackcdn.com/image/fetch/$s_!MlZ7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa822991-e794-4643-84e1-f9249db39f18_3248x1956.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">All three models head to head. XGBoost made a different trade-off and won on recall.</figcaption></figure></div><p><strong>For a PM, this whole phase is one conversation: which metric matters for which business decision?</strong> &#8220;Highest accuracy&#8221; is the wrong default for an imbalanced dataset, and accepting it without question is how a retention strategy gets built on a misleading number. The PM value here isn&#8217;t writing the code. It&#8217;s leading the conversation with the data team, naming the cost of a missed churner versus a false alarm, and choosing the metric that maps to the actual decision the team will make.</p><p>A consistent technique I used across every phase: <strong>ask for per-line comments on every code block.</strong> &#8220;Rewrite this snippet with a comment on every single line. I want it to read like a tutorial when I open the file next week.&#8221; Those comments became my notes. They&#8217;re also what made writing this article possible days later.</p><h3>Get a second opinion before declaring done</h3><p>Between Phase 2 and Phase 3, and again at the end of the build, I opened a new LLM session. <strong>Not the same one.</strong> A fresh tab, zero conversation history, the GitHub repo attached via the GitHub integration. Three words: &#8220;Any feedback?&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hV3a!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F841a85ae-bb59-49e6-bd33-1323e071445f_3248x1956.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hV3a!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F841a85ae-bb59-49e6-bd33-1323e071445f_3248x1956.png 424w, https://substackcdn.com/image/fetch/$s_!hV3a!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F841a85ae-bb59-49e6-bd33-1323e071445f_3248x1956.png 848w, https://substackcdn.com/image/fetch/$s_!hV3a!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F841a85ae-bb59-49e6-bd33-1323e071445f_3248x1956.png 1272w, https://substackcdn.com/image/fetch/$s_!hV3a!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F841a85ae-bb59-49e6-bd33-1323e071445f_3248x1956.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hV3a!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F841a85ae-bb59-49e6-bd33-1323e071445f_3248x1956.png" width="1456" height="877" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/841a85ae-bb59-49e6-bd33-1323e071445f_3248x1956.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:877,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:982639,&quot;alt&quot;:&quot;Claude.ai chat showing the prompt &#8220;I&#8217;m a non-technical PM learning to code. What would you improve about this repo right now?&#8221; with response listing strengths and improvements&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/195446977?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F841a85ae-bb59-49e6-bd33-1323e071445f_3248x1956.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Claude.ai chat showing the prompt &#8220;I&#8217;m a non-technical PM learning to code. What would you improve about this repo right now?&#8221; with response listing strengths and improvements" title="Claude.ai chat showing the prompt &#8220;I&#8217;m a non-technical PM learning to code. What would you improve about this repo right now?&#8221; with response listing strengths and improvements" srcset="https://substackcdn.com/image/fetch/$s_!hV3a!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F841a85ae-bb59-49e6-bd33-1323e071445f_3248x1956.png 424w, https://substackcdn.com/image/fetch/$s_!hV3a!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F841a85ae-bb59-49e6-bd33-1323e071445f_3248x1956.png 848w, https://substackcdn.com/image/fetch/$s_!hV3a!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F841a85ae-bb59-49e6-bd33-1323e071445f_3248x1956.png 1272w, https://substackcdn.com/image/fetch/$s_!hV3a!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F841a85ae-bb59-49e6-bd33-1323e071445f_3248x1956.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A new Claude tab. The repo attached. The feedback already pointing at structural and quality issues.</figcaption></figure></div><p><strong>What the fresh session at the end caught was the killer one. </strong>A leaky feature is one that secretly gives the model information about the outcome it&#8217;s supposed to predict, making it look accurate in testing while being useless in production. <strong>TotalCharges is exactly that.</strong> It&#8217;s essentially MonthlyCharges &#215; tenure. Customers who left earlier naturally have lower TotalCharges because they were billed fewer months. The model wasn&#8217;t predicting who would churn. It was detecting who already had. The LLM&#8217;s explanation: &#8220;Like predicting someone died because their life was short.&#8221;</p><p>The fresh session returned five points: the leakage, a missing comment in the code explaining a dropped column, a quantification of the false alarm cost (how many customers would be incorrectly targeted by a retention campaign), a naive baseline that was never explained, and <strong>SHAP values as a more rigorous measure of feature importance than the default method.</strong> Default importance counts how often a feature was used to split decisions; SHAP measures how much each feature actually moved each prediction. They answer different questions, &#8220;how often&#8221; versus &#8220;how much,&#8221; and sometimes produce different rankings. For this dataset, SHAP showed tenure mattering more than default importance suggested, and fiber optic mattering less.</p><p><strong>The fix: drop TotalCharges, retrain all three models, compare before and after.</strong> Slightly lower accuracy, but an honest model. The final commit: &#8220;Address reviewer feedback: remove leaky feature, add cost analysis, SHAP values.&#8221;</p><p>The tutor session never caught it because it had been inside the build since Phase 3. It had no reason to question a decision it made itself. <strong>The fresh session had no stake in being right.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!T6S0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69d3dff0-2fe5-4e4f-a640-95ffd37b32d9_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!T6S0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69d3dff0-2fe5-4e4f-a640-95ffd37b32d9_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!T6S0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69d3dff0-2fe5-4e4f-a640-95ffd37b32d9_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!T6S0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69d3dff0-2fe5-4e4f-a640-95ffd37b32d9_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!T6S0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69d3dff0-2fe5-4e4f-a640-95ffd37b32d9_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!T6S0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69d3dff0-2fe5-4e4f-a640-95ffd37b32d9_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/69d3dff0-2fe5-4e4f-a640-95ffd37b32d9_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3430988,&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.theaithinker.com/i/195446977?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69d3dff0-2fe5-4e4f-a640-95ffd37b32d9_2816x1536.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_!T6S0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69d3dff0-2fe5-4e4f-a640-95ffd37b32d9_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!T6S0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69d3dff0-2fe5-4e4f-a640-95ffd37b32d9_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!T6S0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69d3dff0-2fe5-4e4f-a640-95ffd37b32d9_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!T6S0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69d3dff0-2fe5-4e4f-a640-95ffd37b32d9_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>For a PM, this is the moment that earns trust with engineers and data scientists.</strong> Catching a leak, even with help from a fresh AI session, and being able to describe it in one sentence (&#8221;the model was learning from the outcome instead of predicting it&#8221;) is the difference between being someone who reads ML reports and someone who participates in modeling decisions. This single move, repeated a few times over a year, is how a PM gets invited deeper into the technical conversation rather than nudged out of it.</p><h3>The result: what the model actually found</h3><p><strong>XGBoost finished at 71.4% recall, meaning 71 of every 100 customers who actually churn get flagged.</strong> The 15x churn rate gap is the single most actionable finding in the entire build: month-to-month at 42.7%, two-year at 2.8%. 47.7% of customers churn within year one, so onboarding is the highest-leverage intervention. Fiber optic customers churn at nearly double the rate of DSL (41.9% versus 19.0%), a service-quality signal worth investigating.</p><p><strong>The last step is making the model reusable.</strong> The trained XGBoost model gets saved to a <code>.pkl</code> file (along with the fitted scaler and the encoded feature column list). The model can be loaded later and used to score new customers without retraining the whole pipeline. It&#8217;s the small artifact that turns a notebook into something that could plausibly be deployed.</p><p>I wrote three business recommendations directly into the notebook: an annual contract incentive programme, a 90-day onboarding programme for new customers, a targeted NPS investigation for fiber optic customers.</p><p><strong>The <a href="https://github.com/adamfaik/churn-prediction">GitHub repo</a> is the artifact.</strong> A README that reads like a product spec, ten commits that trace the build phase by phase, a notebook where every code cell explains itself in comments, and the saved model file that proves the pipeline works end to end.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TUZf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7efb3ad-0648-4198-8166-9de361c9c12e_3248x1956.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TUZf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7efb3ad-0648-4198-8166-9de361c9c12e_3248x1956.png 424w, https://substackcdn.com/image/fetch/$s_!TUZf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7efb3ad-0648-4198-8166-9de361c9c12e_3248x1956.png 848w, https://substackcdn.com/image/fetch/$s_!TUZf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7efb3ad-0648-4198-8166-9de361c9c12e_3248x1956.png 1272w, https://substackcdn.com/image/fetch/$s_!TUZf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7efb3ad-0648-4198-8166-9de361c9c12e_3248x1956.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TUZf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7efb3ad-0648-4198-8166-9de361c9c12e_3248x1956.png" width="1456" height="877" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a7efb3ad-0648-4198-8166-9de361c9c12e_3248x1956.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:877,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:977860,&quot;alt&quot;:&quot;GitHub repo page for adamfaik/churn-prediction showing the rendered README with sections &#8220;Telco Customer Churn Prediction,&#8221; &#8220;Business Context,&#8221; and &#8220;Dataset&#8221;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/195446977?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7efb3ad-0648-4198-8166-9de361c9c12e_3248x1956.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="GitHub repo page for adamfaik/churn-prediction showing the rendered README with sections &#8220;Telco Customer Churn Prediction,&#8221; &#8220;Business Context,&#8221; and &#8220;Dataset&#8221;" title="GitHub repo page for adamfaik/churn-prediction showing the rendered README with sections &#8220;Telco Customer Churn Prediction,&#8221; &#8220;Business Context,&#8221; and &#8220;Dataset&#8221;" srcset="https://substackcdn.com/image/fetch/$s_!TUZf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7efb3ad-0648-4198-8166-9de361c9c12e_3248x1956.png 424w, https://substackcdn.com/image/fetch/$s_!TUZf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7efb3ad-0648-4198-8166-9de361c9c12e_3248x1956.png 848w, https://substackcdn.com/image/fetch/$s_!TUZf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7efb3ad-0648-4198-8166-9de361c9c12e_3248x1956.png 1272w, https://substackcdn.com/image/fetch/$s_!TUZf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7efb3ad-0648-4198-8166-9de361c9c12e_3248x1956.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The README opens with business context, the dataset, and the questions the project answers. It reads like a one-pager a PM would hand to a stakeholder.</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ixgb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7ebb1aa-97db-4377-9d61-f614d5a5ca1f_3248x1956.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ixgb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7ebb1aa-97db-4377-9d61-f614d5a5ca1f_3248x1956.png 424w, https://substackcdn.com/image/fetch/$s_!ixgb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7ebb1aa-97db-4377-9d61-f614d5a5ca1f_3248x1956.png 848w, https://substackcdn.com/image/fetch/$s_!ixgb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7ebb1aa-97db-4377-9d61-f614d5a5ca1f_3248x1956.png 1272w, https://substackcdn.com/image/fetch/$s_!ixgb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7ebb1aa-97db-4377-9d61-f614d5a5ca1f_3248x1956.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ixgb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7ebb1aa-97db-4377-9d61-f614d5a5ca1f_3248x1956.png" width="1456" height="877" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c7ebb1aa-97db-4377-9d61-f614d5a5ca1f_3248x1956.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:877,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:974114,&quot;alt&quot;:&quot;GitHub commits page showing the chronological commit list including &#8220;Address reviewer feedback: remove leaky feature, add cost analysis, SHAP values&#8221; at the top and &#8220;Initial commit: project setup and requirements&#8221; at the bottom&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/195446977?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7ebb1aa-97db-4377-9d61-f614d5a5ca1f_3248x1956.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="GitHub commits page showing the chronological commit list including &#8220;Address reviewer feedback: remove leaky feature, add cost analysis, SHAP values&#8221; at the top and &#8220;Initial commit: project setup and requirements&#8221; at the bottom" title="GitHub commits page showing the chronological commit list including &#8220;Address reviewer feedback: remove leaky feature, add cost analysis, SHAP values&#8221; at the top and &#8220;Initial commit: project setup and requirements&#8221; at the bottom" srcset="https://substackcdn.com/image/fetch/$s_!ixgb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7ebb1aa-97db-4377-9d61-f614d5a5ca1f_3248x1956.png 424w, https://substackcdn.com/image/fetch/$s_!ixgb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7ebb1aa-97db-4377-9d61-f614d5a5ca1f_3248x1956.png 848w, https://substackcdn.com/image/fetch/$s_!ixgb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7ebb1aa-97db-4377-9d61-f614d5a5ca1f_3248x1956.png 1272w, https://substackcdn.com/image/fetch/$s_!ixgb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7ebb1aa-97db-4377-9d61-f614d5a5ca1f_3248x1956.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Ten commits, phase by phase. Anyone can read the build&#8217;s full history without opening the notebook.</figcaption></figure></div><h2>How to use an LLM as your tutor</h2><h3>Apply these seven moves</h3><p>The first one is the headline. The other six assume it&#8217;s already in place.</p><p><strong>Ask for a plan first. This is the superpower.</strong> The move that turns &#8220;use AI&#8221; into &#8220;learn from AI&#8221; is asking for a plan before asking for anything else. Paste your context, paste your goal, paste any constraint you can think of, then ask for a multi-phase plan with checkpoints. <strong>It works for far more than ML:</strong> a feature spec, a competitor breakdown, a backend system you want to understand, a cooking technique, a workout program, a Spanish grammar topic you&#8217;ve avoided for years. The plan gives you a runway and gives the LLM a frame. The first conversation in this entire build was exactly this move. Paste the Kaggle dataset and the PM context, get a 7-phase plan back. Every other technique below assumes the plan exists.</p><p><strong>Drop a screenshot before you describe.</strong> The LLM reads UI state, not just text.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PTHW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F653e1200-7ea7-494e-9467-e9af8d6fba4e_3248x1956.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PTHW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F653e1200-7ea7-494e-9467-e9af8d6fba4e_3248x1956.png 424w, https://substackcdn.com/image/fetch/$s_!PTHW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F653e1200-7ea7-494e-9467-e9af8d6fba4e_3248x1956.png 848w, https://substackcdn.com/image/fetch/$s_!PTHW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F653e1200-7ea7-494e-9467-e9af8d6fba4e_3248x1956.png 1272w, https://substackcdn.com/image/fetch/$s_!PTHW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F653e1200-7ea7-494e-9467-e9af8d6fba4e_3248x1956.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PTHW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F653e1200-7ea7-494e-9467-e9af8d6fba4e_3248x1956.png" width="1456" height="877" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/653e1200-7ea7-494e-9467-e9af8d6fba4e_3248x1956.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:877,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:909817,&quot;alt&quot;:&quot;Claude.ai response titled &#8220;Perfect &#8212; that looks exactly right!&#8221; identifying Python 3.13.3 from a VS Code screenshot and noting potential xgboost compatibility&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/195446977?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F653e1200-7ea7-494e-9467-e9af8d6fba4e_3248x1956.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Claude.ai response titled &#8220;Perfect &#8212; that looks exactly right!&#8221; identifying Python 3.13.3 from a VS Code screenshot and noting potential xgboost compatibility" title="Claude.ai response titled &#8220;Perfect &#8212; that looks exactly right!&#8221; identifying Python 3.13.3 from a VS Code screenshot and noting potential xgboost compatibility" srcset="https://substackcdn.com/image/fetch/$s_!PTHW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F653e1200-7ea7-494e-9467-e9af8d6fba4e_3248x1956.png 424w, https://substackcdn.com/image/fetch/$s_!PTHW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F653e1200-7ea7-494e-9467-e9af8d6fba4e_3248x1956.png 848w, https://substackcdn.com/image/fetch/$s_!PTHW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F653e1200-7ea7-494e-9467-e9af8d6fba4e_3248x1956.png 1272w, https://substackcdn.com/image/fetch/$s_!PTHW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F653e1200-7ea7-494e-9467-e9af8d6fba4e_3248x1956.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Claude reading the UI: &#8220;you&#8217;re running Python 3.13.3 (visible in the bottom-right corner).&#8221; No error happened yet.</figcaption></figure></div><p>In Phase 1, before any error had happened, the LLM noticed &#8220;Python 3.13.3 in the bottom-right corner&#8221; of a VS Code screenshot and flagged that one library (xgboost) might need extra handling on that version. <strong>It read the kernel selector, the toolbar, the Explorer panel.</strong> Save the typing. Paste the picture and let the model do the inspection.</p><p><strong>Treat errors as conversation, not failure.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JZ4v!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67a73ea7-1786-4b63-9945-85dcd4093b59_3248x1956.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JZ4v!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67a73ea7-1786-4b63-9945-85dcd4093b59_3248x1956.png 424w, https://substackcdn.com/image/fetch/$s_!JZ4v!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67a73ea7-1786-4b63-9945-85dcd4093b59_3248x1956.png 848w, https://substackcdn.com/image/fetch/$s_!JZ4v!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67a73ea7-1786-4b63-9945-85dcd4093b59_3248x1956.png 1272w, https://substackcdn.com/image/fetch/$s_!JZ4v!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67a73ea7-1786-4b63-9945-85dcd4093b59_3248x1956.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JZ4v!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67a73ea7-1786-4b63-9945-85dcd4093b59_3248x1956.png" width="1456" height="877" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/67a73ea7-1786-4b63-9945-85dcd4093b59_3248x1956.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:877,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1108593,&quot;alt&quot;:&quot;VS Code Jupyter notebook showing import cell and ModuleNotFoundError: No module named &#8216;pandas&#8217; in the output&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/195446977?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67a73ea7-1786-4b63-9945-85dcd4093b59_3248x1956.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="VS Code Jupyter notebook showing import cell and ModuleNotFoundError: No module named &#8216;pandas&#8217; in the output" title="VS Code Jupyter notebook showing import cell and ModuleNotFoundError: No module named &#8216;pandas&#8217; in the output" srcset="https://substackcdn.com/image/fetch/$s_!JZ4v!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67a73ea7-1786-4b63-9945-85dcd4093b59_3248x1956.png 424w, https://substackcdn.com/image/fetch/$s_!JZ4v!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67a73ea7-1786-4b63-9945-85dcd4093b59_3248x1956.png 848w, https://substackcdn.com/image/fetch/$s_!JZ4v!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67a73ea7-1786-4b63-9945-85dcd4093b59_3248x1956.png 1272w, https://substackcdn.com/image/fetch/$s_!JZ4v!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67a73ea7-1786-4b63-9945-85dcd4093b59_3248x1956.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The error every Python beginner sees at least once.</figcaption></figure></div><p>When <code>import pandas as pd</code> returned <code>ModuleNotFoundError: No module named &#8216;pandas&#8217;</code>, the response wasn&#8217;t &#8220;you broke it.&#8221; <strong>It was a metaphor and a fix.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tFQ2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb5227ae-81f5-4707-9b23-6cbb7b3ac386_3248x1956.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tFQ2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb5227ae-81f5-4707-9b23-6cbb7b3ac386_3248x1956.png 424w, https://substackcdn.com/image/fetch/$s_!tFQ2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb5227ae-81f5-4707-9b23-6cbb7b3ac386_3248x1956.png 848w, https://substackcdn.com/image/fetch/$s_!tFQ2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb5227ae-81f5-4707-9b23-6cbb7b3ac386_3248x1956.png 1272w, https://substackcdn.com/image/fetch/$s_!tFQ2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb5227ae-81f5-4707-9b23-6cbb7b3ac386_3248x1956.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tFQ2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb5227ae-81f5-4707-9b23-6cbb7b3ac386_3248x1956.png" width="1456" height="877" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cb5227ae-81f5-4707-9b23-6cbb7b3ac386_3248x1956.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:877,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:921705,&quot;alt&quot;:&quot;Claude.ai response titled &#8220;Classic beginner issue &#8212; easy fix!&#8221; explaining that the kernel uses a different Python and using the metaphor of installing apps on someone else&#8217;s phone&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/195446977?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb5227ae-81f5-4707-9b23-6cbb7b3ac386_3248x1956.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Claude.ai response titled &#8220;Classic beginner issue &#8212; easy fix!&#8221; explaining that the kernel uses a different Python and using the metaphor of installing apps on someone else&#8217;s phone" title="Claude.ai response titled &#8220;Classic beginner issue &#8212; easy fix!&#8221; explaining that the kernel uses a different Python and using the metaphor of installing apps on someone else&#8217;s phone" srcset="https://substackcdn.com/image/fetch/$s_!tFQ2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb5227ae-81f5-4707-9b23-6cbb7b3ac386_3248x1956.png 424w, https://substackcdn.com/image/fetch/$s_!tFQ2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb5227ae-81f5-4707-9b23-6cbb7b3ac386_3248x1956.png 848w, https://substackcdn.com/image/fetch/$s_!tFQ2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb5227ae-81f5-4707-9b23-6cbb7b3ac386_3248x1956.png 1272w, https://substackcdn.com/image/fetch/$s_!tFQ2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb5227ae-81f5-4707-9b23-6cbb7b3ac386_3248x1956.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The phone-apps metaphor. One line of plain English flips the error from blocker to lesson.</figcaption></figure></div><p>&#8220;The libraries are installed, but the notebook&#8217;s kernel is using a different Python than the one where we installed them. <strong>Think of it like installing apps on your phone but trying to run them on someone else&#8217;s phone.&#8221;</strong> Then a one-line install fix and a &#8220;restart the kernel&#8221; instruction. Paste the full error verbatim. Ask for the explanation, not just the fix.</p><p><strong>Ask for per-line comments on every code block.</strong> &#8220;Rewrite this snippet with a comment on every single line. I want it to read like a tutorial when I open the file next week.&#8221; Those comments became my study notes. <strong>They&#8217;re also the lines I&#8217;ll quote when someone asks how the code works six months later.</strong> The pattern is portable: any AI-generated artifact (SQL, config file, spec doc) can be made to explain itself line by line.</p><p><strong>Ask the same question three different ways.</strong> The LLM doesn&#8217;t get frustrated. &#8220;Explain this like I&#8217;ve never seen code.&#8221; &#8220;Now as a PM, not an engineer.&#8221; &#8220;Now with a real-world analogy.&#8221; <strong>Three takes on the same concept.</strong> Keep the one that lands.</p><p><strong>Push back when the plan misses something.</strong> The original plan in this build skipped GitHub versioning entirely. Phase 1 set everything up locally with no remote backup. I stopped mid-phase, said so plainly, and the plan adjusted immediately (&#8221;Great instinct, that&#8217;s exactly what real developers do&#8221;). <strong>You always know your context better than the LLM does.</strong> When a gap shows up, name it. The LLM has no ego about being wrong; it integrates the correction without friction.</p><p><strong>One warning: when you say &#8220;I&#8217;m a beginner,&#8221; the LLM may oversimplify.</strong> It might skip edge cases, skip error handling, or give a version that works for the tutorial but wouldn&#8217;t hold up in production. <strong>That&#8217;s exactly why the second-opinion session above isn&#8217;t optional.</strong> One session teaches you, a second session audits what you learned. Treat them as a pair, not as alternatives.</p><h3>The felt experience: what changed for me</h3><p>Two observations on what working this way actually feels like, hour after hour:</p><ul><li><p><strong>The encouragement is real.</strong> When the LLM says &#8220;great instinct&#8221; or &#8220;you caught that yourself before I even explained it fully,&#8221; it&#8217;s flagging a moment when you did something a beginner wouldn&#8217;t normally do. The recognition isn&#8217;t decorative. Over the course of an evening&#8217;s focused build, those moments add up to a low-grade momentum that&#8217;s hard to get from a textbook or a video course.</p></li><li><p><strong>You can reframe any output in any direction.</strong> &#8220;Read this output like a PM&#8221; worked dozens of times in this build. The same numbers land completely differently depending on the lens: raw accuracy versus retention budget impact versus board-ready story. The LLM switches frames on request, and the second framing is usually the one your team will actually understand.</p></li></ul><p>What this style of learning quietly removes that traditional self-taught paths never could: <strong>the loneliness of being stuck, and the rigidity of pre-recorded explanations.</strong></p><div><hr></div><h2>What AI changes about learning</h2><p>Step back from the build for a moment. One PM, one project, one evening. <strong>The bigger story is what&#8217;s actually different about learning today</strong>, anchored in the same person trying to learn the same kind of thing, ten years apart.</p><h3>The contrast: same brain, ten years apart</h3><p><strong>Ten years ago.</strong> A 30-hour Udemy course bought on a whim, half-watched in evenings. Stack Overflow for the parts that broke, YouTube comments for the parts that confused. <strong>No one to ask the obvious dumb question.</strong> No one to translate the textbook into plain English. No one to hold the rope when a side project stalled out. Most people who started never finished. Most who finished couldn&#8217;t transfer what they learned to their actual job.</p><p><strong>This year.</strong> A one-year program at the Sorbonne, evening classes alongside a full-time PM job. <strong>The course itself was good.</strong> But the actual learning happened in a different place than the diploma suggested it would.</p><p>I recorded every lecture, transcribed the audio, and pasted the transcripts into Gemini for cleaner notes with the gaps filled in. Once a unit was done, I dropped everything into NotebookLM and let it generate a podcast and a slide deck to replay on the commute, in the gym, between meetings. And through all of it, I kept a continuous conversation going with Gemini: questions about the lecture content, metaphors that helped a hard concept land, code snippets explained line by line, deeper discussions hours after the actual instructor had gone home. **A 24/7 patient tutor in the pocket.**</p><p>The diploma was the scaffolding. <strong>The AI was the actual classroom.</strong></p><h3>The instructor&#8217;s new job</h3><p>This isn&#8217;t an argument that AI replaces teachers. The instructor still does work that AI can&#8217;t. <strong>They tell you what&#8217;s possible</strong>, including the things AI won&#8217;t volunteer because you didn&#8217;t know to ask. <strong>They give you the principles</strong> you need to challenge AI output. <strong>They catch the leaks</strong> (in this build&#8217;s case, a literal data leakage in the model) that you&#8217;d miss because you don&#8217;t yet know leaks exist.</p><p>The four-minute mile is the parallel that fits here. On May 6, 1954, <a href="https://en.wikipedia.org/wiki/Four-minute_mile">Roger Bannister ran a mile in under four minutes</a>, something the medical community genuinely believed was physically impossible. Within a year, dozens of runners broke the same barrier. <strong>Knowing something is possible changes what people attempt.</strong> A good instructor today is mostly in the business of expanding what their students believe is possible, and trusting AI to handle the parts that used to require lectures.</p><p>One last thing. I&#8217;m joining the training team at the Sorbonne on the PM side after this year. <strong>Knowing every future student will have a 24/7 patient tutor in their pocket will probably change how I teach.</strong> More time spent on what AI can&#8217;t do (naming what&#8217;s possible, framing real problems, defending judgment calls, holding the rope when a student is stuck on something that has no clean answer) and less on what it now does for free. The job description of &#8220;instructor&#8221; is being rewritten in real time, and getting to be on both sides of that change at the same moment is <strong>one of the strangest and most interesting things happening in education right now.</strong></p><div><hr></div><h2>Start your first project this evening</h2><p>The bar to start has never been lower. <strong>One dataset, one LLM chat session, one question: &#8220;give me a beginner-friendly plan.&#8221;</strong></p><p>Don&#8217;t do this for the joy of learning. <strong>Do it the next time a real question lands on your desk</strong>, the kind that would normally turn into a ticket and three weeks of waiting for the data team. Why are users dropping off, what&#8217;s driving conversion, where the support tickets are spiking, which features correlate with retention, which support categories are growing fastest. Pull the export yourself. Ctrl+A, Ctrl+C. Open an LLM chat, not a coding assistant. Paste it in along with what you&#8217;re trying to figure out. Ask for a beginner-friendly plan. Spend an evening on it. You probably won&#8217;t ship the analysis. <strong>You&#8217;ll walk into the next meeting with sharper questions than the people still waiting in the queue.</strong></p><p>The public repo for this build: <a href="https://github.com/adamfaik/churn-prediction">github.com/adamfaik/churn-prediction</a>. Everything is there if you want to see what the end looks like before you start.</p>]]></content:encoded></item><item><title><![CDATA[How I restored an old book with Claude skills]]></title><description><![CDATA[Reopened an abandoned project. Spent an afternoon thinking with Claude Code about what the book should feel like. It finished what I couldn&#8217;t. A book from 1683 changed how I work as a product manager.]]></description><link>https://www.theaithinker.com/p/how-i-restored-an-old-book-with-claude</link><guid isPermaLink="false">https://www.theaithinker.com/p/how-i-restored-an-old-book-with-claude</guid><dc:creator><![CDATA[Adam Faik]]></dc:creator><pubDate>Mon, 20 Apr 2026 11:01:00 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/a740181d-de6b-4d7c-b80b-3fd212fc0fa5_1024x731.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A few weeks ago I published a book online. A French captivity memoir from 1683, modernized and annotated, sitting quietly at <a href="https://adamfaik.github.io/captivite-mouette/">adamfaik.github.io/captivite-mouette</a>. You can read it right now, in French, from the first page of the preface to the Arabic-French lexicon at the back. <strong>I had told myself I&#8217;d finish that book when I retired.</strong> I&#8217;m still decades away from retirement.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!eJlO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28846721-ecaa-44e3-8bbb-4eae1c74c5f1_2971x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eJlO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28846721-ecaa-44e3-8bbb-4eae1c74c5f1_2971x1474.png 424w, https://substackcdn.com/image/fetch/$s_!eJlO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28846721-ecaa-44e3-8bbb-4eae1c74c5f1_2971x1474.png 848w, https://substackcdn.com/image/fetch/$s_!eJlO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28846721-ecaa-44e3-8bbb-4eae1c74c5f1_2971x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!eJlO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28846721-ecaa-44e3-8bbb-4eae1c74c5f1_2971x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eJlO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28846721-ecaa-44e3-8bbb-4eae1c74c5f1_2971x1474.png" width="2971" height="1474" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/28846721-ecaa-44e3-8bbb-4eae1c74c5f1_2971x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1474,&quot;width&quot;:2971,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2388254,&quot;alt&quot;:&quot;Alt: Homepage of the captivite-mouette book site showing the cover art, the title &#8220;Relation de la Captivit&#233; du Sieur Mo&#252;ette dans les Royaumes de Fez et de Maroc&#8221;, and a table of contents with chapter links&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/194452271?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01d8162d-54a8-4e99-9eed-df481005b57a_2996x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Alt: Homepage of the captivite-mouette book site showing the cover art, the title &#8220;Relation de la Captivit&#233; du Sieur Mo&#252;ette dans les Royaumes de Fez et de Maroc&#8221;, and a table of contents with chapter links" title="Alt: Homepage of the captivite-mouette book site showing the cover art, the title &#8220;Relation de la Captivit&#233; du Sieur Mo&#252;ette dans les Royaumes de Fez et de Maroc&#8221;, and a table of contents with chapter links" srcset="https://substackcdn.com/image/fetch/$s_!eJlO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28846721-ecaa-44e3-8bbb-4eae1c74c5f1_2971x1474.png 424w, https://substackcdn.com/image/fetch/$s_!eJlO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28846721-ecaa-44e3-8bbb-4eae1c74c5f1_2971x1474.png 848w, https://substackcdn.com/image/fetch/$s_!eJlO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28846721-ecaa-44e3-8bbb-4eae1c74c5f1_2971x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!eJlO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F28846721-ecaa-44e3-8bbb-4eae1c74c5f1_2971x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The live site. Cover, chapters, annotations, the whole thing.</figcaption></figure></div><p>Here&#8217;s the part that still surprises me. I didn&#8217;t set out to finish it. That afternoon, I was working on something else in Claude Code and it was taking its time on a slow task.</p><p>I could have scrolled Instagram. Instead, I opened a second VS Code window, pulled up the repo of that abandoned book project, and started poking around. Just to have something to do while another window was busy.</p><p>A few hours later, I had compared twenty-one chapters to the original 1683 source, added about a hundred and forty historical annotations (each one with a cited source), and published the whole thing on GitHub Pages. <strong>I had not meant to finish the book.</strong> I meant to have something to do while another task was thinking. And the work just... happened.</p><p><strong>It&#8217;s about the shift in how I work.</strong> How I went from thinking of Claude Code as &#8221;that thing engineers use for code&#8221; to seeing it as a way to run any project where the same rules have to be applied over and over. Including, apparently, a 17th-century autobiographical memoir and a slice of French-Moroccan history.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!c2xj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2071f06e-2c24-4208-8b05-aa66741ab273_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!c2xj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2071f06e-2c24-4208-8b05-aa66741ab273_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!c2xj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2071f06e-2c24-4208-8b05-aa66741ab273_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!c2xj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2071f06e-2c24-4208-8b05-aa66741ab273_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!c2xj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2071f06e-2c24-4208-8b05-aa66741ab273_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!c2xj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2071f06e-2c24-4208-8b05-aa66741ab273_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2071f06e-2c24-4208-8b05-aa66741ab273_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3612780,&quot;alt&quot;:&quot;Handmade-style infographic showing five panels in a horizontal flow: A forgotten memoir &#8594; Chat mode, no rules &#8594; Rules in a file &#8594; Three Skills, 21 chapters &#8594; Spot Skills everywhere&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/194452271?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2071f06e-2c24-4208-8b05-aa66741ab273_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Handmade-style infographic showing five panels in a horizontal flow: A forgotten memoir &#8594; Chat mode, no rules &#8594; Rules in a file &#8594; Three Skills, 21 chapters &#8594; Spot Skills everywhere" title="Handmade-style infographic showing five panels in a horizontal flow: A forgotten memoir &#8594; Chat mode, no rules &#8594; Rules in a file &#8594; Three Skills, 21 chapters &#8594; Spot Skills everywhere" srcset="https://substackcdn.com/image/fetch/$s_!c2xj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2071f06e-2c24-4208-8b05-aa66741ab273_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!c2xj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2071f06e-2c24-4208-8b05-aa66741ab273_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!c2xj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2071f06e-2c24-4208-8b05-aa66741ab273_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!c2xj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2071f06e-2c24-4208-8b05-aa66741ab273_2816x1536.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The arc of the article, at a glance.</figcaption></figure></div><p>Here&#8217;s what the rest of the article covers, in order:</p><ol><li><p><strong>The use case: a forgotten 1683 memoir.</strong> The book, what makes it worth a modern edition, and the personal story behind it.</p></li><li><p><strong>First try: how I used Gemini.</strong> The first attempt: what worked, what the tools got right, and why I stopped anyway.</p></li><li><p><strong>The click: rules in a file, not a chat.</strong> The moment the mindset shifted: from re-pasting rules into a chat to encoding them in a file.</p></li><li><p><strong>How I finished the book: four steps.</strong> Ten editorial rules defined in one morning, three Skills built in sequence, twenty-one chapters run in parallel.</p></li><li><p><strong>Spot skills in every project.</strong> The three-question test and how the same shape shows up in any product week.</p></li></ol><p>Let&#8217;s open the book.</p><div><hr></div><h2>The use case: a forgotten 1683 memoir</h2><p>I found it on <a href="https://archive.org/details/bub_gb_UPc9AAAAcAAJ">archive.org</a> one evening when I was bored and typed &#8221;livre du Maroc&#8221; into the search bar. A pretty chaotic way to stumble on a book. <strong>The title that came back stopped me cold</strong>: <em>Relation de la Captivit&#233; du Sieur Mo&#252;ette dans les Royaumes de Fez et de Maroc.</em></p><p>A Frenchman. Eleven years held captive in Morocco under Moulay Isma&#239;l. Published in 1683. I&#8217;ve always been drawn to the history of both countries, and <strong>a first-person 17th-century memoir from someone who lived both is not a book you scroll past.</strong> I <a href="https://archive.org/details/bub_gb_UPc9AAAAcAAJ">downloaded it</a> instantly.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BjxU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34547c8f-c053-4fac-914e-2988bc6a74e6_2996x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BjxU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34547c8f-c053-4fac-914e-2988bc6a74e6_2996x1474.png 424w, https://substackcdn.com/image/fetch/$s_!BjxU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34547c8f-c053-4fac-914e-2988bc6a74e6_2996x1474.png 848w, https://substackcdn.com/image/fetch/$s_!BjxU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34547c8f-c053-4fac-914e-2988bc6a74e6_2996x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!BjxU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34547c8f-c053-4fac-914e-2988bc6a74e6_2996x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BjxU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34547c8f-c053-4fac-914e-2988bc6a74e6_2996x1474.png" width="1456" height="716" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/34547c8f-c053-4fac-914e-2988bc6a74e6_2996x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:716,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:759547,&quot;alt&quot;:&quot;The archive.org viewer showing the scanned 1683 title page of the Mo&#252;ette memoir, with 17th-century typography and the long-s character&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/194452271?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34547c8f-c053-4fac-914e-2988bc6a74e6_2996x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The archive.org viewer showing the scanned 1683 title page of the Mo&#252;ette memoir, with 17th-century typography and the long-s character" title="The archive.org viewer showing the scanned 1683 title page of the Mo&#252;ette memoir, with 17th-century typography and the long-s character" srcset="https://substackcdn.com/image/fetch/$s_!BjxU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34547c8f-c053-4fac-914e-2988bc6a74e6_2996x1474.png 424w, https://substackcdn.com/image/fetch/$s_!BjxU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34547c8f-c053-4fac-914e-2988bc6a74e6_2996x1474.png 848w, https://substackcdn.com/image/fetch/$s_!BjxU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34547c8f-c053-4fac-914e-2988bc6a74e6_2996x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!BjxU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34547c8f-c053-4fac-914e-2988bc6a74e6_2996x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Found on <a href="https://archive.org/details/bub_gb_UPc9AAAAcAAJ">archive.org</a>. The original title page, archaic typography included.</figcaption></figure></div><p>The first page was almost unreadable. Not just old French. Pre-1800 French, with the long-s (&#383;) instead of s, and spellings and abbreviations that make your eyes bounce off the page after two sentences. I gave up after three pages.</p><p>A week later I tried again, and something strange happened. <strong>By the end of chapter one I was reading it almost normally.</strong> Your brain does an involuntary translation once you&#8217;ve seen enough of the pattern. It&#8217;s a little like those well-known scrambled-letter paragraphs where the first and last letters are right and everything in the middle is a mess. Same phenomenon, slower setup.</p><p>I finished the book over a long weekend. <strong>Two things hit me.</strong></p><p>The first was the modernity of it. Mo&#252;ette is talking, in 1683, about things that still feel recognizable in 2026. The politics of North Africa. The economics of trans-Mediterranean trade. The porous borders of belief and identity. <strong>The names change. The shape of the conversations doesn&#8217;t.</strong> That&#8217;s the part you never get from a history textbook. Read through someone&#8217;s lived experience and the whole period comes alive from the inside. You don&#8217;t learn about the 17th century. You sit next to someone who lived it.</p><p>The second was that Mo&#252;ette is a weirder narrator than you&#8217;d expect. He was taken captive in the 1670s and then decided, somewhere along the way, to treat his captivity as fieldwork. <strong>He saw himself as an observer.</strong> He believed France and Morocco were eventually going to have to figure out how to talk to each other, and he wanted to come back with something useful for that conversation. A kind of self-appointed diplomat, writing notes in chains. That&#8217;s a strange posture to hold, and it&#8217;s the reason the book is as good as it is.</p><p>And then there&#8217;s the personal layer, which is the part I almost kept to myself. I grew up in Morocco. I moved to France to study and then to work. Mo&#252;ette did the reverse trip, involuntarily, in 1670. I&#8217;m not going to overstate the parallel (I&#8217;m not, to be clear, a captive in France, thank you for asking), but <strong>reading his memoir felt like meeting someone who made my exact trajectory 350 years earlier, in the opposite direction.</strong> That&#8217;s why the book kept tugging at me months after I&#8217;d finished it.</p><p>Here&#8217;s what I started thinking. A book like this deserves more than a scan sitting quietly on archive.org, smelling of basement. A modernized French edition is the minimum. Past that, it deserves a bande dessin&#233;e, a Netflix series, and honestly a Scorsese film, but I&#8217;m willing to negotiate. <strong>It&#8217;s a tight, weird, human account of a period most of us only ever learn in abstractions.</strong></p><p>I checked Amazon. <strong>Nobody had made a modern edition.</strong> If the book was going to get one, I was going to have to do it myself.</p><div><hr></div><h2>First try: how I used Gemini</h2><h3>First attempt: chapters one by one</h3><p>My first attempt was months earlier, and it was all done in Gemini. I&#8217;d open the PDF, copy a page, paste it into the chat, and ask for a modern French transcription. Genuinely, I did not expect this to work.</p><p>The first time it did, I was a little stunned. <strong>Even with archaic spellings and garbled OCR in the source, Gemini came back with readable, well-formed paragraphs.</strong> I kept going, chapter by chapter, pushing several pages at a time thanks to the big context window.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qO8c!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b2014b7-c0d9-4e45-a50c-7ef53c5f1612_2996x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qO8c!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b2014b7-c0d9-4e45-a50c-7ef53c5f1612_2996x1474.png 424w, https://substackcdn.com/image/fetch/$s_!qO8c!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b2014b7-c0d9-4e45-a50c-7ef53c5f1612_2996x1474.png 848w, https://substackcdn.com/image/fetch/$s_!qO8c!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b2014b7-c0d9-4e45-a50c-7ef53c5f1612_2996x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!qO8c!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b2014b7-c0d9-4e45-a50c-7ef53c5f1612_2996x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qO8c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b2014b7-c0d9-4e45-a50c-7ef53c5f1612_2996x1474.png" width="1456" height="716" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1b2014b7-c0d9-4e45-a50c-7ef53c5f1612_2996x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:716,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:407438,&quot;alt&quot;:&quot;Gemini chat interface showing a chapter of the 1683 memoir being transcribed to modern French, with the archaic source text visible in the prompt&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/194452271?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b2014b7-c0d9-4e45-a50c-7ef53c5f1612_2996x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Gemini chat interface showing a chapter of the 1683 memoir being transcribed to modern French, with the archaic source text visible in the prompt" title="Gemini chat interface showing a chapter of the 1683 memoir being transcribed to modern French, with the archaic source text visible in the prompt" srcset="https://substackcdn.com/image/fetch/$s_!qO8c!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b2014b7-c0d9-4e45-a50c-7ef53c5f1612_2996x1474.png 424w, https://substackcdn.com/image/fetch/$s_!qO8c!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b2014b7-c0d9-4e45-a50c-7ef53c5f1612_2996x1474.png 848w, https://substackcdn.com/image/fetch/$s_!qO8c!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b2014b7-c0d9-4e45-a50c-7ef53c5f1612_2996x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!qO8c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b2014b7-c0d9-4e45-a50c-7ef53c5f1612_2996x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Gemini chat, one chapter at a time. Each chat its own island.</figcaption></figure></div><p>The result was a working first pass. Chapter by chapter, Gemini turned the archaic French into readable modern French, formatted as markdown. Each chapter came out as a structured file: headings, paragraphs, footnote markers in place.</p><p>Not perfect. There were omissions and meaning drifts I&#8217;d only discover much later. But <strong>it was a genuine starting point. A folder of modernized text, ready to become a book.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Yqpf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5109286-c08e-4759-9269-0f1b0d59e8d0_2996x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Yqpf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5109286-c08e-4759-9269-0f1b0d59e8d0_2996x1474.png 424w, https://substackcdn.com/image/fetch/$s_!Yqpf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5109286-c08e-4759-9269-0f1b0d59e8d0_2996x1474.png 848w, https://substackcdn.com/image/fetch/$s_!Yqpf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5109286-c08e-4759-9269-0f1b0d59e8d0_2996x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!Yqpf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5109286-c08e-4759-9269-0f1b0d59e8d0_2996x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Yqpf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5109286-c08e-4759-9269-0f1b0d59e8d0_2996x1474.png" width="1456" height="716" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c5109286-c08e-4759-9269-0f1b0d59e8d0_2996x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:716,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:369495,&quot;alt&quot;:&quot;Gemini producing modernized French text in markdown format, with chapter headings and paragraphs formatted as a code block&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/194452271?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5109286-c08e-4759-9269-0f1b0d59e8d0_2996x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Gemini producing modernized French text in markdown format, with chapter headings and paragraphs formatted as a code block" title="Gemini producing modernized French text in markdown format, with chapter headings and paragraphs formatted as a code block" srcset="https://substackcdn.com/image/fetch/$s_!Yqpf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5109286-c08e-4759-9269-0f1b0d59e8d0_2996x1474.png 424w, https://substackcdn.com/image/fetch/$s_!Yqpf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5109286-c08e-4759-9269-0f1b0d59e8d0_2996x1474.png 848w, https://substackcdn.com/image/fetch/$s_!Yqpf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5109286-c08e-4759-9269-0f1b0d59e8d0_2996x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!Yqpf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5109286-c08e-4759-9269-0f1b0d59e8d0_2996x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Each chapter coming out as a clean markdown file.</figcaption></figure></div><p>The most fun part was the Arabic lexicon at the end of the book. Mo&#252;ette had included a small French / dialectal-Arabic dictionary. Not classical Arabic. Street Arabic from 17th-century Morocco. Running it through Gemini, I realized a lot of those words are still used in Moroccan darija today. <strong>A tiny time capsule of spoken language that survived 350 years.</strong></p><p>I want to be honest about what I was actually doing here. <strong>I wasn&#8217;t using Gemini because it&#8217;s &#8221;the right tool for OCR.&#8221;</strong> I was using Gemini because it was the AI I knew, and chat was the only mode I knew how to work in.</p><p>Open a tab. Write a prompt. Hope the model keeps the context. Paste a page. Paste another page. Thank the gods for the big context window. <strong>Everything I built in this phase, I built in chat mode.</strong> One long conversation per chapter. Rules re-explained in each new tab. No memory between sessions.</p><p>That worked. But it hit a ceiling I couldn&#8217;t see from inside it. Picture the whole project being held together by three hundred Gemini tabs in my favorites bar and my own willingness to keep pasting the same block of instructions into each new one.</p><h3>Use a standard tool, not custom code</h3><p>When I eventually asked Gemini how to publish the book as a website, I expected &#8221;let&#8217;s build a small React app.&#8221; Instead, Gemini pointed me at <a href="https://vitepress.dev/">VitePress</a>, a static-site framework that turns markdown files into a clean, navigable, book-shaped site. I&#8217;d never heard of VitePress. I also hadn&#8217;t asked. <strong>I was about to ask the model to build me something custom, and it quietly told me there was a standard tool for this job.</strong></p><p>That&#8217;s the lesson I keep coming back to. Before you ask an AI to vibe-code a custom thing, ask it the opposite question first:</p><blockquote><p>Is there a standard framework, library, or tool that already does this? If there is, use it.</p></blockquote><p>Most of the time, the answer is yes. A few examples I&#8217;ve hit since:</p><ul><li><p>For a <strong>book or documentation site</strong>, <a href="https://vitepress.dev/">VitePress</a> or <a href="https://docusaurus.io/">Docusaurus</a>.</p></li><li><p>For a <strong>quick internal data dashboard</strong>, <a href="https://streamlit.io/">Streamlit</a>.</p></li><li><p>For a <strong>training or course site</strong>, <a href="https://docusaurus.io/">Docusaurus</a> or <a href="https://www.mkdocs.org/">MkDocs</a>.</p></li><li><p>For an <strong>LLM prototype with a simple UI</strong>, <a href="https://www.gradio.app/">Gradio</a> or <a href="https://streamlit.io/">Streamlit</a>.</p></li><li><p>For <strong>presentation slides</strong> generated from a structured document: <a href="https://marp.app/">Marp</a> (markdown &#8594; slides), <a href="https://www.overleaf.com/learn/latex/Beamer">Beamer</a> (LaTeX &#8594; slides), or a small <a href="https://python-pptx.readthedocs.io/en/latest/">Python script</a> with <code>python-pptx</code> if you need a programmatic PowerPoint.</p></li></ul><p><strong>Off-the-shelf tools are boring.</strong> They&#8217;re also well-tested, documented, styled by people who actually care about typography, and usually fifteen minutes of setup. <strong>Custom code is seductive because the model will happily generate three hundred lines of it.</strong> Resist for a second. Ask the &#8221;is there something standard?&#8221; question. Often the answer saves you from a pile of maintenance you don&#8217;t want.</p><h3>The site build: six steps with Gemini</h3><p>Once VitePress was on the table, I asked Gemini to walk me through it. <strong>Nothing magical happened here</strong>, but the process might be useful if you&#8217;ve never set up a static-site project before.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!j09q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F013fc4c0-12d1-4204-85ab-584ecf0dc9bd_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!j09q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F013fc4c0-12d1-4204-85ab-584ecf0dc9bd_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!j09q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F013fc4c0-12d1-4204-85ab-584ecf0dc9bd_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!j09q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F013fc4c0-12d1-4204-85ab-584ecf0dc9bd_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!j09q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F013fc4c0-12d1-4204-85ab-584ecf0dc9bd_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!j09q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F013fc4c0-12d1-4204-85ab-584ecf0dc9bd_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/013fc4c0-12d1-4204-85ab-584ecf0dc9bd_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3663119,&quot;alt&quot;:&quot;Handmade-style infographic showing six numbered steps in a vertical flow: Create the repo &#8594; Set up the scaffold &#8594; Add content files &#8594; Generate a cover image &#8594; Customize the theme &#8594; Deploy to GitHub Pages&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/194452271?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F013fc4c0-12d1-4204-85ab-584ecf0dc9bd_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Handmade-style infographic showing six numbered steps in a vertical flow: Create the repo &#8594; Set up the scaffold &#8594; Add content files &#8594; Generate a cover image &#8594; Customize the theme &#8594; Deploy to GitHub Pages" title="Handmade-style infographic showing six numbered steps in a vertical flow: Create the repo &#8594; Set up the scaffold &#8594; Add content files &#8594; Generate a cover image &#8594; Customize the theme &#8594; Deploy to GitHub Pages" srcset="https://substackcdn.com/image/fetch/$s_!j09q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F013fc4c0-12d1-4204-85ab-584ecf0dc9bd_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!j09q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F013fc4c0-12d1-4204-85ab-584ecf0dc9bd_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!j09q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F013fc4c0-12d1-4204-85ab-584ecf0dc9bd_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!j09q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F013fc4c0-12d1-4204-85ab-584ecf0dc9bd_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Six steps, one afternoon.</figcaption></figure></div><p>Roughly how I did it:</p><ol><li><p><strong>Created a new empty repo</strong> on GitHub for the book project. No git-clone terminal dance. I made the repo on github.com directly, added a README from the web interface, then downloaded the repo as a ZIP when I needed the files locally.</p></li><li><p><strong>Followed VitePress&#8217;s official setup instructions</strong> with Gemini narrating them in plain French as we went. The scaffold gives you a configuration file, a home page, and a <code>docs/</code> folder where your markdown chapters live. Same idea as a Word document with a table of contents, except each chapter is its own small file.</p></li><li><p><strong>Created one markdown file per chapter</strong>, calmly, one at a time, pasting in the modernized French that Gemini had produced during the earlier chat sessions. Files named <code>preface.md</code>, <code>chapitre-1.md</code>, <code>chapitre-2.md</code>, and so on.</p></li><li><p><strong>Asked Gemini to generate a cover image</strong> for the modern edition. Something with period typography and a hint of 17th-century North Africa. It produced something decent on the second try. That became the book&#8217;s homepage art.</p></li><li><p><strong>Asked Gemini to help adjust the VitePress theme</strong> so the site felt closer to the book&#8217;s period. Historical serif fonts that are still readable on screen. A slightly warmer palette than the default. A navigation sidebar with the chapters in order. I described the mood (&#8221;old paper, candle light, but readable on a 2024 laptop&#8221;) and Gemini produced a CSS file that matched it reasonably well.</p></li><li><p><strong>Deployed to GitHub Pages</strong>, again with Gemini&#8217;s instructions, which is where I hit a small hiccup. GitHub Pages will happily render your README as the homepage by default, not your VitePress build. You have to flip a setting in the repo&#8217;s Pages tab to tell it to use a GitHub Actions workflow instead. Fifteen minutes, not fifteen seconds, but once flipped it stayed flipped.</p></li></ol><p><strong>By the end of an afternoon, I had a private, working, scrolling book-shaped site.</strong> A third of the chapters modernized. A cover image. A period-appropriate theme. A deploy pipeline. Not published publicly, but running.</p><h3>The stall: out of time and no plan</h3><p>And then, for a few reasons, I stopped.</p><p>The first reason was the content itself. Mo&#252;ette is a 17th-century Catholic writing about people he considers his enemies, and the vocabulary shows it. <strong>I didn&#8217;t want to push something into the world without knowing how to handle the parts that would land badly.</strong></p><p>The second reason is more boring. I ran out of time and momentum. I had a decent VitePress scaffolding, a cover, maybe a third of the chapters done, and no clear path to the finish line.</p><p>The twenty pieces left to modernize and review felt like a lot of evening hours, and not one of them felt especially fun. <strong>I told myself I&#8217;d come back to it when I retired.</strong> Then I closed the tab.</p><p>It sat there for months.</p><p>Looking back, stopping was the right call. If I&#8217;d kept grinding through chapter-by-chapter pastes in Gemini, I&#8217;d have spent weeks on something that eventually took an afternoon. The problem wasn&#8217;t the effort. It was the shape of work. <strong>I didn&#8217;t even know skills were a thing.</strong></p><p>Leaving the project in a drawer meant I came back to it after I&#8217;d understood something new. <strong>Put it down. Let your understanding catch up. Then open it again.</strong></p><div><hr></div><h2>The click: rules in a file, not a chat</h2><p>Back to the afternoon. Second VS Code window open, abandoned repo loaded, I typed a request. Something like: &#8221;can you compare this modernized chapter to the original 1683 source and tell me what went wrong?&#8221; <strong>Claude Code read both files, thought for a minute, and came back with a list of differences.</strong> Missing paragraphs. Odd word choices. A few proper nouns spelled three different ways across the chapter.</p><p>That alone was useful. But while I was reading the output, a smaller thought hit me: I&#8217;m going to want to do this exact thing on the next chapter. And the one after that. With the same rules.</p><p>In Gemini, that would have meant opening a new chat, re-pasting the rules, re-explaining the context, every time. <strong>I have a folder of three hundred bookmarked Gemini conversations</strong> that exists exactly so I can find the rules I wrote down somewhere and paste them into the new chat. That&#8217;s a lot of effort for something that&#8217;s really just saying &#8221;apply these rules.&#8221;</p><p>What Claude Code let me do instead was create a file. A small markdown file, in a folder called <code>.claude/skills/</code>, with a name and a short description and the rules written out. <strong>Once that file existed, I could type </strong><code>/review-chapter chapitre-2</code><strong> and Claude Code would just... apply the rules.</strong> No re-pasting. No re-explaining. The same behavior every time.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2I64!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff31c997a-0bc6-46c3-a245-699e98aa9534_2996x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2I64!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff31c997a-0bc6-46c3-a245-699e98aa9534_2996x1474.png 424w, https://substackcdn.com/image/fetch/$s_!2I64!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff31c997a-0bc6-46c3-a245-699e98aa9534_2996x1474.png 848w, https://substackcdn.com/image/fetch/$s_!2I64!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff31c997a-0bc6-46c3-a245-699e98aa9534_2996x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!2I64!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff31c997a-0bc6-46c3-a245-699e98aa9534_2996x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2I64!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff31c997a-0bc6-46c3-a245-699e98aa9534_2996x1474.png" width="1456" height="716" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f31c997a-0bc6-46c3-a245-699e98aa9534_2996x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:716,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:489745,&quot;alt&quot;:&quot;VS Code editor showing the contents of review-chapter SKILL.md, including the frontmatter with name and description, and the structured instructions for the Skill&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/194452271?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff31c997a-0bc6-46c3-a245-699e98aa9534_2996x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="VS Code editor showing the contents of review-chapter SKILL.md, including the frontmatter with name and description, and the structured instructions for the Skill" title="VS Code editor showing the contents of review-chapter SKILL.md, including the frontmatter with name and description, and the structured instructions for the Skill" srcset="https://substackcdn.com/image/fetch/$s_!2I64!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff31c997a-0bc6-46c3-a245-699e98aa9534_2996x1474.png 424w, https://substackcdn.com/image/fetch/$s_!2I64!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff31c997a-0bc6-46c3-a245-699e98aa9534_2996x1474.png 848w, https://substackcdn.com/image/fetch/$s_!2I64!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff31c997a-0bc6-46c3-a245-699e98aa9534_2996x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!2I64!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff31c997a-0bc6-46c3-a245-699e98aa9534_2996x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A skill is just a markdown file. Name, description, rules.</figcaption></figure></div><p>The difference isn&#8217;t the AI. It&#8217;s the container. A rule typed into a chat window lives exactly as long as that chat window is open. <strong>A rule written into a file outlives the conversation.</strong> It travels with the repo. It applies the same way next month as it does today.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tXYy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb892e00-516e-4c23-b02f-5f716db18ba7_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tXYy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb892e00-516e-4c23-b02f-5f716db18ba7_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!tXYy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb892e00-516e-4c23-b02f-5f716db18ba7_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!tXYy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb892e00-516e-4c23-b02f-5f716db18ba7_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!tXYy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb892e00-516e-4c23-b02f-5f716db18ba7_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tXYy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb892e00-516e-4c23-b02f-5f716db18ba7_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/db892e00-516e-4c23-b02f-5f716db18ba7_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3422752,&quot;alt&quot;:&quot;Handmade-style infographic comparing a one-off prompt (rule disappears after the chat) with a Skill (rule lives in a file and gets reused across inputs)&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/194452271?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb892e00-516e-4c23-b02f-5f716db18ba7_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Handmade-style infographic comparing a one-off prompt (rule disappears after the chat) with a Skill (rule lives in a file and gets reused across inputs)" title="Handmade-style infographic comparing a one-off prompt (rule disappears after the chat) with a Skill (rule lives in a file and gets reused across inputs)" srcset="https://substackcdn.com/image/fetch/$s_!tXYy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb892e00-516e-4c23-b02f-5f716db18ba7_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!tXYy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb892e00-516e-4c23-b02f-5f716db18ba7_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!tXYy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb892e00-516e-4c23-b02f-5f716db18ba7_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!tXYy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb892e00-516e-4c23-b02f-5f716db18ba7_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Rules in a prompt evaporate. Rules in a file stick around.</figcaption></figure></div><p>That was the click. I wasn&#8217;t writing a prompt anymore. <strong>I was writing a rule.</strong> The rule lived in a file. The file lived in the repo. Next week, next month, next year, the rule would still be there, applying itself consistently to whatever chapter I pointed it at.</p><p>That&#8217;s the thesis of this article, and I&#8217;ll say it plainly: <strong>any project you&#8217;d run on a whiteboard can be run in a repo.</strong> Not just code. Any project where the same rules have to get applied to multiple inputs. A book. A stack of stakeholder updates. A folder of user-interview transcripts. A weekly research synthesis. <strong>If you&#8217;ve ever pasted the same block of context into a fresh chat window twice, you&#8217;ve hit the shape of work that Skills solve.</strong></p><div><hr></div><h2>How I finished the book: four steps</h2><p>Once the mindset shifted, everything else followed in sequence. <strong>Four steps, each one unlocking the next.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!G09L!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c00eda3-e94c-40c1-9d03-121333310720_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!G09L!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c00eda3-e94c-40c1-9d03-121333310720_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!G09L!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c00eda3-e94c-40c1-9d03-121333310720_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!G09L!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c00eda3-e94c-40c1-9d03-121333310720_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!G09L!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c00eda3-e94c-40c1-9d03-121333310720_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!G09L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c00eda3-e94c-40c1-9d03-121333310720_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3c00eda3-e94c-40c1-9d03-121333310720_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3968973,&quot;alt&quot;:&quot;Handmade-style infographic showing four numbered boxes in a horizontal flow: Define rules &#8594; Build Skills &#8594; Run in parallel &#8594; Ship with confidence&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/194452271?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c00eda3-e94c-40c1-9d03-121333310720_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Handmade-style infographic showing four numbered boxes in a horizontal flow: Define rules &#8594; Build Skills &#8594; Run in parallel &#8594; Ship with confidence" title="Handmade-style infographic showing four numbered boxes in a horizontal flow: Define rules &#8594; Build Skills &#8594; Run in parallel &#8594; Ship with confidence" srcset="https://substackcdn.com/image/fetch/$s_!G09L!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c00eda3-e94c-40c1-9d03-121333310720_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!G09L!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c00eda3-e94c-40c1-9d03-121333310720_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!G09L!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c00eda3-e94c-40c1-9d03-121333310720_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!G09L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c00eda3-e94c-40c1-9d03-121333310720_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Define rules, build Skills, run in parallel, ship with confidence.</figcaption></figure></div><h3>Define your rules once</h3><p>Before writing any Skill, I needed to know what the rules actually were. I had a vague sense of what the modernization should feel like: preserve Mo&#252;ette&#8217;s voice, handle the old typography, keep the unusual words where they belonged. <strong>A feeling isn&#8217;t a rule, and a rule you can&#8217;t write down in one sentence can&#8217;t live in a skill file.</strong></p><p>So Claude Code and I spent a morning doing something very simple. <strong>One question at a time, with options.</strong></p><p>A typical exchange looked like this:</p><blockquote><p><strong>Claude Code</strong>: For the author&#8217;s voice, which of these three feels right?<br>(A) Keep the original phrasing exactly, even when archaic.<br>(B) Allow light rephrasing for clarity, but preserve personal interjections and hedging.<br>(C) Modernize fully for readability, voice can drift.</p><p><strong>Me:</strong> B. If he says &#8221;je ne sais combien de d&#233;serts&#8221;, that stays. It never becomes &#8221;de nombreux d&#233;serts&#8221;.</p><p><strong>Claude Code:</strong> Got it. Locking that as rule #1: voice preservation, light rephrasing allowed, personal interjections and hedges always kept.</p></blockquote><p>That&#8217;s the pattern. <strong>One question, 2&#8211;3 concrete options, pick one, lock it.</strong> Repeat until you have a list.</p><p>Try it the opposite way and you&#8217;ll freeze. I know this because I&#8217;ve frozen. &#8221;What are your editorial rules?&#8221; is an impossible question. &#8221;Given this paragraph, would you prefer A, B, or C?&#8221; is a simple question. <strong>Options force judgment. Judgment produces rules.</strong></p><p><strong>By the end of the morning, I had ten.</strong> Three of them took real back-and-forth.</p><ul><li><p><strong>Voice preservation</strong> was first. The reason it took ten minutes, not two, is the example I had to nail down: &#8221;je ne sais combien de d&#233;serts&#8221; can&#8217;t become &#8221;de nombreux d&#233;serts.&#8221; That hedged, slightly shy way of describing an overwhelming thing is who Mo&#252;ette is as a narrator. Smooth it out and you lose the person.</p></li><li><p><strong>Handling omissions.</strong> Gemini&#8217;s first pass had quietly left some paragraphs out. The question: reintegrate them silently (A), add editorial brackets to signal they&#8217;d been restored (B), or leave the gaps and note them in a footnote (C). I picked A. Mo&#252;ette wrote those paragraphs. They belong in the text. An editorial bracket interrupts the reading experience with a scholarship signal most readers didn&#8217;t ask for.</p></li><li><p><strong>Sensitive terminology</strong> was the uncomfortable one. Mo&#252;ette uses vocabulary that a 17th-century French Catholic writing about his captors would use. Options: modernize the terms (A), keep them exactly as written and contextualize via annotations (B), or remove the worst instances (C). I picked B. <strong>Changing the vocabulary would be changing the historical record.</strong> The annotations explain without excusing. I&#8217;ll come back to how this made it possible to ship.</p></li></ul><p><strong>The other seven took much less time.</strong> Some were thirty seconds: footnote format was just &#8221;which syntax does VitePress support?&#8221; Done.</p><p>Once the ten rules existed, I saved them in three places. Inside project memory (so Claude Code would always see them). Embedded inside each skill (so the skill carried the rules with it). And in a <a href="https://adamfaik.github.io/captivite-mouette/note-editeur.html">reader-facing editorial note</a> on the published site (so anyone reading the book could see exactly what was done to the text). <strong>Three homes for the same rules. Each one earning its place.</strong></p><h3>The three skills: review, apply, enrich</h3><p><strong>I didn&#8217;t start by designing three Skills.</strong> I started by needing one answer: &#8220;what&#8217;s actually wrong with what Gemini produced?&#8221;</p><p>The first skill I built was <code>review-chapter</code>. I described what I wanted: read a modernized chapter, read the corresponding section of the 1683 source, compare paragraph by paragraph, flag every problem. Then I wrote the skill.</p><p>I ran it on the preface. <strong>The output was immediately useful and immediately humbling.</strong> Twelve instances where Mo&#252;ette&#8217;s personal voice had been smoothed away. The exact sentence I&#8217;d noticed (&#8221;je ne sais combien de d&#233;serts&#8221; quietly rewritten as &#8221;de nombreux d&#233;serts&#8221;) was flagged, with the source passage and a suggested fix.</p><p>I ran it on chapter 1. Same categories: omissions, meaning shifts, OCR artifacts, proper nouns spelled inconsistently. <strong>I had a diagnosis.</strong></p><p>What I didn&#8217;t have was a way to fix all of it consistently. And that&#8217;s when the connection clicked. I had just spent a morning writing ten editorial rules. Those rules were sitting in project memory. &#8221;I have a set of rules I want applied to every chapter. That&#8217;s exactly what a Skill is for.&#8221; <strong>So the second skill wrote itself out of the first.</strong> That became <code>harmonize</code>.</p><p>Running both skills across all the chapters left me with a clean text. But <strong>clean doesn&#8217;t mean alive.</strong> A modern reader hitting Mo&#252;ette&#8217;s offhand mentions of &#8221;les corsaires de Bouregreg&#8221; or &#8221;les Marabouts&#8221; or &#8221;la milice des Ren&#233;gats&#8221; gets nothing: no frame, no context, no reason to care. So a third conversation started: &#8221;what if we added a short sourced annotation at the end of each chapter?&#8221; That conversation produced <code>annotate</code>.</p><p>Three skills, each one discovered by using the previous one (browse in the <a href="https://github.com/adamfaik/captivite-mouette">GitHub repo</a>).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!q493!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09a91550-5fdc-47ed-96c7-3e74948fa5b4_2996x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!q493!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09a91550-5fdc-47ed-96c7-3e74948fa5b4_2996x1474.png 424w, https://substackcdn.com/image/fetch/$s_!q493!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09a91550-5fdc-47ed-96c7-3e74948fa5b4_2996x1474.png 848w, https://substackcdn.com/image/fetch/$s_!q493!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09a91550-5fdc-47ed-96c7-3e74948fa5b4_2996x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!q493!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09a91550-5fdc-47ed-96c7-3e74948fa5b4_2996x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!q493!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09a91550-5fdc-47ed-96c7-3e74948fa5b4_2996x1474.png" width="1456" height="716" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/09a91550-5fdc-47ed-96c7-3e74948fa5b4_2996x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:716,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:342435,&quot;alt&quot;:&quot;GitHub directory view showing the .claude/skills folder with three subfolders (annotate, harmonize, review-chapter), each containing a SKILL.md file&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/194452271?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09a91550-5fdc-47ed-96c7-3e74948fa5b4_2996x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="GitHub directory view showing the .claude/skills folder with three subfolders (annotate, harmonize, review-chapter), each containing a SKILL.md file" title="GitHub directory view showing the .claude/skills folder with three subfolders (annotate, harmonize, review-chapter), each containing a SKILL.md file" srcset="https://substackcdn.com/image/fetch/$s_!q493!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09a91550-5fdc-47ed-96c7-3e74948fa5b4_2996x1474.png 424w, https://substackcdn.com/image/fetch/$s_!q493!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09a91550-5fdc-47ed-96c7-3e74948fa5b4_2996x1474.png 848w, https://substackcdn.com/image/fetch/$s_!q493!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09a91550-5fdc-47ed-96c7-3e74948fa5b4_2996x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!q493!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09a91550-5fdc-47ed-96c7-3e74948fa5b4_2996x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Three small folders. Three markdown files. That&#8217;s the whole apparatus.</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!R9Vk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecbd11bb-2cdf-4566-b9ed-7952103cef9f_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!R9Vk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecbd11bb-2cdf-4566-b9ed-7952103cef9f_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!R9Vk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecbd11bb-2cdf-4566-b9ed-7952103cef9f_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!R9Vk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecbd11bb-2cdf-4566-b9ed-7952103cef9f_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!R9Vk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecbd11bb-2cdf-4566-b9ed-7952103cef9f_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!R9Vk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecbd11bb-2cdf-4566-b9ed-7952103cef9f_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ecbd11bb-2cdf-4566-b9ed-7952103cef9f_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3068057,&quot;alt&quot;:&quot;Handmade-style infographic showing three boxes in a row: Review (magnifying glass over document, output: Report) &#8594; Apply rules (gear pushing changes into document, output: Edits) &#8594; Enrich (book with sticky notes, output: Annotations)&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/194452271?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecbd11bb-2cdf-4566-b9ed-7952103cef9f_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Handmade-style infographic showing three boxes in a row: Review (magnifying glass over document, output: Report) &#8594; Apply rules (gear pushing changes into document, output: Edits) &#8594; Enrich (book with sticky notes, output: Annotations)" title="Handmade-style infographic showing three boxes in a row: Review (magnifying glass over document, output: Report) &#8594; Apply rules (gear pushing changes into document, output: Edits) &#8594; Enrich (book with sticky notes, output: Annotations)" srcset="https://substackcdn.com/image/fetch/$s_!R9Vk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecbd11bb-2cdf-4566-b9ed-7952103cef9f_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!R9Vk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecbd11bb-2cdf-4566-b9ed-7952103cef9f_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!R9Vk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecbd11bb-2cdf-4566-b9ed-7952103cef9f_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!R9Vk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecbd11bb-2cdf-4566-b9ed-7952103cef9f_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Each Skill produces something the next one builds on.</figcaption></figure></div><p>Here&#8217;s what each one actually does:</p><ul><li><p><code>review-chapter</code>: the diagnostic. Reads the modernized chapter, reads the corresponding section of the 1683 source, compares paragraph by paragraph. Produces a structured report across eight categories (A&#8211;H): omissions, meaning shifts, unauthorized additions, proper-noun inconsistencies, modernization inconsistencies, OCR artifacts, paragraph structure, footnote candidates. Each issue gets a location, a quoted source passage, a problem statement, and a suggested fix. The report ends with an overall grade: Good / Needs minor fixes / Needs significant rework. Read the full SKILL.md <a href="https://github.com/adamfaik/captivite-mouette/blob/main/.claude/skills/review-chapter/SKILL.md">here</a>.</p></li><li><p><code>harmonize</code>: the rules-applier. Applies all ten editorial rules using the edit tool to touch only what needs touching, never rewriting the whole file. Voice preservation, silent reintegration of omissions, proper-noun normalization, footnote discipline, paragraph-structure rules, sensitive-vocabulary preservation. All embedded in the skill itself. When I run <code>/harmonize chapitre-7</code>, it doesn&#8217;t just &#8220;modernize&#8221; the chapter. <strong>It applies the whole editorial policy.</strong> Read it <a href="https://github.com/adamfaik/captivite-mouette/blob/main/.claude/skills/harmonize/SKILL.md">here</a>.</p></li><li><p><code>annotate</code>: the one with the strictest rule. Appends a &#8221;Rep&#232;res historiques&#8221; section to each chapter with five to ten contextual notes. Each note: a brief quote from the chapter, a 3-6 sentence explanation, a cited source. <strong>Every factual claim must be verified via WebSearch before it&#8217;s written.</strong> No exceptions. If the model can&#8217;t verify something, the note either gets dropped or explicitly marked as uncertain. Academic sources preferred. The tone target is &#8221;a knowledgeable friend, not a textbook.&#8221; Read it <a href="https://github.com/adamfaik/captivite-mouette/blob/main/.claude/skills/annotate/SKILL.md">here</a>.</p></li></ul><h3>The run: 21 chapters in parallel</h3><p>Once the three Skills existed, I had to run them across the whole book. That&#8217;s 21 files: the preface, the royal privil&#232;ge, fifteen chapters, a commerce treaty, the Arabic lexicon, a geography annex. <strong>I could have run them one at a time. I didn&#8217;t.</strong></p><p>I did the first chapter in full. Ran <code>/review-chapter chapitre-1</code>, read the report, ran <code>/harmonize chapitre-1</code>, read the diff, ran <code>/annotate chapitre-1</code>, read the annotations. Then I stopped and asked myself a simple question: does this look right? It did. <strong>Then I fanned out.</strong> Claude Code launched sub-agents (parallel workers, up to eleven at a time for the annotation pass) and pointed each one at a different chapter.</p><p>The pattern is worth naming, because it stops you from blowing up a whole project on a flawed first run:</p><blockquote><p><strong>Demo one. Approve it. Then fan out.</strong></p></blockquote><p>The run itself was genuinely fast. Minutes, not hours. Here are the numbers across all 21 files:</p><ul><li><p><strong>412 insertions, 253 deletions</strong> committed across 22 files</p></li><li><p><strong>~70 footnotes</strong> added</p></li><li><p><strong>~140 sourced historical annotations</strong> written</p></li><li><p><strong>Up to 11 concurrent sub-agents</strong> during the annotation pass, 6 during review/harmonize</p></li></ul><p>I want to be honest about the timeline. The &#8221;I finished it in under an hour&#8221; line was the felt experience, not the actual clock.</p><p><strong>The run took minutes. The work took two days.</strong> That morning spent defining rules. An afternoon fixing a few mistakes. Another morning reviewing annotations, rewriting the editorial note, and publishing the site.</p><blockquote><p><strong>Skills aren&#8217;t magic. They&#8217;re leverage. The run is fast because the rules are sharp. The rules take a morning.</strong></p></blockquote><p><strong>What the annotations surfaced is the part I keep bragging about at dinners.</strong> The Republic of Bouregreg, a corsair city-state that existed between 1627 and 1668. Barbary lions, which roamed North Africa until they went extinct in the wild in 1942.</p><p>The fleurs de lys carved by French slaves into the walls of Moulay Isma&#239;l&#8217;s palace at Meknes. The Order of the Merci&#8217;s &#8220;blood vow&#8221;, a fourth monastic vow to offer oneself as a replacement for a captive who couldn&#8217;t be ransomed. I knew none of this before the <code>annotate</code> skill found it and sourced it. <strong>The annotations made the book twice as alive.</strong></p><h3>What made it shippable: values in the skill</h3><p>One of the reasons the book had sat in a private repo for months was the content itself. Some passages are genuinely uncomfortable by today&#8217;s standards. <strong>I wasn&#8217;t sure I wanted my name on a site hosting that content without some kind of frame.</strong></p><p>The <code>annotate</code> skill gave me the frame. Its job on those passages wasn&#8217;t to censor them or smooth them over. It was to contextualize them. <strong>Sourced notes. Historical framing. Scholarly context that helps a modern reader understand what they&#8217;re looking at and why it&#8217;s there.</strong> The content warning on the homepage tells readers what they&#8217;re walking into before they open the first chapter.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ri79!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba0eb81a-b63f-4ae4-af4f-91d869d7847d_2974x1468.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ri79!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba0eb81a-b63f-4ae4-af4f-91d869d7847d_2974x1468.png 424w, https://substackcdn.com/image/fetch/$s_!ri79!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba0eb81a-b63f-4ae4-af4f-91d869d7847d_2974x1468.png 848w, https://substackcdn.com/image/fetch/$s_!ri79!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba0eb81a-b63f-4ae4-af4f-91d869d7847d_2974x1468.png 1272w, https://substackcdn.com/image/fetch/$s_!ri79!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba0eb81a-b63f-4ae4-af4f-91d869d7847d_2974x1468.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ri79!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba0eb81a-b63f-4ae4-af4f-91d869d7847d_2974x1468.png" width="1456" height="719" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ba0eb81a-b63f-4ae4-af4f-91d869d7847d_2974x1468.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:719,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:619160,&quot;alt&quot;:&quot;The book site&#8217;s &#8220;Avertissement sur le contenu&#8221; page, explaining that the text preserves historically offensive terminology with scholarly context, followed by the editorial methodology&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/194452271?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba0eb81a-b63f-4ae4-af4f-91d869d7847d_2974x1468.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The book site&#8217;s &#8220;Avertissement sur le contenu&#8221; page, explaining that the text preserves historically offensive terminology with scholarly context, followed by the editorial methodology" title="The book site&#8217;s &#8220;Avertissement sur le contenu&#8221; page, explaining that the text preserves historically offensive terminology with scholarly context, followed by the editorial methodology" srcset="https://substackcdn.com/image/fetch/$s_!ri79!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba0eb81a-b63f-4ae4-af4f-91d869d7847d_2974x1468.png 424w, https://substackcdn.com/image/fetch/$s_!ri79!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba0eb81a-b63f-4ae4-af4f-91d869d7847d_2974x1468.png 848w, https://substackcdn.com/image/fetch/$s_!ri79!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba0eb81a-b63f-4ae4-af4f-91d869d7847d_2974x1468.png 1272w, https://substackcdn.com/image/fetch/$s_!ri79!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba0eb81a-b63f-4ae4-af4f-91d869d7847d_2974x1468.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The reader knows before they open the first chapter.</figcaption></figure></div><p>That combination (a content warning and annotations that explain rather than erase) was what finally made me feel ready to ship. <strong>A skill can hold values, not just rules.</strong> The whole policy lives in a file. It can be inspected. It can be argued with. That&#8217;s what I want from a system I put my name on.</p><h3>What I&#8217;d change: use <code>skill-creator</code></h3><p><strong>Only one thing.</strong> Next time, I&#8217;d open Anthropic&#8217;s <code>skill-creator</code> <a href="https://github.com/anthropics/skills/tree/main/skills/skill-creator">skill</a> before writing a single file. It&#8217;s a skill that helps you write other skills. You describe what you want, it scaffolds the folder, the SKILL.md, the frontmatter, all following current best practices. I didn&#8217;t know it existed when I built my three, so I learned the hard way, through trial and Claude Code&#8217;s diagnostic errors. It worked out fine. But if you&#8217;re about to build your first skill, <code>skill-creator</code><strong> is the shortcut I wish I&#8217;d taken.</strong></p><div><hr></div><h2>Spot skills in every project</h2><p>After the book was live, I sat down to write a stakeholder update at work and caught myself thinking: &#8221;wait, this is a skill.&#8221; Not a lightning bolt. <strong>A small, quiet &#8221;oh, this too&#8221; about a task I&#8217;d been doing the hard way for years.</strong></p><p><strong>The book didn&#8217;t teach me skills. It taught me to see them.</strong> Here&#8217;s the practical test I started applying. Three questions, in order:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sXju!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05dfc76a-241c-4608-9c62-3800a0455533_2752x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sXju!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05dfc76a-241c-4608-9c62-3800a0455533_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!sXju!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05dfc76a-241c-4608-9c62-3800a0455533_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!sXju!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05dfc76a-241c-4608-9c62-3800a0455533_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!sXju!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05dfc76a-241c-4608-9c62-3800a0455533_2752x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sXju!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05dfc76a-241c-4608-9c62-3800a0455533_2752x1536.png" width="1456" height="813" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/05dfc76a-241c-4608-9c62-3800a0455533_2752x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:813,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3327655,&quot;alt&quot;:&quot;Handmade-style infographic showing three vertically stacked boxes connected by arrows, each with a question and a side label &#8220;If yes &#8594; it&#8217;s a Skill&#8221;: Am I re-explaining the same rules over and over? / Is there a checklist living in my head I never wrote down? / Does the output need to look the same shape every time?&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/194452271?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05dfc76a-241c-4608-9c62-3800a0455533_2752x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Handmade-style infographic showing three vertically stacked boxes connected by arrows, each with a question and a side label &#8220;If yes &#8594; it&#8217;s a Skill&#8221;: Am I re-explaining the same rules over and over? / Is there a checklist living in my head I never wrote down? / Does the output need to look the same shape every time?" title="Handmade-style infographic showing three vertically stacked boxes connected by arrows, each with a question and a side label &#8220;If yes &#8594; it&#8217;s a Skill&#8221;: Am I re-explaining the same rules over and over? / Is there a checklist living in my head I never wrote down? / Does the output need to look the same shape every time?" srcset="https://substackcdn.com/image/fetch/$s_!sXju!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05dfc76a-241c-4608-9c62-3800a0455533_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!sXju!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05dfc76a-241c-4608-9c62-3800a0455533_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!sXju!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05dfc76a-241c-4608-9c62-3800a0455533_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!sXju!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05dfc76a-241c-4608-9c62-3800a0455533_2752x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Three questions. Any yes is enough.</figcaption></figure></div><ol><li><p><strong>Am I re-explaining the same rules over and over?</strong> If you&#8217;ve typed the same block of context into a fresh chat window more than twice, those rules belong in a file, not in your head.</p></li><li><p><strong>Is there a checklist living in my head that I never wrote down?</strong> The quality bar you apply before sending something, the three things you always catch, the format you always enforce. That&#8217;s a skill waiting to be written down.</p></li><li><p><strong>Does the output need to look the same shape every time?</strong> Same structure, same tone rules, same format, week after week. That&#8217;s the exact shape a skill solves.</p></li></ol><p>Applied to a product week, the list shows up fast. I wrote about one of these in detail already: <code>/customer-pulse</code>.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;0301579d-d6e0-4c89-b189-7da72888abab&quot;,&quot;caption&quot;:&quot;When I first heard about Claude skills, I dismissed them. &#8220;Custom GPTs with a different name,&#8221; I thought. Anthropic&#8217;s version of Gems. I tried one, shrugged, and moved on.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;How to build your first Claude Code skill&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:4824458,&quot;name&quot;:&quot;Adam Faik&quot;,&quot;bio&quot;:&quot;Helping product managers become AI-native builders. Join for weekly, step-by-step AI playbooks and real-world projects you can apply to your work.&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/41de16f9-51a4-4763-ba7d-dfb35429b196_1585x1585.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-04-13T11:01:42.174Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6fd3dde8-be3e-4183-8087-737f9dde9061_1024x731.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://www.theaithinker.com/p/how-to-build-your-first-claude-code&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:193361773,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:1,&quot;comment_count&quot;:0,&quot;publication_id&quot;:6132538,&quot;publication_name&quot;:&quot;The AI Thinker&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!s5nF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37afd3e1-3442-4517-94cb-068668baf9ef_1024x1024.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>That skill searches reviews, forums, and app stores for what users are saying, and returns a structured report with ranked themes, real quotes, and a &#8220;Top 3 this week&#8221; action list. If you want the step-by-step on building a skill from scratch, any Skill, that&#8217;s where to start.</p><p>The same pattern shows up across the rest of a product week:</p><ul><li><p><strong>Customer feedback synthesis.</strong> Multiple sources, grouped by theme, real quotes, source links. The rules you re-apply every time are exactly what a skill holds.</p></li><li><p><strong>Stakeholder updates.</strong> Same structure every week, same length target, same tone rules. Skill-shaped.</p></li><li><p><strong>User-interview theming.</strong> A folder of transcripts, a definition of what a good theme looks like, quote extraction with attribution. Skill-shaped.</p></li><li><p><strong>Competitor monitoring.</strong> A list of URLs, a definition of what change looks like, a weekly diff. Skill-shaped.</p></li><li><p><strong>Meeting recaps.</strong> Your team&#8217;s template, your tone rules, action items always in the same format. Skill-shaped.</p></li></ul><p><strong>Once you answer yes to one of those three questions, you&#8217;re looking at a skill.</strong> The only question is which project you want to start with.</p><div><hr></div><h2>Start with a project you already know</h2><p>The book took an afternoon to finish. The afternoon started because another task was thinking and I had a spare VS Code window. <strong>That&#8217;s the whole origin story.</strong></p><p>It&#8217;s still not finished, if I&#8217;m honest. I&#8217;d like to generate comic-book panels with Gemini Nano Banana Pro to tell Mo&#252;ette&#8217;s story visually. Maybe a short film, once video models get a bit cheaper. <strong>Another weekend, another skill.</strong></p><p><strong>Your turn.</strong> You don&#8217;t need a 17th-century book. You just need one project where you already know what good looks like, and where you&#8217;re tired of re-explaining it. Open it. Ask one question: &#8220;what rule am I re-pasting into every fresh chat?&#8221; Write it down. Put it in a file. <strong>That&#8217;s the first skill.</strong></p>]]></content:encoded></item><item><title><![CDATA[How to build your first Claude Code skill]]></title><description><![CDATA[Install Claude Code. Run a skill that searches reviews, forums, and app stores. Understand the building blocks. Build your first skill step by step.]]></description><link>https://www.theaithinker.com/p/how-to-build-your-first-claude-code</link><guid isPermaLink="false">https://www.theaithinker.com/p/how-to-build-your-first-claude-code</guid><dc:creator><![CDATA[Adam Faik]]></dc:creator><pubDate>Mon, 13 Apr 2026 11:01:42 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/6fd3dde8-be3e-4183-8087-737f9dde9061_1024x731.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>When I first heard about Claude skills, <strong>I dismissed them.</strong> &#8220;Custom GPTs with a different name,&#8221; I thought. Anthropic&#8217;s version of Gems. I tried one, shrugged, and moved on.</p><p>Then something shifted. I saw product people getting genuinely excited. Not about the concept, but about what they were building with it. So I carved out an afternoon, sat down, and actually built one from scratch. <strong>And it changed how I think about my work.</strong></p><p>The skill I built is called <code>/customer-pulse</code>. It searches the web for what real users are saying about a product (app store reviews, Trustpilot, forums, comparison articles, etc.), then produces a structured report with ranked themes, real quotes, blind spots, and concrete actions. Everything I built is in this <a href="https://github.com/adamfaik/product-feedback-skill">GitHub repo</a>. Clone it, explore it, use it for your own product.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CnST!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce47653a-d9d9-4514-8f95-8d11e058dd8b_2964x1446.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CnST!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce47653a-d9d9-4514-8f95-8d11e058dd8b_2964x1446.png 424w, https://substackcdn.com/image/fetch/$s_!CnST!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce47653a-d9d9-4514-8f95-8d11e058dd8b_2964x1446.png 848w, https://substackcdn.com/image/fetch/$s_!CnST!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce47653a-d9d9-4514-8f95-8d11e058dd8b_2964x1446.png 1272w, https://substackcdn.com/image/fetch/$s_!CnST!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce47653a-d9d9-4514-8f95-8d11e058dd8b_2964x1446.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CnST!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce47653a-d9d9-4514-8f95-8d11e058dd8b_2964x1446.png" width="1456" height="710" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ce47653a-d9d9-4514-8f95-8d11e058dd8b_2964x1446.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:710,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:547054,&quot;alt&quot;:&quot;GitHub page showing the product-feedback-skill repository with README, initial commit, and public visibility badge&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/193361773?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce47653a-d9d9-4514-8f95-8d11e058dd8b_2964x1446.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="GitHub page showing the product-feedback-skill repository with README, initial commit, and public visibility badge" title="GitHub page showing the product-feedback-skill repository with README, initial commit, and public visibility badge" srcset="https://substackcdn.com/image/fetch/$s_!CnST!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce47653a-d9d9-4514-8f95-8d11e058dd8b_2964x1446.png 424w, https://substackcdn.com/image/fetch/$s_!CnST!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce47653a-d9d9-4514-8f95-8d11e058dd8b_2964x1446.png 848w, https://substackcdn.com/image/fetch/$s_!CnST!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce47653a-d9d9-4514-8f95-8d11e058dd8b_2964x1446.png 1272w, https://substackcdn.com/image/fetch/$s_!CnST!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce47653a-d9d9-4514-8f95-8d11e058dd8b_2964x1446.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The public repo. Clone it, use it, make it yours</figcaption></figure></div><p><strong>A quick definition:</strong> a skill is a set of instructions written in plain English that lives in your project folder. When invoked, Claude reads those instructions, reads your files, uses real tools (web search, file creation, page fetching, etc.), and produces real output. Unlike a custom GPT or a Gem, <strong>it lives in your repo</strong>. You own it. You version-control it. It evolves with your project.</p><p>Here&#8217;s what we&#8217;ll go through in this article:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1Ked!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb04ca97b-2260-405f-b1ee-5cbfa8677564_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1Ked!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb04ca97b-2260-405f-b1ee-5cbfa8677564_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!1Ked!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb04ca97b-2260-405f-b1ee-5cbfa8677564_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!1Ked!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb04ca97b-2260-405f-b1ee-5cbfa8677564_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!1Ked!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb04ca97b-2260-405f-b1ee-5cbfa8677564_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1Ked!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb04ca97b-2260-405f-b1ee-5cbfa8677564_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b04ca97b-2260-405f-b1ee-5cbfa8677564_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5609789,&quot;alt&quot;:&quot;Handmade infographic showing 4 levels as a progression: Level 1 Run a Skill, Level 2 Open and Learn, Level 3 Build Your First Skill, Level 4 Go Further, each with icons and a description of the stop point.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/193361773?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb04ca97b-2260-405f-b1ee-5cbfa8677564_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Handmade infographic showing 4 levels as a progression: Level 1 Run a Skill, Level 2 Open and Learn, Level 3 Build Your First Skill, Level 4 Go Further, each with icons and a description of the stop point." title="Handmade infographic showing 4 levels as a progression: Level 1 Run a Skill, Level 2 Open and Learn, Level 3 Build Your First Skill, Level 4 Go Further, each with icons and a description of the stop point." srcset="https://substackcdn.com/image/fetch/$s_!1Ked!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb04ca97b-2260-405f-b1ee-5cbfa8677564_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!1Ked!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb04ca97b-2260-405f-b1ee-5cbfa8677564_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!1Ked!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb04ca97b-2260-405f-b1ee-5cbfa8677564_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!1Ked!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb04ca97b-2260-405f-b1ee-5cbfa8677564_2816x1536.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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><ul><li><p><strong>Level 1: Download the repo and run a skill.</strong> Get Claude Code installed, download the project, run the skill, and see a real feedback report.</p></li><li><p><strong>Level 2: Understand what skills are.</strong> Open the skill files and learn the building blocks: SKILL.md, product context, CLAUDE.md. See how skills compare to custom GPTs, NotebookLM, and saved prompts.</p></li><li><p><strong>Level 3: Build your first skill step by step.</strong> The real story: how I described my problem to Claude Code, the review process that caught 5 issues, and the iteration that turned a generic report into an actionable one.</p></li><li><p><strong>Level 4: Go further.</strong> Where to find existing skills, what MCP servers and agents are, and when skills are the wrong tool.</p></li></ul><p>Each level is self-contained. Stop at Level 1 and still walk away with a working tool. Go to Level 3 and walk away knowing how to build your own.</p><div><hr></div><h2>Why this use case</h2><p><a href="https://github.com/adamfaik/product-feedback-skill/blob/main/.claude/skills/customer-pulse/SKILL.md">Read the full skill instructions</a>. <strong>It&#8217;s plain English, no code.</strong> That file is the entire skill.</p><p>I chose feedback collection because <strong>it&#8217;s something product people will always do.</strong> No matter how much AI disrupts our work, understanding what users actually experience remains a human decision. AI can collect, synthesize, and structure the data faster. But deciding what matters is still ours.</p><p>I considered building skills for other PM tasks: PRD generation, user story refinement, sprint review preparation. I dismissed them. Not because they&#8217;re bad ideas, but because <strong>I&#8217;m genuinely unsure those artifacts will exist in the same form</strong> much longer. When AI can build a working prototype from a conversation, do we still need a 15-page specification document? Maybe the future is less specifying and more building. And maybe <strong>&#8220;building&#8221; increasingly means creating skills that do the work</strong>, which happens to be the topic of this article.</p><p>Feedback collection, though, stays. Users will always talk. <strong>The question is whether we listen fast enough.</strong></p><div><hr></div><h2>Level 1: Download the repo and run a skill</h2><p><strong>Allow about 30 minutes for this level.</strong> At the end, a full customer feedback report will be waiting in your project folder.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!etig!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25203e35-658e-4b22-bbc8-708d717f2e30_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!etig!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25203e35-658e-4b22-bbc8-708d717f2e30_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!etig!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25203e35-658e-4b22-bbc8-708d717f2e30_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!etig!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25203e35-658e-4b22-bbc8-708d717f2e30_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!etig!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25203e35-658e-4b22-bbc8-708d717f2e30_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!etig!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25203e35-658e-4b22-bbc8-708d717f2e30_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/25203e35-658e-4b22-bbc8-708d717f2e30_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5648553,&quot;alt&quot;:&quot;Handmade infographic showing 4 steps with arrows: Open your code editor, Install Claude Code, Download the project from GitHub, Run /customer-pulse and get a feedback report&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/193361773?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25203e35-658e-4b22-bbc8-708d717f2e30_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Handmade infographic showing 4 steps with arrows: Open your code editor, Install Claude Code, Download the project from GitHub, Run /customer-pulse and get a feedback report" title="Handmade infographic showing 4 steps with arrows: Open your code editor, Install Claude Code, Download the project from GitHub, Run /customer-pulse and get a feedback report" srcset="https://substackcdn.com/image/fetch/$s_!etig!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25203e35-658e-4b22-bbc8-708d717f2e30_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!etig!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25203e35-658e-4b22-bbc8-708d717f2e30_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!etig!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25203e35-658e-4b22-bbc8-708d717f2e30_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!etig!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25203e35-658e-4b22-bbc8-708d717f2e30_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"></figcaption></figure></div><h3>Step 1: Open your code editor</h3><p><strong>Open VS Code, Cursor, or any code editor</strong> that has a built-in terminal. If you don&#8217;t have one, download VS Code for free from <a href="https://code.visualstudio.com">code.visualstudio.com</a>.</p><p>Once it&#8217;s open, find the built-in terminal. In VS Code: go to <strong>Terminal &#8594; New Terminal</strong>. A panel appears at the bottom.</p><p>One tip that made a big difference for me: <strong>move the terminal panel to the right side.</strong> In VS Code, right-click the terminal header bar, select <strong>Panel Position &#8594; Right</strong>. This puts your files on the left and Claude Code on the right. Much easier to work with. I spent way too long with it at the bottom before discovering this.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!d4N2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda428683-abea-4a1a-9352-3a660aa067fb_3248x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!d4N2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda428683-abea-4a1a-9352-3a660aa067fb_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!d4N2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda428683-abea-4a1a-9352-3a660aa067fb_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!d4N2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda428683-abea-4a1a-9352-3a660aa067fb_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!d4N2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda428683-abea-4a1a-9352-3a660aa067fb_3248x1964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!d4N2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda428683-abea-4a1a-9352-3a660aa067fb_3248x1964.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/da428683-abea-4a1a-9352-3a660aa067fb_3248x1964.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:880,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:670098,&quot;alt&quot;:&quot;VS Code showing the Panel Position dropdown menu with the Right option highlighted.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/193361773?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda428683-abea-4a1a-9352-3a660aa067fb_3248x1964.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="VS Code showing the Panel Position dropdown menu with the Right option highlighted." title="VS Code showing the Panel Position dropdown menu with the Right option highlighted." srcset="https://substackcdn.com/image/fetch/$s_!d4N2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda428683-abea-4a1a-9352-3a660aa067fb_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!d4N2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda428683-abea-4a1a-9352-3a660aa067fb_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!d4N2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda428683-abea-4a1a-9352-3a660aa067fb_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!d4N2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda428683-abea-4a1a-9352-3a660aa067fb_3248x1964.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Panel Position &#8594; Right. Files on the left, AI on the right</figcaption></figure></div><h3>Step 2: Install Claude Code</h3><p><strong>So what&#8217;s Claude Code exactly?</strong> It&#8217;s an AI assistant that runs inside your terminal. Unlike ChatGPT or Gemini, it doesn&#8217;t live in a browser. <strong>It lives in your project folder.</strong> It can read your files, search the web, create documents, and run skills. Think of it as an AI colleague that sits inside your project and actually does things, not just talks about them.</p><p>One thing to know upfront: <strong>it requires a paid Anthropic plan.</strong> The Pro plan is $20/month and the Max plan is $100/month. <strong>There&#8217;s no free tier for Claude Code.</strong> It&#8217;s worth it, but it&#8217;s good to know before installing.</p><p>To install it, paste this command into the terminal and press Enter:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;7629ce05-1e4d-4723-994c-ad9d4a082d66&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">curl -fsSL https://claude.ai/install.sh | bash</code></pre></div><p>That&#8217;s it. One line. This comes straight from the <strong><a href="https://code.claude.com/docs/en/quickstart">official quickstart guide</a></strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!enPT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1baea8b-6ba4-4231-a08a-c09526896169_3248x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!enPT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1baea8b-6ba4-4231-a08a-c09526896169_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!enPT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1baea8b-6ba4-4231-a08a-c09526896169_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!enPT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1baea8b-6ba4-4231-a08a-c09526896169_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!enPT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1baea8b-6ba4-4231-a08a-c09526896169_3248x1964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!enPT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1baea8b-6ba4-4231-a08a-c09526896169_3248x1964.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a1baea8b-6ba4-4231-a08a-c09526896169_3248x1964.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:880,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:899949,&quot;alt&quot;:&quot;VS Code showing the terminal on the right with Claude Code successfully installed, version number and path displayed.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/193361773?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1baea8b-6ba4-4231-a08a-c09526896169_3248x1964.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="VS Code showing the terminal on the right with Claude Code successfully installed, version number and path displayed." title="VS Code showing the terminal on the right with Claude Code successfully installed, version number and path displayed." srcset="https://substackcdn.com/image/fetch/$s_!enPT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1baea8b-6ba4-4231-a08a-c09526896169_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!enPT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1baea8b-6ba4-4231-a08a-c09526896169_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!enPT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1baea8b-6ba4-4231-a08a-c09526896169_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!enPT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1baea8b-6ba4-4231-a08a-c09526896169_3248x1964.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">One command. Claude Code is installed</figcaption></figure></div><p><strong>Now here&#8217;s something that trips up a LOT of people</strong>, and I want to save you the confusion. The terminal has two modes. Right now it&#8217;s in <strong>bash mode</strong>. That means it runs system commands, like the install command you just pasted. But when you launch Claude Code, it switches to <strong>conversation mode</strong>. In conversation mode, you type in natural language, like talking to a colleague. You invoke skills with the <code>/</code> prefix. So <code>/customer-pulse</code> is a skill. <code>curl</code> is a bash command. Don&#8217;t mix them up. <strong>Two modes, two purposes.</strong></p><p>If you want to get familiar with some Claude Code commands and shortcuts, there&#8217;s a nice <strong><a href="https://cc.storyfox.cz/">community cheat sheet</a></strong> that covers the essentials.</p><p>Close and reopen the terminal (or open a new one) so it picks up the new command. Then type:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;9a201a7e-b276-42db-ad4a-1eb2a1cc7970&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">claude</code></pre></div><p>The first time, a browser window opens to log in with your Anthropic account. After that, Claude Code starts directly.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3Arv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3c0577f-6996-449c-89b4-6d4c2e4a1df7_3248x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3Arv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3c0577f-6996-449c-89b4-6d4c2e4a1df7_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!3Arv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3c0577f-6996-449c-89b4-6d4c2e4a1df7_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!3Arv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3c0577f-6996-449c-89b4-6d4c2e4a1df7_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!3Arv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3c0577f-6996-449c-89b4-6d4c2e4a1df7_3248x1964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3Arv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3c0577f-6996-449c-89b4-6d4c2e4a1df7_3248x1964.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b3c0577f-6996-449c-89b4-6d4c2e4a1df7_3248x1964.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:880,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:864671,&quot;alt&quot;:&quot;VS Code with Claude Code running in the right terminal panel, showing the Opus model name and input prompt.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/193361773?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3c0577f-6996-449c-89b4-6d4c2e4a1df7_3248x1964.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="VS Code with Claude Code running in the right terminal panel, showing the Opus model name and input prompt." title="VS Code with Claude Code running in the right terminal panel, showing the Opus model name and input prompt." srcset="https://substackcdn.com/image/fetch/$s_!3Arv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3c0577f-6996-449c-89b4-6d4c2e4a1df7_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!3Arv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3c0577f-6996-449c-89b4-6d4c2e4a1df7_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!3Arv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3c0577f-6996-449c-89b4-6d4c2e4a1df7_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!3Arv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3c0577f-6996-449c-89b4-6d4c2e4a1df7_3248x1964.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Claude Code is ready. The conversation starts here</figcaption></figure></div><h3>Step 3: Download and open the project</h3><p>Exit Claude Code for now (type <code>exit</code> or press <code>Ctrl+C</code>). Go to the <a href="https://github.com/adamfaik/product-feedback-skill">product-feedback-skill repo on GitHub</a>. Click the green <strong>Code</strong> button, then <strong>Download ZIP</strong>. Unzip the folder wherever you keep your projects (for example, your Documents folder).</p><p>Now in your editor, go to <strong>File &#8594; Open Folder</strong>, navigate to <code>product-feedback-skill</code>, and click Open. The left sidebar (the explorer) shows all the project files.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EPED!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d698b0-40ca-44cd-ac5c-c5ef85d6d49e_3248x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EPED!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d698b0-40ca-44cd-ac5c-c5ef85d6d49e_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!EPED!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d698b0-40ca-44cd-ac5c-c5ef85d6d49e_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!EPED!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d698b0-40ca-44cd-ac5c-c5ef85d6d49e_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!EPED!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d698b0-40ca-44cd-ac5c-c5ef85d6d49e_3248x1964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EPED!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d698b0-40ca-44cd-ac5c-c5ef85d6d49e_3248x1964.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/92d698b0-40ca-44cd-ac5c-c5ef85d6d49e_3248x1964.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:880,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1059623,&quot;alt&quot;:&quot;VS Code Explorer sidebar showing the product-feedback-skill folder structure with .claude, product-context, reports folders and README.md.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/193361773?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d698b0-40ca-44cd-ac5c-c5ef85d6d49e_3248x1964.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="VS Code Explorer sidebar showing the product-feedback-skill folder structure with .claude, product-context, reports folders and README.md." title="VS Code Explorer sidebar showing the product-feedback-skill folder structure with .claude, product-context, reports folders and README.md." srcset="https://substackcdn.com/image/fetch/$s_!EPED!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d698b0-40ca-44cd-ac5c-c5ef85d6d49e_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!EPED!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d698b0-40ca-44cd-ac5c-c5ef85d6d49e_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!EPED!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d698b0-40ca-44cd-ac5c-c5ef85d6d49e_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!EPED!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d698b0-40ca-44cd-ac5c-c5ef85d6d49e_3248x1964.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The project open in VS Code. Everything is visible in the explorer</figcaption></figure></div><h3>Step 4: Run the skill</h3><p>Open a new terminal in your editor (<strong>Terminal &#8594; New Terminal</strong>) and make sure it&#8217;s inside the project folder. Then launch Claude Code:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;3d47d6d3-a93d-4d90-ab1b-bac34ff62412&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">claude</code></pre></div><p>The repo includes product context files for two products: Figma and Slack. Let&#8217;s try Figma. Type:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;2cfeb864-fa6b-43a8-8f31-cddb0eeee83a&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">/customer-pulse figma</code></pre></div><p><strong>And then just watch.</strong> It&#8217;s genuinely fun to see. Claude reads the Figma product context, starts searching the web (Trustpilot reviews, forum threads, comparison articles), fetches the most relevant pages, extracts real user quotes, groups them into themes, scores each by severity, and writes a full report to <code>reports/</code>. The whole thing takes a few minutes because Claude is making 12 web searches and fetching up to 20 pages. Just let it do its thing.</p><p>When it&#8217;s done, open the generated report in the <code>reports/</code> folder. Right-click the file tab &#8594; <strong>&#8221;Open Preview&#8221;</strong> to see it formatted instead of raw text.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NbDK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaddc033-075b-49be-9af8-88894331c320_3248x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NbDK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaddc033-075b-49be-9af8-88894331c320_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!NbDK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaddc033-075b-49be-9af8-88894331c320_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!NbDK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaddc033-075b-49be-9af8-88894331c320_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!NbDK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaddc033-075b-49be-9af8-88894331c320_3248x1964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NbDK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaddc033-075b-49be-9af8-88894331c320_3248x1964.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/caddc033-075b-49be-9af8-88894331c320_3248x1964.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:880,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1440220,&quot;alt&quot;:&quot;VS Code showing the Customer Pulse Report for Figma in preview mode with executive summary, top insights ranked by priority, and source URLs.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/193361773?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaddc033-075b-49be-9af8-88894331c320_3248x1964.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="VS Code showing the Customer Pulse Report for Figma in preview mode with executive summary, top insights ranked by priority, and source URLs." title="VS Code showing the Customer Pulse Report for Figma in preview mode with executive summary, top insights ranked by priority, and source URLs." srcset="https://substackcdn.com/image/fetch/$s_!NbDK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaddc033-075b-49be-9af8-88894331c320_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!NbDK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaddc033-075b-49be-9af8-88894331c320_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!NbDK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaddc033-075b-49be-9af8-88894331c320_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!NbDK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaddc033-075b-49be-9af8-88894331c320_3248x1964.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The generated report. Ranked themes, real quotes, source links</figcaption></figure></div><p>One command. <strong>A full customer feedback analysis</strong> with source URLs, severity rankings, sentiment direction, and a &#8220;Top 3 things to do this week&#8221; action list. Try <code>/customer-pulse slack</code> for the other product.</p><div><hr></div><h2>Level 2: Understand what skills are</h2><p>OK so the report just appeared. That&#8217;s cool. But what actually happened behind the scenes? Three files made the whole thing work. Let&#8217;s open each one.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!l1vx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c84992f-fc64-4d19-8f4c-577efe0f82a6_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!l1vx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c84992f-fc64-4d19-8f4c-577efe0f82a6_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!l1vx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c84992f-fc64-4d19-8f4c-577efe0f82a6_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!l1vx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c84992f-fc64-4d19-8f4c-577efe0f82a6_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!l1vx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c84992f-fc64-4d19-8f4c-577efe0f82a6_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!l1vx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c84992f-fc64-4d19-8f4c-577efe0f82a6_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5c84992f-fc64-4d19-8f4c-577efe0f82a6_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5073068,&quot;alt&quot;:&quot;Handmade infographic showing Product Context feeding into SKILL.md, CLAUDE.md providing project briefing, SKILL.md using WebSearch and WebFetch tools, and producing a Report file with ranked themes, quotes, and actions.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/193361773?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c84992f-fc64-4d19-8f4c-577efe0f82a6_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Handmade infographic showing Product Context feeding into SKILL.md, CLAUDE.md providing project briefing, SKILL.md using WebSearch and WebFetch tools, and producing a Report file with ranked themes, quotes, and actions." title="Handmade infographic showing Product Context feeding into SKILL.md, CLAUDE.md providing project briefing, SKILL.md using WebSearch and WebFetch tools, and producing a Report file with ranked themes, quotes, and actions." srcset="https://substackcdn.com/image/fetch/$s_!l1vx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c84992f-fc64-4d19-8f4c-577efe0f82a6_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!l1vx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c84992f-fc64-4d19-8f4c-577efe0f82a6_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!l1vx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c84992f-fc64-4d19-8f4c-577efe0f82a6_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!l1vx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c84992f-fc64-4d19-8f4c-577efe0f82a6_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Step 1: Open the SKILL.md</h3><p>In the explorer sidebar, navigate to <code>.claude/skills/customer-pulse/SKILL.md</code>. Click it. Or <a href="https://github.com/adamfaik/product-feedback-skill/blob/main/.claude/skills/customer-pulse/SKILL.md">read it directly on GitHub</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0Ga9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c0b0df8-97af-4040-8f4f-76733876bb01_3248x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0Ga9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c0b0df8-97af-4040-8f4f-76733876bb01_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!0Ga9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c0b0df8-97af-4040-8f4f-76733876bb01_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!0Ga9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c0b0df8-97af-4040-8f4f-76733876bb01_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!0Ga9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c0b0df8-97af-4040-8f4f-76733876bb01_3248x1964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0Ga9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c0b0df8-97af-4040-8f4f-76733876bb01_3248x1964.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4c0b0df8-97af-4040-8f4f-76733876bb01_3248x1964.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:880,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1367260,&quot;alt&quot;:&quot;VS Code showing SKILL.md in raw Markdown with YAML frontmatter (name, description, allowed-tools) and the beginning of the step-by-step instructions.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/193361773?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c0b0df8-97af-4040-8f4f-76733876bb01_3248x1964.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="VS Code showing SKILL.md in raw Markdown with YAML frontmatter (name, description, allowed-tools) and the beginning of the step-by-step instructions." title="VS Code showing SKILL.md in raw Markdown with YAML frontmatter (name, description, allowed-tools) and the beginning of the step-by-step instructions." srcset="https://substackcdn.com/image/fetch/$s_!0Ga9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c0b0df8-97af-4040-8f4f-76733876bb01_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!0Ga9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c0b0df8-97af-4040-8f4f-76733876bb01_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!0Ga9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c0b0df8-97af-4040-8f4f-76733876bb01_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!0Ga9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c0b0df8-97af-4040-8f4f-76733876bb01_3248x1964.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The raw file. Frontmatter at the top, plain English instructions below</figcaption></figure></div><p>Take a moment to read it. This is the entire skill. <strong>A Markdown file.</strong> No code. No API calls. No special syntax. Just English. <strong>If you can write an email, you can write a skill.</strong> Seriously.</p><p>Right-click the tab &#8594; <strong>&#8221;Open Preview&#8221;</strong> to see it formatted. That&#8217;s easier to read once you understand the structure.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!n9wg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F512e8b39-7455-4beb-9e3a-944eb719413a_3248x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!n9wg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F512e8b39-7455-4beb-9e3a-944eb719413a_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!n9wg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F512e8b39-7455-4beb-9e3a-944eb719413a_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!n9wg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F512e8b39-7455-4beb-9e3a-944eb719413a_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!n9wg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F512e8b39-7455-4beb-9e3a-944eb719413a_3248x1964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!n9wg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F512e8b39-7455-4beb-9e3a-944eb719413a_3248x1964.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/512e8b39-7455-4beb-9e3a-944eb719413a_3248x1964.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:880,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1324489,&quot;alt&quot;:&quot;VS Code split view showing SKILL.md preview on the left with structured steps and the terminal on the right.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/193361773?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F512e8b39-7455-4beb-9e3a-944eb719413a_3248x1964.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="VS Code split view showing SKILL.md preview on the left with structured steps and the terminal on the right." title="VS Code split view showing SKILL.md preview on the left with structured steps and the terminal on the right." srcset="https://substackcdn.com/image/fetch/$s_!n9wg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F512e8b39-7455-4beb-9e3a-944eb719413a_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!n9wg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F512e8b39-7455-4beb-9e3a-944eb719413a_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!n9wg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F512e8b39-7455-4beb-9e3a-944eb719413a_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!n9wg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F512e8b39-7455-4beb-9e3a-944eb719413a_3248x1964.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The same file in preview mode. Easier to read, same content</figcaption></figure></div><p>It has two parts. <strong>The header (called frontmatter) controls how the skill behaves.</strong> The settings that matter most:</p><ul><li><p><code>description</code>: how Claude decides whether to suggest the skill. Vague descriptions like &#8220;analyzes stuff&#8221; don&#8217;t work. Specific ones like &#8220;use when the user wants to understand customer sentiment&#8221; do. It&#8217;s like giving a teammate a proper job description.</p></li><li><p><code>disable-model-invocation: true</code>: prevents the skill from auto-triggering. For a skill that makes 30+ web calls, you want explicit control.</p></li><li><p><code>allowed-tools</code>: lists tools Claude can use without asking permission each time. Without it, Claude pauses 20+ times to ask. With it, the skill runs smoothly.</p></li><li><p><code>$ARGUMENTS</code>: when you type <code>/customer-pulse figma</code>, &#8220;figma&#8221; replaces <code>$ARGUMENTS</code> in the instructions.</p></li></ul><p><strong>The body tells Claude what to do</strong>, step by step, in plain English. The <a href="https://code.claude.com/docs/en/skills">official skills documentation</a> has the full reference.</p><p><strong>When does it make sense to build a skill?</strong> Tasks that are repeatable, multi-step, and benefit from context. If you&#8217;d need to re-explain the same context more than twice, it&#8217;s worth encoding as a skill. For one-off tasks, just ask Claude directly.</p><h3>Step 2: Open the product context</h3><p>Navigate to <code>product-context/figma.md</code>. Or <a href="https://github.com/adamfaik/product-feedback-skill/blob/main/product-context/figma.md">read it on GitHub</a>.</p><p>This file describes Figma: features, customer segments, pricing, known pain points, competitors. The skill reads it before searching. That&#8217;s why the report isn&#8217;t generic. <strong>Without product context</strong>, you get &#8220;users complain about performance.&#8221; <strong>With it</strong>, you get &#8220;the March 2026 regression affected component manipulation specifically, compounding the long-standing 2GB memory cap issue that hits enterprise teams with variant-heavy design systems.&#8221;</p><p><strong>This separation is the clever part.</strong> The SKILL.md defines the process. The product context defines the knowledge. Change the context, and the entire analysis shifts. Without touching the instructions.</p><p>If you were doing this at work, your context file could include customer personas, Jira backlog categories, OKRs, NPS themes, competitive analysis, and roadmap features. <strong>The richer the context, the smarter the analysis.</strong> The skill doesn&#8217;t care where the knowledge comes from. It just reads the file.</p><h3>Step 3: Understand how skills compare to other tools</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WB7s!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56e50737-2c5c-4abb-b243-50c2ca3002f7_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WB7s!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56e50737-2c5c-4abb-b243-50c2ca3002f7_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!WB7s!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56e50737-2c5c-4abb-b243-50c2ca3002f7_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!WB7s!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56e50737-2c5c-4abb-b243-50c2ca3002f7_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!WB7s!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56e50737-2c5c-4abb-b243-50c2ca3002f7_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WB7s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56e50737-2c5c-4abb-b243-50c2ca3002f7_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/56e50737-2c5c-4abb-b243-50c2ca3002f7_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5802405,&quot;alt&quot;:&quot;Handmade comparison infographic with 4 columns: Saved Prompt, Custom GPT/Gem, NotebookLM, Claude Code Skill. Each shows checkmarks for what it can do and crosses for what it can&#8217;t. Skills have the most checkmarks: read files, search web, create files, lives in repo, versioned, repeatable.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/193361773?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56e50737-2c5c-4abb-b243-50c2ca3002f7_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Handmade comparison infographic with 4 columns: Saved Prompt, Custom GPT/Gem, NotebookLM, Claude Code Skill. Each shows checkmarks for what it can do and crosses for what it can&#8217;t. Skills have the most checkmarks: read files, search web, create files, lives in repo, versioned, repeatable." title="Handmade comparison infographic with 4 columns: Saved Prompt, Custom GPT/Gem, NotebookLM, Claude Code Skill. Each shows checkmarks for what it can do and crosses for what it can&#8217;t. Skills have the most checkmarks: read files, search web, create files, lives in repo, versioned, repeatable." srcset="https://substackcdn.com/image/fetch/$s_!WB7s!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56e50737-2c5c-4abb-b243-50c2ca3002f7_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!WB7s!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56e50737-2c5c-4abb-b243-50c2ca3002f7_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!WB7s!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56e50737-2c5c-4abb-b243-50c2ca3002f7_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!WB7s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56e50737-2c5c-4abb-b243-50c2ca3002f7_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>A saved prompt.</strong> Every time you paste your product description and analysis request into ChatGPT, you&#8217;re doing manually what a skill does automatically. A skill reads your files for you. The context is always there. No pasting.</p><p><strong>A custom GPT or Gem.</strong> Lives in someone else&#8217;s cloud. Can&#8217;t read your local files. Can&#8217;t create documents in your repo. A skill is a Markdown file you own, version-controlled with git.</p><p><strong>NotebookLM.</strong> Same &#8220;rich context&#8221; idea, but limited to answering questions and generate a certain type of content. Skills can search the web, create files, and produce reports that feed into your next workflow. Skills are rich context plus real actions in the same place.</p><p><strong>Perplexity.</strong> Great for one-time answers. A skill gives you a versioned, repeatable process that improves over time. A Perplexity search doesn&#8217;t compound. A skill does.</p><p><strong>Skills also work beyond Claude Code.</strong> You can use them in claude.ai (upload as zip) and in the Claude desktop app with Cowork. Claude Code is the most powerful surface though, with full network access and features like <code>allowed-tools</code>.</p><h3>Step 4: Open the CLAUDE.md</h3><p>Last file. Open <code>CLAUDE.md</code> at the project root. Or <a href="https://github.com/adamfaik/product-feedback-skill/blob/main/CLAUDE.md">read it on GitHub</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cssX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a026931-3e46-4590-a179-f6a938392793_3248x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cssX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a026931-3e46-4590-a179-f6a938392793_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!cssX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a026931-3e46-4590-a179-f6a938392793_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!cssX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a026931-3e46-4590-a179-f6a938392793_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!cssX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a026931-3e46-4590-a179-f6a938392793_3248x1964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cssX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a026931-3e46-4590-a179-f6a938392793_3248x1964.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8a026931-3e46-4590-a179-f6a938392793_3248x1964.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:880,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1083702,&quot;alt&quot;:&quot;VS Code split view with CLAUDE.md preview showing Project Overview and Repository Structure on the left, and Claude Code terminal on the right.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/193361773?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a026931-3e46-4590-a179-f6a938392793_3248x1964.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="VS Code split view with CLAUDE.md preview showing Project Overview and Repository Structure on the left, and Claude Code terminal on the right." title="VS Code split view with CLAUDE.md preview showing Project Overview and Repository Structure on the left, and Claude Code terminal on the right." srcset="https://substackcdn.com/image/fetch/$s_!cssX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a026931-3e46-4590-a179-f6a938392793_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!cssX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a026931-3e46-4590-a179-f6a938392793_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!cssX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a026931-3e46-4590-a179-f6a938392793_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!cssX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a026931-3e46-4590-a179-f6a938392793_3248x1964.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The project briefing. Claude reads it at the start of every session</figcaption></figure></div><p><strong>A </strong><code>README.md</code><strong> is for humans. </strong><code>CLAUDE.md</code><strong> is for Claude.</strong> It tells Claude what the project is about, what files matter, and how things connect. Claude reads it automatically at the start of every session. Create one for any project by typing <code>/init</code>. Keep it under 30 lines.</p><div><hr></div><h3>Level 3: Build your first skill step by step</h3><p>If you&#8217;ve read my previous post on <a href="https://www.theaithinker.com/p/how-to-save-5-hours-a-week-with-gems">how to save +5 hours a week with Gems</a>, the process here will feel familiar. Same loop: <strong>ask the AI to write the instructions, test them, see what&#8217;s wrong, improve them, test again.</strong> With Gems, you do this in a web interface. With Claude Code skills, you do it inside your project folder. The principle doesn&#8217;t change. The power does.</p><p>Here&#8217;s how I actually built <code>/customer-pulse</code>. Not the clean version. The real one. Before the details, here&#8217;s the overview:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ijgw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64e11cfe-d3e8-496a-ae6f-c4df67688cc6_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ijgw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64e11cfe-d3e8-496a-ae6f-c4df67688cc6_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!ijgw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64e11cfe-d3e8-496a-ae6f-c4df67688cc6_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!ijgw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64e11cfe-d3e8-496a-ae6f-c4df67688cc6_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!ijgw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64e11cfe-d3e8-496a-ae6f-c4df67688cc6_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ijgw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64e11cfe-d3e8-496a-ae6f-c4df67688cc6_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/64e11cfe-d3e8-496a-ae6f-c4df67688cc6_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4414436,&quot;alt&quot;:&quot;Handmade infographic showing 5 steps: Describe the problem, Review with AI, Run and evaluate, Improve the skill (with iteration loop arrow back to step 3), Test on another product.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/193361773?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64e11cfe-d3e8-496a-ae6f-c4df67688cc6_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Handmade infographic showing 5 steps: Describe the problem, Review with AI, Run and evaluate, Improve the skill (with iteration loop arrow back to step 3), Test on another product." title="Handmade infographic showing 5 steps: Describe the problem, Review with AI, Run and evaluate, Improve the skill (with iteration loop arrow back to step 3), Test on another product." srcset="https://substackcdn.com/image/fetch/$s_!ijgw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64e11cfe-d3e8-496a-ae6f-c4df67688cc6_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!ijgw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64e11cfe-d3e8-496a-ae6f-c4df67688cc6_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!ijgw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64e11cfe-d3e8-496a-ae6f-c4df67688cc6_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!ijgw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64e11cfe-d3e8-496a-ae6f-c4df67688cc6_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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><ol><li><p><strong>Describe the problem.</strong> No technical instructions. Just explain what you need.</p></li><li><p><strong>Review the skill.</strong> Ask Claude Code to check its own work.</p></li><li><p><strong>Run it and evaluate.</strong> See what&#8217;s good, what&#8217;s missing.</p></li><li><p><strong>Improve the instructions, not the output.</strong> Fix the SKILL.md so every future run is better.</p></li><li><p><strong>Test on a different product.</strong> Make sure it generalizes.</p></li></ol><h3>Step 1: Describe your problem</h3><p>I opened Claude Code and typed:</p><blockquote><p>I&#8217;m a product manager and one of my jobs is to explore customer feedback across different platforms (app stores, review sites, forums) so I can make better decisions and understand the problems our users are facing. But it&#8217;s time consuming. I sometimes miss important sources, and I struggle to synthesize and identify the most actionable feedback. I was wondering if it makes sense to create a system here that helps me do that every time. Feel free to ask me any questions.</p></blockquote><p>I didn&#8217;t say &#8220;create a <code>.claude/skills/</code> folder.&#8221; I described a problem. <strong>You don&#8217;t need to know terminal commands.</strong> You need to know how to describe a problem clearly. That&#8217;s a skill product people already have.</p><p>Claude asked clarifying questions: what product, what sources, what format. I said Figma. It proposed a 4-phase architecture with a scoring system and guardrails. Then it built everything. I just watched files appear in the VS Code Explorer.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SpOW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fd4c7b5-3eaf-45f9-af6e-d60bb3aeff9b_3248x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SpOW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fd4c7b5-3eaf-45f9-af6e-d60bb3aeff9b_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!SpOW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fd4c7b5-3eaf-45f9-af6e-d60bb3aeff9b_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!SpOW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fd4c7b5-3eaf-45f9-af6e-d60bb3aeff9b_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!SpOW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fd4c7b5-3eaf-45f9-af6e-d60bb3aeff9b_3248x1964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SpOW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fd4c7b5-3eaf-45f9-af6e-d60bb3aeff9b_3248x1964.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9fd4c7b5-3eaf-45f9-af6e-d60bb3aeff9b_3248x1964.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:880,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1142716,&quot;alt&quot;:&quot;Claude Code conversation showing interactive questions about which product to analyze, with multiple choice options.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/193361773?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fd4c7b5-3eaf-45f9-af6e-d60bb3aeff9b_3248x1964.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Claude Code conversation showing interactive questions about which product to analyze, with multiple choice options." title="Claude Code conversation showing interactive questions about which product to analyze, with multiple choice options." srcset="https://substackcdn.com/image/fetch/$s_!SpOW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fd4c7b5-3eaf-45f9-af6e-d60bb3aeff9b_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!SpOW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fd4c7b5-3eaf-45f9-af6e-d60bb3aeff9b_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!SpOW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fd4c7b5-3eaf-45f9-af6e-d60bb3aeff9b_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!SpOW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fd4c7b5-3eaf-45f9-af6e-d60bb3aeff9b_3248x1964.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Claude asks what product, what sources, what format</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ps9S!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4627c95e-f2d7-4923-9d10-3ad2bfc6af61_3248x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ps9S!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4627c95e-f2d7-4923-9d10-3ad2bfc6af61_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!ps9S!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4627c95e-f2d7-4923-9d10-3ad2bfc6af61_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!ps9S!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4627c95e-f2d7-4923-9d10-3ad2bfc6af61_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!ps9S!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4627c95e-f2d7-4923-9d10-3ad2bfc6af61_3248x1964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ps9S!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4627c95e-f2d7-4923-9d10-3ad2bfc6af61_3248x1964.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4627c95e-f2d7-4923-9d10-3ad2bfc6af61_3248x1964.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:880,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1127402,&quot;alt&quot;:&quot;Claude Code showing a structured plan with files to create table, context description, and how the skill workflow will operate.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/193361773?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4627c95e-f2d7-4923-9d10-3ad2bfc6af61_3248x1964.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Claude Code showing a structured plan with files to create table, context description, and how the skill workflow will operate." title="Claude Code showing a structured plan with files to create table, context description, and how the skill workflow will operate." srcset="https://substackcdn.com/image/fetch/$s_!ps9S!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4627c95e-f2d7-4923-9d10-3ad2bfc6af61_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!ps9S!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4627c95e-f2d7-4923-9d10-3ad2bfc6af61_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!ps9S!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4627c95e-f2d7-4923-9d10-3ad2bfc6af61_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!ps9S!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4627c95e-f2d7-4923-9d10-3ad2bfc6af61_3248x1964.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The proposed architecture. From a problem description, not a spec</figcaption></figure></div><h3>Step 2: Review the work</h3><p>Here&#8217;s a workflow I wish someone had told me about earlier: <strong>the double-loop.</strong> One AI session builds. Another reviews. You make the decisions.</p><p>I asked Claude Code <strong>in another session</strong> to check the skill against best practices. It found five issues: lowercase file name (should be <code>SKILL.md</code>), no <code>$ARGUMENTS</code> support, missing <code>disable-model-invocation</code>, missing <code>allowed-tools</code>, and a too-generic description. I shared the findings back in the initial session and Claude Code fixed everything in minutes. <strong>I asked AI to check AI&#8217;s work, and then I made the decision about what to fix.</strong></p><p>One thing I also learned: Claude sometimes creates a <strong>command</strong> (the old format) when you ask for a skill. Commands work, but lack the frontmatter options. Always double-check. <strong>You&#8217;re the pilot, even in autopilot mode.</strong></p><h3>Step 3: Run it and evaluate</h3><p>The first run produced a solid report. 65+ data points, ten ranked themes with real quotes and source URLs. But it was missing things. No blind spots section. No separation of &#8220;already known&#8221; vs &#8220;new discovery.&#8221; The recommended actions were generic (&#8221;publish a performance roadmap&#8221;), the kind of advice any consultant would give for $500/hour without knowing your product.</p><h3>Step 4: Improve the skill, not the report</h3><p>I was about to edit the report. Then I stopped. If I fix the report, I get a better report once. <strong>If I fix the </strong><code>SKILL.md</code><strong>, every future run produces a better report automatically.</strong> You&#8217;re not building a document. You&#8217;re building a machine that produces documents.</p><p>Here&#8217;s exactly what I told Claude. No prompt engineering. Just describing what was wrong:</p><blockquote><p>The report is missing a blind spots section. I want to know what data is missing and why.</p></blockquote><blockquote><p>Separate confirmed known issues from new discoveries. Tag each theme as CONFIRMED or NEW.</p></blockquote><blockquote><p>The recommended actions are too generic. Make them reference specific data from the report.</p></blockquote><blockquote><p>Add a &#8220;Top 3 this week&#8221; section at the top with concrete actions and links.</p></blockquote><blockquote><p>Track whether each theme is getting worse, staying stable, or improving.</p></blockquote><p>Claude Code updated the <code>SKILL.md</code>. I ran it again. Same Figma. Same search budget.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dyEL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff46819ba-9eb5-4427-8c02-c9794b7d9c48_3248x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dyEL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff46819ba-9eb5-4427-8c02-c9794b7d9c48_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!dyEL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff46819ba-9eb5-4427-8c02-c9794b7d9c48_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!dyEL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff46819ba-9eb5-4427-8c02-c9794b7d9c48_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!dyEL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff46819ba-9eb5-4427-8c02-c9794b7d9c48_3248x1964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dyEL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff46819ba-9eb5-4427-8c02-c9794b7d9c48_3248x1964.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f46819ba-9eb5-4427-8c02-c9794b7d9c48_3248x1964.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:880,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1417083,&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.theaithinker.com/i/193361773?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff46819ba-9eb5-4427-8c02-c9794b7d9c48_3248x1964.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_!dyEL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff46819ba-9eb5-4427-8c02-c9794b7d9c48_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!dyEL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff46819ba-9eb5-4427-8c02-c9794b7d9c48_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!dyEL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff46819ba-9eb5-4427-8c02-c9794b7d9c48_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!dyEL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff46819ba-9eb5-4427-8c02-c9794b7d9c48_3248x1964.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Same skill, better instructions</figcaption></figure></div><p>The difference was striking. The v2 report tagged every theme as <code>[CONFIRMED]</code> or <code>[NEW]</code>. The blind spots section revealed that 15 of 17 features launched at Config 2025 had zero public feedback. <strong>That&#8217;s a strategic insight, not just a gap.</strong></p><p><strong>Practical tip:</strong> after three rounds of iteration, Claude started giving me circular answers. I typed <code>/clear</code> and it immediately got better. It resets the conversation while keeping your files. I use it regularly now.</p><h3>Step 5: Test it on a different product</h3><p>I wanted to try Slack. But when I needed a new product context file, I caught myself about to do the same one-shot research again. And then I thought: wait. Isn&#8217;t this exactly what skills are for?</p><p><strong>That&#8217;s how the skill fever gets you.</strong> I built <code>/product-context</code> instead, a second skill that researches any product and generates the context file automatically. Typed <code>/product-context Slack</code>, got a filled-in context file, then ran <code>/customer-pulse slack</code>.</p><p>It worked. <strong>Different product, same quality.</strong> The skill found 25 incidents in 90 days, a ghost-seat credit arbitrage, and enterprise privacy concerns about the desktop AI agent.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2qYR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67f45d96-a3a9-456b-a8ed-cb3a281ab93f_3248x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2qYR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67f45d96-a3a9-456b-a8ed-cb3a281ab93f_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!2qYR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67f45d96-a3a9-456b-a8ed-cb3a281ab93f_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!2qYR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67f45d96-a3a9-456b-a8ed-cb3a281ab93f_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!2qYR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67f45d96-a3a9-456b-a8ed-cb3a281ab93f_3248x1964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2qYR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67f45d96-a3a9-456b-a8ed-cb3a281ab93f_3248x1964.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/67f45d96-a3a9-456b-a8ed-cb3a281ab93f_3248x1964.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:880,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1223935,&quot;alt&quot;:&quot;VS Code showing the Customer Pulse Report for Slack with Top 3 This Week section, Executive Summary, and Top Insights ranked by priority.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/193361773?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67f45d96-a3a9-456b-a8ed-cb3a281ab93f_3248x1964.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="VS Code showing the Customer Pulse Report for Slack with Top 3 This Week section, Executive Summary, and Top Insights ranked by priority." title="VS Code showing the Customer Pulse Report for Slack with Top 3 This Week section, Executive Summary, and Top Insights ranked by priority." srcset="https://substackcdn.com/image/fetch/$s_!2qYR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67f45d96-a3a9-456b-a8ed-cb3a281ab93f_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!2qYR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67f45d96-a3a9-456b-a8ed-cb3a281ab93f_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!2qYR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67f45d96-a3a9-456b-a8ed-cb3a281ab93f_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!2qYR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67f45d96-a3a9-456b-a8ed-cb3a281ab93f_3248x1964.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Same skill, different product</figcaption></figure></div><p><a href="https://github.com/adamfaik/product-feedback-skill/blob/main/reports/slack-pulse-2026-04-04.md">Read the full Slack report on GitHub</a>.</p><p>What started as &#8220;let me test with another product&#8221; turned into &#8220;let me build another skill.&#8221;</p><p><strong>Three ways to set up your product context:</strong> auto-generate with <code>/product-context</code>, paste your own internal docs, or combine both. If you&#8217;re at a real company, your internal documentation is your richest source.</p><div><hr></div><h2>Expect ideas to explode</h2><p>After I built <code>/customer-pulse</code>, ideas started exploding. Like popcorn: every kernel triggered three more. &#8220;What if I built a skill that tracks competitor launches?&#8221; &#8220;What about an automated NPS synthesis?&#8221; I couldn&#8217;t stop.</p><p>The last time I felt this was Notion in 2019. <strong>Wanting to spend weekends restructuring everything into this new system.</strong> With Notion, it was &#8220;I need to move all my notes into this tool.&#8221; With skills, it&#8217;s &#8220;I need to redo all my previous projects with this new approach.&#8221;</p><p>Here&#8217;s my honest warning: <strong>once you build your first skill, you&#8217;ll see them everywhere.</strong> Write your ideas down. Prioritize. Don&#8217;t build them all tonight. I say this from experience because I&#8217;ve been there, staring at the terminal at midnight, convincing myself &#8220;this one will only take 20 minutes.&#8221;</p><p>But that feeling is the point. &#8220;PM becoming a builder&#8221; isn&#8217;t just about learning a new tool. <strong>It&#8217;s about a shift in how you see problems.</strong> Before skills, a repetitive task was just a task. After skills, every repetitive task is an opportunity to build something. That perceptual shift is the real transformation. And honestly? <strong>It&#8217;s the most fun I&#8217;ve had with AI tools in a long time.</strong></p><div><hr></div><h2>Level 4: Go further</h2><p>I&#8217;m not an expert on everything that follows. <strong>These are the topics I want to explore next.</strong> What I can tell you is that after building my first skill, I feel like I&#8217;ve become an architect of my own workflows. It&#8217;s the first time I feel like if I go to work this Monday, I&#8217;ll be a completely different person. Not because I learned a new feature, but because I see my work differently.</p><p><strong>MCP servers plug new data sources into Claude Code.</strong> Imagine the skill pulling your product context from Confluence automatically.</p><p><strong>Hooks are automated actions triggered by events.</strong> I&#8217;m curious about using them to automate things like &#8220;run customer-pulse every Monday morning.&#8221;</p><p><strong>Agents and sub-agents handle complex multi-step workflows</strong> where skills aren&#8217;t enough. Start with skills. Graduate to agents when you hit the ceiling.</p><p><strong>The ecosystem:</strong> A few starting points worth bookmarking:</p><ul><li><p><strong><a href="https://github.com/anthropics/skills">Anthropic&#8217;s official skills</a>:</strong> document processing, demos, and a skill-creator.</p></li><li><p><strong><a href="https://github.com/phuryn/pm-skills">Pawel Huryn&#8217;s PM skills</a>:</strong> 100+ skills for product work. The most comprehensive PM collection.</p></li><li><p><strong><a href="https://github.com/ComposioHQ/awesome-claude-skills">Community collections</a>:</strong> curated lists with thousands of skills.</p></li></ul><p><strong>But the skill you build yourself will always be more valuable than a generic one.</strong> These collections are starting points. The real power is in building your own.</p><div><hr></div><h2>Your turn</h2><p>I started this article thinking I&#8217;d explain what skills are. I ended up building a customer feedback tool, a product context generator, and a system that gets better every time I use it. <strong>All from conversations.</strong> No code.</p><p>The thing that surprised me most isn&#8217;t the technology. It&#8217;s how it changed the way I think. I used to see repetitive tasks as part of the job. Now <strong>I see them as skills waiting to be built.</strong></p><p><strong>Build your own skills.</strong> Open Claude Code. Describe a problem you face every week. Here are five ideas:</p><ul><li><p><strong>Competitor watch.</strong> &#8220;Search for what my top 3 competitors shipped last week, give me a summary with links.&#8221;</p></li><li><p><strong>Meeting recap.</strong> &#8220;Take a meeting transcript, extract decisions, action items, and open questions in my team&#8217;s template.&#8221;</p></li><li><p><strong>Release notes drafter.</strong> &#8220;Read the last 20 git commits, group them by theme, write user-facing release notes.&#8221;</p></li><li><p><strong>Onboarding guide.</strong> &#8220;Read our documentation and create a structured onboarding plan for a new team member.&#8221;</p></li><li><p><strong>Weekly digest.</strong> &#8220;Search for the latest news about [topic], summarize the top 5, highlight what&#8217;s relevant to our roadmap.&#8221;</p></li></ul><p>Each of these is one conversation with Claude Code. Describe the problem, let Claude build the skill, review it, iterate. The same five steps from Level 3.</p><p>And remember: <strong>write your ideas down.</strong> Don&#8217;t build them all tonight. But do build the first one. That&#8217;s the one that changes everything!</p>]]></content:encoded></item><item><title><![CDATA[How to vibe code an agent to query your data]]></title><description><![CDATA[Generate two Python files using Gemini and the LangGraph framework. Ask Claude to review your code to ensure it's robust. Deploy a Streamlit interface to let users query the data in plain English.]]></description><link>https://www.theaithinker.com/p/how-to-vibe-code-an-agent-to-query</link><guid isPermaLink="false">https://www.theaithinker.com/p/how-to-vibe-code-an-agent-to-query</guid><dc:creator><![CDATA[Adam Faik]]></dc:creator><pubDate>Mon, 06 Apr 2026 11:03:00 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/b478b476-cabf-4350-95fc-7380f74963de_1024x731.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you only have seven minutes, watch this quick video recap to <strong>get a complete overview of everything covered in this article!</strong></p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;5683ffb3-b847-4bbe-bac3-5f9f1cb9db75&quot;,&quot;duration&quot;:null}"></div><div><hr></div><p>I built a small AI agent that turns plain English questions into SQL queries. It doesn&#8217;t just write the code. It executes the query, finds the answer, and explains the result in plain text. <strong>You&#8217;re basically talking to the data.</strong></p><p>Here is what it looks like in action. You just type a question and the agent does the heavy lifting to find the exact answer.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PkCh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20c14339-b536-42cb-b4bd-1bed00328882_3000x1458.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PkCh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20c14339-b536-42cb-b4bd-1bed00328882_3000x1458.png 424w, https://substackcdn.com/image/fetch/$s_!PkCh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20c14339-b536-42cb-b4bd-1bed00328882_3000x1458.png 848w, https://substackcdn.com/image/fetch/$s_!PkCh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20c14339-b536-42cb-b4bd-1bed00328882_3000x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!PkCh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20c14339-b536-42cb-b4bd-1bed00328882_3000x1458.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PkCh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20c14339-b536-42cb-b4bd-1bed00328882_3000x1458.png" width="1456" height="708" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/20c14339-b536-42cb-b4bd-1bed00328882_3000x1458.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:708,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:232346,&quot;alt&quot;:&quot;A dark mode web application showing a chat interface. The user asks for the total number of customers. The AI agent replies with the exact number and displays expandable menus to view the generated SQL code and the raw data.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/192485028?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20c14339-b536-42cb-b4bd-1bed00328882_3000x1458.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A dark mode web application showing a chat interface. The user asks for the total number of customers. The AI agent replies with the exact number and displays expandable menus to view the generated SQL code and the raw data." title="A dark mode web application showing a chat interface. The user asks for the total number of customers. The AI agent replies with the exact number and displays expandable menus to view the generated SQL code and the raw data." srcset="https://substackcdn.com/image/fetch/$s_!PkCh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20c14339-b536-42cb-b4bd-1bed00328882_3000x1458.png 424w, https://substackcdn.com/image/fetch/$s_!PkCh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20c14339-b536-42cb-b4bd-1bed00328882_3000x1458.png 848w, https://substackcdn.com/image/fetch/$s_!PkCh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20c14339-b536-42cb-b4bd-1bed00328882_3000x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!PkCh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20c14339-b536-42cb-b4bd-1bed00328882_3000x1458.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Question: &#8220;How many customers are there in total in the database?&#8221;</figcaption></figure></div><p>You might think this sounds incredibly complex. I&#8217;ll let you in on a secret. <strong>It&#8217;s mostly just two Python files that Gemini Pro generated for me.</strong> You&#8217;d be shocked to see how easy how easy it is to build a proof of concept. Anyone can do it in a few hours. It isn&#8217;t some high-level engineering magic. It&#8217;s really about following a clear process and understanding a few core agentic concepts. It&#8217;s the kind of project that makes you look incredibly smart at the office.</p><p>You might ask why we bother building an AI agent when business teams can just use Gemini, or any other LLM, to write SQL. The reason is that AI tools are great at writing code, but copying and pasting queries is a terrible experience for decision-makers. This AI agent handles the execution automatically. <strong>It also manages security, reliability, and costs.</strong> It interprets the user&#8217;s intent, writes the query, and shows a nice table or a chart. It&#8217;s much smoother than jumping between different tools. I design it as a complete experience to make life easier for the decision-makers. They won&#8217;t have to worry about the boring technical details. It acts exactly like a very fast data analyst working right on their screen.</p><p>We don&#8217;t need to debate the value of a text-to-SQL agent. In our jobs, we see the same problem every day: product teams and business leaders have plenty of data but never enough time. We have customer feedback, web analytics, and sales numbers scattered everywhere. Most decision-makers don&#8217;t know how to write SQL. They also don&#8217;t want to wait three days for the data team to pull a simple revenue report. <strong>This creates a massive dependency bottleneck</strong> that slows down every decision. LLMs democratize data access for everyone. Business users get their answers directly without bothering the data engineers. This allows the whole company to make decisions much faster.</p><p>I&#8217;m going to show you exactly how I built this using a pro plan of an LLM. I used an e-commerce dataset from Kaggle for my project. <strong>You can use any data you want</strong>, like a customer feedback file or your own web logs. Here is the plan:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!H1dL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb27561c8-ec41-4b29-869f-108907aa3c52_2752x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!H1dL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb27561c8-ec41-4b29-869f-108907aa3c52_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!H1dL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb27561c8-ec41-4b29-869f-108907aa3c52_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!H1dL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb27561c8-ec41-4b29-869f-108907aa3c52_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!H1dL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb27561c8-ec41-4b29-869f-108907aa3c52_2752x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!H1dL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb27561c8-ec41-4b29-869f-108907aa3c52_2752x1536.png" width="2752" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b27561c8-ec41-4b29-869f-108907aa3c52_2752x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:2752,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:997749,&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.theaithinker.com/i/192485028?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf9ce084-327a-4e46-8fec-7a76c091f989_2752x1536.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_!H1dL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb27561c8-ec41-4b29-869f-108907aa3c52_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!H1dL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb27561c8-ec41-4b29-869f-108907aa3c52_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!H1dL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb27561c8-ec41-4b29-869f-108907aa3c52_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!H1dL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb27561c8-ec41-4b29-869f-108907aa3c52_2752x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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><ul><li><p><strong>Demo:</strong> First, we&#8217;ll look at the final web interface and the project files to understand exactly what we&#8217;re trying to build.</p></li><li><p><strong>Workflow:</strong> Next, I&#8217;ll show you my slightly chaotic vibe coding process using Gemini to write the logic and Claude to ruthlessly review it.</p></li><li><p><strong>Architecture:</strong> Then, we&#8217;ll break down the core engine. We&#8217;ll look at how to turn CSVs into a database, map out the LangGraph nodes, and set up strict security guardrails.</p></li><li><p><strong>Reality check:</strong> Finally, we&#8217;ll cover the most important part of the entire project: building an eval dashboard to ensure the agent doesn&#8217;t invent fake numbers.</p></li></ul><p>Most of us have some old CSV file sitting in a folder somewhere. You just need to follow a few simple steps to bring it to life. <strong>You&#8217;ll ask your LLM to produce two Python files</strong> and you&#8217;ll be ready to go. It&#8217;s a fun project that feels like a shortcut to becoming an AI-native builder. You&#8217;ll realize that you don&#8217;t need to be an SQL expert to create something truly useful. Grab your coffee and let&#8217;s do it!</p><div><hr></div><h2>Demo: what we are actually building</h2><p>Before we dive into the build process, let me show you the final result again. You open a web interface, you see a search bar, and <strong>you type a question in natural language</strong>. Here is what you get back.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Jri-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a596cdb-443b-4bb5-b02a-413942b1474d_3000x1458.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Jri-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a596cdb-443b-4bb5-b02a-413942b1474d_3000x1458.png 424w, https://substackcdn.com/image/fetch/$s_!Jri-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a596cdb-443b-4bb5-b02a-413942b1474d_3000x1458.png 848w, https://substackcdn.com/image/fetch/$s_!Jri-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a596cdb-443b-4bb5-b02a-413942b1474d_3000x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!Jri-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a596cdb-443b-4bb5-b02a-413942b1474d_3000x1458.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Jri-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a596cdb-443b-4bb5-b02a-413942b1474d_3000x1458.png" width="1456" height="708" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5a596cdb-443b-4bb5-b02a-413942b1474d_3000x1458.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:708,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:309700,&quot;alt&quot;:&quot;A dark mode web application interface showing a user asking for the top 5 product categories by revenue, and the agent providing a text summary of the answer.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/192485028?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a596cdb-443b-4bb5-b02a-413942b1474d_3000x1458.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A dark mode web application interface showing a user asking for the top 5 product categories by revenue, and the agent providing a text summary of the answer." title="A dark mode web application interface showing a user asking for the top 5 product categories by revenue, and the agent providing a text summary of the answer." srcset="https://substackcdn.com/image/fetch/$s_!Jri-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a596cdb-443b-4bb5-b02a-413942b1474d_3000x1458.png 424w, https://substackcdn.com/image/fetch/$s_!Jri-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a596cdb-443b-4bb5-b02a-413942b1474d_3000x1458.png 848w, https://substackcdn.com/image/fetch/$s_!Jri-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a596cdb-443b-4bb5-b02a-413942b1474d_3000x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!Jri-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a596cdb-443b-4bb5-b02a-413942b1474d_3000x1458.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The agent returns a clear, formatted text response</figcaption></figure></div><p>The agent processes your question and gives you a direct answer. <strong>It also generates a chart automatically when it makes sense.</strong> This makes the data much easier to read at a glance.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!izzp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66e651c1-76a0-45ad-acf2-7918aa6cb97b_3000x1458.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!izzp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66e651c1-76a0-45ad-acf2-7918aa6cb97b_3000x1458.png 424w, https://substackcdn.com/image/fetch/$s_!izzp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66e651c1-76a0-45ad-acf2-7918aa6cb97b_3000x1458.png 848w, https://substackcdn.com/image/fetch/$s_!izzp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66e651c1-76a0-45ad-acf2-7918aa6cb97b_3000x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!izzp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66e651c1-76a0-45ad-acf2-7918aa6cb97b_3000x1458.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!izzp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66e651c1-76a0-45ad-acf2-7918aa6cb97b_3000x1458.png" width="1456" height="708" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/66e651c1-76a0-45ad-acf2-7918aa6cb97b_3000x1458.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:708,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:300669,&quot;alt&quot;:&quot;A bar chart displaying the total revenue for the top 5 product categories, categorized by different colors.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/192485028?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66e651c1-76a0-45ad-acf2-7918aa6cb97b_3000x1458.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A bar chart displaying the total revenue for the top 5 product categories, categorized by different colors." title="A bar chart displaying the total revenue for the top 5 product categories, categorized by different colors." srcset="https://substackcdn.com/image/fetch/$s_!izzp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66e651c1-76a0-45ad-acf2-7918aa6cb97b_3000x1458.png 424w, https://substackcdn.com/image/fetch/$s_!izzp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66e651c1-76a0-45ad-acf2-7918aa6cb97b_3000x1458.png 848w, https://substackcdn.com/image/fetch/$s_!izzp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66e651c1-76a0-45ad-acf2-7918aa6cb97b_3000x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!izzp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66e651c1-76a0-45ad-acf2-7918aa6cb97b_3000x1458.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A generated bar chart visualizing the top 5 categories</figcaption></figure></div><p>I designed the interface to <strong>show what happens behind the scenes</strong>. You can expand several sections to see the agent&#8217;s internal monologue. You can <strong>check how it reasoned</strong> through the problem. You can <strong>see the exact execution plan</strong> it created before writing any code.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UoOA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66f664a9-e353-4419-b9b6-be6bfc13a7a7_3000x1458.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UoOA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66f664a9-e353-4419-b9b6-be6bfc13a7a7_3000x1458.png 424w, https://substackcdn.com/image/fetch/$s_!UoOA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66f664a9-e353-4419-b9b6-be6bfc13a7a7_3000x1458.png 848w, https://substackcdn.com/image/fetch/$s_!UoOA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66f664a9-e353-4419-b9b6-be6bfc13a7a7_3000x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!UoOA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66f664a9-e353-4419-b9b6-be6bfc13a7a7_3000x1458.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UoOA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66f664a9-e353-4419-b9b6-be6bfc13a7a7_3000x1458.png" width="1456" height="708" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/66f664a9-e353-4419-b9b6-be6bfc13a7a7_3000x1458.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:708,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:288882,&quot;alt&quot;:&quot;An expanded menu showing the step-by-step logs of the agent, including query reformulation, complex query detection, and SQL translation.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/192485028?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66f664a9-e353-4419-b9b6-be6bfc13a7a7_3000x1458.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="An expanded menu showing the step-by-step logs of the agent, including query reformulation, complex query detection, and SQL translation." title="An expanded menu showing the step-by-step logs of the agent, including query reformulation, complex query detection, and SQL translation." srcset="https://substackcdn.com/image/fetch/$s_!UoOA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66f664a9-e353-4419-b9b6-be6bfc13a7a7_3000x1458.png 424w, https://substackcdn.com/image/fetch/$s_!UoOA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66f664a9-e353-4419-b9b6-be6bfc13a7a7_3000x1458.png 848w, https://substackcdn.com/image/fetch/$s_!UoOA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66f664a9-e353-4419-b9b6-be6bfc13a7a7_3000x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!UoOA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66f664a9-e353-4419-b9b6-be6bfc13a7a7_3000x1458.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Tracking the agent&#8217;s step-by-step reasoning process</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!F-wM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F165621d7-ebac-43df-9fd1-10fc57f55d68_3000x1458.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!F-wM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F165621d7-ebac-43df-9fd1-10fc57f55d68_3000x1458.png 424w, https://substackcdn.com/image/fetch/$s_!F-wM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F165621d7-ebac-43df-9fd1-10fc57f55d68_3000x1458.png 848w, https://substackcdn.com/image/fetch/$s_!F-wM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F165621d7-ebac-43df-9fd1-10fc57f55d68_3000x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!F-wM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F165621d7-ebac-43df-9fd1-10fc57f55d68_3000x1458.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!F-wM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F165621d7-ebac-43df-9fd1-10fc57f55d68_3000x1458.png" width="1456" height="708" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/165621d7-ebac-43df-9fd1-10fc57f55d68_3000x1458.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:708,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:330009,&quot;alt&quot;:&quot;An expanded menu displaying the detailed SQL execution plan, outlining the necessary tables, foreign keys for joins, and required columns.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/192485028?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F165621d7-ebac-43df-9fd1-10fc57f55d68_3000x1458.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="An expanded menu displaying the detailed SQL execution plan, outlining the necessary tables, foreign keys for joins, and required columns." title="An expanded menu displaying the detailed SQL execution plan, outlining the necessary tables, foreign keys for joins, and required columns." srcset="https://substackcdn.com/image/fetch/$s_!F-wM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F165621d7-ebac-43df-9fd1-10fc57f55d68_3000x1458.png 424w, https://substackcdn.com/image/fetch/$s_!F-wM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F165621d7-ebac-43df-9fd1-10fc57f55d68_3000x1458.png 848w, https://substackcdn.com/image/fetch/$s_!F-wM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F165621d7-ebac-43df-9fd1-10fc57f55d68_3000x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!F-wM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F165621d7-ebac-43df-9fd1-10fc57f55d68_3000x1458.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The agent&#8217;s chain-of-thought execution plan</figcaption></figure></div><p>You can also <strong>inspect the actual SQL query</strong> it generated and executed. Finally, you can <strong>look at the raw data table</strong> it pulled from the database.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Nu4m!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dcf3a69-86df-4a05-9a5e-40dcc8f986fe_3000x1458.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Nu4m!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dcf3a69-86df-4a05-9a5e-40dcc8f986fe_3000x1458.png 424w, https://substackcdn.com/image/fetch/$s_!Nu4m!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dcf3a69-86df-4a05-9a5e-40dcc8f986fe_3000x1458.png 848w, https://substackcdn.com/image/fetch/$s_!Nu4m!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dcf3a69-86df-4a05-9a5e-40dcc8f986fe_3000x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!Nu4m!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dcf3a69-86df-4a05-9a5e-40dcc8f986fe_3000x1458.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Nu4m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dcf3a69-86df-4a05-9a5e-40dcc8f986fe_3000x1458.png" width="1456" height="708" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5dcf3a69-86df-4a05-9a5e-40dcc8f986fe_3000x1458.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:708,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:287991,&quot;alt&quot;:&quot;An expanded menu showing the generated SQL code with JOIN and GROUP BY statements.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/192485028?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dcf3a69-86df-4a05-9a5e-40dcc8f986fe_3000x1458.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="An expanded menu showing the generated SQL code with JOIN and GROUP BY statements." title="An expanded menu showing the generated SQL code with JOIN and GROUP BY statements." srcset="https://substackcdn.com/image/fetch/$s_!Nu4m!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dcf3a69-86df-4a05-9a5e-40dcc8f986fe_3000x1458.png 424w, https://substackcdn.com/image/fetch/$s_!Nu4m!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dcf3a69-86df-4a05-9a5e-40dcc8f986fe_3000x1458.png 848w, https://substackcdn.com/image/fetch/$s_!Nu4m!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dcf3a69-86df-4a05-9a5e-40dcc8f986fe_3000x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!Nu4m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dcf3a69-86df-4a05-9a5e-40dcc8f986fe_3000x1458.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The exact SQL query written by the agent</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9nRi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7deb044e-d286-4053-bf75-36e3095b3377_3000x1458.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9nRi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7deb044e-d286-4053-bf75-36e3095b3377_3000x1458.png 424w, https://substackcdn.com/image/fetch/$s_!9nRi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7deb044e-d286-4053-bf75-36e3095b3377_3000x1458.png 848w, https://substackcdn.com/image/fetch/$s_!9nRi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7deb044e-d286-4053-bf75-36e3095b3377_3000x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!9nRi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7deb044e-d286-4053-bf75-36e3095b3377_3000x1458.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9nRi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7deb044e-d286-4053-bf75-36e3095b3377_3000x1458.png" width="1456" height="708" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7deb044e-d286-4053-bf75-36e3095b3377_3000x1458.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:708,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:299640,&quot;alt&quot;:&quot;An expanded menu showing the raw data table with product category names and their corresponding total revenue.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/192485028?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7deb044e-d286-4053-bf75-36e3095b3377_3000x1458.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="An expanded menu showing the raw data table with product category names and their corresponding total revenue." title="An expanded menu showing the raw data table with product category names and their corresponding total revenue." srcset="https://substackcdn.com/image/fetch/$s_!9nRi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7deb044e-d286-4053-bf75-36e3095b3377_3000x1458.png 424w, https://substackcdn.com/image/fetch/$s_!9nRi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7deb044e-d286-4053-bf75-36e3095b3377_3000x1458.png 848w, https://substackcdn.com/image/fetch/$s_!9nRi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7deb044e-d286-4053-bf75-36e3095b3377_3000x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!9nRi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7deb044e-d286-4053-bf75-36e3095b3377_3000x1458.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The raw data extracted directly from the database</figcaption></figure></div><p>I keep all these details visible because I built it. <strong>It helps me debug and understand the agent&#8217;s behavior.</strong> You would obviously hide all these technical panels if you deployed this for a business team. To an end-user, this interface feels exactly like a Custom GPT or Gem. <strong>It answers questions, but only within a strictly defined scope.</strong> If you ask it about the weather in S&#227;o Paulo, it will reject the question. If you ask it for the May 2018 revenue, it gives you the exact number.</p><p>So, what does the codebase look like? I will show you my code editor.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AAv-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedb796de-bca6-49b5-b044-e3b2d5b472ad_3248x1962.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AAv-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedb796de-bca6-49b5-b044-e3b2d5b472ad_3248x1962.png 424w, https://substackcdn.com/image/fetch/$s_!AAv-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedb796de-bca6-49b5-b044-e3b2d5b472ad_3248x1962.png 848w, https://substackcdn.com/image/fetch/$s_!AAv-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedb796de-bca6-49b5-b044-e3b2d5b472ad_3248x1962.png 1272w, https://substackcdn.com/image/fetch/$s_!AAv-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedb796de-bca6-49b5-b044-e3b2d5b472ad_3248x1962.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AAv-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedb796de-bca6-49b5-b044-e3b2d5b472ad_3248x1962.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/edb796de-bca6-49b5-b044-e3b2d5b472ad_3248x1962.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:880,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1276801,&quot;alt&quot;:&quot;A VS Code interface showing the project directory on the left and a detailed README markdown file on the right.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/192485028?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedb796de-bca6-49b5-b044-e3b2d5b472ad_3248x1962.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A VS Code interface showing the project directory on the left and a detailed README markdown file on the right." title="A VS Code interface showing the project directory on the left and a detailed README markdown file on the right." srcset="https://substackcdn.com/image/fetch/$s_!AAv-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedb796de-bca6-49b5-b044-e3b2d5b472ad_3248x1962.png 424w, https://substackcdn.com/image/fetch/$s_!AAv-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedb796de-bca6-49b5-b044-e3b2d5b472ad_3248x1962.png 848w, https://substackcdn.com/image/fetch/$s_!AAv-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedb796de-bca6-49b5-b044-e3b2d5b472ad_3248x1962.png 1272w, https://substackcdn.com/image/fetch/$s_!AAv-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedb796de-bca6-49b5-b044-e3b2d5b472ad_3248x1962.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The project structure inside the VS Code editor</figcaption></figure></div><p>I lied a little bit earlier. The project has more than two files. But my original point stands. <strong>Only two main files hold the core structure of the app:</strong> <code>agent.py</code> and <code>app.py</code>. The rest are just small utility scripts. I also didn&#8217;t lie about writing the code. I didn&#8217;t write a single line of this myself. <strong>I used the Pro version of Gemini to generate everything.</strong> Gemini writes much better Python code than I do anyway.</p><p>You probably want to click a link and test this application right now. I totally get it. It&#8217;s a fun agent. Unfortunately, I didn&#8217;t deploy it to the public web. Every time you ask a question, the app sends a request to OpenAI. That costs money. I used OpenAI for the reasoning and<strong> set a strict five-euro budget</strong> for this entire project. I generated a secret API token and stored it locally on my machine. I didn&#8217;t use a free open-source model. <strong>But I put all these files in a <a href="https://github.com/adamfaik/sql-agent">public GitHub repository</a>.</strong> You can explore the code directly.</p><p><strong>Publishing the app would be very easy.</strong> The code is on GitHub and the Streamlit framework makes web deployment trivial. But my five-euro budget might disappear in few days. So, if you want to play with it, you can <strong>clone the GitHub repository</strong> and run it locally on your computer. The README.md (<a href="https://github.com/adamfaik/sql-agent/blob/main/README.md">read on GitHub</a>) file helps you run the agent locally.</p><p>Now that you know what the final agent looks like, let&#8217;s talk about <strong>how to actually build it.</strong> Let me walk you through my exact, slightly messy process for vibe coding this entire project using two LLMs.</p><div><hr></div><h2>Workflow: vibe code with two LLMs</h2><p>Let&#8217;s dive into my process. People call it vibe coding today. Honestly, <strong>it&#8217;s often a very chaotic experience.</strong> You fight the code constantly. You hit errors, you don&#8217;t understand everything immediately, and it gets frustrating. Then suddenly it works, and you only remember the good parts. I didn&#8217;t take screenshots of every single error I encountered. I struggled a lot. But I&#8217;m very happy with the final result. <strong>You just need to be extremely persistent.</strong> You will struggle, but it always works in the end if you don&#8217;t give up.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ogan!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9b07eab-f208-49ce-a47f-a42081724320_2752x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ogan!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9b07eab-f208-49ce-a47f-a42081724320_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!ogan!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9b07eab-f208-49ce-a47f-a42081724320_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!ogan!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9b07eab-f208-49ce-a47f-a42081724320_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!ogan!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9b07eab-f208-49ce-a47f-a42081724320_2752x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ogan!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9b07eab-f208-49ce-a47f-a42081724320_2752x1536.png" width="2752" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b9b07eab-f208-49ce-a47f-a42081724320_2752x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:2752,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:966116,&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.theaithinker.com/i/192485028?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6203ccca-7fc8-4600-9a4e-705c4bf69be8_2752x1536.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_!ogan!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9b07eab-f208-49ce-a47f-a42081724320_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!ogan!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9b07eab-f208-49ce-a47f-a42081724320_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!ogan!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9b07eab-f208-49ce-a47f-a42081724320_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!ogan!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9b07eab-f208-49ce-a47f-a42081724320_2752x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>1. Pick a real database to start building</h3><p>First, I needed some data to test my idea. I went on Kaggle and found the <a href="https://www.kaggle.com/datasets/olistbr/brazilian-ecommerce">Olist e-commerce database</a>. I downloaded it to my Mac.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!W__e!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F851bf322-a105-4822-9902-84543792ae49_3000x1458.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!W__e!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F851bf322-a105-4822-9902-84543792ae49_3000x1458.png 424w, https://substackcdn.com/image/fetch/$s_!W__e!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F851bf322-a105-4822-9902-84543792ae49_3000x1458.png 848w, https://substackcdn.com/image/fetch/$s_!W__e!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F851bf322-a105-4822-9902-84543792ae49_3000x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!W__e!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F851bf322-a105-4822-9902-84543792ae49_3000x1458.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!W__e!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F851bf322-a105-4822-9902-84543792ae49_3000x1458.png" width="1456" height="708" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/851bf322-a105-4822-9902-84543792ae49_3000x1458.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:708,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:600110,&quot;alt&quot;:&quot;The Kaggle web page for the Brazilian E-Commerce Public Dataset by Olist, showing a download button and dataset details.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/192485028?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F851bf322-a105-4822-9902-84543792ae49_3000x1458.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Kaggle web page for the Brazilian E-Commerce Public Dataset by Olist, showing a download button and dataset details." title="The Kaggle web page for the Brazilian E-Commerce Public Dataset by Olist, showing a download button and dataset details." srcset="https://substackcdn.com/image/fetch/$s_!W__e!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F851bf322-a105-4822-9902-84543792ae49_3000x1458.png 424w, https://substackcdn.com/image/fetch/$s_!W__e!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F851bf322-a105-4822-9902-84543792ae49_3000x1458.png 848w, https://substackcdn.com/image/fetch/$s_!W__e!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F851bf322-a105-4822-9902-84543792ae49_3000x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!W__e!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F851bf322-a105-4822-9902-84543792ae49_3000x1458.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Downloading the Olist dataset from Kaggle to start the project</figcaption></figure></div><p>This dataset looked very solid. <strong>It has massive tables and a lot of data points.</strong> I figured if I can handle this complex database, I can handle any simple CSV file later. I wanted to start with a tough challenge. Just to give you an idea of what we are dealing with, here is the structure of the database. It connects customers, orders, payments, and products across multiple interconnected tables.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-Yal!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f547139-4673-4068-a354-5128126307df_2486x1496.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-Yal!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f547139-4673-4068-a354-5128126307df_2486x1496.png 424w, https://substackcdn.com/image/fetch/$s_!-Yal!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f547139-4673-4068-a354-5128126307df_2486x1496.png 848w, https://substackcdn.com/image/fetch/$s_!-Yal!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f547139-4673-4068-a354-5128126307df_2486x1496.png 1272w, https://substackcdn.com/image/fetch/$s_!-Yal!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f547139-4673-4068-a354-5128126307df_2486x1496.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-Yal!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f547139-4673-4068-a354-5128126307df_2486x1496.png" width="1456" height="876" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2f547139-4673-4068-a354-5128126307df_2486x1496.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:876,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:209677,&quot;alt&quot;:&quot;Entity-Relationship Diagram of the Olist dataset showing multiple interconnected tables including orders, customers, products, and payments linked by specific IDs.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/192485028?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f547139-4673-4068-a354-5128126307df_2486x1496.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Entity-Relationship Diagram of the Olist dataset showing multiple interconnected tables including orders, customers, products, and payments linked by specific IDs." title="Entity-Relationship Diagram of the Olist dataset showing multiple interconnected tables including orders, customers, products, and payments linked by specific IDs." srcset="https://substackcdn.com/image/fetch/$s_!-Yal!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f547139-4673-4068-a354-5128126307df_2486x1496.png 424w, https://substackcdn.com/image/fetch/$s_!-Yal!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f547139-4673-4068-a354-5128126307df_2486x1496.png 848w, https://substackcdn.com/image/fetch/$s_!-Yal!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f547139-4673-4068-a354-5128126307df_2486x1496.png 1272w, https://substackcdn.com/image/fetch/$s_!-Yal!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f547139-4673-4068-a354-5128126307df_2486x1496.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The complex database schema we need the AI agent to navigate (<a href="https://www.kaggle.com/datasets/olistbr/brazilian-ecommerce">source</a>)</figcaption></figure></div><p>You can pick any data you want for your own project. You can use fake data or real feedback logs from your product. <strong>You just need some basic CSV files to start.</strong></p><h3>2. Use Gemini to write code and Claude to review it</h3><p>Next, <strong>I opened two browser tabs.</strong> I opened one tab for Gemini and one tab for Claude. <strong>I treat Gemini like a junior developer.</strong> Gemini writes reasonable code and handles the logic well. The best part is that I can actually read its code. I ask Gemini to write very detailed comments so I understand everything. I read the code line by line. I just explain my goal to Gemini, and it writes honest, clean code for me.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dSs0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40b36a07-1f32-4f63-a431-e51f11d54dbe_2752x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dSs0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40b36a07-1f32-4f63-a431-e51f11d54dbe_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!dSs0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40b36a07-1f32-4f63-a431-e51f11d54dbe_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!dSs0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40b36a07-1f32-4f63-a431-e51f11d54dbe_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!dSs0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40b36a07-1f32-4f63-a431-e51f11d54dbe_2752x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dSs0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40b36a07-1f32-4f63-a431-e51f11d54dbe_2752x1536.png" width="2752" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/40b36a07-1f32-4f63-a431-e51f11d54dbe_2752x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:2752,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:818914,&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.theaithinker.com/i/192485028?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F860bbb5b-dfdf-441e-89d3-a35892fcfa3f_2752x1536.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_!dSs0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40b36a07-1f32-4f63-a431-e51f11d54dbe_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!dSs0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40b36a07-1f32-4f63-a431-e51f11d54dbe_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!dSs0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40b36a07-1f32-4f63-a431-e51f11d54dbe_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!dSs0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40b36a07-1f32-4f63-a431-e51f11d54dbe_2752x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>I use Claude as a senior code reviewer.</strong> I don&#8217;t explain any context to Claude. I don&#8217;t tell it the project story or my goals. I assume Claude has done this exact project ten times already. I take the Python file Gemini wrote and paste it directly into Claude. I just ask, &#8220;What do you think of this?&#8221; It&#8217;s actually really funny. Claude immediately generates a massive backlog of things to fix. <strong>It points out every single flaw.</strong></p><p>Claude always offers to rewrite the whole file to make it cleaner. I always say no. I tell it to just give me the bullet points. I take those bullet points back to Gemini. <strong>I tell Gemini to write a new block of code to fix the specific issue.</strong> I copy that new block and paste it into my file.</p><p>You are probably thinking this sounds like <strong>a lot of copying and pasting.</strong> You&#8217;re absolutely right. I copy and paste constantly. But this is exactly how I learn Python right now. It forces me to understand <strong>how every single line contributes to the application.</strong> It keeps me moving forward.</p><h3>3. Organize your screens for efficient coding</h3><p>So, I keep my two LLM assistants in one window. In another window, I open the code editor. I use VS Code. I also keep GitHub open. I like to <strong>create a checkpoint every time I make a successful change.</strong> It helps me track my progress.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!eFYd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00de8d61-04c7-47b3-a27d-2ce80459229e_2752x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eFYd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00de8d61-04c7-47b3-a27d-2ce80459229e_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!eFYd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00de8d61-04c7-47b3-a27d-2ce80459229e_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!eFYd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00de8d61-04c7-47b3-a27d-2ce80459229e_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!eFYd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00de8d61-04c7-47b3-a27d-2ce80459229e_2752x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eFYd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00de8d61-04c7-47b3-a27d-2ce80459229e_2752x1536.png" width="2752" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/00de8d61-04c7-47b3-a27d-2ce80459229e_2752x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:2752,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:955536,&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.theaithinker.com/i/192485028?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fa28807-0001-4e59-8845-bbe2900f4909_2752x1536.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_!eFYd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00de8d61-04c7-47b3-a27d-2ce80459229e_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!eFYd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00de8d61-04c7-47b3-a27d-2ce80459229e_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!eFYd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00de8d61-04c7-47b3-a27d-2ce80459229e_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!eFYd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00de8d61-04c7-47b3-a27d-2ce80459229e_2752x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"></figcaption></figure></div><p>I see a lot of people vibe coding with twenty tabs open at once. They have a very noisy setup. I don&#8217;t hate multitasking. But for vibe coding efficiently, <strong>you need a strict visual separation.</strong> You need one window for your LLM assembly. These are your colleagues guiding and coaching you. You need a second window for execution. This is where you write code and test things. I like to keep full control of the execution window for now.</p><h3>4. Ask for a plan, then iterate and fix errors block by block</h3><p>Let&#8217;s go back to the start of the project. <strong>I discuss my goal with Gemini first.</strong> I ask it to write a detailed plan. It gives me a simple step-by-step list. I tell Gemini I am a beginner and I need very detailed instructions. I copy and paste the entire Kaggle page description directly into the prompt so it understands the data. I also tell Gemini to <strong>include GitHub save points in the plan</strong>. It gives me a beautiful roadmap to follow.</p><p>Once I have the plan, I execute it with Gemini. <strong>Gemini guides me to create the first two files.</strong> I run a quick test to see if the app opens. Then, we iterate. I hit roadblocks. I paste the terminal errors back to Gemini. We fix them together. Once the app works nicely, I push a save to GitHub. Then, I show the working code to Claude. <strong>Claude gives me security and performance tips.</strong></p><p>I do a few rounds of this back-and-forth between the two models. Eventually, Claude starts suggesting extremely complex features. <strong>The suggestions become too theoretical</strong> and don&#8217;t matter for my simple agent. I stop listening to Claude at that point.</p><h3>Avoid coding agents when you want to learn</h3><p>You might wonder why I used Gemini Pro for this. Why didn&#8217;t I use Claude Code or another dedicated coding agent? People talk about Claude Code constantly. It&#8217;s a fantastic tool. If I asked Claude Code to build this text-to-SQL app, it would do it in under a minute. I would <strong>close my eyes, click a button, and the app would be finished. </strong>But <strong>Claude Code would generate a massive, complex, industrial-grade architecture.</strong> I would stare at dozens of files and have absolutely no idea how they work. Unless you are a senior software engineer with a free week to read code line by line, you won&#8217;t understand it.</p><p>I want to actually learn what happens behind the curtain. <strong>I use Gemini so I can work block by block.</strong> I talk with the LLM. We build the logic step by step. We construct something reasonable together. I understand every piece of it. I can test it easily. I push the final save to GitHub, and the project is done. I have a working AI agent that talks to my data.</p><p>This process might sound like a chaotic mess, but <strong>it actually produces a working result.</strong> Now, let&#8217;s look at the agent architecture. We will break down the agent file by file so you can understand exactly how the engine works under the hood and how all these pieces fit together.</p><div><hr></div><h2>Architecture: build the core engine</h2><p>If you follow the workflow I just shared, you can easily build this exact same engine, or probably something even better! So why am I explaining the code if the LLMs wrote it? Because <strong>you still need to be the director.</strong> The goal of this section is to teach you the fundamental concepts of agent architecture. When you understand how the engine actually works under the hood, you can guide the LLMs, challenge their complex suggestions, and ensure they don&#8217;t skip some steps. You can rely on LLMs to write the Python syntax, but <strong>you still need to be the one steering the ship.</strong></p><p>In this section, I might get a little too enthusiastic and say things like &#8220;I built this&#8221; or &#8220;I designed that,&#8221; but keep in mind that this entire architecture is simply <strong>the result of my deep and long conversations with Gemini and Claude.</strong></p><h3>1. Prepare the data and extract the database schema</h3><p>The very first thing we need to tackle is <strong>data ingestion and schema creation.</strong> Here is the high-level view of the method.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FmdW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a157916-42a6-4ec9-bece-e2325d5d0ec9_3047x384.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FmdW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a157916-42a6-4ec9-bece-e2325d5d0ec9_3047x384.png 424w, https://substackcdn.com/image/fetch/$s_!FmdW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a157916-42a6-4ec9-bece-e2325d5d0ec9_3047x384.png 848w, https://substackcdn.com/image/fetch/$s_!FmdW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a157916-42a6-4ec9-bece-e2325d5d0ec9_3047x384.png 1272w, https://substackcdn.com/image/fetch/$s_!FmdW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a157916-42a6-4ec9-bece-e2325d5d0ec9_3047x384.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FmdW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a157916-42a6-4ec9-bece-e2325d5d0ec9_3047x384.png" width="1456" height="183" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1a157916-42a6-4ec9-bece-e2325d5d0ec9_3047x384.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:183,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:326989,&quot;alt&quot;:&quot;A flowchart showing the data preparation process. It starts with raw spreadsheets moving through an \&quot;Organize Data\&quot; step into a central database. Next, a \&quot;Create AI Blueprint\&quot; step branches into two options: a \&quot;Quick Method\&quot; yielding a basic blueprint of just column names, and a \&quot;Detailed Method\&quot; yielding a smart blueprint with column names and real examples. Both feed into the final AI Assistant.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/192485028?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a157916-42a6-4ec9-bece-e2325d5d0ec9_3047x384.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A flowchart showing the data preparation process. It starts with raw spreadsheets moving through an &quot;Organize Data&quot; step into a central database. Next, a &quot;Create AI Blueprint&quot; step branches into two options: a &quot;Quick Method&quot; yielding a basic blueprint of just column names, and a &quot;Detailed Method&quot; yielding a smart blueprint with column names and real examples. Both feed into the final AI Assistant." title="A flowchart showing the data preparation process. It starts with raw spreadsheets moving through an &quot;Organize Data&quot; step into a central database. Next, a &quot;Create AI Blueprint&quot; step branches into two options: a &quot;Quick Method&quot; yielding a basic blueprint of just column names, and a &quot;Detailed Method&quot; yielding a smart blueprint with column names and real examples. Both feed into the final AI Assistant." srcset="https://substackcdn.com/image/fetch/$s_!FmdW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a157916-42a6-4ec9-bece-e2325d5d0ec9_3047x384.png 424w, https://substackcdn.com/image/fetch/$s_!FmdW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a157916-42a6-4ec9-bece-e2325d5d0ec9_3047x384.png 848w, https://substackcdn.com/image/fetch/$s_!FmdW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a157916-42a6-4ec9-bece-e2325d5d0ec9_3047x384.png 1272w, https://substackcdn.com/image/fetch/$s_!FmdW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a157916-42a6-4ec9-bece-e2325d5d0ec9_3047x384.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">The full data ingestion workflow</figcaption></figure></div><p>We start with <a href="https://www.kaggle.com/datasets/olistbr/brazilian-ecommerce">nine massive CSV files from Kaggle</a>. We absolutely <strong>don&#8217;t want to query these raw files every time a user asks a question.</strong> That would slow the execution to a crawl and cost a fortune in API tokens. The LLM needs a standardized, organized base to work efficiently. I asked Gemini to help me write a few preparation scripts to handle this.</p><p>I organized my workspace to <strong>keep things clean.</strong> I have a <code>data</code> folder for the incoming CSV files. I have a <code>scripts</code> folder for my Python preparation files. <strong>You have to be very careful when pushing projects to GitHub.</strong> It&#8217;s a common rule to never publish raw business data online. I used a <strong>.gitignore</strong> file (<a href="https://github.com/adamfaik/sql-agent/blob/main/.gitignore">read on GitHub</a>) to block the CSV files and the database from uploading. I also hid my <code>.env</code> file containing my OpenAI API key. Gemini walked me through setting up these security measures.</p><p>The first script is <code>build_db.py</code> (<a href="https://github.com/adamfaik/sql-agent/blob/main/scripts/build_db.py">read on GitHub</a>). <strong>This script reads all the raw CSV files and creates a simplified SQL database.</strong> We use SQLite for this. SQLite is a super lightweight database engine. It stores everything in a simple local file on your computer. You don&#8217;t need to spin up a complicated external server or manage credentials. It&#8217;s the perfect tool for fast prototyping.</p><p>Next, the agent needs to <strong>understand the architecture of the new database</strong>. The <code>extract_schema.py</code> file (<a href="https://github.com/adamfaik/sql-agent/blob/main/scripts/extract_schema.py">read on GitHub</a>) connects to the SQLite file. It queries the internal system to extract the raw structure. It isolates the technical instructions and saves this text to map out the model. This gives a basic list of columns and tables.</p><p>But a raw list of columns isn&#8217;t enough. The LLM needs to understand the actual content. This is where <code>build_schema.py</code> comes in (<a href="https://github.com/adamfaik/sql-agent/blob/main/scripts/build_schema.py">read on GitHub</a>). This script generates a much richer, semantic version of the schema.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;92078685-20f7-4410-81cf-a083ebf34a33&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python"># Extract from build_schema.py: The Schema Linking trick
if col_type.upper() in ["TEXT", "VARCHAR"]:
    try:
        cursor.execute(f"SELECT DISTINCT {col_name} FROM {table_name} WHERE {col_name} IS NOT NULL LIMIT 4;")
        samples = [str(row[0]) for row in cursor.fetchall()]
        if samples:
            formatted_samples = ", ".join([f"'{s}'" for s in samples])
            comment = f" -- Examples: {formatted_samples}"
    except Exception:
        pass</code></pre></div><p>This code uses a powerful technique called <strong>schema linking</strong>. For every text column, the script grabs <strong>four real values directly from the database.</strong> It connects the theoretical structure to factual content. The agent now understands the exact format it needs to search for. Instead of just seeing a column named &#8220;product_category_name&#8221;, it sees real examples like &#8220;cama_mesa_banho&#8221; or &#8220;beleza_saude&#8221;.</p><p>You can see exactly how this enriched structure looks in the generated text file <code>schema.txt</code>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YYUa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47b9fd2c-e85b-478a-8668-1692af596cf4_3248x1962.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YYUa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47b9fd2c-e85b-478a-8668-1692af596cf4_3248x1962.png 424w, https://substackcdn.com/image/fetch/$s_!YYUa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47b9fd2c-e85b-478a-8668-1692af596cf4_3248x1962.png 848w, https://substackcdn.com/image/fetch/$s_!YYUa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47b9fd2c-e85b-478a-8668-1692af596cf4_3248x1962.png 1272w, https://substackcdn.com/image/fetch/$s_!YYUa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47b9fd2c-e85b-478a-8668-1692af596cf4_3248x1962.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YYUa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47b9fd2c-e85b-478a-8668-1692af596cf4_3248x1962.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/47b9fd2c-e85b-478a-8668-1692af596cf4_3248x1962.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:880,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1383248,&quot;alt&quot;:&quot;A code editor displaying a schema.txt file, showing SQL CREATE TABLE statements where each text column has a comment listing four real example values pulled from the database.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/192485028?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47b9fd2c-e85b-478a-8668-1692af596cf4_3248x1962.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A code editor displaying a schema.txt file, showing SQL CREATE TABLE statements where each text column has a comment listing four real example values pulled from the database." title="A code editor displaying a schema.txt file, showing SQL CREATE TABLE statements where each text column has a comment listing four real example values pulled from the database." srcset="https://substackcdn.com/image/fetch/$s_!YYUa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47b9fd2c-e85b-478a-8668-1692af596cf4_3248x1962.png 424w, https://substackcdn.com/image/fetch/$s_!YYUa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47b9fd2c-e85b-478a-8668-1692af596cf4_3248x1962.png 848w, https://substackcdn.com/image/fetch/$s_!YYUa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47b9fd2c-e85b-478a-8668-1692af596cf4_3248x1962.png 1272w, https://substackcdn.com/image/fetch/$s_!YYUa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47b9fd2c-e85b-478a-8668-1692af596cf4_3248x1962.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The generated schema file injected with real data examples</figcaption></figure></div><p>Finally, the agent accesses the Olist database via the SQLite connection. The system injects this massive, enriched text directly into every instruction sent to the model. We call this a <strong>full context injection</strong>. It guarantees absolute visibility for the agent. In the past, developers had to use clever tricks to filter data and bypass memory limits. Today, context windows are huge. We can feed the LLM everything at once. The model has all the context it needs to shine and give us highly accurate SQL queries.</p><h3>2. Build the agent logic with LangGraph nodes</h3><p>Let&#8217;s look at the core of the agent. Everything happens inside the file called <code>agent.py</code> (<a href="https://github.com/adamfaik/sql-agent/blob/main/agent.py">read on GitHub</a>). It&#8217;s about 500 lines of code. That might sound like a lot. But I built it iteratively step by step with Gemini and Claude. It&#8217;s actually very simple to read. We use a framework called <strong>LangGraph</strong>.</p><p><a href="https://www.langchain.com/langgraph">LangGraph</a> is an open-source framework built by the LangChain team. You have probably heard of other agent frameworks like <a href="https://microsoft.github.io/autogen/stable//index.html">AutoGen</a> or <a href="https://crewai.com/">CrewAI</a>. Those frameworks give AI agents a lot of freedom to think and act autonomously. That is cool for experiments, but terrible for production. <strong>Highly autonomous agents often hallucinate</strong>, loop infinitely, or completely forget the user&#8217;s original request. LangGraph is different. <strong>It treats your agent like a state machine.</strong> You build independent workstations called <strong>nodes</strong>. You connect them with strict traffic rules called <strong>edges</strong>. <strong>The agent can only move exactly where you allow it to go.</strong> I chose it because it gives me absolute control over the execution flow.</p><p>Before we write the logic, we connect the LLM. I used the <a href="https://platform.openai.com/api-keys">OpenAI API</a>. <strong>I generated a secret key, pasted it into my project, and set a hard five-euro limit</strong> to test things safely. My code includes a simple configuration variable <code>model_name = "gpt-4o-mini"</code>. This makes the system completely independent. I can swap to a different model just by changing one word in the code.</p><p>The very first thing we define in the code is the AgentState. <strong>Think of this as the shared memory of the agent.</strong> It uses strict typing to track exactly what happens at every step. It stores the user&#8217;s question, the SQL plan, the raw data, and any errors. It also stores the entire conversation history. It never overwrites previous messages. It just appends new ones. This allows the agent to remember everything you discussed.</p><p>I created six specific nodes to handle the workflow. Here is a map of how the data flows through them.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UmDy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc97c163d-61de-4ead-a210-e8d4573d3943_1904x195.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UmDy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc97c163d-61de-4ead-a210-e8d4573d3943_1904x195.png 424w, https://substackcdn.com/image/fetch/$s_!UmDy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc97c163d-61de-4ead-a210-e8d4573d3943_1904x195.png 848w, https://substackcdn.com/image/fetch/$s_!UmDy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc97c163d-61de-4ead-a210-e8d4573d3943_1904x195.png 1272w, https://substackcdn.com/image/fetch/$s_!UmDy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc97c163d-61de-4ead-a210-e8d4573d3943_1904x195.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UmDy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc97c163d-61de-4ead-a210-e8d4573d3943_1904x195.png" width="1456" height="149" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c97c163d-61de-4ead-a210-e8d4573d3943_1904x195.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:149,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A flowchart diagram of the LangGraph agent architecture. It begins with user input moving to Node 1 for query reformulation, then to Node 2, a semantic router. Node 2 routes \&quot;Out of Scope\&quot; queries to a blocked end state, \&quot;Simple\&quot; queries directly to Node 4 to generate SQL, and \&quot;Complex\&quot; queries to Node 3 for planning before generating SQL. Node 4 passes the query to Node 5 to execute the SQL, which features a self-correction loop back to Node 4 if an error is detected. Successful execution moves to Node 6 to summarize results and ends with the Final UI Output.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A flowchart diagram of the LangGraph agent architecture. It begins with user input moving to Node 1 for query reformulation, then to Node 2, a semantic router. Node 2 routes &quot;Out of Scope&quot; queries to a blocked end state, &quot;Simple&quot; queries directly to Node 4 to generate SQL, and &quot;Complex&quot; queries to Node 3 for planning before generating SQL. Node 4 passes the query to Node 5 to execute the SQL, which features a self-correction loop back to Node 4 if an error is detected. Successful execution moves to Node 6 to summarize results and ends with the Final UI Output." title="A flowchart diagram of the LangGraph agent architecture. It begins with user input moving to Node 1 for query reformulation, then to Node 2, a semantic router. Node 2 routes &quot;Out of Scope&quot; queries to a blocked end state, &quot;Simple&quot; queries directly to Node 4 to generate SQL, and &quot;Complex&quot; queries to Node 3 for planning before generating SQL. Node 4 passes the query to Node 5 to execute the SQL, which features a self-correction loop back to Node 4 if an error is detected. Successful execution moves to Node 6 to summarize results and ends with the Final UI Output." srcset="https://substackcdn.com/image/fetch/$s_!UmDy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc97c163d-61de-4ead-a210-e8d4573d3943_1904x195.png 424w, https://substackcdn.com/image/fetch/$s_!UmDy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc97c163d-61de-4ead-a210-e8d4573d3943_1904x195.png 848w, https://substackcdn.com/image/fetch/$s_!UmDy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc97c163d-61de-4ead-a210-e8d4573d3943_1904x195.png 1272w, https://substackcdn.com/image/fetch/$s_!UmDy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc97c163d-61de-4ead-a210-e8d4573d3943_1904x195.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">The core LangGraph architecture</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OTml!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa78bed51-f29e-45d5-9fb3-006eab5f221f_2752x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OTml!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa78bed51-f29e-45d5-9fb3-006eab5f221f_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!OTml!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa78bed51-f29e-45d5-9fb3-006eab5f221f_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!OTml!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa78bed51-f29e-45d5-9fb3-006eab5f221f_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!OTml!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa78bed51-f29e-45d5-9fb3-006eab5f221f_2752x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OTml!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa78bed51-f29e-45d5-9fb3-006eab5f221f_2752x1536.png" width="2752" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a78bed51-f29e-45d5-9fb3-006eab5f221f_2752x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:2752,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1161612,&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.theaithinker.com/i/192485028?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37cace51-30fd-4a1b-8ed9-73599d800513_2752x1536.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_!OTml!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa78bed51-f29e-45d5-9fb3-006eab5f221f_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!OTml!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa78bed51-f29e-45d5-9fb3-006eab5f221f_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!OTml!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa78bed51-f29e-45d5-9fb3-006eab5f221f_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!OTml!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa78bed51-f29e-45d5-9fb3-006eab5f221f_2752x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>Let&#8217;s break down exactly what happens at each of these six workstations.</p><p><strong>Node 1: Reformulate query.</strong> Users never ask complete questions. They say things like &#8220;What about the second product?&#8221;. The LLM cannot write SQL for that. <strong>This node acts as a context barrier.</strong> It reads the chat history and rewrites the user&#8217;s input into a standalone sentence. It changes &#8220;What about the second one?&#8221; to &#8220;What is the total revenue for beauty products in 2018?&#8221;. This is incredibly useful. The downstream nodes don&#8217;t have to worry about chat history. They only focus on a perfectly clear question.</p><p><strong>Node 2: Classify query. </strong>This is the semantic router. <strong>It analyzes the question and assigns it a complexity level</strong>: simple, complex, or out of scope. If a user asks about the weather in S&#227;o Paulo, this node blocks it immediately. This saves money. We don&#8217;t waste compute power trying to write SQL for an irrelevant question. For this node, I force the LLM to output a strict JSON format. LLM models love to chat. I don&#8217;t want a conversational answer here. I just want a structured category and a reason.</p><p><strong>Node 3: Plan SQL query. </strong>This node only activates for complex questions. We use a famous technique called <strong>chain of thought</strong>. We ask the model to <strong>plan its join strategy in plain English before writing any code.</strong> It lists the required tables and foreign keys. Separating the architectural thinking from the syntax writing massively reduces hallucinations on hard questions.</p><p><strong>Node 4: Generate SQL. </strong>This node translates the plan into real SQL code. I use a technique called <strong>in-context learning</strong>. I inject three perfectly written examples of SQL queries directly into the initial instructions. The LLM mimics the style of those examples. I also set the model&#8217;s temperature to exactly zero. A high temperature makes the LLM creative and varied. We are writing database code. We demand strict, rigid accuracy, not creativity.</p><p><strong>Node 5: Execute SQL. </strong>This is where Python takes over. <strong>The script takes the generated SQL and runs it directly against the local SQLite database.</strong> It extracts the raw data. The LLM has a limited context window. If the user asks for a table of 50,000 customers, the app will crash and burn our budget. My Python code specifically truncates the results. It limits the data sent back to the LLM to a maximum of 10 rows. It also adds a warning note to tell the model that the data was truncated. We show the user a preview, but we protect the system.</p><p><strong>Node 6: Summarize results. </strong>This final node translates the raw database output back into a human-friendly text. <strong>It explains the numbers clearly.</strong> It also analyzes the data shape and decides on the best chart type to display in the user interface.</p><p>After building the nodes, <strong>I had to define the traffic rules.</strong> I wrote conditional edges to control the flow. The most important rule is the <strong>self-correction loop</strong>. When node 5 executes the SQL, it might hit a syntax error. If that happens, the routing logic catches the error message. It sends the error back to Node 4 (Generate SQL). It tells the LLM, &#8220;You made a mistake, here is the error, fix your code.&#8221; The agent tries to fix itself automatically. I capped this loop at three maximum retries to prevent infinite loops.</p><p>Finally, <strong>I wrapped the whole graph in a MemorySaver.</strong> This acts as a long-term checkpoint system. It records the exact position and state of the agent after every single action.</p><p><strong>Every single node relies on a highly specialized system prompt.</strong> Writing good prompts is key to a stable agent. You have to give the LLM extremely explicit constraints. Let me show you the full prompt construction for node 4 (Generate SQL) as an example:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;0da75ec9-81bd-4c22-93fe-d82baf4c49d2&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python"># Craft the main system prompt
system_prompt = f"""You are an expert SQLite data analyst.
Your task is to translate the user's question into a valid SQLite query.

Here is the schema of the database:
{schema}

Rules:
1. Return ONLY the raw SQL query.
2. Do not wrap the SQL in markdown formatting (e.g., no ```sql).
3. Do not add any explanations or text.
4. Use JOINs correctly based on the provided schema.
5. CRITICAL LANGUAGE &amp; FORMAT RULE: The database only stores category names in Portuguese (product_category_name) and English (product_category_name_english). Furthermore, the English names are ALWAYS formatted in lowercase with underscores instead of spaces (e.g., 'health_beauty', 'watches_gifts'). If the chat history mentions categories in French, translate them to English AND format them with lowercase and underscores for the WHERE clause.
"""

# Inject Few-Shot examples ONLY if enabled
if use_few_shot:
    system_prompt += f"\n{few_shot_examples}\n"

# Self-correction logic: inject previous errors
if error:
    system_prompt += f"\n\nWARNING: Your previous query failed with this error: {error}. Please correct your SQL."

# Inject the architectural plan for complex queries
if plan:
    system_prompt += f"\n\nCRITICAL: Follow this architectural plan to write your SQL:\n{plan}"</code></pre></div><p>This prompt is structured and highly specific. I don&#8217;t just ask the LLM to &#8220;be careful with languages&#8221;. <strong>I tell it exactly how the database formats strings.</strong> I explain the exact lowercase and underscore rules. Then, the code dynamically injects the few-shot examples, the execution plan, and even the exact error message if the LLM messed up the previous try. This dynamic context is exactly what prevents your application from crashing when a user types a category name with a capital letter.</p><h3>3. Create the web interface with Streamlit</h3><p>Now we need a user interface. We only need one file for this: <code>app.py</code> (<a href="https://github.com/adamfaik/sql-agent/blob/main/app.py">read on GitHub</a>). I used a framework called <a href="https://streamlit.io/">Streamlit</a> to build it. A brilliant startup created Streamlit a few years ago, and Snowflake recently bought them. It&#8217;s completely open-source. It lets you build interactive web applications using only Python. You don&#8217;t need to write a single line of HTML, CSS, or JavaScript. It&#8217;s incredibly liberating for product builders. <strong>You just write your Python logic, and Streamlit renders a beautiful UI instantly.</strong> It&#8217;s the ultimate tool to turn a quick script into a professional product you can actually share.</p><p><strong>The interface needs a memory system.</strong> A chat app is useless if it forgets your last message. I use a built-in feature called <code>session_state</code> to store the conversation history. I also generate a unique <code>thread_id</code> for every user session. I pass this ID directly to our LangGraph agent. This guarantees the agent remembers exactly what we discussed five minutes ago. You can ask follow-up questions naturally without repeating yourself.</p><p>Let&#8217;s look at the actual user experience. When you type a question, the interface doesn&#8217;t just freeze and make you wait in silence. <strong>It shows you exactly what the agent is doing in real-time.</strong> I built a glass box interface. You can literally watch the agent think.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aVTP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F891ef2ff-bc52-4338-8b12-bff19bbbce0c_3000x1458.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aVTP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F891ef2ff-bc52-4338-8b12-bff19bbbce0c_3000x1458.png 424w, https://substackcdn.com/image/fetch/$s_!aVTP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F891ef2ff-bc52-4338-8b12-bff19bbbce0c_3000x1458.png 848w, https://substackcdn.com/image/fetch/$s_!aVTP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F891ef2ff-bc52-4338-8b12-bff19bbbce0c_3000x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!aVTP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F891ef2ff-bc52-4338-8b12-bff19bbbce0c_3000x1458.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aVTP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F891ef2ff-bc52-4338-8b12-bff19bbbce0c_3000x1458.png" width="1456" height="708" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/891ef2ff-bc52-4338-8b12-bff19bbbce0c_3000x1458.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:708,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:288882,&quot;alt&quot;:&quot;The web interface showing a status container expanding to reveal the agent&#8217;s internal steps, like reformulating the query and detecting complexity.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/192485028?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F891ef2ff-bc52-4338-8b12-bff19bbbce0c_3000x1458.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The web interface showing a status container expanding to reveal the agent&#8217;s internal steps, like reformulating the query and detecting complexity." title="The web interface showing a status container expanding to reveal the agent&#8217;s internal steps, like reformulating the query and detecting complexity." srcset="https://substackcdn.com/image/fetch/$s_!aVTP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F891ef2ff-bc52-4338-8b12-bff19bbbce0c_3000x1458.png 424w, https://substackcdn.com/image/fetch/$s_!aVTP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F891ef2ff-bc52-4338-8b12-bff19bbbce0c_3000x1458.png 848w, https://substackcdn.com/image/fetch/$s_!aVTP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F891ef2ff-bc52-4338-8b12-bff19bbbce0c_3000x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!aVTP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F891ef2ff-bc52-4338-8b12-bff19bbbce0c_3000x1458.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Tracking the agent&#8217;s live progress step by step</figcaption></figure></div><p>I built this transparency using a Streamlit component called <code>st.status</code>. The LangGraph agent streams events back to the interface as it moves from node to node. <strong>I catch these events in a simple loop.</strong> I check the <code>node_name</code> and display the corresponding information inside an expandable menu using <code>st.expander</code>.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;de8370ac-4995-44b3-83f7-146d41a6626a&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python"># Catching the agent's events to display intermediate steps
for event in st.session_state.agent_graph.stream(initial_state, config=config):
    for node_name, node_state in event.items():
        
        if node_name == "plan_sql_query":
            status.write("&#9203; &#201;laboration du plan de jointure...")
            with st.expander("&#128203; Voir le plan d'ex&#233;cution", expanded=False):
                st.markdown(node_state.get("sql_plan"))
        
        elif node_name == "generate_sql":
            status.write("&#9203; Traduction en SQL...")
            with st.expander("&#128269; View Generated SQL", expanded=False):
                st.code(node_state.get("sql_query"), language="sql")</code></pre></div><p>This code snippet shows exactly how I pull the agent&#8217;s internal thoughts and put them on the screen.</p><h3>4. Secure the database and prevent execution errors</h3><p>We have a working app, but we can&#8217;t just hand it to the business team and hope for the best. <strong>We need serious security mechanisms.</strong> You don&#8217;t want someone to accidentally destroy your database or run up a massive API bill. Let&#8217;s look at exactly how I implemented these guardrails in the code. It&#8217;s actually much easier than it sounds.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IQR9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97ff633d-cc2c-46cf-afa7-e849bc9a0371_2752x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IQR9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97ff633d-cc2c-46cf-afa7-e849bc9a0371_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!IQR9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97ff633d-cc2c-46cf-afa7-e849bc9a0371_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!IQR9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97ff633d-cc2c-46cf-afa7-e849bc9a0371_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!IQR9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97ff633d-cc2c-46cf-afa7-e849bc9a0371_2752x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IQR9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97ff633d-cc2c-46cf-afa7-e849bc9a0371_2752x1536.png" width="2752" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/97ff633d-cc2c-46cf-afa7-e849bc9a0371_2752x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:2752,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1202767,&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.theaithinker.com/i/192485028?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74808979-a1c0-42c5-8c83-adb6c731b871_2752x1536.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_!IQR9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97ff633d-cc2c-46cf-afa7-e849bc9a0371_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!IQR9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97ff633d-cc2c-46cf-afa7-e849bc9a0371_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!IQR9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97ff633d-cc2c-46cf-afa7-e849bc9a0371_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!IQR9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97ff633d-cc2c-46cf-afa7-e849bc9a0371_2752x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>First, <strong>we have to protect the API keys.</strong> We never write passwords directly in the Python code. <strong>We store them in a hidden file called </strong><code>.env</code>. In the <code>agent.py</code> file, we just add two lines at the very top:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;f65296e0-144d-47de-b00e-012c1c82f2c0&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">from dotenv import load_dotenv
load_dotenv() # This loads your secret keys safely</code></pre></div><p>This simple step ensures we never accidentally publish our private keys to GitHub for the whole world to see.</p><p>Next, <strong>we must protect the database itself.</strong> What happens if the AI hallucinates or a user intentionally tries to execute a <code>DROP TABLE</code> command? <strong>We build a firewall right before the execution step.</strong> Many developers write a lazy rule to block specific words like <code>if "DROP" in query</code>. This is a terrible method. Users can easily bypass simple word filters. Instead, I used a library called <code>sqlparse</code> to build an <strong>Abstract Syntax Tree (AST)</strong> parser. It breaks the query into logical blocks and checks the exact core command.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;e1d25952-6c13-4e92-bf18-3fde7d058c86&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python"># STRICT SECURITY GUARDRAIL
import sqlparse

parsed_statements = sqlparse.parse(sql_query)
for statement in parsed_statements:
    if not statement.is_whitespace:
        stmt_type = statement.get_type().upper()
        
        # Only SELECT statements are allowed
        if stmt_type != 'SELECT':
            return {"error": f"Security Violation: '{stmt_type}' operation detected."}</code></pre></div><p>If the command is anything other than a simple <code>SELECT</code> statement, the program blocks the execution instantly. It&#8217;s an incredibly robust way to guarantee a strict read-only environment.</p><p><strong>We also have to prevent compute overloads.</strong> Sometimes, the LLM writes a bad query and forgets to link two tables correctly. This creates a massive <strong>cartesian product</strong>. A simple question suddenly tries to return millions of rows. This will crash the application and burn your API budget. SQLite doesn&#8217;t have a simple timeout parameter, so I used a trick with <code>set_progress_handler</code>.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;3827e9f2-d586-4c50-9519-3c8bbe7b22fc&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">import time
start_time = time.time()
TIMEOUT_SECONDS = 5.0 

def progress_handler():
    # If execution takes more than 5 seconds, abort it
    if time.time() - start_time &gt; TIMEOUT_SECONDS:
        return 1 
    return 0
    
# Check the time every 10,000 database instructions
conn.set_progress_handler(progress_handler, 10000)
cursor.execute(sql_query)</code></pre></div><p>If a query takes more than five seconds to run, the system kills it automatically.</p><p>Finally, <strong>we need to protect the LLM&#8217;s memory.</strong> If a query succeeds but returns 50,000 rows, sending all that text to the LLM will cost a fortune in API tokens. I strictly truncate the results in Python before sending the data back to the agent for the final summary.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;00964464-fed5-4db6-a23f-c333f256cff1&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">llm_row_limit = 10
formatted_results = ""

# Send only the first 10 rows to the LLM
for row in results[:llm_row_limit]:
    formatted_results += str(row) + "\n"
    
if len(results) &gt; llm_row_limit:
    formatted_results += f"\nWARNING: {len(results) - llm_row_limit} additional rows hidden to save tokens."</code></pre></div><p>We give the user a clear preview of the data in the UI, but we protect the system&#8217;s memory and our wallets. This is exactly how you build a secure agentic system.</p><p>As you can see, the core architecture really just relies on two main files. One file holds the agent&#8217;s logic, and the other holds the user interface. You will obviously write a few extra helper scripts along the way to ingest data or manage your GitHub repository. But fundamentally, <strong>the project remains very basic and simple. </strong>But having a simple architecture is meaningless if the AI hallucinates, which is why we must now <strong>build a rigorous evaluation framework to prove the system actually works.</strong></p><div><hr></div><h2>The eval: prove the system actually works</h2><p>I could have stopped right there and called it a day. The agent works, it looks great, and it answers questions. But building the agent is actually only half the job. <strong>Building a robust evaluation framework is the most important thing you will do.</strong> You might wonder why we need to spend time on this. The answer is simple. AI models change constantly. OpenAI, Google or Anthropic might release a new update tomorrow that completely breaks my carefully crafted system prompts. If that happens, my entire agent logic might need a rewrite. But <strong>a solid evaluation system never changes.</strong> It acts as an anchor. It tells you instantly if a new model makes your agent smarter or dumber. If you invest your time anywhere, invest it here.</p><h3>1. Build the test plan and SQL dataset</h3><p>Everything for this phase happens inside an <code>eval</code> folder (<a href="https://github.com/adamfaik/sql-agent/tree/main/eval">view on GitHub</a>). I started by creating a benchmark dataset of 60 test questions. You might ask why I chose exactly 60. Don&#8217;t look for a deeply scientific reason. I originally wanted to write 50. Then I found a few more interesting edge cases to add. If this were a real enterprise product, <strong>I would probably use 1,000 questions to be safe.</strong> But remember my strict five-euro budget! Running an evaluation test costs money because you send dozens of prompts to the API at once. <strong>A suite of 60 questions costs me about 50 cents per run.</strong> A massive dataset would bankrupt my little experiment in an hour.</p><p>I created a file called <code>benchmark.json</code> (<a href="https://github.com/adamfaik/sql-agent/blob/main/eval/benchmark.json">read on GitHub</a>) to act as the ultimate source of truth. <strong>It works just like a classic software testing file.</strong> It contains the question, the difficulty level, and the perfect gold SQL query we expect the agent to generate. Let&#8217;s look at what these categories mean in practice.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aOYQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f523ea4-4c17-4d77-914f-533a732bab77_2752x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aOYQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f523ea4-4c17-4d77-914f-533a732bab77_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!aOYQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f523ea4-4c17-4d77-914f-533a732bab77_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!aOYQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f523ea4-4c17-4d77-914f-533a732bab77_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!aOYQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f523ea4-4c17-4d77-914f-533a732bab77_2752x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aOYQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f523ea4-4c17-4d77-914f-533a732bab77_2752x1536.png" width="2752" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8f523ea4-4c17-4d77-914f-533a732bab77_2752x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:2752,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:993408,&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.theaithinker.com/i/192485028?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b995978-d767-4741-81ef-23c2dde165ba_2752x1536.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_!aOYQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f523ea4-4c17-4d77-914f-533a732bab77_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!aOYQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f523ea4-4c17-4d77-914f-533a732bab77_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!aOYQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f523ea4-4c17-4d77-914f-533a732bab77_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!aOYQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f523ea4-4c17-4d77-914f-533a732bab77_2752x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>First, we have <strong>15 simple questions</strong>. These test the absolute minimum performance baseline. They usually target a single table and require no joins. For example, a simple question looks like: &#8220;Tell me how many customers live in S&#227;o Paulo.&#8221; The expected gold SQL is <code>SELECT COUNT(*) FROM customers WHERE customer_city = 'sao paulo';</code>.</p><p>Second, we have <strong>25 complex questions</strong>. This is the core function of the agent. These questions force the LLM to use its chain-of-thought planner. <strong>They involve three or more tables, dates, and heavy aggregations.</strong> A complex question looks like: &#8220;What are the top 5 product categories that generate the most revenue?&#8221; The agent must write a massive query with multiple joins across order items, products, and English translations to get the right answer.</p><p>Third, we have <strong>10 out-of-scope questions</strong>. These test our semantic router and security guardrails. We ask things completely unrelated to our e-commerce data. For example: &#8220;What will the weather be like in S&#227;o Paulo next week?&#8221; The expected gold SQL here is <code>null</code>. <strong>The agent must reject the question</strong> gracefully instead of hallucinating fake weather data.</p><p>Finally, we have <strong>10 ambiguous questions</strong>. I actually didn&#8217;t plan for these. Claude suggested I add them during a code review. These questions test how the agent handles vague human language. A user might ask: &#8220;Show me the best-selling items.&#8221; The word &#8220;best&#8221; means absolutely nothing to a database. Does it mean highest revenue? Most items sold? Highest review score? There is no gold SQL possible here either. <strong>The agent needs to navigate the ambiguity safely.</strong></p><p>I know how to write SQL, but writing 60 test cases manually is incredibly boring. I let the AI do the heavy lifting. <strong>I asked Gemini to generate the entire JSON file</strong> based on the database schema. Then, I pasted the file into Claude and asked it to review Gemini&#8217;s logic. In a real company, you need an expert to verify these gold queries manually. You cannot trust an AI to grade an AI without a human baseline. But for a fast vibe coding project, this dual-LLM generation method works perfectly.</p><h3>2. Define the metrics to score the agent</h3><p>Having a big pile of test questions is a great start. But a test plan is completely useless if you don&#8217;t have a way to score it. You need clear indicators. You have to know if your agent is getting smarter or dumber every time you tweak a prompt. <strong>I defined four specific metrics to measure the success.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vBRg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1897617-a5c7-4534-8f45-f62130795026_2752x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vBRg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1897617-a5c7-4534-8f45-f62130795026_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!vBRg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1897617-a5c7-4534-8f45-f62130795026_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!vBRg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1897617-a5c7-4534-8f45-f62130795026_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!vBRg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1897617-a5c7-4534-8f45-f62130795026_2752x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vBRg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1897617-a5c7-4534-8f45-f62130795026_2752x1536.png" width="2752" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f1897617-a5c7-4534-8f45-f62130795026_2752x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:2752,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1282997,&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.theaithinker.com/i/192485028?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2072c449-24c2-4993-a26e-6ffbe9f3fd1c_2752x1536.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_!vBRg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1897617-a5c7-4534-8f45-f62130795026_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!vBRg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1897617-a5c7-4534-8f45-f62130795026_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!vBRg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1897617-a5c7-4534-8f45-f62130795026_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!vBRg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1897617-a5c7-4534-8f45-f62130795026_2752x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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 first indicator is <strong>strict exactitude</strong>. This metric runs the reference gold SQL, runs the agent&#8217;s SQL, and compares the two final data tables. It doesn&#8217;t look at the lines of code. <strong>It only looks at the raw numbers.</strong> It is highly conservative. If the agent finds the exact right answer but sorts the table differently, this metric scores it as a failure. It is ruthless. But it gives you a solid, rigorous baseline that does not rely on another AI.</p><p>Because strict exactitude is so rigid, we need a second indicator. <strong>This is semantic exactitude.</strong> It evaluates the real meaning of the answer. Strict exactitude fails a query for a bad sorting order. Semantic exactitude understands the context. <strong>I built an LLM-as-a-Judge system for this.</strong> An external AI grades the agent&#8217;s answer on a strict scale from 0 to 3. A score of 3 means the data perfectly answers the user&#8217;s question. A 2 means it is plausible but has a minor flaw. A 1 means the logic is related but wrong. A 0 is a total failure.</p><p>I use OpenAI&#8217;s <strong>most advanced model</strong>, <code>gpt-4o</code>, to act as the judge. You always want a smarter, heavier model grading the homework of your smaller, faster agent. I use a strict Pydantic model to force the judge to output a clean JSON score. Here is exactly how I prompt the judge in the code:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;84727065-1051-4695-9a7d-93dde128cadf&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python"># The strict grading rubric for our LLM Judge
judge_prompt = f"""You are an impartial SQL evaluation judge.
Your task: determine if the agent's SQL answer is semantically correct for the user's question.

User question: {item.get('question', 'N/A')}
Gold SQL result: {gold_str}
Agent SQL result: {agent_str}

Score the agent on a scale of 0 to 3:
- 3: Perfectly correct (same data, possibly different order/format)
- 2: Partially correct (right direction, missing a filter or wrong aggregation)
- 1: Wrong but related (queried the right tables but wrong logic)
- 0: Completely wrong or no SQL generated
"""</code></pre></div><p>The third metric is the <strong>valid SQL rate</strong>. This indicator simply asks if the database crashed. <strong>It counts the proportion of queries that executed without throwing a technical SQLite error.</strong> It also gives the agent full points if it successfully rejects an out-of-scope question. This metric measures the pure technical robustness of your system.</p><p>The fourth and final indicator is <strong>latency</strong>. We measure <strong>the average execution time per question in seconds.</strong> This is crucial if you want to deploy your app in production. The response time dictates the user experience. If your agent writes perfect SQL but takes 45 seconds to think, your users will close the window. This metric calculates the entire round trip. It includes the API calls, the planning phase, and any automatic self-correction loops.</p><p>So, we have our framework. We have strict and semantic exactitude to measure the quality of the answer. We have the valid SQL rate to measure technical robustness. We have latency to evaluate operational speed. Now we just need to <strong>run the tests and look at the numbers!</strong></p><h3>3. Build a dashboard to automate the tests</h3><p>I could have just written a simple Python script to run my 60 questions. I could have just printed the final scores in the terminal. But we saw how incredibly fast Streamlit is for building interfaces. <strong>I figured the evaluator deserves a great user experience too!</strong> So, I built a dedicated web dashboard just for testing the agent: <code>eval_app.py</code> (<a href="https://github.com/adamfaik/sql-agent/blob/main/eval/eval_app.py">read on GitHub</a>). It gives us a clean, visual way to launch the benchmark and analyze the results.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3O0q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2503d280-23bd-4183-9cc8-8705ca8bf93b_3000x1458.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3O0q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2503d280-23bd-4183-9cc8-8705ca8bf93b_3000x1458.png 424w, https://substackcdn.com/image/fetch/$s_!3O0q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2503d280-23bd-4183-9cc8-8705ca8bf93b_3000x1458.png 848w, https://substackcdn.com/image/fetch/$s_!3O0q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2503d280-23bd-4183-9cc8-8705ca8bf93b_3000x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!3O0q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2503d280-23bd-4183-9cc8-8705ca8bf93b_3000x1458.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3O0q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2503d280-23bd-4183-9cc8-8705ca8bf93b_3000x1458.png" width="1456" height="708" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2503d280-23bd-4183-9cc8-8705ca8bf93b_3000x1458.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:708,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:674944,&quot;alt&quot;:&quot;The Evaluation Dashboard UI showing the experiment settings on the left sidebar and the loaded benchmark dataset on the main screen.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/192485028?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2503d280-23bd-4183-9cc8-8705ca8bf93b_3000x1458.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Evaluation Dashboard UI showing the experiment settings on the left sidebar and the loaded benchmark dataset on the main screen." title="The Evaluation Dashboard UI showing the experiment settings on the left sidebar and the loaded benchmark dataset on the main screen." srcset="https://substackcdn.com/image/fetch/$s_!3O0q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2503d280-23bd-4183-9cc8-8705ca8bf93b_3000x1458.png 424w, https://substackcdn.com/image/fetch/$s_!3O0q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2503d280-23bd-4183-9cc8-8705ca8bf93b_3000x1458.png 848w, https://substackcdn.com/image/fetch/$s_!3O0q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2503d280-23bd-4183-9cc8-8705ca8bf93b_3000x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!3O0q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2503d280-23bd-4183-9cc8-8705ca8bf93b_3000x1458.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The custom Streamlit dashboard ready to evaluate the agent</figcaption></figure></div><p><strong>I added a big red button to launch the test.</strong> When you click it, the system loops through all 60 questions. It sends them to the agent, waits for the SQL execution, passes the results to our LLM judge, and calculates the scores.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ERjX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb757a79-fbdc-4139-b0c4-893c713efbf0_3000x1458.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ERjX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb757a79-fbdc-4139-b0c4-893c713efbf0_3000x1458.png 424w, https://substackcdn.com/image/fetch/$s_!ERjX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb757a79-fbdc-4139-b0c4-893c713efbf0_3000x1458.png 848w, https://substackcdn.com/image/fetch/$s_!ERjX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb757a79-fbdc-4139-b0c4-893c713efbf0_3000x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!ERjX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb757a79-fbdc-4139-b0c4-893c713efbf0_3000x1458.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ERjX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb757a79-fbdc-4139-b0c4-893c713efbf0_3000x1458.png" width="1456" height="708" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fb757a79-fbdc-4139-b0c4-893c713efbf0_3000x1458.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:708,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:297813,&quot;alt&quot;:&quot;A progress bar indicating the evaluation is running, currently on question 17 out of 60.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/192485028?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb757a79-fbdc-4139-b0c4-893c713efbf0_3000x1458.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A progress bar indicating the evaluation is running, currently on question 17 out of 60." title="A progress bar indicating the evaluation is running, currently on question 17 out of 60." srcset="https://substackcdn.com/image/fetch/$s_!ERjX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb757a79-fbdc-4139-b0c4-893c713efbf0_3000x1458.png 424w, https://substackcdn.com/image/fetch/$s_!ERjX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb757a79-fbdc-4139-b0c4-893c713efbf0_3000x1458.png 848w, https://substackcdn.com/image/fetch/$s_!ERjX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb757a79-fbdc-4139-b0c4-893c713efbf0_3000x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!ERjX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb757a79-fbdc-4139-b0c4-893c713efbf0_3000x1458.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Tracking the evaluation progress in real-time</figcaption></figure></div><p>I am naturally curious. I didn&#8217;t want to just run the test once and accept the first score. <strong>I wanted to play with the parameters.</strong> I wanted to see exactly how each feature impacts the agent&#8217;s performance. Does the agent really need all those complex nodes? To figure this out, <strong>I built a configurator in the left sidebar.</strong> This allows us to <strong>run an ablation study.</strong> An ablation study is just a fancy scientific term for turning features on and off to see what breaks.</p><p>First, I added a dropdown to change the core LLM. I limited it to three OpenAI models for this experiment: <code>gpt-3.5-turbo</code>, <code>gpt-4o-mini</code>, and <code>gpt-4o</code>. You could easily plug in open-source models here if you wanted.</p><p>Next, I added toggle switches to enable or disable three optional modules in our LangGraph architecture:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zTH6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec074a86-bfca-4adb-8301-439d2048e82f_2752x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zTH6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec074a86-bfca-4adb-8301-439d2048e82f_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!zTH6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec074a86-bfca-4adb-8301-439d2048e82f_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!zTH6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec074a86-bfca-4adb-8301-439d2048e82f_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!zTH6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec074a86-bfca-4adb-8301-439d2048e82f_2752x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zTH6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec074a86-bfca-4adb-8301-439d2048e82f_2752x1536.png" width="2752" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ec074a86-bfca-4adb-8301-439d2048e82f_2752x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:2752,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:838007,&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.theaithinker.com/i/192485028?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf4bcce1-dd26-4444-96a9-926ec7e8fcf6_2752x1536.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_!zTH6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec074a86-bfca-4adb-8301-439d2048e82f_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!zTH6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec074a86-bfca-4adb-8301-439d2048e82f_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!zTH6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec074a86-bfca-4adb-8301-439d2048e82f_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!zTH6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec074a86-bfca-4adb-8301-439d2048e82f_2752x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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><ul><li><p><strong>Few-shot prompting:</strong> Do we really need to inject the three SQL examples into the system prompt? Let&#8217;s turn it off and see if the model forgets how to format the categories.</p></li><li><p><strong>Self-correction loop:</strong> Does the agent actually fix its own SQLite syntax errors, or does it just spin in circles? We can disable the loop to find out.</p></li><li><p><strong>Chain of thought SQL planner:</strong> Does forcing the agent to write an execution plan actually help it write better code for complex queries?</p></li></ul><p>Once the test finishes, the dashboard instantly visualizes our four key indicators.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Z2Qj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1356463b-982a-410d-af9b-0277593171da_3000x1458.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Z2Qj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1356463b-982a-410d-af9b-0277593171da_3000x1458.png 424w, https://substackcdn.com/image/fetch/$s_!Z2Qj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1356463b-982a-410d-af9b-0277593171da_3000x1458.png 848w, https://substackcdn.com/image/fetch/$s_!Z2Qj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1356463b-982a-410d-af9b-0277593171da_3000x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!Z2Qj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1356463b-982a-410d-af9b-0277593171da_3000x1458.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Z2Qj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1356463b-982a-410d-af9b-0277593171da_3000x1458.png" width="1456" height="708" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1356463b-982a-410d-af9b-0277593171da_3000x1458.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:708,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:394209,&quot;alt&quot;:&quot;Circular gauges displaying the final performance metrics: Strict Accuracy, Semantic Accuracy, Valid SQL Rate, and Self-Correction Triggers.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/192485028?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1356463b-982a-410d-af9b-0277593171da_3000x1458.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Circular gauges displaying the final performance metrics: Strict Accuracy, Semantic Accuracy, Valid SQL Rate, and Self-Correction Triggers." title="Circular gauges displaying the final performance metrics: Strict Accuracy, Semantic Accuracy, Valid SQL Rate, and Self-Correction Triggers." srcset="https://substackcdn.com/image/fetch/$s_!Z2Qj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1356463b-982a-410d-af9b-0277593171da_3000x1458.png 424w, https://substackcdn.com/image/fetch/$s_!Z2Qj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1356463b-982a-410d-af9b-0277593171da_3000x1458.png 848w, https://substackcdn.com/image/fetch/$s_!Z2Qj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1356463b-982a-410d-af9b-0277593171da_3000x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!Z2Qj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1356463b-982a-410d-af9b-0277593171da_3000x1458.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The global performance metrics after a complete run</figcaption></figure></div><p>Looking at global percentages is great, but <strong>we also need to see the exact failures.</strong> Why did the agent score a 0 on question 42? To debug this, the dashboard generates a detailed log table. It shows the strict match result, the LLM Judge&#8217;s score out of 3, the judge&#8217;s exact reasoning, and any technical SQL errors encountered.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7TZC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd1c5de0-bcdb-4321-871f-5ed9e673a736_3000x1458.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7TZC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd1c5de0-bcdb-4321-871f-5ed9e673a736_3000x1458.png 424w, https://substackcdn.com/image/fetch/$s_!7TZC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd1c5de0-bcdb-4321-871f-5ed9e673a736_3000x1458.png 848w, https://substackcdn.com/image/fetch/$s_!7TZC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd1c5de0-bcdb-4321-871f-5ed9e673a736_3000x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!7TZC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd1c5de0-bcdb-4321-871f-5ed9e673a736_3000x1458.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7TZC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd1c5de0-bcdb-4321-871f-5ed9e673a736_3000x1458.png" width="1456" height="708" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bd1c5de0-bcdb-4321-871f-5ed9e673a736_3000x1458.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:708,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:670188,&quot;alt&quot;:&quot;A detailed data table showing the evaluation logs for each individual question, including the judge&#8217;s score and reasoning.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/192485028?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd1c5de0-bcdb-4321-871f-5ed9e673a736_3000x1458.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A detailed data table showing the evaluation logs for each individual question, including the judge&#8217;s score and reasoning." title="A detailed data table showing the evaluation logs for each individual question, including the judge&#8217;s score and reasoning." srcset="https://substackcdn.com/image/fetch/$s_!7TZC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd1c5de0-bcdb-4321-871f-5ed9e673a736_3000x1458.png 424w, https://substackcdn.com/image/fetch/$s_!7TZC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd1c5de0-bcdb-4321-871f-5ed9e673a736_3000x1458.png 848w, https://substackcdn.com/image/fetch/$s_!7TZC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd1c5de0-bcdb-4321-871f-5ed9e673a736_3000x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!7TZC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd1c5de0-bcdb-4321-871f-5ed9e673a736_3000x1458.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Line-by-line breakdown of the agent&#8217;s successes and failures</figcaption></figure></div><p>Running these evaluations costs real money. <strong>Clicking that red button burns about 50 cents every single time.</strong> It would be a tragedy to run 20 different configurations and lose all the data when you refresh the page. <strong>I added a small piece of code to save every single run to a local JSON file: </strong><code>runs_history.json</code> (<a href="https://github.com/adamfaik/sql-agent/blob/main/eval/runs_history.json">read on GitHub</a>).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SAxl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facd09d85-3f5b-4087-bbfd-c990e5a5f1f8_3000x1458.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SAxl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facd09d85-3f5b-4087-bbfd-c990e5a5f1f8_3000x1458.png 424w, https://substackcdn.com/image/fetch/$s_!SAxl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facd09d85-3f5b-4087-bbfd-c990e5a5f1f8_3000x1458.png 848w, https://substackcdn.com/image/fetch/$s_!SAxl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facd09d85-3f5b-4087-bbfd-c990e5a5f1f8_3000x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!SAxl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facd09d85-3f5b-4087-bbfd-c990e5a5f1f8_3000x1458.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SAxl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facd09d85-3f5b-4087-bbfd-c990e5a5f1f8_3000x1458.png" width="1456" height="708" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/acd09d85-3f5b-4087-bbfd-c990e5a5f1f8_3000x1458.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:708,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:572505,&quot;alt&quot;:&quot;A comparison table showing historical evaluation runs, detailing the model used, toggles activated, and the resulting accuracy scores.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/192485028?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facd09d85-3f5b-4087-bbfd-c990e5a5f1f8_3000x1458.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A comparison table showing historical evaluation runs, detailing the model used, toggles activated, and the resulting accuracy scores." title="A comparison table showing historical evaluation runs, detailing the model used, toggles activated, and the resulting accuracy scores." srcset="https://substackcdn.com/image/fetch/$s_!SAxl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facd09d85-3f5b-4087-bbfd-c990e5a5f1f8_3000x1458.png 424w, https://substackcdn.com/image/fetch/$s_!SAxl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facd09d85-3f5b-4087-bbfd-c990e5a5f1f8_3000x1458.png 848w, https://substackcdn.com/image/fetch/$s_!SAxl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facd09d85-3f5b-4087-bbfd-c990e5a5f1f8_3000x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!SAxl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facd09d85-3f5b-4087-bbfd-c990e5a5f1f8_3000x1458.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The ablation study history table comparing different agent configurations</figcaption></figure></div><p>This history table is the most powerful part of the dashboard. <strong>It lets you compare different model configurations side-by-side.</strong> You can clearly see how swapping from <code>gpt-3.5-turbo</code> to <code>gpt-4o-mini</code> impacts the valid SQL rate. You can see what happens when you turn off the chain of thought planner.</p><p>This is obviously a simplified evaluation setup. <strong>If you put this in production, you would build a much bigger system.</strong> You would test different system prompts, tweak the temperature, and test completely different node architectures. But even with just three toggles and three models, we can gather enough data to find the absolute best configuration for this AI agent. Let&#8217;s look at what the numbers actually revealed.</p><h3>4. Analyze the test scores and identify failures</h3><p>I ran my tests using the dashboard. <strong>I played with the configurations and analyzed the numbers.</strong> The results are truly counter-intuitive. The best configuration is not the most complex one. Our instinct tells us to turn on every single feature. However, the data proves otherwise. The optimal configuration, relying solely on few-shot prompting without the extra loops, achieved an impressive <strong>83.9% semantic accuracy</strong>. Compare this to the full stack configuration with every complex feature enabled, which <strong>only scored 80.0%.</strong></p><p><strong>The real magic bullet is in-context learning</strong> (few-shot prompting). I inject just three examples of SQL queries into the initial instructions. That simple action pushes the <code>gpt-4o</code> model&#8217;s score up to <strong>88.3%</strong>. The examples guide the model perfectly. They are absolutely critical for succeeding on complex queries.</p><p>Conversely, <strong>the SQL planner actually hurts performance.</strong> It sounds crazy, right? We add a node to force the agent to think, and it makes more mistakes. Detailed analysis reveals the core problem: <strong>the model suffers from an overthinking phenomenon.</strong> The planner specifically degrades performance on medium-complexity questions. Instead of writing a straightforward query, <strong>it invents unnecessary logical constraints</strong> and builds an execution plan that is way too heavy, which ultimately ruins the final SQL query.</p><p>Let&#8217;s look at a concrete example. I ask the agent to find the ID of the single order with the highest number of payment installments. <strong>Without the planner, the agent keeps it simple.</strong> It queries the payments table, sorts the data, and returns the exact single ID requested, scoring a perfect 3 out of 3 from the LLM judge. But <strong>when we turn the planner on, the agent overthinks it.</strong> It creates a convoluted execution plan, misunderstands the basic filtering logic, and returns a massive list of multiple IDs instead of just the top one. The query runs, but it completely fails the strict accuracy test. <strong>Too much thinking hurts performance.</strong></p><p><strong>Let&#8217;s talk about the self-correction loop.</strong> When I enable this option, the rate of valid SQL queries increases. That makes sense. The agent reads the syntax errors returned by the SQLite database and fixes its typos. But here is the catch: <strong>the overall semantic accuracy does not improve.</strong> Why? It&#8217;s a self-correction paradox. When you activate few-shot prompting, the provided examples allow the model to generate perfect SQL syntax on the very first try. The self-correction loop becomes practically inactive. <strong>The errors that remain are purely logical.</strong> The database engine cannot detect a business logic error, so the code runs perfectly and no correction is triggered. But the agent calculates the wrong thing, and the LLM judge spots this semantic error and gives it a zero.</p><p><strong>Ultimately, designing an agent is a pure game of trade-offs.</strong> A more powerful model gives you more accurate answers, but it completely destroys your wait times. The optimal configuration using the lightweight <code>gpt-4o-mini</code> model took just 4.51 seconds per question. When I upgraded to the heavier <code>gpt-4o</code> model to chase a few extra accuracy points, <strong>the latency ballooned to a massive 15.4 seconds per question.</strong> A user is not going to wait 15 seconds staring at their screen. Even if you stick to the faster model, adding complex steps like the SQL planner pushes the latency back up to 8.46 seconds.</p><p>I also dug into the agent&#8217;s recurring failures. Why does it always fail on specific questions? I identified <strong>three main traps</strong>:</p><ul><li><p>First, <strong>business vocabulary ambiguity.</strong> The agent doesn&#8217;t understand the subtle nuances of this specific company.</p></li><li><p>Second, <strong>percentages.</strong> The model calculates ratios very poorly, but this is actually a specific technical limitation of SQLite. SQLite performs integer division by default, and the model frequently forgets to explicitly cast those integers into floats before dividing them. As a result, the fraction always rounds down to zero. The good news is that migrating from a local SQLite database to a modern cloud data warehouse natively fixes this issue without requiring any changes to the agent&#8217;s logic.</p></li><li><p>Third, <strong>the translation gap.</strong> The database mixes English and Portuguese. The agent sometimes forgets to join the translation table. It tries to filter an English category directly on the Portuguese column.</p></li></ul><p>One final note on evaluation. I use a natural language model as a judge. It&#8217;s convenient, but it&#8217;s risky. <strong>LLMs have proven cognitive biases.</strong> They love long answers. They often favor the first option presented to them. The judge is not perfect. You must always keep a critical eye on its grades.</p><div><hr></div><h2>Roadmap: take the prototype to production</h2><p>If I actually deployed this to the whole company tomorrow, <strong>I would definitely add a few serious upgrades</strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bkhe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d252b6d-fa7b-433e-90fd-4179b43fbd10_2752x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bkhe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d252b6d-fa7b-433e-90fd-4179b43fbd10_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!bkhe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d252b6d-fa7b-433e-90fd-4179b43fbd10_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!bkhe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d252b6d-fa7b-433e-90fd-4179b43fbd10_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!bkhe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d252b6d-fa7b-433e-90fd-4179b43fbd10_2752x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bkhe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d252b6d-fa7b-433e-90fd-4179b43fbd10_2752x1536.png" width="2752" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3d252b6d-fa7b-433e-90fd-4179b43fbd10_2752x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:2752,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1020670,&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.theaithinker.com/i/192485028?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd917e25c-44f8-41d8-8b46-b52e0bfb7bda_2752x1536.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_!bkhe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d252b6d-fa7b-433e-90fd-4179b43fbd10_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!bkhe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d252b6d-fa7b-433e-90fd-4179b43fbd10_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!bkhe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d252b6d-fa7b-433e-90fd-4179b43fbd10_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!bkhe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d252b6d-fa7b-433e-90fd-4179b43fbd10_2752x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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 current prototype is great, but real-world users are chaotic. If I had another weekend to hack on this, I would tackle the business ambiguity first. Right now, the LLM only knows the raw database structure and a few sample values. It completely ignores the weird internal business rules. <strong>I would build a much richer data dictionary.</strong> I would document every column definition, every possible value, and all the strict business exceptions. <strong>I would even connect a RAG system.</strong> This would let the agent read the internal company wiki to understand exactly how to define &#8220;active customer&#8221; before it writes a single line of code.</p><p>Relying purely on an AI judge to grade the homework is also a bit risky long-term. <strong>We need real humans to spot-check the work.</strong> I would add simple thumbs-up and thumbs-down buttons directly to the chat interface. Business experts could randomly test queries and immediately flag bad answers. We would route this human feedback straight back to our evaluation dashboard to improve the system. It&#8217;s essentially a lightweight <strong>reinforcement learning from human feedback</strong> (RLHF) loop. It keeps the AI honest and gives us a much-needed safety net.</p><p>If this agent goes live, <strong>I would be terrified of silent failures.</strong> AI models update behind the scenes, and their reasoning performance drifts over time. <strong>We need strict, automated monitoring.</strong> I would set up a script to run our evaluation benchmark automatically every single night. If the database reliability suddenly drops, <strong>the system should instantly trigger a red alert in Slack.</strong> You want to know the agent is broken before the CEO tries to pull a crucial revenue report.</p><p>Finally, <strong>I would upgrade the agent&#8217;s memory.</strong> Right now, I hardcoded exactly three static SQL examples directly into the system prompt. That&#8217;s perfectly fine for a quick prototype, but it limits the agent&#8217;s potential. <strong>I would build an automated feedback loop.</strong> Every time a user gets a perfect answer, we save that specific question and SQL pair into a vector database. When a new question comes in, the agent would search the database and dynamically <strong>fetch the three most relevant historical examples</strong>. Instead of relying on a static prompt, the agent would literally get smarter and more adaptable every single day just by talking to your team.</p><div><hr></div><h2>Start building your own data agent today!</h2><p>So, that&#8217;s the whole project. That&#8217;s exactly how I built a custom AI agent from scratch. <strong>We went from an old folder of CSV files to a smart, conversational database.</strong> We didn&#8217;t need a massive engineering team or a computer science degree. We just used a couple of LLM colleagues, a clear plan, and some persistence. <strong>It&#8217;s completely doable for anyone willing to try.</strong></p><p>I really hope this inspired you to build your own agent. You don&#8217;t have to be a backend expert to create AI-native products anymore. <strong>You just need a problem to solve and the patience to fight through a few Python errors.</strong> Find a dataset that you actually care about. It could be your user feedback logs, your web analytics, or your sales pipeline. Go grab those files. Open up your favorite LLM and start asking for code. <strong>You will be amazed at what you can build in a single weekend.</strong> Have fun vibe coding, and let&#8217;s get to work!</p>]]></content:encoded></item><item><title><![CDATA[How to read for deep comprehension with LLMs]]></title><description><![CDATA[Copy the text and paste it into your LLM. Ask specific questions to translate abstract concepts into actionable insights. You build deep expertise and retain important knowledge.]]></description><link>https://www.theaithinker.com/p/how-to-read-for-deep-comprehension</link><guid isPermaLink="false">https://www.theaithinker.com/p/how-to-read-for-deep-comprehension</guid><dc:creator><![CDATA[Adam Faik]]></dc:creator><pubDate>Mon, 16 Mar 2026 12:02:51 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/69e517ec-4598-41f3-a57a-e260299aaccb_1024x731.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I read a lot of content every single day. I read articles during the day and novels at night. I don&#8217;t even own a television. I honestly cannot remember the last time I watched a series. I&#8217;m not saying this to brag or sound like an intellectual. I only mention it to make one specific point. I spend a huge chunk of my life consuming text. And recently, <strong>LLMs completely changed how I read.</strong></p><h2>Avoid the quick summary trap</h2><p>I&#8217;m not talking about using AI for aggregation or synthesis. Many of my friends are building custom tools to aggregate content. They scrape the daily AI news. They use AI to summarize everything into a quick podcast. They think this is the perfect time-saving solution. But what is the point of saving ten minutes on a good article just to spend that extra time doomscrolling? <strong>I look at these summary tools today and I see something incredibly superficial.</strong></p><p>The French philosopher Ren&#233; Descartes said:</p><blockquote><p><strong>The reading of all good books is like a conversation with the finest minds of past centuries.</strong></p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qpAM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe7ab766-e978-4e49-8ea4-6e4b1300cbbe_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qpAM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe7ab766-e978-4e49-8ea4-6e4b1300cbbe_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!qpAM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe7ab766-e978-4e49-8ea4-6e4b1300cbbe_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!qpAM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe7ab766-e978-4e49-8ea4-6e4b1300cbbe_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!qpAM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe7ab766-e978-4e49-8ea4-6e4b1300cbbe_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qpAM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe7ab766-e978-4e49-8ea4-6e4b1300cbbe_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/be7ab766-e978-4e49-8ea4-6e4b1300cbbe_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:8346514,&quot;alt&quot;:&quot;Black and white illustration of a person reading a book, with the ghostly figures of historical philosophers emerging from the pages.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/190439671?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe7ab766-e978-4e49-8ea4-6e4b1300cbbe_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Black and white illustration of a person reading a book, with the ghostly figures of historical philosophers emerging from the pages." title="Black and white illustration of a person reading a book, with the ghostly figures of historical philosophers emerging from the pages." srcset="https://substackcdn.com/image/fetch/$s_!qpAM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe7ab766-e978-4e49-8ea4-6e4b1300cbbe_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!qpAM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe7ab766-e978-4e49-8ea4-6e4b1300cbbe_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!qpAM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe7ab766-e978-4e49-8ea4-6e4b1300cbbe_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!qpAM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe7ab766-e978-4e49-8ea4-6e4b1300cbbe_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A literal conversation with the finest minds of past centuries</figcaption></figure></div><p>I completely agree. <strong>Every piece of text is literally a conversation with a real person.</strong> And it&#8217;s the best return on investment you can find. You pay twenty euros for a book: you get someone&#8217;s entire life of work. You spend ten minutes on an article: you absorb hours of their deep thinking. It&#8217;s an amazing deal. You just have to make the effort.</p><p>The problem is that this conversation only goes <strong>in one direction</strong>. The writer always has a specific audience in mind. Often, <strong>that target audience is not you.</strong> Think about all the new articles about AI. The topics are fascinating and highly relevant to our product work. However, developers usually write these articles for other developers. They use highly technical jargon. If you don&#8217;t know how to code, you feel completely lost. You miss out on valuable product insights because the text is simply too dense.</p><p>I talked about technical articles. But this isn&#8217;t just about developers writing for developers. You face the same issue with other topics. It happens with economics, sociology, philosophy, etc. Writers always target a specific audience. If you only read content written specifically for you, you fall into a dangerous trap. <strong>You lock yourself inside an echo chamber.</strong> You only consume what others have already digested and simplified. You stop thinking outside your bubble. This limits your innovation. You need a way to truly <strong>understand complex topics without relying on shallow summaries.</strong></p><h2>Turn reading into a dialogue</h2><p>This is exactly where LLMs come into play. <strong>They make reading feel like magic.</strong> I use the word magic intentionally here. I&#8217;m a fan of the Harry Potter books. In the second book, there is a very specific magical object. It&#8217;s a completely blank diary. The pages activate only when you ask a question. The book reads your words. It writes back to you. It creates a real-time dialogue. I read that as a child. It became my ultimate dream.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cWD2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c59d6f6-ec58-4cbb-ad38-44f377a28b42_640x536.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cWD2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c59d6f6-ec58-4cbb-ad38-44f377a28b42_640x536.jpeg 424w, https://substackcdn.com/image/fetch/$s_!cWD2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c59d6f6-ec58-4cbb-ad38-44f377a28b42_640x536.jpeg 848w, https://substackcdn.com/image/fetch/$s_!cWD2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c59d6f6-ec58-4cbb-ad38-44f377a28b42_640x536.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!cWD2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c59d6f6-ec58-4cbb-ad38-44f377a28b42_640x536.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cWD2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c59d6f6-ec58-4cbb-ad38-44f377a28b42_640x536.jpeg" width="640" height="536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7c59d6f6-ec58-4cbb-ad38-44f377a28b42_640x536.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:536,&quot;width&quot;:640,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:68885,&quot;alt&quot;:&quot;A sequence of images showing handwritten ink magically appearing and conversing on the blank pages of an old diary.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/190439671?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c59d6f6-ec58-4cbb-ad38-44f377a28b42_640x536.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A sequence of images showing handwritten ink magically appearing and conversing on the blank pages of an old diary." title="A sequence of images showing handwritten ink magically appearing and conversing on the blank pages of an old diary." srcset="https://substackcdn.com/image/fetch/$s_!cWD2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c59d6f6-ec58-4cbb-ad38-44f377a28b42_640x536.jpeg 424w, https://substackcdn.com/image/fetch/$s_!cWD2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c59d6f6-ec58-4cbb-ad38-44f377a28b42_640x536.jpeg 848w, https://substackcdn.com/image/fetch/$s_!cWD2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c59d6f6-ec58-4cbb-ad38-44f377a28b42_640x536.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!cWD2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c59d6f6-ec58-4cbb-ad38-44f377a28b42_640x536.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Tom Riddle's diary: the ultimate two-way reading experience</figcaption></figure></div><p>I always wanted that exact interaction with my books. I wanted the true conversation Descartes mentioned. <strong>Turning a complex text into a friendly chat fixes the one-way problem.</strong></p><p>Let me walk you through my exact method using a very concrete example.</p><h2>Paste the full article into AI</h2><p>Recently, I found an <a href="https://ejholmes.github.io/2026/02/28/mcp-is-dead-long-live-the-cli.html">article claiming that MCPs are dead</a>. Eric Holmes, the author, argued that Command Line Interfaces, or CLIs, are the future. This was bad news for me. I had just installed about <a href="https://cursor.com/docs/mcp/directory">ten MCPs on Cursor</a>. <strong>I really needed to understand this shift.</strong> The problem was the article targeted engineers. I didn&#8217;t even know what a CLI actually was at the time. I stared at my screen like an illiterate. <strong>The content was clearly important.</strong> I just didn&#8217;t know how to apply it to my own work.</p><p>This is where the magic happens. <strong>You are no longer alone when you read.</strong> I use a technique I call the <strong>savage Ctrl+A</strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Y9XK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F106ea0e2-000e-4d06-9746-486e0d5e32a9_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Y9XK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F106ea0e2-000e-4d06-9746-486e0d5e32a9_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!Y9XK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F106ea0e2-000e-4d06-9746-486e0d5e32a9_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!Y9XK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F106ea0e2-000e-4d06-9746-486e0d5e32a9_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!Y9XK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F106ea0e2-000e-4d06-9746-486e0d5e32a9_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Y9XK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F106ea0e2-000e-4d06-9746-486e0d5e32a9_2816x1536.png" width="728" height="397.09090909090907" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/106ea0e2-000e-4d06-9746-486e0d5e32a9_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:1536,&quot;width&quot;:2816,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:2029367,&quot;alt&quot;:&quot;A comic-style infographic showing a four-step process: selecting an entire webpage with Ctrl+A, copying it with Ctrl+C, opening an LLM like Gemini, and pasting the raw text below a simple prompt asking for a beginner's explanation.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/190439671?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15438acc-df36-42f4-9526-ee570d916330_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="A comic-style infographic showing a four-step process: selecting an entire webpage with Ctrl+A, copying it with Ctrl+C, opening an LLM like Gemini, and pasting the raw text below a simple prompt asking for a beginner's explanation." title="A comic-style infographic showing a four-step process: selecting an entire webpage with Ctrl+A, copying it with Ctrl+C, opening an LLM like Gemini, and pasting the raw text below a simple prompt asking for a beginner's explanation." srcset="https://substackcdn.com/image/fetch/$s_!Y9XK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F106ea0e2-000e-4d06-9746-486e0d5e32a9_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!Y9XK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F106ea0e2-000e-4d06-9746-486e0d5e32a9_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!Y9XK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F106ea0e2-000e-4d06-9746-486e0d5e32a9_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!Y9XK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F106ea0e2-000e-4d06-9746-486e0d5e32a9_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The savage Ctrl+A technique in four simple steps</figcaption></figure></div><ol><li><p><strong>I press Ctrl+A on my keyboard</strong>. I select the entire article on the page. I grab all the text. I even include the messy website menus and the footer. It really doesn&#8217;t matter.</p></li><li><p><strong>I copy everything with Ctrl+C.</strong> Everything.</p></li><li><p>Then, <strong>I open my favorite LLM.</strong> Right now, I use Gemini.</p></li><li><p>I write a very simple prompt. I type, &#8220;Explain this to me. I am a beginner and a non-technical person.&#8221; I type three dashes to separate my instructions. Finally, <strong>I paste the entire web page</strong> right into the prompt box.</p></li></ol><p>Here is the action in slow motion:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9d36!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff24950cd-727d-4614-97d1-46a96cf3536c_2978x1480.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9d36!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff24950cd-727d-4614-97d1-46a96cf3536c_2978x1480.png 424w, https://substackcdn.com/image/fetch/$s_!9d36!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff24950cd-727d-4614-97d1-46a96cf3536c_2978x1480.png 848w, https://substackcdn.com/image/fetch/$s_!9d36!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff24950cd-727d-4614-97d1-46a96cf3536c_2978x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!9d36!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff24950cd-727d-4614-97d1-46a96cf3536c_2978x1480.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9d36!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff24950cd-727d-4614-97d1-46a96cf3536c_2978x1480.png" width="1456" height="724" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f24950cd-727d-4614-97d1-46a96cf3536c_2978x1480.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:724,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:346023,&quot;alt&quot;:&quot;Screenshot of a technical blog post titled \&quot;MCP is dead. Long live the CLI\&quot; by Eric Holmes.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/190439671?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff24950cd-727d-4614-97d1-46a96cf3536c_2978x1480.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of a technical blog post titled &quot;MCP is dead. Long live the CLI&quot; by Eric Holmes." title="Screenshot of a technical blog post titled &quot;MCP is dead. Long live the CLI&quot; by Eric Holmes." srcset="https://substackcdn.com/image/fetch/$s_!9d36!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff24950cd-727d-4614-97d1-46a96cf3536c_2978x1480.png 424w, https://substackcdn.com/image/fetch/$s_!9d36!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff24950cd-727d-4614-97d1-46a96cf3536c_2978x1480.png 848w, https://substackcdn.com/image/fetch/$s_!9d36!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff24950cd-727d-4614-97d1-46a96cf3536c_2978x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!9d36!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff24950cd-727d-4614-97d1-46a96cf3536c_2978x1480.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The source material: dense, technical, and full of jargon</figcaption></figure></div><p>Prompt:</p><blockquote><p>Explain this to me. I am a beginner and a non-technical person.<br>---<br><em>[Raw text copied from the website&#8230;]</em></p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hFSu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7e34f4a-640d-4d14-b27a-f747b68c4b84_3002x1480.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hFSu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7e34f4a-640d-4d14-b27a-f747b68c4b84_3002x1480.png 424w, https://substackcdn.com/image/fetch/$s_!hFSu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7e34f4a-640d-4d14-b27a-f747b68c4b84_3002x1480.png 848w, https://substackcdn.com/image/fetch/$s_!hFSu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7e34f4a-640d-4d14-b27a-f747b68c4b84_3002x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!hFSu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7e34f4a-640d-4d14-b27a-f747b68c4b84_3002x1480.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hFSu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7e34f4a-640d-4d14-b27a-f747b68c4b84_3002x1480.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d7e34f4a-640d-4d14-b27a-f747b68c4b84_3002x1480.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:718,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:336289,&quot;alt&quot;:&quot;Screenshot of the Gemini interface providing a beginner-friendly summary of the technical article.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/190439671?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7e34f4a-640d-4d14-b27a-f747b68c4b84_3002x1480.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of the Gemini interface providing a beginner-friendly summary of the technical article." title="Screenshot of the Gemini interface providing a beginner-friendly summary of the technical article." srcset="https://substackcdn.com/image/fetch/$s_!hFSu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7e34f4a-640d-4d14-b27a-f747b68c4b84_3002x1480.png 424w, https://substackcdn.com/image/fetch/$s_!hFSu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7e34f4a-640d-4d14-b27a-f747b68c4b84_3002x1480.png 848w, https://substackcdn.com/image/fetch/$s_!hFSu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7e34f4a-640d-4d14-b27a-f747b68c4b84_3002x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!hFSu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7e34f4a-640d-4d14-b27a-f747b68c4b84_3002x1480.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Translating developer jargon into plain English</figcaption></figure></div><p><strong>Result: </strong>The AI instantly acted as a <strong>perfect translator.</strong> It stripped away the developer ego jargon. It gave me the big picture. It told me the author thinks the tech industry got distracted by a shiny new toy (MCP) when an old, reliable tool (CLI) does the job better. It gave me five simple, business-focused reasons why. I went from completely lost to understanding the core debate in thirty seconds.</p><p>Now that the article is inside the context window, I can start the conversation. I talk directly with the text. I always start with a basic request:</p><blockquote><p>Explain what a CLI is. Use simple terms.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nEJ0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16a79022-7211-449c-b2eb-6559d61dfe40_3002x1480.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nEJ0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16a79022-7211-449c-b2eb-6559d61dfe40_3002x1480.png 424w, https://substackcdn.com/image/fetch/$s_!nEJ0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16a79022-7211-449c-b2eb-6559d61dfe40_3002x1480.png 848w, https://substackcdn.com/image/fetch/$s_!nEJ0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16a79022-7211-449c-b2eb-6559d61dfe40_3002x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!nEJ0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16a79022-7211-449c-b2eb-6559d61dfe40_3002x1480.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nEJ0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16a79022-7211-449c-b2eb-6559d61dfe40_3002x1480.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/16a79022-7211-449c-b2eb-6559d61dfe40_3002x1480.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:718,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:367333,&quot;alt&quot;:&quot;Screenshot of Gemini explaining a Command Line Interface by contrasting it with a standard graphical user interface.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/190439671?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16a79022-7211-449c-b2eb-6559d61dfe40_3002x1480.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of Gemini explaining a Command Line Interface by contrasting it with a standard graphical user interface." title="Screenshot of Gemini explaining a Command Line Interface by contrasting it with a standard graphical user interface." srcset="https://substackcdn.com/image/fetch/$s_!nEJ0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16a79022-7211-449c-b2eb-6559d61dfe40_3002x1480.png 424w, https://substackcdn.com/image/fetch/$s_!nEJ0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16a79022-7211-449c-b2eb-6559d61dfe40_3002x1480.png 848w, https://substackcdn.com/image/fetch/$s_!nEJ0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16a79022-7211-449c-b2eb-6559d61dfe40_3002x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!nEJ0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16a79022-7211-449c-b2eb-6559d61dfe40_3002x1480.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Breaking down complex concepts with everyday comparisons</figcaption></figure></div><p><strong>Result: </strong>The AI stripped away the jargon by comparing a CLI to how I normally use my computer. It contrasted the visual buttons and mouse clicks we use every day with the blank, text-only screen of a command line. It made the <strong>underlying concept instantly relatable</strong> without relying on a single line of code.</p><p>Then, I ask about my specific situation. I want to know how this impacts my daily work:</p><blockquote><p>I currently use the Atlassian MCP to manage my Jira tickets. Based on this article, why exactly would a CLI approach be better or worse for my workflow?</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Cezx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f0478fe-7811-42e5-b3c5-9639b82ed363_3002x1480.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Cezx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f0478fe-7811-42e5-b3c5-9639b82ed363_3002x1480.png 424w, https://substackcdn.com/image/fetch/$s_!Cezx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f0478fe-7811-42e5-b3c5-9639b82ed363_3002x1480.png 848w, https://substackcdn.com/image/fetch/$s_!Cezx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f0478fe-7811-42e5-b3c5-9639b82ed363_3002x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!Cezx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f0478fe-7811-42e5-b3c5-9639b82ed363_3002x1480.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Cezx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f0478fe-7811-42e5-b3c5-9639b82ed363_3002x1480.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5f0478fe-7811-42e5-b3c5-9639b82ed363_3002x1480.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:718,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:409574,&quot;alt&quot;:&quot;Screenshot of Gemini explaining the specific pros and cons of using a CLI versus an MCP for managing Jira tickets.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/190439671?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f0478fe-7811-42e5-b3c5-9639b82ed363_3002x1480.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of Gemini explaining the specific pros and cons of using a CLI versus an MCP for managing Jira tickets." title="Screenshot of Gemini explaining the specific pros and cons of using a CLI versus an MCP for managing Jira tickets." srcset="https://substackcdn.com/image/fetch/$s_!Cezx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f0478fe-7811-42e5-b3c5-9639b82ed363_3002x1480.png 424w, https://substackcdn.com/image/fetch/$s_!Cezx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f0478fe-7811-42e5-b3c5-9639b82ed363_3002x1480.png 848w, https://substackcdn.com/image/fetch/$s_!Cezx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f0478fe-7811-42e5-b3c5-9639b82ed363_3002x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!Cezx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f0478fe-7811-42e5-b3c5-9639b82ed363_3002x1480.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Making the text directly relevant to my daily workflow</figcaption></figure></div><p><strong>Result: </strong>The AI mapped the author&#8217;s highly technical arguments <strong>directly to my daily work.</strong> It broke down exactly how a CLI would mean fewer annoying Jira log-ins, fewer random freezes, and safer permissions for my specific tickets. It transformed abstract engineering theory into a <strong>concrete assessment of my own tools.</strong></p><p>I am a visual learner. I need to see things to understand the system:</p><blockquote><p>Create a simple text-based diagram. Show the data flow of an MCP setup on the left. Show the data flow of a CLI setup on the right. Highlight the differences.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BE4Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb532471-346f-4fab-b4a0-b7bd668a2e9d_3002x1480.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BE4Y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb532471-346f-4fab-b4a0-b7bd668a2e9d_3002x1480.png 424w, https://substackcdn.com/image/fetch/$s_!BE4Y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb532471-346f-4fab-b4a0-b7bd668a2e9d_3002x1480.png 848w, https://substackcdn.com/image/fetch/$s_!BE4Y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb532471-346f-4fab-b4a0-b7bd668a2e9d_3002x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!BE4Y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb532471-346f-4fab-b4a0-b7bd668a2e9d_3002x1480.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BE4Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb532471-346f-4fab-b4a0-b7bd668a2e9d_3002x1480.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fb532471-346f-4fab-b4a0-b7bd668a2e9d_3002x1480.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:718,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:716142,&quot;alt&quot;:&quot;Screenshot of Gemini generating an ASCII-style flowchart comparing the data flows of an MCP setup versus a CLI setup.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/190439671?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb532471-346f-4fab-b4a0-b7bd668a2e9d_3002x1480.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of Gemini generating an ASCII-style flowchart comparing the data flows of an MCP setup versus a CLI setup." title="Screenshot of Gemini generating an ASCII-style flowchart comparing the data flows of an MCP setup versus a CLI setup." srcset="https://substackcdn.com/image/fetch/$s_!BE4Y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb532471-346f-4fab-b4a0-b7bd668a2e9d_3002x1480.png 424w, https://substackcdn.com/image/fetch/$s_!BE4Y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb532471-346f-4fab-b4a0-b7bd668a2e9d_3002x1480.png 848w, https://substackcdn.com/image/fetch/$s_!BE4Y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb532471-346f-4fab-b4a0-b7bd668a2e9d_3002x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!BE4Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb532471-346f-4fab-b4a0-b7bd668a2e9d_3002x1480.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Visualizing abstract systems with text-based diagrams</figcaption></figure></div><p><strong>Result:</strong> The AI generated a clean, comparative breakdown of the two architectures. It showed me the messy, extra layers of an MCP versus the direct path of a CLI. Seeing it visually mapped out <strong>made the abstract engineering concepts instantly click in my brain.</strong></p><p>I need a non-technical metaphor to explain this to my stakeholders:</p><blockquote><p>Explain the difference between MCP and CLI using a simple analogy.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QL2N!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda617d3d-89d9-43c9-973a-da51338350cf_3002x1480.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QL2N!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda617d3d-89d9-43c9-973a-da51338350cf_3002x1480.png 424w, https://substackcdn.com/image/fetch/$s_!QL2N!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda617d3d-89d9-43c9-973a-da51338350cf_3002x1480.png 848w, https://substackcdn.com/image/fetch/$s_!QL2N!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda617d3d-89d9-43c9-973a-da51338350cf_3002x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!QL2N!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda617d3d-89d9-43c9-973a-da51338350cf_3002x1480.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QL2N!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda617d3d-89d9-43c9-973a-da51338350cf_3002x1480.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/da617d3d-89d9-43c9-973a-da51338350cf_3002x1480.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:718,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:388926,&quot;alt&quot;:&quot;Screenshot of Gemini explaining the difference between MCP and CLI using a metaphor about a busy restaurant kitchen.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/190439671?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda617d3d-89d9-43c9-973a-da51338350cf_3002x1480.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of Gemini explaining the difference between MCP and CLI using a metaphor about a busy restaurant kitchen." title="Screenshot of Gemini explaining the difference between MCP and CLI using a metaphor about a busy restaurant kitchen." srcset="https://substackcdn.com/image/fetch/$s_!QL2N!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda617d3d-89d9-43c9-973a-da51338350cf_3002x1480.png 424w, https://substackcdn.com/image/fetch/$s_!QL2N!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda617d3d-89d9-43c9-973a-da51338350cf_3002x1480.png 848w, https://substackcdn.com/image/fetch/$s_!QL2N!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda617d3d-89d9-43c9-973a-da51338350cf_3002x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!QL2N!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda617d3d-89d9-43c9-973a-da51338350cf_3002x1480.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The restaurant analogy: paper tickets versus pneumatic tubes</figcaption></figure></div><p><strong>Result:</strong> The AI gave me a restaurant metaphor. The CLI is a standard paper order ticket used by human waiters. The MCP is a highly expensive, glitchy pneumatic tube system built specifically for a robot to use. This kind of analogy is helpful when <strong>you have to explain technical debt to business stakeholders.</strong></p><p>I need an action plan to start the transition with my colleagues:</p><blockquote><p>Write a step-by-step practical guide. How do I transition a product manager team from using MCPs to using CLIs next week?</p></blockquote><p>Here, I need to edit and iterate on the guide. So I simply <strong>activate Gemini&#8217;s Canvas mode.</strong> This lets me modify the documents right there on the screen. I can then export it directly to Google Docs with one click.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!whAE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c670ef8-c5b7-4722-bde6-24a491048024_3002x1480.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!whAE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c670ef8-c5b7-4722-bde6-24a491048024_3002x1480.png 424w, https://substackcdn.com/image/fetch/$s_!whAE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c670ef8-c5b7-4722-bde6-24a491048024_3002x1480.png 848w, https://substackcdn.com/image/fetch/$s_!whAE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c670ef8-c5b7-4722-bde6-24a491048024_3002x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!whAE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c670ef8-c5b7-4722-bde6-24a491048024_3002x1480.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!whAE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c670ef8-c5b7-4722-bde6-24a491048024_3002x1480.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5c670ef8-c5b7-4722-bde6-24a491048024_3002x1480.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:718,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:700775,&quot;alt&quot;:&quot;Screenshot of Gemini's Canvas interface displaying a detailed, step-by-step guide for transitioning a product team to a CLI workflow.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/190439671?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c670ef8-c5b7-4722-bde6-24a491048024_3002x1480.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of Gemini's Canvas interface displaying a detailed, step-by-step guide for transitioning a product team to a CLI workflow." title="Screenshot of Gemini's Canvas interface displaying a detailed, step-by-step guide for transitioning a product team to a CLI workflow." srcset="https://substackcdn.com/image/fetch/$s_!whAE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c670ef8-c5b7-4722-bde6-24a491048024_3002x1480.png 424w, https://substackcdn.com/image/fetch/$s_!whAE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c670ef8-c5b7-4722-bde6-24a491048024_3002x1480.png 848w, https://substackcdn.com/image/fetch/$s_!whAE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c670ef8-c5b7-4722-bde6-24a491048024_3002x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!whAE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c670ef8-c5b7-4722-bde6-24a491048024_3002x1480.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Generating a concrete action plan using the Canvas tool</figcaption></figure></div><p><strong>Result:</strong> The AI gave me a <strong>highly detailed, 4-phase rollout plan.</strong> But it also acted as a guardrail. It gave me a strict reality check first, warning me that I would absolutely need an engineer to help run the installation scripts. It gave me the exact game plan, but kept my expectations <strong>grounded in reality.</strong></p><p>I need to anticipate what will break if we make this change:</p><blockquote><p>Act as a pessimistic engineer. Tell me the three biggest risks of abandoning MCPs for CLIs right now.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6uHH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0db0d933-c213-4a69-a873-2801753264d0_3002x1480.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6uHH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0db0d933-c213-4a69-a873-2801753264d0_3002x1480.png 424w, https://substackcdn.com/image/fetch/$s_!6uHH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0db0d933-c213-4a69-a873-2801753264d0_3002x1480.png 848w, https://substackcdn.com/image/fetch/$s_!6uHH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0db0d933-c213-4a69-a873-2801753264d0_3002x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!6uHH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0db0d933-c213-4a69-a873-2801753264d0_3002x1480.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6uHH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0db0d933-c213-4a69-a873-2801753264d0_3002x1480.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0db0d933-c213-4a69-a873-2801753264d0_3002x1480.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:718,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:435748,&quot;alt&quot;:&quot;Screenshot of Gemini acting as a pessimistic engineer, listing the severe security and reliability risks of abandoning MCPs.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/190439671?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0db0d933-c213-4a69-a873-2801753264d0_3002x1480.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of Gemini acting as a pessimistic engineer, listing the severe security and reliability risks of abandoning MCPs." title="Screenshot of Gemini acting as a pessimistic engineer, listing the severe security and reliability risks of abandoning MCPs." srcset="https://substackcdn.com/image/fetch/$s_!6uHH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0db0d933-c213-4a69-a873-2801753264d0_3002x1480.png 424w, https://substackcdn.com/image/fetch/$s_!6uHH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0db0d933-c213-4a69-a873-2801753264d0_3002x1480.png 848w, https://substackcdn.com/image/fetch/$s_!6uHH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0db0d933-c213-4a69-a873-2801753264d0_3002x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!6uHH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0db0d933-c213-4a69-a873-2801753264d0_3002x1480.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Playing devil's advocate to expose hidden risks</figcaption></figure></div><p><strong>Result:</strong> The AI played <strong>devil&#8217;s advocate perfectly.</strong> It warned me about massive security risks (giving an AI the keys to your entire computer) and the nightmare of IT support for non-technical users. It red-teamed the original article. It exposed the author&#8217;s blind spots. This is how you build real risk management into your reading.</p><p>I want to know what the other experts are doing. I explicitly write in my prompt to search the internet:</p><blockquote><p>Search the web for recent trends. Are the main AI experts adopting CLIs over MCPs? Summarize the expert consensus.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SKsn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F818e3424-9f30-4c1f-985f-9cd0bed8621c_3002x1480.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SKsn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F818e3424-9f30-4c1f-985f-9cd0bed8621c_3002x1480.png 424w, https://substackcdn.com/image/fetch/$s_!SKsn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F818e3424-9f30-4c1f-985f-9cd0bed8621c_3002x1480.png 848w, https://substackcdn.com/image/fetch/$s_!SKsn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F818e3424-9f30-4c1f-985f-9cd0bed8621c_3002x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!SKsn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F818e3424-9f30-4c1f-985f-9cd0bed8621c_3002x1480.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SKsn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F818e3424-9f30-4c1f-985f-9cd0bed8621c_3002x1480.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/818e3424-9f30-4c1f-985f-9cd0bed8621c_3002x1480.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:718,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:713702,&quot;alt&quot;:&quot;Screenshot of Gemini's Canvas interface summarizing the actual industry consensus on the MCP versus CLI debate based on web trends.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/190439671?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F818e3424-9f30-4c1f-985f-9cd0bed8621c_3002x1480.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of Gemini's Canvas interface summarizing the actual industry consensus on the MCP versus CLI debate based on web trends." title="Screenshot of Gemini's Canvas interface summarizing the actual industry consensus on the MCP versus CLI debate based on web trends." srcset="https://substackcdn.com/image/fetch/$s_!SKsn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F818e3424-9f30-4c1f-985f-9cd0bed8621c_3002x1480.png 424w, https://substackcdn.com/image/fetch/$s_!SKsn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F818e3424-9f30-4c1f-985f-9cd0bed8621c_3002x1480.png 848w, https://substackcdn.com/image/fetch/$s_!SKsn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F818e3424-9f30-4c1f-985f-9cd0bed8621c_3002x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!SKsn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F818e3424-9f30-4c1f-985f-9cd0bed8621c_3002x1480.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Grounding opinions with real-time web search and market data</figcaption></figure></div><p><strong>Result:</strong> The article was just one man&#8217;s opinion. The AI searched the live web and brought me the actual market reality. It turns out the headline was clickbait. Solo developers use CLIs to save money, but major enterprises mandate MCPs for strict security and governance. <strong>The AI grounded the author&#8217;s opinion in objective, current market data.</strong></p><p>I need to present this strategy to the executive board:</p><blockquote><p>Generate a five-slide presentation for top management based on this article.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZyqS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a5ae3c-6ec9-4870-b93a-81f6ba4260d2_3002x1480.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZyqS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a5ae3c-6ec9-4870-b93a-81f6ba4260d2_3002x1480.png 424w, https://substackcdn.com/image/fetch/$s_!ZyqS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a5ae3c-6ec9-4870-b93a-81f6ba4260d2_3002x1480.png 848w, https://substackcdn.com/image/fetch/$s_!ZyqS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a5ae3c-6ec9-4870-b93a-81f6ba4260d2_3002x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!ZyqS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a5ae3c-6ec9-4870-b93a-81f6ba4260d2_3002x1480.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZyqS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a5ae3c-6ec9-4870-b93a-81f6ba4260d2_3002x1480.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/94a5ae3c-6ec9-4870-b93a-81f6ba4260d2_3002x1480.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:718,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:452991,&quot;alt&quot;:&quot;Screenshot of Gemini generating a fully formatted, exportable presentation slide explaining why CLI outperforms MCP&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/190439671?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a5ae3c-6ec9-4870-b93a-81f6ba4260d2_3002x1480.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of Gemini generating a fully formatted, exportable presentation slide explaining why CLI outperforms MCP" title="Screenshot of Gemini generating a fully formatted, exportable presentation slide explaining why CLI outperforms MCP" srcset="https://substackcdn.com/image/fetch/$s_!ZyqS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a5ae3c-6ec9-4870-b93a-81f6ba4260d2_3002x1480.png 424w, https://substackcdn.com/image/fetch/$s_!ZyqS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a5ae3c-6ec9-4870-b93a-81f6ba4260d2_3002x1480.png 848w, https://substackcdn.com/image/fetch/$s_!ZyqS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a5ae3c-6ec9-4870-b93a-81f6ba4260d2_3002x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!ZyqS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a5ae3c-6ec9-4870-b93a-81f6ba4260d2_3002x1480.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">From reading an article to a pitch-ready slide deck</figcaption></figure></div><p><strong>Result:</strong> The AI generated an actual, fully formatted visual presentation right there in the chat. It built the slides, organized the bullet points into clean columns, and gave me a button to instantly export it to Google Slides. With some effort, I went from not understanding a highly technical article to having a ready-to-pitch visual deck for my CEO.</p><p>These prompts are just examples. You can interact with the text in many other ways. Yes, I know I&#8217;m not actually talking directly to the real author. But it certainly gives that exact impression. This entire process completely changes how I learn. <strong>I prefer to spend my time dissecting one single article like this.</strong> It&#8217;s far better than passively skimming a hundred headlines.</p><p>You are probably thinking about <a href="https://notebooklm.google.com/">NotebookLM</a> right now. You can absolutely use it for this. <strong>NotebookLM only reads the documents you upload.</strong> In many cases, this strict boundary is actually its star feature. It guarantees the AI only uses your specific text. It&#8217;s perfect for an isolated PDF or generating an audio podcast. But this closed system becomes annoying when you need to <strong>tap into the LLM&#8217;s vast memory</strong> or connect a new article to <strong>outside industry trends</strong>. You just have to choose the right tool for the job.</p><h2>Talk to your next article</h2><p>I just showed you my process. Now I want you to <strong>try it yourself.</strong> I have the perfect article in mind for this exercise. It&#8217;s a <a href="https://medium.com/design-doordash/how-cursor-claude-code-are-changing-research-at-doordash-and-deliveroo-c2b534018af5">recent case study from DoorDash and Deliveroo</a>. They explain how their research teams deploy AI agents to analyze user data. They bypass traditional engineering bottlenecks completely. They even built a custom multi-agent system to process raw customer interviews. I really love their specific use cases and their clear explanations. I want you to open this article on your screen. Give it a very quick skim to understand the context.</p><p>Then I want you to <strong>use the savage copy and paste method</strong> I just shared. Grab all the text on the page. Drop it into your favorite LLM context window. Start a real dialogue with the text. Keep talking with the LLM until you generate a concrete workflow for your own enterprise. You can pull the thread all the way to the end. You can even generate the specific agent instructions needed to replicate their results. You will quickly see how much value you get from a single conversation. You will turn a simple blog post into an actionable blueprint for your next AI-powered workflow.</p><h2>Learn actively with AI</h2><p>I see many headlines claiming AI makes us lazy. I just read an <a href="https://arxiv.org/abs/2601.20245">Anthropic study</a> about this exact topic. The researchers tested how developers learn a new programming library with AI. The results are a huge warning for product builders. <strong>Participants who simply delegated the work to AI learned almost nothing.</strong> Their conceptual understanding dropped. Their debugging skills actually degraded. They didn&#8217;t even finish the tasks significantly faster. This happens when you use AI as a dumb shortcut.</p><p>But the researchers found a massive exception. They identified a few specific high-scoring interaction patterns. Some users asked pure conceptual questions. Others <strong>asked the AI to explain the output it just generated.</strong> These specific users stayed cognitively engaged. They preserved their learning outcomes completely. They mastered the new skills while still using the AI tools. This perfectly validates the two-way reading method. <strong>You don&#8217;t get dumber when you actively interrogate the text.</strong></p><p><strong>You must choose your interaction pattern carefully.</strong> You can read passive summaries. You can delegate your core thinking to AI. But that is a trap. Instead, you can choose to <strong>have active conversations with your reading material.</strong> You can force your brain to engage. You can use the AI to dig deeper instead of skimming the surface. This is how you actually build expertise.</p><p>Grab your next complex article, paste it into your LLM and start your first real dialogue!</p>]]></content:encoded></item><item><title><![CDATA[How to vibe-code a real product in 5 hours]]></title><description><![CDATA[Draft product requirements with LLM. Generate a rapid prototype in Google AI Studio. Use Cursor to build the core logic. Connect Supabase for your database. Deploy the final app on Vercel. Have fun.]]></description><link>https://www.theaithinker.com/p/how-to-vibe-code-a-real-web-app-in</link><guid isPermaLink="false">https://www.theaithinker.com/p/how-to-vibe-code-a-real-web-app-in</guid><dc:creator><![CDATA[Adam Faik]]></dc:creator><pubDate>Mon, 02 Mar 2026 12:02:42 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/9be9fc19-d416-4228-bfb7-9b1c46c5f0be_1024x731.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Every time I vibe-code, it feels like a <strong>fever dream</strong>. I type, I click, and suddenly things work. I honestly don&#8217;t know how I manage it sometimes. But I get exactly what I want in the end. It&#8217;s a highly satisfying feeling. <strong>I decided to take screenshots at every step this time.</strong> I wanted to remember my exact process. So, I&#8217;ll share exactly how I shipped a recent project in this article. I&#8217;ll take you <strong>from a raw idea to a live production environment.</strong></p><p>Before we dive into the weeds, I want to <strong>show you the end result right away.</strong> You can actually check out the live app we&#8217;re going to build. It&#8217;s called Stanza. I&#8217;ll give you more details about why I built it in a minute, but feel free to click the link below and take a look around.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://stanza-app.vercel.app/&quot;,&quot;text&quot;:&quot;Try Stanza&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://stanza-app.vercel.app/"><span>Try Stanza</span></a></p><p>This specific project took me exactly <strong>five hours.</strong> I went from a lingering idea to a live website. Real people can actually use it right now. I&#8217;ve built apps this way nine or ten times before. <strong>If this is your first time, it&#8217;ll probably take you longer than five hours.</strong> That&#8217;s completely normal. Practice makes perfect. You just need to dive in and start building.</p><p>Let&#8217;s talk about the actual cost. <strong>Building this cost me about &#8364;60 on Cursor.</strong> I also used my existing Gemini Pro subscription. I relied entirely on the free tiers for everything else. This means I have strict daily limits. My database capacity, email sends, and new user registrations are capped. I don&#8217;t expect massive traffic anyway. I built this purely for the thrill of vibe-coding. I&#8217;m going to break down every single detail for you.</p><p>Here&#8217;s what we&#8217;ll cover in this article. Think of it as our blueprint for the next few minutes. First, we&#8217;ll look at the <strong>core idea</strong> and why I actually built this app. Then, I&#8217;ll outline my exact <strong>workflow</strong> and the <strong>specific stack of tools I used.</strong> I&#8217;ll also share my <strong>golden rules and principles</strong> for building with AI. After that, we&#8217;ll walk through the actual <strong>execution step by step</strong>. I&#8217;ll take you from the very first prompt all the way to the final deployment. Finally, we&#8217;ll dive into the <strong>messy middle</strong>. I&#8217;ll expose the specific errors I hit and show you exactly how I hacked my way out of them.</p><p>Grab your coffee, pull up a chair, and let&#8217;s build this thing together!</p><div><hr></div><h2>Explore the final product: Stanza</h2><p>Let me tell you where the idea for this app actually came from. I was chatting in a WhatsApp group a while back. Someone asked for a book recommendation for a &#8220;man in deconstruction.&#8221; I smiled at the controversial phrasing, but I suggested &#8220;<a href="https://en.wikipedia.org/wiki/Of_Mice_and_Men">Of Mice and Men</a>.&#8221; It&#8217;s an incredibly short but profoundly moving book. I read it at different stages of my life, and I always understand something different each time. Suddenly, the group started challenging me. They argued it was the absolute worst book for that specific topic. I didn&#8217;t want to debate on WhatsApp. It always turns into a chaotic, unreadable mess. But I was frustrated. <strong>I really wanted an intellectual boxing ring to discuss it properly.</strong></p><p>That frustration sparked a realization. I&#8217;ve always wanted a place to talk about books freely. But I wanted it to be ephemeral. It should feel like a pop-up book club. You drop in, share a deep thought, and then you leave. I don&#8217;t like how internet opinions live forever. Our views on books change as we age and experience new things. Art has superficial layers at first glance. But deeper, symbolic layers unlock at different phases of your life. <strong>I needed a clean, minimalist interface for temporary thoughts.</strong></p><p>I decided to build it myself, and I called it Stanza. The name fits perfectly for a space dedicated to words and structure. I wanted the reading experience to be completely frictionless. People can read ideas without even creating an account. It looks a bit like <a href="https://news.ycombinator.com/">Hacker News</a>. Users can upvote a post to push it up the rankings. You only need to log in if you want to publish a post or write a comment. I kept the features basic for this first version. <strong>Simple rules prevent complex bugs.</strong></p><p>Since posts only last for 24 hours (and that I&#8217;m the only user), <strong>the site might look pretty empty</strong> if you visit it right now. I took some screenshots to show you the flow and what it looks like with data.</p><p>When you first arrive, you&#8217;re greeted by a <strong>very clean, quiet interface.</strong> It literally says &#8220;Silence in the library&#8221; to set the mood. It invites you to be the first to start a conversation.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wbm-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c2d9a42-dc76-4dfd-999e-eb9a23fe1e45_3002x1480.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wbm-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c2d9a42-dc76-4dfd-999e-eb9a23fe1e45_3002x1480.png 424w, https://substackcdn.com/image/fetch/$s_!wbm-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c2d9a42-dc76-4dfd-999e-eb9a23fe1e45_3002x1480.png 848w, https://substackcdn.com/image/fetch/$s_!wbm-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c2d9a42-dc76-4dfd-999e-eb9a23fe1e45_3002x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!wbm-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c2d9a42-dc76-4dfd-999e-eb9a23fe1e45_3002x1480.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wbm-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c2d9a42-dc76-4dfd-999e-eb9a23fe1e45_3002x1480.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1c2d9a42-dc76-4dfd-999e-eb9a23fe1e45_3002x1480.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:718,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:119179,&quot;alt&quot;:&quot;A minimalist white web page displays the application logo and a message indicating no posts exist yet.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c2d9a42-dc76-4dfd-999e-eb9a23fe1e45_3002x1480.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A minimalist white web page displays the application logo and a message indicating no posts exist yet." title="A minimalist white web page displays the application logo and a message indicating no posts exist yet." srcset="https://substackcdn.com/image/fetch/$s_!wbm-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c2d9a42-dc76-4dfd-999e-eb9a23fe1e45_3002x1480.png 424w, https://substackcdn.com/image/fetch/$s_!wbm-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c2d9a42-dc76-4dfd-999e-eb9a23fe1e45_3002x1480.png 848w, https://substackcdn.com/image/fetch/$s_!wbm-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c2d9a42-dc76-4dfd-999e-eb9a23fe1e45_3002x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!wbm-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c2d9a42-dc76-4dfd-999e-eb9a23fe1e45_3002x1480.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The application shows an empty homepage for visitors</figcaption></figure></div><p>If you want to join the conversation, you just enter your email. We use a simple modal for this step. There are absolutely <strong>no passwords to remember here.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UU2T!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d906f95-1978-45c5-88fa-c5aab1a24c15_3002x1480.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UU2T!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d906f95-1978-45c5-88fa-c5aab1a24c15_3002x1480.png 424w, https://substackcdn.com/image/fetch/$s_!UU2T!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d906f95-1978-45c5-88fa-c5aab1a24c15_3002x1480.png 848w, https://substackcdn.com/image/fetch/$s_!UU2T!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d906f95-1978-45c5-88fa-c5aab1a24c15_3002x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!UU2T!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d906f95-1978-45c5-88fa-c5aab1a24c15_3002x1480.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UU2T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d906f95-1978-45c5-88fa-c5aab1a24c15_3002x1480.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d906f95-1978-45c5-88fa-c5aab1a24c15_3002x1480.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:718,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:160476,&quot;alt&quot;:&quot;A popup window displays a text input field for an email address and a black continue button.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d906f95-1978-45c5-88fa-c5aab1a24c15_3002x1480.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A popup window displays a text input field for an email address and a black continue button." title="A popup window displays a text input field for an email address and a black continue button." srcset="https://substackcdn.com/image/fetch/$s_!UU2T!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d906f95-1978-45c5-88fa-c5aab1a24c15_3002x1480.png 424w, https://substackcdn.com/image/fetch/$s_!UU2T!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d906f95-1978-45c5-88fa-c5aab1a24c15_3002x1480.png 848w, https://substackcdn.com/image/fetch/$s_!UU2T!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d906f95-1978-45c5-88fa-c5aab1a24c15_3002x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!UU2T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d906f95-1978-45c5-88fa-c5aab1a24c15_3002x1480.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A user types an email address into the login window</figcaption></figure></div><p>The app then sends a <strong>magic link straight to your inbox.</strong> A neat little green confirmation box pops up to let you know it worked. It&#8217;s fast, secure, and totally frictionless.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mhyU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ca9ef96-c278-402c-85b8-ba0962743f91_3002x1480.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mhyU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ca9ef96-c278-402c-85b8-ba0962743f91_3002x1480.png 424w, https://substackcdn.com/image/fetch/$s_!mhyU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ca9ef96-c278-402c-85b8-ba0962743f91_3002x1480.png 848w, https://substackcdn.com/image/fetch/$s_!mhyU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ca9ef96-c278-402c-85b8-ba0962743f91_3002x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!mhyU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ca9ef96-c278-402c-85b8-ba0962743f91_3002x1480.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mhyU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ca9ef96-c278-402c-85b8-ba0962743f91_3002x1480.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8ca9ef96-c278-402c-85b8-ba0962743f91_3002x1480.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:718,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:194630,&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.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ca9ef96-c278-402c-85b8-ba0962743f91_3002x1480.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_!mhyU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ca9ef96-c278-402c-85b8-ba0962743f91_3002x1480.png 424w, https://substackcdn.com/image/fetch/$s_!mhyU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ca9ef96-c278-402c-85b8-ba0962743f91_3002x1480.png 848w, https://substackcdn.com/image/fetch/$s_!mhyU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ca9ef96-c278-402c-85b8-ba0962743f91_3002x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!mhyU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ca9ef96-c278-402c-85b8-ba0962743f91_3002x1480.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The application confirms the magic link email delivery</figcaption></figure></div><p>Once you click the magic link in your email, you just <strong>pick a username.</strong> The modal guides you through this final onboarding step. You&#8217;re instantly ready to start sharing your thoughts.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4OIY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a6f13e1-b417-4434-b6d6-3491ca896d5d_3002x1480.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4OIY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a6f13e1-b417-4434-b6d6-3491ca896d5d_3002x1480.png 424w, https://substackcdn.com/image/fetch/$s_!4OIY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a6f13e1-b417-4434-b6d6-3491ca896d5d_3002x1480.png 848w, https://substackcdn.com/image/fetch/$s_!4OIY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a6f13e1-b417-4434-b6d6-3491ca896d5d_3002x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!4OIY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a6f13e1-b417-4434-b6d6-3491ca896d5d_3002x1480.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4OIY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a6f13e1-b417-4434-b6d6-3491ca896d5d_3002x1480.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5a6f13e1-b417-4434-b6d6-3491ca896d5d_3002x1480.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:718,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:173027,&quot;alt&quot;:&quot;A popup window displays a text input field for choosing a username and a black continue button.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a6f13e1-b417-4434-b6d6-3491ca896d5d_3002x1480.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A popup window displays a text input field for choosing a username and a black continue button." title="A popup window displays a text input field for choosing a username and a black continue button." srcset="https://substackcdn.com/image/fetch/$s_!4OIY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a6f13e1-b417-4434-b6d6-3491ca896d5d_3002x1480.png 424w, https://substackcdn.com/image/fetch/$s_!4OIY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a6f13e1-b417-4434-b6d6-3491ca896d5d_3002x1480.png 848w, https://substackcdn.com/image/fetch/$s_!4OIY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a6f13e1-b417-4434-b6d6-3491ca896d5d_3002x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!4OIY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a6f13e1-b417-4434-b6d6-3491ca896d5d_3002x1480.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A user types a new username into the account creation window</figcaption></figure></div><p>Now you&#8217;re officially logged in. The empty state remains, but a black <strong>&#8220;+ New Post&#8221; button appears</strong> at the top right. It&#8217;s time to step into the ring and share an idea.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DFTt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1da43c41-e3c3-4dc0-9788-8b76c17ee9cd_3002x1480.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DFTt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1da43c41-e3c3-4dc0-9788-8b76c17ee9cd_3002x1480.png 424w, https://substackcdn.com/image/fetch/$s_!DFTt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1da43c41-e3c3-4dc0-9788-8b76c17ee9cd_3002x1480.png 848w, https://substackcdn.com/image/fetch/$s_!DFTt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1da43c41-e3c3-4dc0-9788-8b76c17ee9cd_3002x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!DFTt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1da43c41-e3c3-4dc0-9788-8b76c17ee9cd_3002x1480.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DFTt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1da43c41-e3c3-4dc0-9788-8b76c17ee9cd_3002x1480.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1da43c41-e3c3-4dc0-9788-8b76c17ee9cd_3002x1480.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:718,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:126483,&quot;alt&quot;:&quot;A minimalist white web page displays a new post button and a user avatar above an empty feed message.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1da43c41-e3c3-4dc0-9788-8b76c17ee9cd_3002x1480.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A minimalist white web page displays a new post button and a user avatar above an empty feed message." title="A minimalist white web page displays a new post button and a user avatar above an empty feed message." srcset="https://substackcdn.com/image/fetch/$s_!DFTt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1da43c41-e3c3-4dc0-9788-8b76c17ee9cd_3002x1480.png 424w, https://substackcdn.com/image/fetch/$s_!DFTt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1da43c41-e3c3-4dc0-9788-8b76c17ee9cd_3002x1480.png 848w, https://substackcdn.com/image/fetch/$s_!DFTt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1da43c41-e3c3-4dc0-9788-8b76c17ee9cd_3002x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!DFTt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1da43c41-e3c3-4dc0-9788-8b76c17ee9cd_3002x1480.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The application shows an empty homepage for a logged-in user</figcaption></figure></div><p>The writing interface is completely distraction-free. You just give your thought a bold title and start typing your content. The minimalist design keeps you <strong>entirely focused on the words.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!G1qF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dfd6d53-2ccb-41f2-8376-866ad5babb90_2978x1480.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!G1qF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dfd6d53-2ccb-41f2-8376-866ad5babb90_2978x1480.png 424w, https://substackcdn.com/image/fetch/$s_!G1qF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dfd6d53-2ccb-41f2-8376-866ad5babb90_2978x1480.png 848w, https://substackcdn.com/image/fetch/$s_!G1qF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dfd6d53-2ccb-41f2-8376-866ad5babb90_2978x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!G1qF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dfd6d53-2ccb-41f2-8376-866ad5babb90_2978x1480.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!G1qF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dfd6d53-2ccb-41f2-8376-866ad5babb90_2978x1480.png" width="2978" height="1480" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9dfd6d53-2ccb-41f2-8376-866ad5babb90_2978x1480.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1480,&quot;width&quot;:2978,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:127322,&quot;alt&quot;:&quot;A clean web page shows large gray placeholder text for a title and a body paragraph to start writing.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F783444e1-73fc-4311-b869-4cba6c1e394c_3002x1480.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A clean web page shows large gray placeholder text for a title and a body paragraph to start writing." title="A clean web page shows large gray placeholder text for a title and a body paragraph to start writing." srcset="https://substackcdn.com/image/fetch/$s_!G1qF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dfd6d53-2ccb-41f2-8376-866ad5babb90_2978x1480.png 424w, https://substackcdn.com/image/fetch/$s_!G1qF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dfd6d53-2ccb-41f2-8376-866ad5babb90_2978x1480.png 848w, https://substackcdn.com/image/fetch/$s_!G1qF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dfd6d53-2ccb-41f2-8376-866ad5babb90_2978x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!G1qF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9dfd6d53-2ccb-41f2-8376-866ad5babb90_2978x1480.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The application displays a blank page for writing new posts</figcaption></figure></div><p>You can even <strong>attach a single image to your post</strong> if you want. It adds a great visual layer to the text.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9amo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94c13a84-b45c-467b-ba21-0e1f2ad8ed71_2974x1480.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9amo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94c13a84-b45c-467b-ba21-0e1f2ad8ed71_2974x1480.png 424w, https://substackcdn.com/image/fetch/$s_!9amo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94c13a84-b45c-467b-ba21-0e1f2ad8ed71_2974x1480.png 848w, https://substackcdn.com/image/fetch/$s_!9amo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94c13a84-b45c-467b-ba21-0e1f2ad8ed71_2974x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!9amo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94c13a84-b45c-467b-ba21-0e1f2ad8ed71_2974x1480.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9amo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94c13a84-b45c-467b-ba21-0e1f2ad8ed71_2974x1480.png" width="2974" height="1480" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/94c13a84-b45c-467b-ba21-0e1f2ad8ed71_2974x1480.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1480,&quot;width&quot;:2974,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:710723,&quot;alt&quot;:&quot;A web interface shows a drafted post containing an uploaded picture of a book page and a large text title.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb32d683-8f3e-4d61-b438-20217592b3c9_3002x1480.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A web interface shows a drafted post containing an uploaded picture of a book page and a large text title." title="A web interface shows a drafted post containing an uploaded picture of a book page and a large text title." srcset="https://substackcdn.com/image/fetch/$s_!9amo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94c13a84-b45c-467b-ba21-0e1f2ad8ed71_2974x1480.png 424w, https://substackcdn.com/image/fetch/$s_!9amo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94c13a84-b45c-467b-ba21-0e1f2ad8ed71_2974x1480.png 848w, https://substackcdn.com/image/fetch/$s_!9amo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94c13a84-b45c-467b-ba21-0e1f2ad8ed71_2974x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!9amo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94c13a84-b45c-467b-ba21-0e1f2ad8ed71_2974x1480.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A user drafts a post with a text title and a picture</figcaption></figure></div><p>Once you hit publish, your thought goes live on the main feed. A small timer shows up, and <strong>the clock immediately starts ticking down from 24 hours.</strong> It creates a sense of urgency.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pPwF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4480a8cc-fcf6-4eaf-99c4-5423d664d2f2_3002x1480.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pPwF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4480a8cc-fcf6-4eaf-99c4-5423d664d2f2_3002x1480.png 424w, https://substackcdn.com/image/fetch/$s_!pPwF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4480a8cc-fcf6-4eaf-99c4-5423d664d2f2_3002x1480.png 848w, https://substackcdn.com/image/fetch/$s_!pPwF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4480a8cc-fcf6-4eaf-99c4-5423d664d2f2_3002x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!pPwF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4480a8cc-fcf6-4eaf-99c4-5423d664d2f2_3002x1480.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pPwF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4480a8cc-fcf6-4eaf-99c4-5423d664d2f2_3002x1480.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4480a8cc-fcf6-4eaf-99c4-5423d664d2f2_3002x1480.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:718,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:307481,&quot;alt&quot;:&quot;A web page shows a single post with a title, a short text excerpt, an image, and a timer showing 23 hours left.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4480a8cc-fcf6-4eaf-99c4-5423d664d2f2_3002x1480.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A web page shows a single post with a title, a short text excerpt, an image, and a timer showing 23 hours left." title="A web page shows a single post with a title, a short text excerpt, an image, and a timer showing 23 hours left." srcset="https://substackcdn.com/image/fetch/$s_!pPwF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4480a8cc-fcf6-4eaf-99c4-5423d664d2f2_3002x1480.png 424w, https://substackcdn.com/image/fetch/$s_!pPwF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4480a8cc-fcf6-4eaf-99c4-5423d664d2f2_3002x1480.png 848w, https://substackcdn.com/image/fetch/$s_!pPwF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4480a8cc-fcf6-4eaf-99c4-5423d664d2f2_3002x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!pPwF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4480a8cc-fcf6-4eaf-99c4-5423d664d2f2_3002x1480.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The application feed displays a single published post</figcaption></figure></div><p>As more people post, the feed becomes a <strong>dynamic list of ideas.</strong> You can see different posts stacked together, complete with upvote counters. It&#8217;s a fleeting snapshot of what people are reading and thinking about right now.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!F7ZX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91395f3d-eec7-4e83-8567-b627509a9e7a_2968x1480.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!F7ZX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91395f3d-eec7-4e83-8567-b627509a9e7a_2968x1480.png 424w, https://substackcdn.com/image/fetch/$s_!F7ZX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91395f3d-eec7-4e83-8567-b627509a9e7a_2968x1480.png 848w, https://substackcdn.com/image/fetch/$s_!F7ZX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91395f3d-eec7-4e83-8567-b627509a9e7a_2968x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!F7ZX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91395f3d-eec7-4e83-8567-b627509a9e7a_2968x1480.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!F7ZX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91395f3d-eec7-4e83-8567-b627509a9e7a_2968x1480.png" width="2968" height="1480" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/91395f3d-eec7-4e83-8567-b627509a9e7a_2968x1480.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1480,&quot;width&quot;:2968,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:434639,&quot;alt&quot;:&quot;A web page shows a list of several posts containing text excerpts, titles, and expiration timers.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadcd3534-9e8d-4bc2-81c9-3bab209eedaa_3002x1480.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A web page shows a list of several posts containing text excerpts, titles, and expiration timers." title="A web page shows a list of several posts containing text excerpts, titles, and expiration timers." srcset="https://substackcdn.com/image/fetch/$s_!F7ZX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91395f3d-eec7-4e83-8567-b627509a9e7a_2968x1480.png 424w, https://substackcdn.com/image/fetch/$s_!F7ZX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91395f3d-eec7-4e83-8567-b627509a9e7a_2968x1480.png 848w, https://substackcdn.com/image/fetch/$s_!F7ZX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91395f3d-eec7-4e83-8567-b627509a9e7a_2968x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!F7ZX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91395f3d-eec7-4e83-8567-b627509a9e7a_2968x1480.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The application feed displays multiple published posts in a list</figcaption></figure></div><p>You should <strong>try it out yourself.</strong> Go create an account and share a book that changed your perspective. I spent some time iterating on this interface to make it feel just right. I hope you enjoy the vibe.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://stanza-app.vercel.app/&quot;,&quot;text&quot;:&quot;Try Stanza&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://stanza-app.vercel.app/"><span>Try Stanza</span></a></p><div><hr></div><h2>Review the workflow and the tools</h2><p>Let&#8217;s talk about the <strong>overall journey.</strong> I want to give you a high-level view of my workflow first. We&#8217;ll dive into the granular details and prompts later. But you need to see the big picture before we start coding.</p><h3>Review the workflow</h3><p>Here are the exact steps I followed to bring Stanza to life:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!53sQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f7c854d-7a4a-437a-8529-cb19c1948c89_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!53sQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f7c854d-7a4a-437a-8529-cb19c1948c89_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!53sQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f7c854d-7a4a-437a-8529-cb19c1948c89_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!53sQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f7c854d-7a4a-437a-8529-cb19c1948c89_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!53sQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f7c854d-7a4a-437a-8529-cb19c1948c89_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!53sQ!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f7c854d-7a4a-437a-8529-cb19c1948c89_2816x1536.png" width="1200" height="654.5454545454545" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7f7c854d-7a4a-437a-8529-cb19c1948c89_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:1536,&quot;width&quot;:2816,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:1607806,&quot;alt&quot;:&quot;A hand-drawn style diagram displays the seven application development steps using various tools from drafting to deployment.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe31de79f-b9b6-49f4-9464-aa14ef53588d_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="A hand-drawn style diagram displays the seven application development steps using various tools from drafting to deployment." title="A hand-drawn style diagram displays the seven application development steps using various tools from drafting to deployment." srcset="https://substackcdn.com/image/fetch/$s_!53sQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f7c854d-7a4a-437a-8529-cb19c1948c89_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!53sQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f7c854d-7a4a-437a-8529-cb19c1948c89_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!53sQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f7c854d-7a4a-437a-8529-cb19c1948c89_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!53sQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f7c854d-7a4a-437a-8529-cb19c1948c89_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The seven chronological steps to build the app</figcaption></figure></div><ol><li><p><strong>Draft the requirements with <a href="https://gemini.google.com/">Gemini</a> (45 min).</strong> I started by talking extensively with Gemini. I explained my vision for a minimalist, ephemeral Hacker News for books. We brainstormed and debated the features for a while. It eventually spat out a complete feature document. I exported this directly to Google Docs.</p></li><li><p><strong>Generate a prototype in <a href="https://aistudio.google.com/">Google AI Studio</a> (30 min).</strong> I took that generated document and fed it straight into Google AI Studio. It gave me a working visual prototype right in the browser. I downloaded the code folder to my local machine.</p></li><li><p><strong>Save the code with <a href="https://desktop.github.com/download/">GitHub Desktop</a> (15 min).</strong> I opened that downloaded folder in Cursor. I immediately published it to GitHub using the GitHub Desktop app. This created my initial baseline checkpoint.</p></li><li><p><strong>Build the core app with <a href="https://cursor.com/">Cursor</a> (45 min).</strong> I then asked Cursor to fill in all the missing pieces. I needed it to turn a basic UI prototype into a fully functioning product. I regularly published my progress to GitHub as Cursor wrote the new code.</p></li><li><p><strong>Configure the backend with <a href="https://supabase.com/">Supabase</a> (30 min).</strong> Cursor gave me exact, step-by-step instructions for my database. I followed them to set up Supabase. This handled both my data storage and the magic link authentication.</p></li><li><p><strong>Test the app locally (30 min).</strong> I recommend testing locally at this stage. I tried it, but it mysteriously failed on my machine this time around. I didn&#8217;t want to lose momentum, so I pushed through and moved straight to live testing instead.</p></li><li><p><strong>Deploy the website on <a href="https://vercel.com/">Vercel</a> and iterate with Cursor (1h 45m).</strong> Cursor told me how to deploy everything on Vercel. Once deployed, I tested the live site. I asked Cursor to fix a few bugs and make some UI adjustments. Every time Cursor pushed a fix to GitHub, Vercel updated the live site automatically.</p></li></ol><h3>Review the tools</h3><p>You might be asking a very legitimate question right now. <strong>Why not just do everything inside Cursor?</strong> It&#8217;s a completely fair point. Cursor is powerful and has access to all the top models. I even tried doing it that way at first. But two major issues stopped me:</p><ul><li><p>First, <strong>every single prompt in Cursor costs money.</strong> Those cents add up very quickly. I prefer to save my paid credits for the heavy lifting. I use Cursor strictly for <strong>complex coding tasks</strong> that other tools can&#8217;t do. Gemini and Google AI Studio let me brainstorm and generate prototypes for hours for basically free. Iterating in Cursor has a cost, so spend that budget wisely.</p></li><li><p>Second, <strong>Cursor&#8217;s raw output can be slightly disappointing without heavy configuration.</strong> Gemini and Google AI Studio are already highly tuned for the general public. They know how to output a good document or prototype out-of-the-box. Cursor is a highly flexible development environment. It requires specific system instructions to output high-quality code exactly the way you want it. You can build these rules yourself or find them on open-source GitHub repos. I just haven&#8217;t taken the time to set them up yet.</p></li></ul><p>This multi-tool workflow might seem a bit fragmented and manual. I actually prefer it this way for now. It keeps every step visible and tangible. You physically feel the product taking shape. I still manually click the buttons in GitHub Desktop to push my code. <strong>You can definitely automate all of this if you want to.</strong> You can use the terminal or just tell the Cursor agent to handle the GitHub commits for you.</p><p>The same goes for connecting Vercel and Supabase. I know new <a href="https://cursor.com/docs/context/mcp/directory">Model Context Protocol (MCP) integrations exist now</a>. <strong>They can automate these tool connections completely.</strong> I plan to use them next time instead of clicking through manual setup screens. That will probably cut my build time from five hours down to two. But for your first few projects, feeling those manual clicks is a great way to learn how the pieces fit together.</p><p>I used my personal favorite tools for this build, but <strong>you are completely free to choose your own stack.</strong> If you prefer another LLM, you can easily draft your PRD with <a href="https://chatgpt.com/">ChatGPT</a> or <a href="https://claude.ai/">Claude</a> instead of Gemini. Instead of Google AI Studio, you can generate your initial visual prototype using <a href="https://lovable.dev/">Lovable</a>, <a href="https://bolt.new/">Bolt</a>, <a href="https://v0.dev/">v0</a>, or <a href="https://replit.com/">Replit</a>. If you don't want to use Cursor, you can write the logic using VS Code with <a href="https://code.visualstudio.com/docs/copilot/overview">GitHub Copilot</a> or run <a href="https://claude.com/product/claude-code">Claude Code</a> directly in your terminal or favorite IDE. You can also swap Supabase and Vercel for any other database and hosting platforms you already know. <strong>The exact tools don&#8217;t matter.</strong> The execution process remains the same.</p><div><hr></div><h2>Adopt the right mindset</h2><p>Before we walk through the step-by-step execution, we need to talk about mindset. I have a few golden rules I keep in mind when I build. These principles keep me sane when things get messy.</p><h3>Build a plan for everything</h3><p>I don&#8217;t just use Gemini to write docs. I use it to <strong>generate step-by-step plans</strong> for literally everything. If I hit a bug, I ask for a recovery plan. If I need to define a product feature, I ask for a drafting plan. This is actually how I learn new concepts. I explain my exact situation and say, &#8220;Write me a plan to solve this, assuming I&#8217;m a beginner.&#8221; Every time I finish a step, I feed it a screenshot of the result. For example, when my local testing failed on this project, I just fed the error log to Gemini and got a clear checklist to bypass localhost and move straight to Vercel. <strong>Always ask your LLM tool for a plan.</strong></p><h3>Push through every error</h3><p>You have to be incredibly stubborn. So many people hit their first red error message and just freeze. They act like it&#8217;s an insurmountable wall. Let&#8217;s be real for a second. <strong>We&#8217;re just clicking a mouse and tapping a keyboard.</strong> We aren&#8217;t building a rocket ship or doing grueling factory work. During the Stanza build, the magic link authentication kept failing with a nasty network error on the live site. I didn&#8217;t quit. I just kept taking screenshots of the logs and feeding them back to Gemini and Cursor until we found the fix. <strong>Everything is fixable, so don&#8217;t quit at the first error.</strong></p><h3>Keep the features minimal</h3><p>Reduce your scope as much as humanly possible. This rule hasn&#8217;t changed with AI. If anything, it&#8217;s more important now. When you vibe code, the gap between having a random idea and seeing it work on your screen is incredibly short. The AI makes you feel powerful. <strong>You will be strongly tempted to add just one more feature</strong> simply because it is so easy to generate the code. <strong>Resist that urge.</strong></p><p>I always keep a simple math equation in my head. <strong>One single business rule turns into ten test cases.</strong> Those ten test cases turn into a hundred potential bugs. And those bugs turn into a thousand headaches to fix later. That&#8217;s exactly why Stanza is so basic. I stripped out user profiles, complex comment threading, and permanent archives. Posts just delete themselves after 24 hours. <strong>Complexity scales exponentially, so only build what is absolutely essential.</strong></p><h3>Push back on complex solutions</h3><p>Complexity doesn&#8217;t just come from our own temptations to build more. It also comes directly from the machine. AI is incredibly helpful, but it can also <strong>overcomplicate things.</strong> It sometimes invents complex problems out of thin air. If an AI suggests a solution that feels overly complex, push back. Just reply, &#8220;This feels too complicated, <strong>is there a simpler, native way to do this?</strong>&#8221; For example, Cursor unilaterally decided to install a third-party tool called <a href="https://resend.com/">Resend</a> to handle Stanza&#8217;s emails. It was overkill and broke the login flow. I pushed back, told it to rip out all the Resend code, and forced it to use Supabase&#8217;s native email system instead. You are still the boss. The AI works for you. <strong>Never blindly trust the first output without questioning its simplicity.</strong></p><h3>Organize your digital environment</h3><p>You have to be rigorous with your workspace. I sometimes help colleagues debug their projects. They share their screen, and it&#8217;s an absolute nightmare. They have fifty tabs open and thirty apps running. Their project files are scattered randomly across their Downloads, Desktop, and Documents folders. It&#8217;s pure chaos. You get completely lost when you try to debug in that mess. I&#8217;m not against multitasking, but you need boundaries. Keep one clean window for your development in Cursor, and one window for your Gemini conversation. That&#8217;s it. <strong>If you lack discipline, you&#8217;ll end up pushing empty folders to GitHub because you clicked the wrong window.</strong></p><div><hr></div><h2>Go through the steps</h2><p>Let&#8217;s dive into the details of how to execute each step from start to finish.</p><h3>Step 1: Draft the requirements with Gemini (45 min)</h3><p>The very first step is just talking to Gemini about your idea. You decide <strong>how much control you want here.</strong> Some people dump a massive export of customer complaints and ask the AI to solve them. Others upload a screenshot of a competitor&#8217;s app and say &#8220;specify this.&#8221; <strong>I prefer to treat Gemini like a product manager.</strong> I sit down and have a real conversation. I pitch my raw ideas. I ask for feedback. I highly recommend <strong>using the microphone for this.</strong> Talking out loud gives you total freedom of thought while you speak.</p><p>I want to show you <strong>the exact prompts I used to build Stanza.</strong> It shows how real the process actually is. I started with a very simple question to set the baseline context:</p><blockquote><p>Can you explain how Hacker News works?</p></blockquote><p>Gemini gave me a great breakdown of the platform. It explained the ranking algorithm, the karma system, and the text-heavy minimalist design. It set the perfect foundation for my next prompt.</p><p>Then, I pitched my big twist. I just brain-dumped my entire vision in a very conversational way:</p><blockquote><p>I&#8217;d like to build a similar website for people who read books and want to share their thoughts. I like the minimalist design, but not like the 2000s. Hacker News feels like it was developed by a geek in his room. I want something minimalist but highly polished. I want a single main feed with no categories. Posts should be simple: just a title and a description. People can read the feed without logging in. They can upvote posts they resonate with without an account. But to publish a post or comment, they need to log in with an email address. I want each post to have a strict life duration of 24 hours before it disappears forever. It should feel like an ephemeral discussion in a book club over a glass of wine. We don&#8217;t take our words as immovable. What do you think about this project?</p></blockquote><p>Gemini loved the concept. It called it the pop-up book club. It highlighted the brilliance of the 24-hour urgency. I know Gemini is always enthusiastic and motivating. <strong>You should never take its validation for granted.</strong> If I needed real validation, I would never ask an LLM. They are just too nice and biased. I didn&#8217;t actually need validation anyway. I was already a huge fan of my own idea. This whole process is just about figuring out if the execution makes sense.</p><p>But Gemini did help me think about a lot of improvements and ideas. I dismissed almost all of them. However, it pointed out a <strong>massive flaw in my logic.</strong> It warned me that unlogged voting would lead to massive spam. It suggested using browser fingerprinting to limit votes. <strong>That was the only idea I decided to keep from our conversation.</strong> This back-and-forth is where the real magic happens.</p><p>I agreed with its feedback and pushed for a formal document.</p><blockquote><p>OK, let&#8217;s keep it to zero categories to start. I agree with the 1-vote-per-device system. Let&#8217;s also limit posts to a single image. It&#8217;s just for people who want to snap a photo of a book page instead of typing a quote. Based on all that, can you write detailed specifications so I can hand it to an experienced developer? Focus purely on the core needs and features. Do not write too much fluff. Be very precise about the functioning.</p></blockquote><p>Gemini generated a focused product requirements document. It outlined the core features, the interaction rules, and the strict 24-hour deletion logic.</p><p>I needed this document in a clean format to iterate on it.</p><blockquote><p>Can you please put this last response into a Canvas so we can iterate on it? Also please drop the sections about technical stacks and developer deliverables. For the UI/UX notes, add examples of well-known apps for visual inspiration.</p></blockquote><p>Gemini immediately opened a Canvas with the refined text. This interface makes it incredibly easy to edit specific sections without losing the overall formatting. <strong>When you get the text in the Canvas, you can highlight specific parts and give direct feedback to Gemini.</strong> It&#8217;s extremely helpful to get iterations and improve the document right there before you export 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_!NMJI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06ef9b05-4305-4a0a-9db5-8f7681606e06_3002x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NMJI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06ef9b05-4305-4a0a-9db5-8f7681606e06_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!NMJI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06ef9b05-4305-4a0a-9db5-8f7681606e06_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!NMJI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06ef9b05-4305-4a0a-9db5-8f7681606e06_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!NMJI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06ef9b05-4305-4a0a-9db5-8f7681606e06_3002x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NMJI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06ef9b05-4305-4a0a-9db5-8f7681606e06_3002x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/06ef9b05-4305-4a0a-9db5-8f7681606e06_3002x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:581179,&quot;alt&quot;:&quot;A split screen shows a chat interface on the left and a structured text document containing application features on the right.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06ef9b05-4305-4a0a-9db5-8f7681606e06_3002x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A split screen shows a chat interface on the left and a structured text document containing application features on the right." title="A split screen shows a chat interface on the left and a structured text document containing application features on the right." srcset="https://substackcdn.com/image/fetch/$s_!NMJI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06ef9b05-4305-4a0a-9db5-8f7681606e06_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!NMJI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06ef9b05-4305-4a0a-9db5-8f7681606e06_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!NMJI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06ef9b05-4305-4a0a-9db5-8f7681606e06_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!NMJI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06ef9b05-4305-4a0a-9db5-8f7681606e06_3002x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The Gemini interface displays the product specifications inside a text editor</figcaption></figure></div><p>While we were at it, I needed a good name.</p><blockquote><p>Suggest 10 names for this app.</p></blockquote><p>It gave me some fantastic options based on books and impermanence. The list included names like Vignette, Margin, and Flyleaf. Number nine on the list was Stanza. It hit the nail on the head perfectly.</p><p>Finally, I exported the finished Canvas directly into a Google Doc. This Google Doc became the <strong>initial source of truth for the project.</strong> But this is still just a first version. After some more iterations and discussions, I will ask Gemini to update it to get the v2. That v2 is what I will actually share in Cursor later.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gCW6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc23b61bb-74c8-4063-a62e-09823782357d_3002x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gCW6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc23b61bb-74c8-4063-a62e-09823782357d_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!gCW6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc23b61bb-74c8-4063-a62e-09823782357d_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!gCW6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc23b61bb-74c8-4063-a62e-09823782357d_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!gCW6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc23b61bb-74c8-4063-a62e-09823782357d_3002x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gCW6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc23b61bb-74c8-4063-a62e-09823782357d_3002x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c23b61bb-74c8-4063-a62e-09823782357d_3002x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:513977,&quot;alt&quot;:&quot;A Google Docs window shows a text document titled Project Specification Ephemeral Book Discussion Platform.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc23b61bb-74c8-4063-a62e-09823782357d_3002x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A Google Docs window shows a text document titled Project Specification Ephemeral Book Discussion Platform." title="A Google Docs window shows a text document titled Project Specification Ephemeral Book Discussion Platform." srcset="https://substackcdn.com/image/fetch/$s_!gCW6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc23b61bb-74c8-4063-a62e-09823782357d_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!gCW6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc23b61bb-74c8-4063-a62e-09823782357d_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!gCW6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc23b61bb-74c8-4063-a62e-09823782357d_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!gCW6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc23b61bb-74c8-4063-a62e-09823782357d_3002x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The Google Docs interface displays the finalized project specifications</figcaption></figure></div><p>You can read the document here.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://docs.google.com/document/d/1UltYcbjTZtulwDAZwEHfJn-6Sg3UxppUaJ16Recs7Wg/edit?usp=drive_link&quot;,&quot;text&quot;:&quot;View the v1 PRD on Google Docs&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://docs.google.com/document/d/1UltYcbjTZtulwDAZwEHfJn-6Sg3UxppUaJ16Recs7Wg/edit?usp=drive_link"><span>View the v1 PRD on Google Docs</span></a></p><p>We now had a concrete, actionable blueprint ready for the prototyping phase.</p><h3>Step 2: Generate a prototype in Google AI Studio (30 min)</h3><p>Now that we have the v1 PRD saved in Google Drive, it&#8217;s time to actually build the first visual draft. I don&#8217;t write a single line of code for this. I just open <a href="https://aistudio.google.com/apps">Google AI Studio</a> and navigate straight to the Build section.</p><p>I keep the instructions almost insultingly simple here. I attached the Google Doc PRD and typed exactly three words.</p><blockquote><p>Build this app.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vvAd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F960558e0-0331-49ce-bcbc-047abfefc42d_3002x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vvAd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F960558e0-0331-49ce-bcbc-047abfefc42d_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!vvAd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F960558e0-0331-49ce-bcbc-047abfefc42d_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!vvAd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F960558e0-0331-49ce-bcbc-047abfefc42d_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!vvAd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F960558e0-0331-49ce-bcbc-047abfefc42d_3002x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vvAd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F960558e0-0331-49ce-bcbc-047abfefc42d_3002x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/960558e0-0331-49ce-bcbc-047abfefc42d_3002x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:518794,&quot;alt&quot;:&quot;The Google AI Studio interface shows a prompt box with an attached document and a request to build the application.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F960558e0-0331-49ce-bcbc-047abfefc42d_3002x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Google AI Studio interface shows a prompt box with an attached document and a request to build the application." title="The Google AI Studio interface shows a prompt box with an attached document and a request to build the application." srcset="https://substackcdn.com/image/fetch/$s_!vvAd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F960558e0-0331-49ce-bcbc-047abfefc42d_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!vvAd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F960558e0-0331-49ce-bcbc-047abfefc42d_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!vvAd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F960558e0-0331-49ce-bcbc-047abfefc42d_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!vvAd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F960558e0-0331-49ce-bcbc-047abfefc42d_3002x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I ask Google AI Studio to build the application using the document</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Czin!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cb7dc5d-10ba-4184-8c87-a305f373136b_3002x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Czin!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cb7dc5d-10ba-4184-8c87-a305f373136b_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!Czin!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cb7dc5d-10ba-4184-8c87-a305f373136b_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!Czin!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cb7dc5d-10ba-4184-8c87-a305f373136b_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!Czin!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cb7dc5d-10ba-4184-8c87-a305f373136b_3002x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Czin!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cb7dc5d-10ba-4184-8c87-a305f373136b_3002x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3cb7dc5d-10ba-4184-8c87-a305f373136b_3002x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:285087,&quot;alt&quot;:&quot;The Google AI Studio interface displays a loading screen while generating code files on the left menu.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cb7dc5d-10ba-4184-8c87-a305f373136b_3002x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Google AI Studio interface displays a loading screen while generating code files on the left menu." title="The Google AI Studio interface displays a loading screen while generating code files on the left menu." srcset="https://substackcdn.com/image/fetch/$s_!Czin!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cb7dc5d-10ba-4184-8c87-a305f373136b_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!Czin!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cb7dc5d-10ba-4184-8c87-a305f373136b_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!Czin!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cb7dc5d-10ba-4184-8c87-a305f373136b_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!Czin!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cb7dc5d-10ba-4184-8c87-a305f373136b_3002x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Google AI Studio generates the initial application code</figcaption></figure></div><p>Here is a secret for vibe-coding. <strong>You have to treat the first generation like rolling dice.</strong> Don&#8217;t just accept the very first output. I actually ran this exact same prompt with the exact same document three separate times. I wanted to see how the AI interpreted the vibe differently each time. Look at the difference below. Both came from the <strong>exact same instructions</strong>, but one is clearly better. I picked the version in the second image because it gave me an immediate &#8220;coup de c&#339;ur.&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!e4bX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bf601e0-fb58-4b4d-b964-49e71294cf67_3002x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!e4bX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bf601e0-fb58-4b4d-b964-49e71294cf67_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!e4bX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bf601e0-fb58-4b4d-b964-49e71294cf67_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!e4bX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bf601e0-fb58-4b4d-b964-49e71294cf67_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!e4bX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bf601e0-fb58-4b4d-b964-49e71294cf67_3002x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!e4bX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bf601e0-fb58-4b4d-b964-49e71294cf67_3002x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7bf601e0-fb58-4b4d-b964-49e71294cf67_3002x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:281254,&quot;alt&quot;:&quot;A web page preview inside Google AI Studio displays a white interface with the title Reading Room and an empty state message.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bf601e0-fb58-4b4d-b964-49e71294cf67_3002x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A web page preview inside Google AI Studio displays a white interface with the title Reading Room and an empty state message." title="A web page preview inside Google AI Studio displays a white interface with the title Reading Room and an empty state message." srcset="https://substackcdn.com/image/fetch/$s_!e4bX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bf601e0-fb58-4b4d-b964-49e71294cf67_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!e4bX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bf601e0-fb58-4b4d-b964-49e71294cf67_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!e4bX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bf601e0-fb58-4b4d-b964-49e71294cf67_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!e4bX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bf601e0-fb58-4b4d-b964-49e71294cf67_3002x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The first generated prototype shows an empty reading room interface</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Bsy3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a3ee199-150f-4729-8e55-37a05c4d5b6a_3002x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Bsy3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a3ee199-150f-4729-8e55-37a05c4d5b6a_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!Bsy3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a3ee199-150f-4729-8e55-37a05c4d5b6a_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!Bsy3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a3ee199-150f-4729-8e55-37a05c4d5b6a_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!Bsy3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a3ee199-150f-4729-8e55-37a05c4d5b6a_3002x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Bsy3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a3ee199-150f-4729-8e55-37a05c4d5b6a_3002x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0a3ee199-150f-4729-8e55-37a05c4d5b6a_3002x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:420565,&quot;alt&quot;:&quot;A web page preview inside Google AI Studio shows a feed with two sample text posts and upvote counters.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a3ee199-150f-4729-8e55-37a05c4d5b6a_3002x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A web page preview inside Google AI Studio shows a feed with two sample text posts and upvote counters." title="A web page preview inside Google AI Studio shows a feed with two sample text posts and upvote counters." srcset="https://substackcdn.com/image/fetch/$s_!Bsy3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a3ee199-150f-4729-8e55-37a05c4d5b6a_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!Bsy3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a3ee199-150f-4729-8e55-37a05c4d5b6a_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!Bsy3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a3ee199-150f-4729-8e55-37a05c4d5b6a_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!Bsy3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a3ee199-150f-4729-8e55-37a05c4d5b6a_3002x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A second prototype displays a more detailed feed with sample posts</figcaption></figure></div><p>But having good bones doesn&#8217;t mean it&#8217;s finished. It still looked a bit like a wireframe. This is where the most powerful workflow loop happens. <strong>I started playing ping-pong between Google AI Studio and Gemini.</strong> I took a screenshot of the raw AI Studio prototype. I went back to my ongoing Gemini conversation, pasted the image, and asked my AI product manager to tear it apart.</p><blockquote><p>I have a first version. Give feedback about the UI of this modal so that the system can improve it.</p></blockquote><p>The feedback I got back was absolutely incredible. If you aren&#8217;t a trained UI/UX designer, this step is pure gold. Gemini immediately noticed that my text inputs had dark grey backgrounds. It told me this created a black hole in the UI that looked like a developer console instead of a book app. It told me to strip away the borders, drop the explicit &#8220;Title&#8221; labels, and use massive Serif fonts so the typography becomes the interface. It literally told me to transform the modal from a tax form into a blank sheet of paper.</p><p>Here is my favorite piece of feedback it gave me:</p><blockquote><p>The &#8220;Publish&#8221; button looks like a light grey pill. It feels passive. Make the button Solid Black (#000000) with White Text. This creates a strong &#8220;ink on paper&#8221; contrast that aligns with the Stanza brand.</p></blockquote><p>It also completely nailed the core mechanic of the app. It noticed the &#8220;24H LEFT&#8221; timer was blending in with the author&#8217;s name. It suggested adding a color heartbeat. If a post has less than 4 hours left, the text should turn a muted burnt orange. <strong>It wasn&#8217;t just fixing CSS: it was improving the product psychology.</strong></p><p>At the end of every critique, Gemini conveniently generated a &#8220;summary directive for the developer.&#8221; It summarized all the visual changes into one dense paragraph. <strong>I just copied that directive, flipped back over to Google AI Studio, pasted it into the chat, and hit enter.</strong> Google AI Studio applied Gemini&#8217;s design feedback to the code. I didn&#8217;t touch a single CSS file myself. I was just passing notes between the designer and the developer.</p><p>I repeated this screenshot-and-paste loop a few times. You can see the exact visual progression below. Watch how the interface evolves from a clunky pop-up into a distraction-free, full-page literary salon:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ce-j!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9388f11a-06c5-4eaf-a2e3-76bfcb98f183_3002x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ce-j!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9388f11a-06c5-4eaf-a2e3-76bfcb98f183_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!Ce-j!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9388f11a-06c5-4eaf-a2e3-76bfcb98f183_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!Ce-j!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9388f11a-06c5-4eaf-a2e3-76bfcb98f183_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!Ce-j!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9388f11a-06c5-4eaf-a2e3-76bfcb98f183_3002x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ce-j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9388f11a-06c5-4eaf-a2e3-76bfcb98f183_3002x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9388f11a-06c5-4eaf-a2e3-76bfcb98f183_3002x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:376677,&quot;alt&quot;:&quot;A chat interface shows a user uploading an application screenshot and asking Gemini for UI feedback.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9388f11a-06c5-4eaf-a2e3-76bfcb98f183_3002x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A chat interface shows a user uploading an application screenshot and asking Gemini for UI feedback." title="A chat interface shows a user uploading an application screenshot and asking Gemini for UI feedback." srcset="https://substackcdn.com/image/fetch/$s_!Ce-j!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9388f11a-06c5-4eaf-a2e3-76bfcb98f183_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!Ce-j!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9388f11a-06c5-4eaf-a2e3-76bfcb98f183_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!Ce-j!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9388f11a-06c5-4eaf-a2e3-76bfcb98f183_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!Ce-j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9388f11a-06c5-4eaf-a2e3-76bfcb98f183_3002x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I ask Gemini for visual feedback on the prototype screenshot</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KXTI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb292156d-4eda-41d1-91cf-bfa9b2b1bf97_3002x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KXTI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb292156d-4eda-41d1-91cf-bfa9b2b1bf97_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!KXTI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb292156d-4eda-41d1-91cf-bfa9b2b1bf97_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!KXTI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb292156d-4eda-41d1-91cf-bfa9b2b1bf97_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!KXTI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb292156d-4eda-41d1-91cf-bfa9b2b1bf97_3002x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KXTI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb292156d-4eda-41d1-91cf-bfa9b2b1bf97_3002x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b292156d-4eda-41d1-91cf-bfa9b2b1bf97_3002x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:417721,&quot;alt&quot;:&quot;A chat interface shows Gemini listing specific UI design problems and actionable fixes.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb292156d-4eda-41d1-91cf-bfa9b2b1bf97_3002x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A chat interface shows Gemini listing specific UI design problems and actionable fixes." title="A chat interface shows Gemini listing specific UI design problems and actionable fixes." srcset="https://substackcdn.com/image/fetch/$s_!KXTI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb292156d-4eda-41d1-91cf-bfa9b2b1bf97_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!KXTI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb292156d-4eda-41d1-91cf-bfa9b2b1bf97_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!KXTI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb292156d-4eda-41d1-91cf-bfa9b2b1bf97_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!KXTI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb292156d-4eda-41d1-91cf-bfa9b2b1bf97_3002x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Gemini provides specific design improvements for the interface</figcaption></figure></div><p>I kept iterating until the prototype looked exactly the way I wanted on my screen. I tested the clicks. I checked the layout. And the absolute best part? <strong>All of this endless iteration in Google AI Studio is completely free.</strong></p><p>Once I was completely satisfied with the visual shell, I clicked the download button in Google AI Studio:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UiNi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34784faf-b8ad-4fe0-89bf-e671f3440881_3002x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UiNi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34784faf-b8ad-4fe0-89bf-e671f3440881_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!UiNi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34784faf-b8ad-4fe0-89bf-e671f3440881_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!UiNi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34784faf-b8ad-4fe0-89bf-e671f3440881_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!UiNi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34784faf-b8ad-4fe0-89bf-e671f3440881_3002x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UiNi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34784faf-b8ad-4fe0-89bf-e671f3440881_3002x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/34784faf-b8ad-4fe0-89bf-e671f3440881_3002x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:462975,&quot;alt&quot;:&quot;The Google AI Studio interface shows a refined application preview with a red box highlighting the download icon in the top right corner.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34784faf-b8ad-4fe0-89bf-e671f3440881_3002x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Google AI Studio interface shows a refined application preview with a red box highlighting the download icon in the top right corner." title="The Google AI Studio interface shows a refined application preview with a red box highlighting the download icon in the top right corner." srcset="https://substackcdn.com/image/fetch/$s_!UiNi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34784faf-b8ad-4fe0-89bf-e671f3440881_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!UiNi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34784faf-b8ad-4fe0-89bf-e671f3440881_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!UiNi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34784faf-b8ad-4fe0-89bf-e671f3440881_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!UiNi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34784faf-b8ad-4fe0-89bf-e671f3440881_3002x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I click the download button to export the finished prototype code</figcaption></figure></div><p><strong>It gave me a neat little zip folder with all the source code.</strong> I extracted that code and dropped it into a dedicated project folder on my computer:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TjYj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f4f8b4f-3d6e-4bb1-9e1d-70e89665a7fe_2064x1096.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TjYj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f4f8b4f-3d6e-4bb1-9e1d-70e89665a7fe_2064x1096.png 424w, https://substackcdn.com/image/fetch/$s_!TjYj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f4f8b4f-3d6e-4bb1-9e1d-70e89665a7fe_2064x1096.png 848w, https://substackcdn.com/image/fetch/$s_!TjYj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f4f8b4f-3d6e-4bb1-9e1d-70e89665a7fe_2064x1096.png 1272w, https://substackcdn.com/image/fetch/$s_!TjYj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f4f8b4f-3d6e-4bb1-9e1d-70e89665a7fe_2064x1096.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TjYj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f4f8b4f-3d6e-4bb1-9e1d-70e89665a7fe_2064x1096.png" width="1456" height="773" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4f4f8b4f-3d6e-4bb1-9e1d-70e89665a7fe_2064x1096.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:773,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:631309,&quot;alt&quot;:&quot;A file explorer window displays a folder named stanza containing various application code files and a README document.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f4f8b4f-3d6e-4bb1-9e1d-70e89665a7fe_2064x1096.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A file explorer window displays a folder named stanza containing various application code files and a README document." title="A file explorer window displays a folder named stanza containing various application code files and a README document." srcset="https://substackcdn.com/image/fetch/$s_!TjYj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f4f8b4f-3d6e-4bb1-9e1d-70e89665a7fe_2064x1096.png 424w, https://substackcdn.com/image/fetch/$s_!TjYj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f4f8b4f-3d6e-4bb1-9e1d-70e89665a7fe_2064x1096.png 848w, https://substackcdn.com/image/fetch/$s_!TjYj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f4f8b4f-3d6e-4bb1-9e1d-70e89665a7fe_2064x1096.png 1272w, https://substackcdn.com/image/fetch/$s_!TjYj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f4f8b4f-3d6e-4bb1-9e1d-70e89665a7fe_2064x1096.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The downloaded files appear in a local project folder on my computer</figcaption></figure></div><p>The visual foundation was officially done. Now it was time to bring in the heavy machinery to make it actually work.</p><h3>Step 3: Save the code to GitHub (15 min)</h3><p>I finally have my prototype code ready to go. I open up Cursor. I use it to open the exact folder I just downloaded from Google AI Studio. This is a big moment for the project. <strong>This is where the actual finalization phase begins.</strong> The visual shell is completely done. Now we need to connect the plumbing and build the actual engine.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pnsG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffecf666d-ce84-40b8-9514-6e73d0034465_2784x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pnsG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffecf666d-ce84-40b8-9514-6e73d0034465_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!pnsG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffecf666d-ce84-40b8-9514-6e73d0034465_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!pnsG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffecf666d-ce84-40b8-9514-6e73d0034465_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!pnsG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffecf666d-ce84-40b8-9514-6e73d0034465_2784x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pnsG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffecf666d-ce84-40b8-9514-6e73d0034465_2784x1824.png" width="1456" height="954" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fecf666d-ce84-40b8-9514-6e73d0034465_2784x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:954,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:654364,&quot;alt&quot;:&quot;The Cursor IDE interface displays a workspace with the stanza project folder on the left and a chat panel on the right.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffecf666d-ce84-40b8-9514-6e73d0034465_2784x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Cursor IDE interface displays a workspace with the stanza project folder on the left and a chat panel on the right." title="The Cursor IDE interface displays a workspace with the stanza project folder on the left and a chat panel on the right." srcset="https://substackcdn.com/image/fetch/$s_!pnsG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffecf666d-ce84-40b8-9514-6e73d0034465_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!pnsG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffecf666d-ce84-40b8-9514-6e73d0034465_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!pnsG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffecf666d-ce84-40b8-9514-6e73d0034465_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!pnsG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffecf666d-ce84-40b8-9514-6e73d0034465_2784x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I open the downloaded project folder inside the Cursor code editor</figcaption></figure></div><p>But before I write a single new line of code, I stop. I need to create a baseline save state. I immediately push this initial code to GitHub to create my first checkpoint. I personally use the GitHub Desktop app for this step. I like having a clear, visual interface for my commits. <strong>You absolutely don&#8217;t have to do it this way.</strong> You can use standard terminal commands directly inside Cursor. You can even just ask the Cursor AI agent to handle the commit for you. Just pick whatever method feels the most comfortable.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lHLG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe383a790-405b-4c10-9e5f-fc6ea6d3cfff_2144x1544.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lHLG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe383a790-405b-4c10-9e5f-fc6ea6d3cfff_2144x1544.png 424w, https://substackcdn.com/image/fetch/$s_!lHLG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe383a790-405b-4c10-9e5f-fc6ea6d3cfff_2144x1544.png 848w, https://substackcdn.com/image/fetch/$s_!lHLG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe383a790-405b-4c10-9e5f-fc6ea6d3cfff_2144x1544.png 1272w, https://substackcdn.com/image/fetch/$s_!lHLG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe383a790-405b-4c10-9e5f-fc6ea6d3cfff_2144x1544.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lHLG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe383a790-405b-4c10-9e5f-fc6ea6d3cfff_2144x1544.png" width="1456" height="1049" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e383a790-405b-4c10-9e5f-fc6ea6d3cfff_2144x1544.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1049,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:597864,&quot;alt&quot;:&quot;The GitHub Desktop interface shows a popup window for creating a new repository named stanza with a description and file path.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe383a790-405b-4c10-9e5f-fc6ea6d3cfff_2144x1544.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The GitHub Desktop interface shows a popup window for creating a new repository named stanza with a description and file path." title="The GitHub Desktop interface shows a popup window for creating a new repository named stanza with a description and file path." srcset="https://substackcdn.com/image/fetch/$s_!lHLG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe383a790-405b-4c10-9e5f-fc6ea6d3cfff_2144x1544.png 424w, https://substackcdn.com/image/fetch/$s_!lHLG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe383a790-405b-4c10-9e5f-fc6ea6d3cfff_2144x1544.png 848w, https://substackcdn.com/image/fetch/$s_!lHLG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe383a790-405b-4c10-9e5f-fc6ea6d3cfff_2144x1544.png 1272w, https://substackcdn.com/image/fetch/$s_!lHLG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe383a790-405b-4c10-9e5f-fc6ea6d3cfff_2144x1544.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I create a new local repository using the GitHub Desktop application</figcaption></figure></div><p>I hit the publish button in the desktop app. A small modal pops up to confirm the repository name and description. I fill in the details and hit the final blue publish button. Then, I always open my browser and go straight to the GitHub website to double-check. <strong>I want to see that my first commit is safely logged in their system.</strong> It gives me peace of mind before I start breaking things in the editor.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EMjh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39061eee-7530-4157-8c69-a3a8eb719e4d_2144x1544.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EMjh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39061eee-7530-4157-8c69-a3a8eb719e4d_2144x1544.png 424w, https://substackcdn.com/image/fetch/$s_!EMjh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39061eee-7530-4157-8c69-a3a8eb719e4d_2144x1544.png 848w, https://substackcdn.com/image/fetch/$s_!EMjh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39061eee-7530-4157-8c69-a3a8eb719e4d_2144x1544.png 1272w, https://substackcdn.com/image/fetch/$s_!EMjh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39061eee-7530-4157-8c69-a3a8eb719e4d_2144x1544.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EMjh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39061eee-7530-4157-8c69-a3a8eb719e4d_2144x1544.png" width="1456" height="1049" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/39061eee-7530-4157-8c69-a3a8eb719e4d_2144x1544.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1049,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:622753,&quot;alt&quot;:&quot;The GitHub Desktop interface displays a blue Publish repository button for the newly created stanza project.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39061eee-7530-4157-8c69-a3a8eb719e4d_2144x1544.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The GitHub Desktop interface displays a blue Publish repository button for the newly created stanza project." title="The GitHub Desktop interface displays a blue Publish repository button for the newly created stanza project." srcset="https://substackcdn.com/image/fetch/$s_!EMjh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39061eee-7530-4157-8c69-a3a8eb719e4d_2144x1544.png 424w, https://substackcdn.com/image/fetch/$s_!EMjh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39061eee-7530-4157-8c69-a3a8eb719e4d_2144x1544.png 848w, https://substackcdn.com/image/fetch/$s_!EMjh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39061eee-7530-4157-8c69-a3a8eb719e4d_2144x1544.png 1272w, https://substackcdn.com/image/fetch/$s_!EMjh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39061eee-7530-4157-8c69-a3a8eb719e4d_2144x1544.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I click the button to publish the local repository to GitHub</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FQ1e!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ffded5f-5000-4f33-955b-edaa496eff94_2144x1544.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FQ1e!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ffded5f-5000-4f33-955b-edaa496eff94_2144x1544.png 424w, https://substackcdn.com/image/fetch/$s_!FQ1e!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ffded5f-5000-4f33-955b-edaa496eff94_2144x1544.png 848w, https://substackcdn.com/image/fetch/$s_!FQ1e!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ffded5f-5000-4f33-955b-edaa496eff94_2144x1544.png 1272w, https://substackcdn.com/image/fetch/$s_!FQ1e!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ffded5f-5000-4f33-955b-edaa496eff94_2144x1544.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FQ1e!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ffded5f-5000-4f33-955b-edaa496eff94_2144x1544.png" width="1456" height="1049" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3ffded5f-5000-4f33-955b-edaa496eff94_2144x1544.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1049,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:568984,&quot;alt&quot;:&quot;A popup window in GitHub Desktop shows the publish settings with the repository name, description, and a checkbox to keep the code private.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ffded5f-5000-4f33-955b-edaa496eff94_2144x1544.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A popup window in GitHub Desktop shows the publish settings with the repository name, description, and a checkbox to keep the code private." title="A popup window in GitHub Desktop shows the publish settings with the repository name, description, and a checkbox to keep the code private." srcset="https://substackcdn.com/image/fetch/$s_!FQ1e!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ffded5f-5000-4f33-955b-edaa496eff94_2144x1544.png 424w, https://substackcdn.com/image/fetch/$s_!FQ1e!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ffded5f-5000-4f33-955b-edaa496eff94_2144x1544.png 848w, https://substackcdn.com/image/fetch/$s_!FQ1e!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ffded5f-5000-4f33-955b-edaa496eff94_2144x1544.png 1272w, https://substackcdn.com/image/fetch/$s_!FQ1e!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ffded5f-5000-4f33-955b-edaa496eff94_2144x1544.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I confirm the repository details before uploading the files to GitHub</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wEWF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c030d51-f2c0-4449-bdf6-957f85ac464b_3002x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wEWF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c030d51-f2c0-4449-bdf6-957f85ac464b_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!wEWF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c030d51-f2c0-4449-bdf6-957f85ac464b_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!wEWF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c030d51-f2c0-4449-bdf6-957f85ac464b_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!wEWF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c030d51-f2c0-4449-bdf6-957f85ac464b_3002x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wEWF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c030d51-f2c0-4449-bdf6-957f85ac464b_3002x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9c030d51-f2c0-4449-bdf6-957f85ac464b_3002x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:407103,&quot;alt&quot;:&quot;The GitHub web interface shows the stanza repository containing the initial commit files and folders.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c030d51-f2c0-4449-bdf6-957f85ac464b_3002x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The GitHub web interface shows the stanza repository containing the initial commit files and folders." title="The GitHub web interface shows the stanza repository containing the initial commit files and folders." srcset="https://substackcdn.com/image/fetch/$s_!wEWF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c030d51-f2c0-4449-bdf6-957f85ac464b_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!wEWF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c030d51-f2c0-4449-bdf6-957f85ac464b_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!wEWF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c030d51-f2c0-4449-bdf6-957f85ac464b_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!wEWF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c030d51-f2c0-4449-bdf6-957f85ac464b_3002x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The GitHub website displays the newly published project files</figcaption></figure></div><p>There is one quick detail to check while you are on the website. Sometimes you click through the setup screens too fast. You might accidentally leave the repository set to private. I always prefer to build these kinds of projects in public. If you made that mistake, don&#8217;t worry about it. Just go into the settings tab and scroll down to the danger zone. <strong>You can easily switch the repository visibility to public right there.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!McnW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56234dce-23f2-4f9b-8d47-93410299eb11_3002x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!McnW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56234dce-23f2-4f9b-8d47-93410299eb11_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!McnW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56234dce-23f2-4f9b-8d47-93410299eb11_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!McnW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56234dce-23f2-4f9b-8d47-93410299eb11_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!McnW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56234dce-23f2-4f9b-8d47-93410299eb11_3002x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!McnW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56234dce-23f2-4f9b-8d47-93410299eb11_3002x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/56234dce-23f2-4f9b-8d47-93410299eb11_3002x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:330509,&quot;alt&quot;:&quot;The GitHub repository settings page displays the Danger Zone section with a menu selected to change visibility to public.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56234dce-23f2-4f9b-8d47-93410299eb11_3002x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The GitHub repository settings page displays the Danger Zone section with a menu selected to change visibility to public." title="The GitHub repository settings page displays the Danger Zone section with a menu selected to change visibility to public." srcset="https://substackcdn.com/image/fetch/$s_!McnW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56234dce-23f2-4f9b-8d47-93410299eb11_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!McnW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56234dce-23f2-4f9b-8d47-93410299eb11_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!McnW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56234dce-23f2-4f9b-8d47-93410299eb11_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!McnW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56234dce-23f2-4f9b-8d47-93410299eb11_3002x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I change the repository visibility from private to public in the GitHub settings</figcaption></figure></div><p>We now have a solid, backed-up foundation. We are officially ready to start coding.</p><h3>Step 4: Build the core app with Cursor (45 min)</h3><p>We are finally back in Cursor. We have our visual prototype, but it doesn&#8217;t actually do anything yet. <strong>It&#8217;s time to build the engine.</strong></p><p>I always start by <strong>bringing my specifications directly into the codebase.</strong> I create a simple folder named <code>docs</code> in the project directory:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Dc5-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa0ca8d5-d028-4d34-8aa0-c7e964a4d031_2784x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Dc5-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa0ca8d5-d028-4d34-8aa0-c7e964a4d031_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!Dc5-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa0ca8d5-d028-4d34-8aa0-c7e964a4d031_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!Dc5-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa0ca8d5-d028-4d34-8aa0-c7e964a4d031_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!Dc5-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa0ca8d5-d028-4d34-8aa0-c7e964a4d031_2784x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Dc5-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa0ca8d5-d028-4d34-8aa0-c7e964a4d031_2784x1824.png" width="1456" height="954" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fa0ca8d5-d028-4d34-8aa0-c7e964a4d031_2784x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:954,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:610532,&quot;alt&quot;:&quot;The Cursor code editor shows a newly created docs folder containing an empty specs.md file in the left file explorer.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa0ca8d5-d028-4d34-8aa0-c7e964a4d031_2784x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Cursor code editor shows a newly created docs folder containing an empty specs.md file in the left file explorer." title="The Cursor code editor shows a newly created docs folder containing an empty specs.md file in the left file explorer." srcset="https://substackcdn.com/image/fetch/$s_!Dc5-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa0ca8d5-d028-4d34-8aa0-c7e964a4d031_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!Dc5-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa0ca8d5-d028-4d34-8aa0-c7e964a4d031_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!Dc5-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa0ca8d5-d028-4d34-8aa0-c7e964a4d031_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!Dc5-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa0ca8d5-d028-4d34-8aa0-c7e964a4d031_2784x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I create a documentation folder and a specifications file inside the project</figcaption></figure></div><p>Then, I go back to the final Google Doc PRD. Google Docs has a native option to download the file directly as Markdown (.md):</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wVMy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1d134cd-cea8-47d5-99f7-021f5d54631d_3002x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wVMy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1d134cd-cea8-47d5-99f7-021f5d54631d_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!wVMy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1d134cd-cea8-47d5-99f7-021f5d54631d_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!wVMy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1d134cd-cea8-47d5-99f7-021f5d54631d_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!wVMy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1d134cd-cea8-47d5-99f7-021f5d54631d_3002x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wVMy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1d134cd-cea8-47d5-99f7-021f5d54631d_3002x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a1d134cd-cea8-47d5-99f7-021f5d54631d_3002x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:449979,&quot;alt&quot;:&quot;The Google Docs interface shows a dropdown menu navigating from the Download option to the Markdown file format.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1d134cd-cea8-47d5-99f7-021f5d54631d_3002x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Google Docs interface shows a dropdown menu navigating from the Download option to the Markdown file format." title="The Google Docs interface shows a dropdown menu navigating from the Download option to the Markdown file format." srcset="https://substackcdn.com/image/fetch/$s_!wVMy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1d134cd-cea8-47d5-99f7-021f5d54631d_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!wVMy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1d134cd-cea8-47d5-99f7-021f5d54631d_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!wVMy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1d134cd-cea8-47d5-99f7-021f5d54631d_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!wVMy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1d134cd-cea8-47d5-99f7-021f5d54631d_3002x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I download the product specifications from Google Docs as a Markdown file</figcaption></figure></div><p>I just download that file and drop it right into the <code>docs</code> folder:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9mTk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98c3b107-fa4e-4a24-b333-ccdb644aefa7_2784x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9mTk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98c3b107-fa4e-4a24-b333-ccdb644aefa7_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!9mTk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98c3b107-fa4e-4a24-b333-ccdb644aefa7_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!9mTk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98c3b107-fa4e-4a24-b333-ccdb644aefa7_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!9mTk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98c3b107-fa4e-4a24-b333-ccdb644aefa7_2784x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9mTk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98c3b107-fa4e-4a24-b333-ccdb644aefa7_2784x1824.png" width="1456" height="954" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/98c3b107-fa4e-4a24-b333-ccdb644aefa7_2784x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:954,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1004017,&quot;alt&quot;:&quot;The Cursor code editor displays the raw markdown text of the Stanza project specifications in the main viewing area.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98c3b107-fa4e-4a24-b333-ccdb644aefa7_2784x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Cursor code editor displays the raw markdown text of the Stanza project specifications in the main viewing area." title="The Cursor code editor displays the raw markdown text of the Stanza project specifications in the main viewing area." srcset="https://substackcdn.com/image/fetch/$s_!9mTk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98c3b107-fa4e-4a24-b333-ccdb644aefa7_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!9mTk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98c3b107-fa4e-4a24-b333-ccdb644aefa7_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!9mTk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98c3b107-fa4e-4a24-b333-ccdb644aefa7_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!9mTk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98c3b107-fa4e-4a24-b333-ccdb644aefa7_2784x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I place the downloaded markdown text directly into the code editor</figcaption></figure></div><p>If you discussed improvements and received feedback from Gemini earlier, <strong>ask it for a second version of your document</strong> so you have the latest specifications. This keeps your absolute source of truth right inside your code environment.</p><p>Let me share a quick pro-tip here. Raw markdown files can be really ugly to read in a code editor. <strong>If you right-click the file tab in Cursor, you can select &#8220;Open Preview:&#8221;</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yw17!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86d38dd3-f918-472e-8768-02dd8d458881_2784x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yw17!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86d38dd3-f918-472e-8768-02dd8d458881_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!yw17!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86d38dd3-f918-472e-8768-02dd8d458881_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!yw17!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86d38dd3-f918-472e-8768-02dd8d458881_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!yw17!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86d38dd3-f918-472e-8768-02dd8d458881_2784x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yw17!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86d38dd3-f918-472e-8768-02dd8d458881_2784x1824.png" width="1456" height="954" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/86d38dd3-f918-472e-8768-02dd8d458881_2784x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:954,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1249679,&quot;alt&quot;:&quot;The Cursor code editor shows a right-click menu over the file tab with the Open Preview option highlighted in blue.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86d38dd3-f918-472e-8768-02dd8d458881_2784x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Cursor code editor shows a right-click menu over the file tab with the Open Preview option highlighted in blue." title="The Cursor code editor shows a right-click menu over the file tab with the Open Preview option highlighted in blue." srcset="https://substackcdn.com/image/fetch/$s_!yw17!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86d38dd3-f918-472e-8768-02dd8d458881_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!yw17!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86d38dd3-f918-472e-8768-02dd8d458881_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!yw17!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86d38dd3-f918-472e-8768-02dd8d458881_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!yw17!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86d38dd3-f918-472e-8768-02dd8d458881_2784x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I select the preview option to format the markdown document</figcaption></figure></div><p>It instantly formats the text into a beautiful, readable page. It looks exactly like a clean Confluence document:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hzrX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f013cea-ebf7-4060-b641-7ec6e268711c_2784x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hzrX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f013cea-ebf7-4060-b641-7ec6e268711c_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!hzrX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f013cea-ebf7-4060-b641-7ec6e268711c_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!hzrX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f013cea-ebf7-4060-b641-7ec6e268711c_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!hzrX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f013cea-ebf7-4060-b641-7ec6e268711c_2784x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hzrX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f013cea-ebf7-4060-b641-7ec6e268711c_2784x1824.png" width="1456" height="954" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7f013cea-ebf7-4060-b641-7ec6e268711c_2784x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:954,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:876736,&quot;alt&quot;:&quot;The Cursor interface shows a readable preview of the markdown file containing the application features.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f013cea-ebf7-4060-b641-7ec6e268711c_2784x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Cursor interface shows a readable preview of the markdown file containing the application features." title="The Cursor interface shows a readable preview of the markdown file containing the application features." srcset="https://substackcdn.com/image/fetch/$s_!hzrX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f013cea-ebf7-4060-b641-7ec6e268711c_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!hzrX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f013cea-ebf7-4060-b641-7ec6e268711c_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!hzrX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f013cea-ebf7-4060-b641-7ec6e268711c_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!hzrX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f013cea-ebf7-4060-b641-7ec6e268711c_2784x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The code editor displays the formatted project specifications document</figcaption></figure></div><p>Now it&#8217;s time for the very first prompt. I open a new chat in Cursor. <strong>This is where you absolutely need to understand Cursor&#8217;s different modes.</strong> If you don&#8217;t understand these, you will burn through your paid credits fast. Here is a quick breakdown of how they work and when to use them.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3sYm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f0ae96e-0584-4fc9-a77f-84b2737a2a04_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3sYm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f0ae96e-0584-4fc9-a77f-84b2737a2a04_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!3sYm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f0ae96e-0584-4fc9-a77f-84b2737a2a04_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!3sYm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f0ae96e-0584-4fc9-a77f-84b2737a2a04_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!3sYm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f0ae96e-0584-4fc9-a77f-84b2737a2a04_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3sYm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f0ae96e-0584-4fc9-a77f-84b2737a2a04_2816x1536.png" width="728" height="397.09090909090907" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3f0ae96e-0584-4fc9-a77f-84b2737a2a04_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:1536,&quot;width&quot;:2816,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:1788149,&quot;alt&quot;:&quot;A hand-drawn style infographic details the Agent, Plan, Ask, and Debug modes for the Cursor application.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fa9508e-8e3a-467f-b982-1067a70cec2f_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="A hand-drawn style infographic details the Agent, Plan, Ask, and Debug modes for the Cursor application." title="A hand-drawn style infographic details the Agent, Plan, Ask, and Debug modes for the Cursor application." srcset="https://substackcdn.com/image/fetch/$s_!3sYm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f0ae96e-0584-4fc9-a77f-84b2737a2a04_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!3sYm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f0ae96e-0584-4fc9-a77f-84b2737a2a04_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!3sYm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f0ae96e-0584-4fc9-a77f-84b2737a2a04_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!3sYm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f0ae96e-0584-4fc9-a77f-84b2737a2a04_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The four different AI modes available inside the Cursor code editor</figcaption></figure></div><ul><li><p><strong>Agent mode:</strong> This is the default. It&#8217;s fully autonomous. It writes files, runs terminal commands, and edits code immediately. If you ask, &#8220;What&#8217;s the weather in Paris?&#8221;, it won&#8217;t just tell you the temperature. It will try to build a fully functioning weather app in your project folder. Use it for quick, clear tasks where you know exactly what needs to be built.</p></li><li><p><strong>Plan mode:</strong> This mode forces the AI to think before it acts. It researches your codebase, asks clarifying questions, and writes a step-by-step roadmap for you to approve. If you ask about the weather, it will pause and ask: &#8220;Are we building a CLI tool or a web dashboard? Do you have an API key?&#8221; This is my absolute favorite. Use it by default for any multi-step feature to prevent Cursor from going rogue.</p></li><li><p><strong>Ask mode:</strong> This is a strict read-only mode. It reads your code and answers questions, but it cannot write or edit files. If you ask about the weather, it simply replies, &#8220;It is 15&#176;C in Paris.&#8221; Use it when exploring unfamiliar code or when you just need a simple explanation without risking accidental changes.</p></li><li><p><strong>Debug mode:</strong> This is a specialized mode for tricky errors. Instead of blindly guessing, it instruments your code with temporary logs, asks you to reproduce the bug, and analyzes the real runtime data. If you ask about the weather, it says, &#8220;I can&#8217;t get the data. Let me add console logs to your API call so I can see where it fails.&#8221; Use it when your app crashes or when Agent mode is stuck in a loop.</p></li></ul><p>I set the model to <strong>Claude 4.5 Sonnet</strong> because its coding results are incredibly reliable. I select Plan mode and type a very direct prompt:</p><blockquote><p>Finalize this app so that I can release it into production.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1caM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F094cd32d-ff62-4e6c-bd7b-5b554575dd5f_2784x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1caM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F094cd32d-ff62-4e6c-bd7b-5b554575dd5f_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!1caM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F094cd32d-ff62-4e6c-bd7b-5b554575dd5f_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!1caM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F094cd32d-ff62-4e6c-bd7b-5b554575dd5f_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!1caM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F094cd32d-ff62-4e6c-bd7b-5b554575dd5f_2784x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1caM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F094cd32d-ff62-4e6c-bd7b-5b554575dd5f_2784x1824.png" width="1456" height="954" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/094cd32d-ff62-4e6c-bd7b-5b554575dd5f_2784x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:954,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:626961,&quot;alt&quot;:&quot;The Cursor chat interface shows a text prompt requesting production finalization with the plan mode option selected.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F094cd32d-ff62-4e6c-bd7b-5b554575dd5f_2784x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Cursor chat interface shows a text prompt requesting production finalization with the plan mode option selected." title="The Cursor chat interface shows a text prompt requesting production finalization with the plan mode option selected." srcset="https://substackcdn.com/image/fetch/$s_!1caM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F094cd32d-ff62-4e6c-bd7b-5b554575dd5f_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!1caM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F094cd32d-ff62-4e6c-bd7b-5b554575dd5f_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!1caM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F094cd32d-ff62-4e6c-bd7b-5b554575dd5f_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!1caM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F094cd32d-ff62-4e6c-bd7b-5b554575dd5f_2784x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I ask the AI agent to finalize the application in plan mode</figcaption></figure></div><p>Because I used Plan mode, Cursor didn&#8217;t just start blindly coding. <strong>It paused and asked me a series of multiple-choice questions to define the architecture.</strong> It literally gave me a guided quiz to figure out exactly what tools I wanted to use. This is incredibly helpful if you aren&#8217;t sure where to start. Here is how I answered its questions to guide my setup:</p><ul><li><p><strong>Question 1: What backend implementation do you need for production?</strong> I selected option A: &#8220;Full backend with database, authentication, and email service - real production app&#8221;. I didn&#8217;t want a fake static demo. I wanted the real deal.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!btEy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66b2e56b-91a6-4ef9-aab8-494d81614074_2784x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!btEy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66b2e56b-91a6-4ef9-aab8-494d81614074_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!btEy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66b2e56b-91a6-4ef9-aab8-494d81614074_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!btEy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66b2e56b-91a6-4ef9-aab8-494d81614074_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!btEy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66b2e56b-91a6-4ef9-aab8-494d81614074_2784x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!btEy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66b2e56b-91a6-4ef9-aab8-494d81614074_2784x1824.png" width="1456" height="954" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/66b2e56b-91a6-4ef9-aab8-494d81614074_2784x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:954,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:744271,&quot;alt&quot;:&quot;A chat interface displays a question about backend implementation with the first option selected for a full database and authentication.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66b2e56b-91a6-4ef9-aab8-494d81614074_2784x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A chat interface displays a question about backend implementation with the first option selected for a full database and authentication." title="A chat interface displays a question about backend implementation with the first option selected for a full database and authentication." srcset="https://substackcdn.com/image/fetch/$s_!btEy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66b2e56b-91a6-4ef9-aab8-494d81614074_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!btEy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66b2e56b-91a6-4ef9-aab8-494d81614074_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!btEy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66b2e56b-91a6-4ef9-aab8-494d81614074_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!btEy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66b2e56b-91a6-4ef9-aab8-494d81614074_2784x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The AI agent asks a multiple-choice question about the backend architecture</figcaption></figure></div></li><li><p><strong>Question 2: What hosting/deployment platform do you prefer?</strong> I selected option A: &#8220;Vercel&#8221;. It&#8217;s natively recommended for React apps and is incredibly easy to use.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!eGXX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda0e024c-ab49-4146-b8da-f66684ee686b_2784x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eGXX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda0e024c-ab49-4146-b8da-f66684ee686b_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!eGXX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda0e024c-ab49-4146-b8da-f66684ee686b_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!eGXX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda0e024c-ab49-4146-b8da-f66684ee686b_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!eGXX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda0e024c-ab49-4146-b8da-f66684ee686b_2784x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eGXX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda0e024c-ab49-4146-b8da-f66684ee686b_2784x1824.png" width="1456" height="954" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/da0e024c-ab49-4146-b8da-f66684ee686b_2784x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:954,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:732366,&quot;alt&quot;:&quot;A chat interface shows a multiple-choice question about deployment platforms with the Vercel option highlighted.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda0e024c-ab49-4146-b8da-f66684ee686b_2784x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A chat interface shows a multiple-choice question about deployment platforms with the Vercel option highlighted." title="A chat interface shows a multiple-choice question about deployment platforms with the Vercel option highlighted." srcset="https://substackcdn.com/image/fetch/$s_!eGXX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda0e024c-ab49-4146-b8da-f66684ee686b_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!eGXX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda0e024c-ab49-4146-b8da-f66684ee686b_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!eGXX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda0e024c-ab49-4146-b8da-f66684ee686b_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!eGXX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda0e024c-ab49-4146-b8da-f66684ee686b_2784x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I select Vercel as the hosting platform in the chat questionnaire</figcaption></figure></div></li><li><p><strong>Question 3: Which database would you like to use?</strong> I selected option B: &#8220;Supabase (PostgreSQL with auth helpers)&#8221;. Supabase is fantastic for handling both data and magic-link logins in one place.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7l7E!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5e03fb6-645c-449c-afdb-41616c032c77_2784x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7l7E!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5e03fb6-645c-449c-afdb-41616c032c77_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!7l7E!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5e03fb6-645c-449c-afdb-41616c032c77_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!7l7E!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5e03fb6-645c-449c-afdb-41616c032c77_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!7l7E!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5e03fb6-645c-449c-afdb-41616c032c77_2784x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7l7E!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5e03fb6-645c-449c-afdb-41616c032c77_2784x1824.png" width="1456" height="954" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c5e03fb6-645c-449c-afdb-41616c032c77_2784x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:954,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:732000,&quot;alt&quot;:&quot;A chat interface displays a question about database preferences with the Supabase option selected.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5e03fb6-645c-449c-afdb-41616c032c77_2784x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A chat interface displays a question about database preferences with the Supabase option selected." title="A chat interface displays a question about database preferences with the Supabase option selected." srcset="https://substackcdn.com/image/fetch/$s_!7l7E!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5e03fb6-645c-449c-afdb-41616c032c77_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!7l7E!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5e03fb6-645c-449c-afdb-41616c032c77_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!7l7E!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5e03fb6-645c-449c-afdb-41616c032c77_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!7l7E!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5e03fb6-645c-449c-afdb-41616c032c77_2784x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I choose Supabase as the project database in the chat options</figcaption></figure></div></li><li><p><strong>Question 4: What email service do you want to use?</strong> Cursor suggested tools like Resend and SendGrid. I explicitly chose option F: &#8220;No emails are sent to users, except for the one to log in&#8221;. <strong>Always restrict the AI when you can to avoid unnecessary complexity</strong> (I will explain the specific deployment issue this caused later on).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZPcP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0601c238-af63-4078-b81d-74ca1a52bcb0_2784x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZPcP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0601c238-af63-4078-b81d-74ca1a52bcb0_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!ZPcP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0601c238-af63-4078-b81d-74ca1a52bcb0_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!ZPcP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0601c238-af63-4078-b81d-74ca1a52bcb0_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!ZPcP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0601c238-af63-4078-b81d-74ca1a52bcb0_2784x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZPcP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0601c238-af63-4078-b81d-74ca1a52bcb0_2784x1824.png" width="1456" height="954" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0601c238-af63-4078-b81d-74ca1a52bcb0_2784x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:954,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:721901,&quot;alt&quot;:&quot;A chat interface shows a question about email services with an option selected indicating no emails will be sent to users.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0601c238-af63-4078-b81d-74ca1a52bcb0_2784x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A chat interface shows a question about email services with an option selected indicating no emails will be sent to users." title="A chat interface shows a question about email services with an option selected indicating no emails will be sent to users." srcset="https://substackcdn.com/image/fetch/$s_!ZPcP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0601c238-af63-4078-b81d-74ca1a52bcb0_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!ZPcP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0601c238-af63-4078-b81d-74ca1a52bcb0_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!ZPcP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0601c238-af63-4078-b81d-74ca1a52bcb0_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!ZPcP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0601c238-af63-4078-b81d-74ca1a52bcb0_2784x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I instruct the AI agent to skip third-party email services</figcaption></figure></div></li><li><p><strong>Question 5: Do you already have API keys for these services?</strong> I selected option B: &#8220;No, help me set up new accounts&#8221;. This tells the AI to generate instructions for me later.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!m1j-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb37d68e-d788-4b8d-9171-5b68750b0a9b_2784x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!m1j-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb37d68e-d788-4b8d-9171-5b68750b0a9b_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!m1j-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb37d68e-d788-4b8d-9171-5b68750b0a9b_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!m1j-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb37d68e-d788-4b8d-9171-5b68750b0a9b_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!m1j-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb37d68e-d788-4b8d-9171-5b68750b0a9b_2784x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!m1j-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb37d68e-d788-4b8d-9171-5b68750b0a9b_2784x1824.png" width="1456" height="954" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fb37d68e-d788-4b8d-9171-5b68750b0a9b_2784x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:954,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:705901,&quot;alt&quot;:&quot;A chat interface displays a question about existing API keys with an option selected requesting help to set up new accounts.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb37d68e-d788-4b8d-9171-5b68750b0a9b_2784x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A chat interface displays a question about existing API keys with an option selected requesting help to set up new accounts." title="A chat interface displays a question about existing API keys with an option selected requesting help to set up new accounts." srcset="https://substackcdn.com/image/fetch/$s_!m1j-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb37d68e-d788-4b8d-9171-5b68750b0a9b_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!m1j-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb37d68e-d788-4b8d-9171-5b68750b0a9b_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!m1j-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb37d68e-d788-4b8d-9171-5b68750b0a9b_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!m1j-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb37d68e-d788-4b8d-9171-5b68750b0a9b_2784x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I ask the AI agent to help set up new API keys</figcaption></figure></div></li></ul><p>Based on my answers, Cursor generated a <strong>massive, 16-step execution plan.</strong> It created a markdown file with a full architecture overview and a checklist. It&#8217;s honestly a bit exhausting to look at, even though I&#8217;ve done this multiple times. I quickly reviewed its logic to make sure it understood the assignment.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wyUV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf452ac1-0cb7-4404-9e0a-1376837f6d78_2784x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wyUV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf452ac1-0cb7-4404-9e0a-1376837f6d78_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!wyUV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf452ac1-0cb7-4404-9e0a-1376837f6d78_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!wyUV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf452ac1-0cb7-4404-9e0a-1376837f6d78_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!wyUV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf452ac1-0cb7-4404-9e0a-1376837f6d78_2784x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wyUV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf452ac1-0cb7-4404-9e0a-1376837f6d78_2784x1824.png" width="1456" height="954" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/df452ac1-0cb7-4404-9e0a-1376837f6d78_2784x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:954,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:954563,&quot;alt&quot;:&quot;The Cursor interface shows a detailed text document containing the application architecture overview and implementation steps.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf452ac1-0cb7-4404-9e0a-1376837f6d78_2784x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Cursor interface shows a detailed text document containing the application architecture overview and implementation steps." title="The Cursor interface shows a detailed text document containing the application architecture overview and implementation steps." srcset="https://substackcdn.com/image/fetch/$s_!wyUV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf452ac1-0cb7-4404-9e0a-1376837f6d78_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!wyUV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf452ac1-0cb7-4404-9e0a-1376837f6d78_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!wyUV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf452ac1-0cb7-4404-9e0a-1376837f6d78_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!wyUV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf452ac1-0cb7-4404-9e0a-1376837f6d78_2784x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The AI agent generates a comprehensive production release plan</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Snqo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa17a8b1f-2289-4436-80a6-6f210715070b_2784x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Snqo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa17a8b1f-2289-4436-80a6-6f210715070b_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!Snqo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa17a8b1f-2289-4436-80a6-6f210715070b_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!Snqo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa17a8b1f-2289-4436-80a6-6f210715070b_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!Snqo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa17a8b1f-2289-4436-80a6-6f210715070b_2784x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Snqo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa17a8b1f-2289-4436-80a6-6f210715070b_2784x1824.png" width="1456" height="954" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a17a8b1f-2289-4436-80a6-6f210715070b_2784x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:954,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1032700,&quot;alt&quot;:&quot;The Cursor chat window displays a checklist of sixteen required tasks and a yellow build button.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa17a8b1f-2289-4436-80a6-6f210715070b_2784x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Cursor chat window displays a checklist of sixteen required tasks and a yellow build button." title="The Cursor chat window displays a checklist of sixteen required tasks and a yellow build button." srcset="https://substackcdn.com/image/fetch/$s_!Snqo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa17a8b1f-2289-4436-80a6-6f210715070b_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!Snqo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa17a8b1f-2289-4436-80a6-6f210715070b_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!Snqo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa17a8b1f-2289-4436-80a6-6f210715070b_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!Snqo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa17a8b1f-2289-4436-80a6-6f210715070b_2784x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I review the 16 development tasks before starting the build process</figcaption></figure></div><p>Once I was happy with the roadmap, I clicked the yellow &#8220;Build&#8221; button. <strong>This is the magical moment.</strong> Cursor automatically <strong>switches into Agent mode</strong> and starts rolling through the checklist. You can literally watch it check off the to-dos one by one as it creates the backend endpoints.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EhDj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d4fccd-10de-461d-be07-cd4cb5ddd276_2784x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EhDj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d4fccd-10de-461d-be07-cd4cb5ddd276_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!EhDj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d4fccd-10de-461d-be07-cd4cb5ddd276_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!EhDj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d4fccd-10de-461d-be07-cd4cb5ddd276_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!EhDj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d4fccd-10de-461d-be07-cd4cb5ddd276_2784x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EhDj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d4fccd-10de-461d-be07-cd4cb5ddd276_2784x1824.png" width="1456" height="954" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/92d4fccd-10de-461d-be07-cd4cb5ddd276_2784x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:954,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1053503,&quot;alt&quot;:&quot;The Cursor interface shows checkmarks next to completed tasks in the checklist while the agent writes code.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d4fccd-10de-461d-be07-cd4cb5ddd276_2784x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Cursor interface shows checkmarks next to completed tasks in the checklist while the agent writes code." title="The Cursor interface shows checkmarks next to completed tasks in the checklist while the agent writes code." srcset="https://substackcdn.com/image/fetch/$s_!EhDj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d4fccd-10de-461d-be07-cd4cb5ddd276_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!EhDj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d4fccd-10de-461d-be07-cd4cb5ddd276_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!EhDj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d4fccd-10de-461d-be07-cd4cb5ddd276_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!EhDj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92d4fccd-10de-461d-be07-cd4cb5ddd276_2784x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The AI agent executes the required tasks one by one</figcaption></figure></div><p>But you can&#8217;t just walk away and grab a coffee. <strong>You have to supervise it.</strong> The Agent will regularly pause and block the process when it edits core files. It shows you a clean visual diff of the code changes. <strong>You have to manually hit the &#8220;Accept&#8221; button</strong> to let it continue.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sW88!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15d6e9e7-3533-4adc-84c8-3d16543bfb17_2784x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sW88!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15d6e9e7-3533-4adc-84c8-3d16543bfb17_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!sW88!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15d6e9e7-3533-4adc-84c8-3d16543bfb17_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!sW88!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15d6e9e7-3533-4adc-84c8-3d16543bfb17_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!sW88!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15d6e9e7-3533-4adc-84c8-3d16543bfb17_2784x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sW88!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15d6e9e7-3533-4adc-84c8-3d16543bfb17_2784x1824.png" width="1456" height="954" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/15d6e9e7-3533-4adc-84c8-3d16543bfb17_2784x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:954,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1103181,&quot;alt&quot;:&quot;The Cursor interface shows a split view with the development checklist on the left and colored code diffs waiting for approval on the right.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15d6e9e7-3533-4adc-84c8-3d16543bfb17_2784x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Cursor interface shows a split view with the development checklist on the left and colored code diffs waiting for approval on the right." title="The Cursor interface shows a split view with the development checklist on the left and colored code diffs waiting for approval on the right." srcset="https://substackcdn.com/image/fetch/$s_!sW88!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15d6e9e7-3533-4adc-84c8-3d16543bfb17_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!sW88!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15d6e9e7-3533-4adc-84c8-3d16543bfb17_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!sW88!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15d6e9e7-3533-4adc-84c8-3d16543bfb17_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!sW88!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15d6e9e7-3533-4adc-84c8-3d16543bfb17_2784x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I review the specific code changes proposed by the AI before accepting them</figcaption></figure></div><p>When Cursor finally finished the entire 16-step plan, it dropped a big &#8220;Ready to Deploy!&#8221; message in the chat.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!73A-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde735cec-fc7d-4171-802b-851cfc0fc5c6_2784x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!73A-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde735cec-fc7d-4171-802b-851cfc0fc5c6_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!73A-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde735cec-fc7d-4171-802b-851cfc0fc5c6_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!73A-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde735cec-fc7d-4171-802b-851cfc0fc5c6_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!73A-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde735cec-fc7d-4171-802b-851cfc0fc5c6_2784x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!73A-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde735cec-fc7d-4171-802b-851cfc0fc5c6_2784x1824.png" width="1456" height="954" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/de735cec-fc7d-4171-802b-851cfc0fc5c6_2784x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:954,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1081016,&quot;alt&quot;:&quot;The Cursor chat window displays a completed checklist and a success message indicating the implementation tasks are finished.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde735cec-fc7d-4171-802b-851cfc0fc5c6_2784x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Cursor chat window displays a completed checklist and a success message indicating the implementation tasks are finished." title="The Cursor chat window displays a completed checklist and a success message indicating the implementation tasks are finished." srcset="https://substackcdn.com/image/fetch/$s_!73A-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde735cec-fc7d-4171-802b-851cfc0fc5c6_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!73A-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde735cec-fc7d-4171-802b-851cfc0fc5c6_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!73A-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde735cec-fc7d-4171-802b-851cfc0fc5c6_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!73A-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde735cec-fc7d-4171-802b-851cfc0fc5c6_2784x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The AI agent completes all tasks and declares the app ready for deployment</figcaption></figure></div><p>More importantly, it automatically generated a few new Markdown files in my project, including one called <code>NEXT_STEPS.md</code>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Flzn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35291101-89b0-49f2-b741-56b74ba0d6ce_2784x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Flzn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35291101-89b0-49f2-b741-56b74ba0d6ce_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!Flzn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35291101-89b0-49f2-b741-56b74ba0d6ce_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!Flzn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35291101-89b0-49f2-b741-56b74ba0d6ce_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!Flzn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35291101-89b0-49f2-b741-56b74ba0d6ce_2784x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Flzn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35291101-89b0-49f2-b741-56b74ba0d6ce_2784x1824.png" width="1456" height="954" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/35291101-89b0-49f2-b741-56b74ba0d6ce_2784x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:954,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1068870,&quot;alt&quot;:&quot;The Cursor interface shows a readable preview of a markdown file titled Next Steps containing configuration instructions.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35291101-89b0-49f2-b741-56b74ba0d6ce_2784x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Cursor interface shows a readable preview of a markdown file titled Next Steps containing configuration instructions." title="The Cursor interface shows a readable preview of a markdown file titled Next Steps containing configuration instructions." srcset="https://substackcdn.com/image/fetch/$s_!Flzn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35291101-89b0-49f2-b741-56b74ba0d6ce_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!Flzn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35291101-89b0-49f2-b741-56b74ba0d6ce_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!Flzn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35291101-89b0-49f2-b741-56b74ba0d6ce_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!Flzn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35291101-89b0-49f2-b741-56b74ba0d6ce_2784x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Cursor displays the generated setup guide detailing the exact launch steps</figcaption></figure></div><p>I opened that file in preview mode. It gave me a beautiful, human-readable summary of the 1,500 lines of code it just wrote. <strong>It also gave me exact, step-by-step instructions</strong> on what I needed to click inside Supabase to get the database running. These are the exact guides I followed to finish the backend integration.</p><h3>Step 5: Configure the backend with Supabase (30 min)</h3><p>We have our code, and we have our exact <code>NEXT_STEPS.md</code> guide generated by Cursor. Now we just need to execute the plan.</p><p>The first major task is <strong>setting up the database.</strong> I head straight over to the <a href="https://supabase.com/">Supabase</a> website. They promise you can &#8220;Build in a weekend, Scale to millions&#8221; right on the homepage. That&#8217;s exactly the vibe we are going for here.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Un7r!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F433fd965-f155-4b57-8045-40dbea25cb09_3002x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Un7r!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F433fd965-f155-4b57-8045-40dbea25cb09_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!Un7r!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F433fd965-f155-4b57-8045-40dbea25cb09_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!Un7r!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F433fd965-f155-4b57-8045-40dbea25cb09_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!Un7r!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F433fd965-f155-4b57-8045-40dbea25cb09_3002x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Un7r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F433fd965-f155-4b57-8045-40dbea25cb09_3002x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/433fd965-f155-4b57-8045-40dbea25cb09_3002x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:274266,&quot;alt&quot;:&quot;The Supabase homepage displays a dark background with the green text Build in a weekend, Scale to millions.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F433fd965-f155-4b57-8045-40dbea25cb09_3002x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Supabase homepage displays a dark background with the green text Build in a weekend, Scale to millions." title="The Supabase homepage displays a dark background with the green text Build in a weekend, Scale to millions." srcset="https://substackcdn.com/image/fetch/$s_!Un7r!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F433fd965-f155-4b57-8045-40dbea25cb09_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!Un7r!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F433fd965-f155-4b57-8045-40dbea25cb09_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!Un7r!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F433fd965-f155-4b57-8045-40dbea25cb09_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!Un7r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F433fd965-f155-4b57-8045-40dbea25cb09_3002x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I open the Supabase website to start building the backend database</figcaption></figure></div><p>I log into my free account and click the big green &#8220;New project&#8221; button.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wq8s!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb36119ae-c0e3-4f37-8f78-4328d7bbb78a_3002x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wq8s!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb36119ae-c0e3-4f37-8f78-4328d7bbb78a_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!wq8s!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb36119ae-c0e3-4f37-8f78-4328d7bbb78a_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!wq8s!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb36119ae-c0e3-4f37-8f78-4328d7bbb78a_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!wq8s!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb36119ae-c0e3-4f37-8f78-4328d7bbb78a_3002x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wq8s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb36119ae-c0e3-4f37-8f78-4328d7bbb78a_3002x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b36119ae-c0e3-4f37-8f78-4328d7bbb78a_3002x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:143066,&quot;alt&quot;:&quot;The Supabase dashboard interface shows an empty project list with a red box highlighting the green New project button.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb36119ae-c0e3-4f37-8f78-4328d7bbb78a_3002x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Supabase dashboard interface shows an empty project list with a red box highlighting the green New project button." title="The Supabase dashboard interface shows an empty project list with a red box highlighting the green New project button." srcset="https://substackcdn.com/image/fetch/$s_!wq8s!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb36119ae-c0e3-4f37-8f78-4328d7bbb78a_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!wq8s!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb36119ae-c0e3-4f37-8f78-4328d7bbb78a_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!wq8s!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb36119ae-c0e3-4f37-8f78-4328d7bbb78a_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!wq8s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb36119ae-c0e3-4f37-8f78-4328d7bbb78a_3002x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I click the button to create a new Supabase project in the dashboard</figcaption></figure></div><p>A simple setup screen appears.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!iEvs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1ca168f-d44a-4961-a24e-7481c4426d74_3002x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iEvs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1ca168f-d44a-4961-a24e-7481c4426d74_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!iEvs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1ca168f-d44a-4961-a24e-7481c4426d74_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!iEvs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1ca168f-d44a-4961-a24e-7481c4426d74_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!iEvs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1ca168f-d44a-4961-a24e-7481c4426d74_3002x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iEvs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1ca168f-d44a-4961-a24e-7481c4426d74_3002x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b1ca168f-d44a-4961-a24e-7481c4426d74_3002x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:263959,&quot;alt&quot;:&quot;The Supabase setup screen displays text input fields for creating a project named stanza with a generated password.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1ca168f-d44a-4961-a24e-7481c4426d74_3002x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Supabase setup screen displays text input fields for creating a project named stanza with a generated password." title="The Supabase setup screen displays text input fields for creating a project named stanza with a generated password." srcset="https://substackcdn.com/image/fetch/$s_!iEvs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1ca168f-d44a-4961-a24e-7481c4426d74_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!iEvs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1ca168f-d44a-4961-a24e-7481c4426d74_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!iEvs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1ca168f-d44a-4961-a24e-7481c4426d74_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!iEvs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1ca168f-d44a-4961-a24e-7481c4426d74_3002x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I configure the new database with a project name and a strong password</figcaption></figure></div><p>I name the project &#8220;stanza&#8221;, select my region, and generate a strong database password. You just hit create and wait a minute or two for the servers to provision. <strong>It&#8217;s literally that easy to spin up a production database today.</strong></p><p>Once the project is active, I need to link it to my code. I navigate to the Project Settings and open the API section. I&#8217;m looking for three specific things here: the Project URL, the <code>anon public</code> key, and the <code>service_role</code> key.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!g9_r!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ec316f9-da42-4079-80ab-a068fa58216b_3002x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!g9_r!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ec316f9-da42-4079-80ab-a068fa58216b_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!g9_r!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ec316f9-da42-4079-80ab-a068fa58216b_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!g9_r!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ec316f9-da42-4079-80ab-a068fa58216b_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!g9_r!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ec316f9-da42-4079-80ab-a068fa58216b_3002x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!g9_r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ec316f9-da42-4079-80ab-a068fa58216b_3002x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5ec316f9-da42-4079-80ab-a068fa58216b_3002x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:362955,&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.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ec316f9-da42-4079-80ab-a068fa58216b_3002x1474.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_!g9_r!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ec316f9-da42-4079-80ab-a068fa58216b_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!g9_r!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ec316f9-da42-4079-80ab-a068fa58216b_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!g9_r!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ec316f9-da42-4079-80ab-a068fa58216b_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!g9_r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ec316f9-da42-4079-80ab-a068fa58216b_3002x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I locate the required API keys inside the Supabase project settings</figcaption></figure></div><p>I copy these raw values. I jump back into Cursor. I open the <code>.env.local</code> file that Cursor created for me earlier. I paste those Supabase keys directly into the file. <strong>This is the critical bridge.</strong> This file tells my local code exactly how to talk to my live database.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DyxP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17bb8682-25e0-48e0-b388-42a23d66dcbf_2784x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DyxP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17bb8682-25e0-48e0-b388-42a23d66dcbf_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!DyxP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17bb8682-25e0-48e0-b388-42a23d66dcbf_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!DyxP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17bb8682-25e0-48e0-b388-42a23d66dcbf_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!DyxP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17bb8682-25e0-48e0-b388-42a23d66dcbf_2784x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DyxP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17bb8682-25e0-48e0-b388-42a23d66dcbf_2784x1824.png" width="1456" height="954" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/17bb8682-25e0-48e0-b388-42a23d66dcbf_2784x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:954,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:984789,&quot;alt&quot;:&quot;The Cursor code editor shows an open environment file where the database connection URLs and secret keys are securely stored.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17bb8682-25e0-48e0-b388-42a23d66dcbf_2784x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Cursor code editor shows an open environment file where the database connection URLs and secret keys are securely stored." title="The Cursor code editor shows an open environment file where the database connection URLs and secret keys are securely stored." srcset="https://substackcdn.com/image/fetch/$s_!DyxP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17bb8682-25e0-48e0-b388-42a23d66dcbf_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!DyxP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17bb8682-25e0-48e0-b388-42a23d66dcbf_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!DyxP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17bb8682-25e0-48e0-b388-42a23d66dcbf_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!DyxP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17bb8682-25e0-48e0-b388-42a23d66dcbf_2784x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I paste the Supabase API keys into the local environment file</figcaption></figure></div><p>Let me stop here and share a crucial security rule. <strong>You must never push these secret keys to GitHub.</strong> If you expose your database keys publicly, malicious bots will scrape them and ruin your app. Cursor already handled this for me technically. It automatically added <code>.env.local</code> to a hidden file called <code>.gitignore</code>. That file tells GitHub to completely ignore the secret keys when you upload your code.</p><p>Now we need to actually build the tables to hold our data. Remember that 16-step plan Cursor ran through earlier? One of those steps was generating a massive <code>schema.sql</code> file. <strong>This file contains all the database rules and structures we need.</strong> I open <code>schema.sql</code> in Cursor and copy every single line of code.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xeRA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff49bc67e-fa2a-4437-8352-edec5d4d24c2_2784x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xeRA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff49bc67e-fa2a-4437-8352-edec5d4d24c2_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!xeRA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff49bc67e-fa2a-4437-8352-edec5d4d24c2_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!xeRA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff49bc67e-fa2a-4437-8352-edec5d4d24c2_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!xeRA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff49bc67e-fa2a-4437-8352-edec5d4d24c2_2784x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xeRA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff49bc67e-fa2a-4437-8352-edec5d4d24c2_2784x1824.png" width="1456" height="954" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f49bc67e-fa2a-4437-8352-edec5d4d24c2_2784x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:954,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1132895,&quot;alt&quot;:&quot;The Cursor interface displays a raw SQL file containing the database table definitions for users, posts, and comments.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff49bc67e-fa2a-4437-8352-edec5d4d24c2_2784x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Cursor interface displays a raw SQL file containing the database table definitions for users, posts, and comments." title="The Cursor interface displays a raw SQL file containing the database table definitions for users, posts, and comments." srcset="https://substackcdn.com/image/fetch/$s_!xeRA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff49bc67e-fa2a-4437-8352-edec5d4d24c2_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!xeRA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff49bc67e-fa2a-4437-8352-edec5d4d24c2_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!xeRA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff49bc67e-fa2a-4437-8352-edec5d4d24c2_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!xeRA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff49bc67e-fa2a-4437-8352-edec5d4d24c2_2784x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I copy the generated database schema text from the code editor</figcaption></figure></div><p>I go back to my Supabase dashboard and <strong>open the SQL Editor.</strong> I paste the massive block of code into the blank query window and hit &#8220;Run&#8221;. For this specific project, it worked perfectly on the very first try. I immediately got a clean &#8220;Success. No rows returned&#8221; message.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-nXn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ed95083-f43a-4309-a736-850ca14254eb_3002x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-nXn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ed95083-f43a-4309-a736-850ca14254eb_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!-nXn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ed95083-f43a-4309-a736-850ca14254eb_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!-nXn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ed95083-f43a-4309-a736-850ca14254eb_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!-nXn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ed95083-f43a-4309-a736-850ca14254eb_3002x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-nXn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ed95083-f43a-4309-a736-850ca14254eb_3002x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9ed95083-f43a-4309-a736-850ca14254eb_3002x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:311213,&quot;alt&quot;:&quot;The Supabase SQL editor interface shows a successful execution message reading Success. No rows returned at the bottom of the screen.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ed95083-f43a-4309-a736-850ca14254eb_3002x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Supabase SQL editor interface shows a successful execution message reading Success. No rows returned at the bottom of the screen." title="The Supabase SQL editor interface shows a successful execution message reading Success. No rows returned at the bottom of the screen." srcset="https://substackcdn.com/image/fetch/$s_!-nXn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ed95083-f43a-4309-a736-850ca14254eb_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!-nXn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ed95083-f43a-4309-a736-850ca14254eb_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!-nXn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ed95083-f43a-4309-a736-850ca14254eb_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!-nXn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ed95083-f43a-4309-a736-850ca14254eb_3002x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I run the schema code inside the Supabase SQL editor to build the tables</figcaption></figure></div><p><strong>Don&#8217;t panic if you get a red error message here.</strong> It happens sometimes with AI-generated SQL. If it fails, you don&#8217;t need to learn database administration to fix it. Just copy the exact error message from Supabase, paste it back into your Cursor chat, and tell the AI to generate a new schema. It will fix its own mistakes.</p><p>Because it worked perfectly, <strong>I wanted to see the result visually.</strong> I clicked over to the Schema Visualizer in Supabase. Supabase successfully created and linked five distinct tables: <code>users</code>, <code>posts</code>, <code>comments</code>, <code>votes</code>, and <code>magic_links</code>. The entire backend architecture is fully alive.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0bU7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6184b1e1-f5b3-4976-b4d1-985e0378d4ba_3002x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0bU7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6184b1e1-f5b3-4976-b4d1-985e0378d4ba_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!0bU7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6184b1e1-f5b3-4976-b4d1-985e0378d4ba_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!0bU7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6184b1e1-f5b3-4976-b4d1-985e0378d4ba_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!0bU7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6184b1e1-f5b3-4976-b4d1-985e0378d4ba_3002x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0bU7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6184b1e1-f5b3-4976-b4d1-985e0378d4ba_3002x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6184b1e1-f5b3-4976-b4d1-985e0378d4ba_3002x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:401254,&quot;alt&quot;:&quot;The Supabase schema visualizer interface displays a diagram of five connected tables.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6184b1e1-f5b3-4976-b4d1-985e0378d4ba_3002x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Supabase schema visualizer interface displays a diagram of five connected tables." title="The Supabase schema visualizer interface displays a diagram of five connected tables." srcset="https://substackcdn.com/image/fetch/$s_!0bU7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6184b1e1-f5b3-4976-b4d1-985e0378d4ba_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!0bU7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6184b1e1-f5b3-4976-b4d1-985e0378d4ba_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!0bU7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6184b1e1-f5b3-4976-b4d1-985e0378d4ba_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!0bU7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6184b1e1-f5b3-4976-b4d1-985e0378d4ba_3002x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The Supabase dashboard visualizes the five connected database tables</figcaption></figure></div><p>There was just one final tiny step in the guide. Since Stanza allows users to upload a single photo per post, I needed <strong>a place to store those image files.</strong> I went to the Storage tab in Supabase and clicked &#8220;New bucket&#8221;.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TpoW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff89022fc-b836-423a-81c3-be26a96d865e_3002x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TpoW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff89022fc-b836-423a-81c3-be26a96d865e_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!TpoW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff89022fc-b836-423a-81c3-be26a96d865e_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!TpoW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff89022fc-b836-423a-81c3-be26a96d865e_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!TpoW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff89022fc-b836-423a-81c3-be26a96d865e_3002x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TpoW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff89022fc-b836-423a-81c3-be26a96d865e_3002x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f89022fc-b836-423a-81c3-be26a96d865e_3002x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:231697,&quot;alt&quot;:&quot;The Supabase storage interface displays a central button to create a new file bucket.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff89022fc-b836-423a-81c3-be26a96d865e_3002x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Supabase storage interface displays a central button to create a new file bucket." title="The Supabase storage interface displays a central button to create a new file bucket." srcset="https://substackcdn.com/image/fetch/$s_!TpoW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff89022fc-b836-423a-81c3-be26a96d865e_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!TpoW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff89022fc-b836-423a-81c3-be26a96d865e_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!TpoW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff89022fc-b836-423a-81c3-be26a96d865e_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!TpoW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff89022fc-b836-423a-81c3-be26a96d865e_3002x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I open the Supabase storage tab to create a new file bucket</figcaption></figure></div><p>A modal popped up to configure 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_!8Vhk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47dffcbf-b996-4665-a655-368deebcc974_3002x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8Vhk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47dffcbf-b996-4665-a655-368deebcc974_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!8Vhk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47dffcbf-b996-4665-a655-368deebcc974_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!8Vhk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47dffcbf-b996-4665-a655-368deebcc974_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!8Vhk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47dffcbf-b996-4665-a655-368deebcc974_3002x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8Vhk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47dffcbf-b996-4665-a655-368deebcc974_3002x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/47dffcbf-b996-4665-a655-368deebcc974_3002x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:404180,&quot;alt&quot;:&quot;A setup modal shows a new bucket named post-images with the public setting turned on.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47dffcbf-b996-4665-a655-368deebcc974_3002x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A setup modal shows a new bucket named post-images with the public setting turned on." title="A setup modal shows a new bucket named post-images with the public setting turned on." srcset="https://substackcdn.com/image/fetch/$s_!8Vhk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47dffcbf-b996-4665-a655-368deebcc974_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!8Vhk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47dffcbf-b996-4665-a655-368deebcc974_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!8Vhk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47dffcbf-b996-4665-a655-368deebcc974_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!8Vhk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47dffcbf-b996-4665-a655-368deebcc974_3002x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I name the bucket and enable the public access toggle</figcaption></figure></div><p>I named the bucket <code>post-images</code> exactly as the guide instructed. More importantly, I toggled the &#8220;Public bucket&#8221; setting to ON. If you forget this toggle, your app will upload images perfectly fine, but nobody will actually be able to see them on the feed. Once created, you get a clean, empty folder view ready for uploads.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BpU8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8824be25-7753-4d64-afef-753ef58efcfd_3002x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BpU8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8824be25-7753-4d64-afef-753ef58efcfd_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!BpU8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8824be25-7753-4d64-afef-753ef58efcfd_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!BpU8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8824be25-7753-4d64-afef-753ef58efcfd_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!BpU8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8824be25-7753-4d64-afef-753ef58efcfd_3002x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BpU8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8824be25-7753-4d64-afef-753ef58efcfd_3002x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8824be25-7753-4d64-afef-753ef58efcfd_3002x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:232053,&quot;alt&quot;:&quot;The Supabase interface shows an empty folder view for the public post-images bucket.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8824be25-7753-4d64-afef-753ef58efcfd_3002x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Supabase interface shows an empty folder view for the public post-images bucket." title="The Supabase interface shows an empty folder view for the public post-images bucket." srcset="https://substackcdn.com/image/fetch/$s_!BpU8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8824be25-7753-4d64-afef-753ef58efcfd_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!BpU8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8824be25-7753-4d64-afef-753ef58efcfd_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!BpU8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8824be25-7753-4d64-afef-753ef58efcfd_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!BpU8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8824be25-7753-4d64-afef-753ef58efcfd_3002x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The dashboard displays the newly created empty image bucket</figcaption></figure></div><p>But there&#8217;s a little trap here that catches a lot of beginners. Even though the bucket is public, <strong>Supabase still requires you to explicitly define security policies.</strong> I went into the bucket policies and added a new one called &#8220;Public read access&#8221;. I checked the box for the &#8220;SELECT&#8221; operation and set the policy definition simply to <code>true</code>. This tells the database that literally anyone is allowed to view the files inside.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qw9t!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf9efb99-340e-4233-91ef-49fee3bb12eb_3002x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qw9t!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf9efb99-340e-4233-91ef-49fee3bb12eb_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!qw9t!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf9efb99-340e-4233-91ef-49fee3bb12eb_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!qw9t!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf9efb99-340e-4233-91ef-49fee3bb12eb_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!qw9t!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf9efb99-340e-4233-91ef-49fee3bb12eb_3002x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qw9t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf9efb99-340e-4233-91ef-49fee3bb12eb_3002x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bf9efb99-340e-4233-91ef-49fee3bb12eb_3002x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:370728,&quot;alt&quot;:&quot;A policy configuration screen shows the select operation enabled and the definition set to true.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf9efb99-340e-4233-91ef-49fee3bb12eb_3002x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A policy configuration screen shows the select operation enabled and the definition set to true." title="A policy configuration screen shows the select operation enabled and the definition set to true." srcset="https://substackcdn.com/image/fetch/$s_!qw9t!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf9efb99-340e-4233-91ef-49fee3bb12eb_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!qw9t!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf9efb99-340e-4233-91ef-49fee3bb12eb_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!qw9t!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf9efb99-340e-4233-91ef-49fee3bb12eb_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!qw9t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf9efb99-340e-4233-91ef-49fee3bb12eb_3002x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I configure a new security policy for public read access</figcaption></figure></div><p>Supabase shows you a quick summary screen to review the exact SQL statement it&#8217;s about to run for this policy. I clicked &#8220;Save policy&#8221; and the storage setup was officially complete.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lHdj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F539294ca-b3cf-4195-9e10-53f09162871b_3002x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lHdj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F539294ca-b3cf-4195-9e10-53f09162871b_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!lHdj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F539294ca-b3cf-4195-9e10-53f09162871b_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!lHdj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F539294ca-b3cf-4195-9e10-53f09162871b_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!lHdj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F539294ca-b3cf-4195-9e10-53f09162871b_3002x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lHdj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F539294ca-b3cf-4195-9e10-53f09162871b_3002x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/539294ca-b3cf-4195-9e10-53f09162871b_3002x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:403099,&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.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F539294ca-b3cf-4195-9e10-53f09162871b_3002x1474.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_!lHdj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F539294ca-b3cf-4195-9e10-53f09162871b_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!lHdj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F539294ca-b3cf-4195-9e10-53f09162871b_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!lHdj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F539294ca-b3cf-4195-9e10-53f09162871b_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!lHdj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F539294ca-b3cf-4195-9e10-53f09162871b_3002x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I review the generated SQL statement and save the security policy</figcaption></figure></div><p>The database, the authentication, and the file storage were fully wired up.</p><p>I know all of this database terminology might sound incredibly complicated if you have never set up a backend before. But I promise you, <strong>I didn&#8217;t invent a single thing here.</strong> I just followed the exact step-by-step recipe that Cursor wrote for me in that <code>NEXT_STEPS.md</code> file. <strong>You literally just click where Cursor tells you to click.</strong></p><h3>Step 6: Test the application locally (30 min)</h3><p>Normally, once the <code>.env.local</code> file is filled with Supabase keys, <strong>I test everything locally.</strong> I always prefer to hunt down bugs on my own machine before deploying anything live. According to the trusty <code>NEXT_STEPS.md</code> guide, the next move is simply to start the development server. So I opened the terminal in Cursor, ran <code>npm install</code>, and started it up.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5NfU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd86d10db-4888-4300-a056-09b3f8b6a5e9_2784x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5NfU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd86d10db-4888-4300-a056-09b3f8b6a5e9_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!5NfU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd86d10db-4888-4300-a056-09b3f8b6a5e9_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!5NfU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd86d10db-4888-4300-a056-09b3f8b6a5e9_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!5NfU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd86d10db-4888-4300-a056-09b3f8b6a5e9_2784x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5NfU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd86d10db-4888-4300-a056-09b3f8b6a5e9_2784x1824.png" width="1456" height="954" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d86d10db-4888-4300-a056-09b3f8b6a5e9_2784x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:954,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1009896,&quot;alt&quot;:&quot;The Cursor interface shows the npm install command executing in the bottom terminal panel.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd86d10db-4888-4300-a056-09b3f8b6a5e9_2784x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Cursor interface shows the npm install command executing in the bottom terminal panel." title="The Cursor interface shows the npm install command executing in the bottom terminal panel." srcset="https://substackcdn.com/image/fetch/$s_!5NfU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd86d10db-4888-4300-a056-09b3f8b6a5e9_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!5NfU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd86d10db-4888-4300-a056-09b3f8b6a5e9_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!5NfU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd86d10db-4888-4300-a056-09b3f8b6a5e9_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!5NfU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd86d10db-4888-4300-a056-09b3f8b6a5e9_2784x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I run the install command in the terminal to load the project dependencies</figcaption></figure></div><p>I want to share a really cool trick here. You don&#8217;t actually need to open Chrome to test your app. <strong>Cursor has a built-in browser tab.</strong> Just prompt <code>@browser go to localhost:3000</code> to launch it directly inside the editor.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UGQI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F868b0d60-fe49-4a75-9c9e-21cdf9d73386_2784x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UGQI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F868b0d60-fe49-4a75-9c9e-21cdf9d73386_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!UGQI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F868b0d60-fe49-4a75-9c9e-21cdf9d73386_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!UGQI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F868b0d60-fe49-4a75-9c9e-21cdf9d73386_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!UGQI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F868b0d60-fe49-4a75-9c9e-21cdf9d73386_2784x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UGQI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F868b0d60-fe49-4a75-9c9e-21cdf9d73386_2784x1824.png" width="1456" height="954" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/868b0d60-fe49-4a75-9c9e-21cdf9d73386_2784x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:954,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:959533,&quot;alt&quot;:&quot;The Cursor interface displays the local Stanza homepage running inside an integrated browser tab.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F868b0d60-fe49-4a75-9c9e-21cdf9d73386_2784x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Cursor interface displays the local Stanza homepage running inside an integrated browser tab." title="The Cursor interface displays the local Stanza homepage running inside an integrated browser tab." srcset="https://substackcdn.com/image/fetch/$s_!UGQI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F868b0d60-fe49-4a75-9c9e-21cdf9d73386_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!UGQI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F868b0d60-fe49-4a75-9c9e-21cdf9d73386_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!UGQI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F868b0d60-fe49-4a75-9c9e-21cdf9d73386_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!UGQI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F868b0d60-fe49-4a75-9c9e-21cdf9d73386_2784x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I view the running application inside the built-in code editor browser</figcaption></figure></div><p>The Stanza homepage loaded perfectly. It&#8217;s rewarding to see your code come to life in the exact same window. But then I tried to actually use it. I clicked log in, entered my email, hit continue, and immediately got slapped with a red &#8220;Network error&#8221;.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5IzQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F866cd4d2-caca-4723-a60f-4d53c2a43bc1_2784x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5IzQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F866cd4d2-caca-4723-a60f-4d53c2a43bc1_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!5IzQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F866cd4d2-caca-4723-a60f-4d53c2a43bc1_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!5IzQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F866cd4d2-caca-4723-a60f-4d53c2a43bc1_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!5IzQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F866cd4d2-caca-4723-a60f-4d53c2a43bc1_2784x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5IzQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F866cd4d2-caca-4723-a60f-4d53c2a43bc1_2784x1824.png" width="1456" height="954" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/866cd4d2-caca-4723-a60f-4d53c2a43bc1_2784x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:954,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1005310,&quot;alt&quot;:&quot;The local Stanza application shows a red network error message inside the email login popup.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F866cd4d2-caca-4723-a60f-4d53c2a43bc1_2784x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The local Stanza application shows a red network error message inside the email login popup." title="The local Stanza application shows a red network error message inside the email login popup." srcset="https://substackcdn.com/image/fetch/$s_!5IzQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F866cd4d2-caca-4723-a60f-4d53c2a43bc1_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!5IzQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F866cd4d2-caca-4723-a60f-4d53c2a43bc1_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!5IzQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F866cd4d2-caca-4723-a60f-4d53c2a43bc1_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!5IzQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F866cd4d2-caca-4723-a60f-4d53c2a43bc1_2784x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The local application displays a network error during the login flow</figcaption></figure></div><p>I didn&#8217;t panic. I used one of Cursor&#8217;s best debugging features instead. When you use the internal browser, you can click the three little dots in the top right corner. You can instantly <strong>take a screenshot of the app and attach it directly to your prompt.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_9Cz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38e4b72c-5b74-4a3f-9794-d9f1e4b4797b_2784x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_9Cz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38e4b72c-5b74-4a3f-9794-d9f1e4b4797b_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!_9Cz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38e4b72c-5b74-4a3f-9794-d9f1e4b4797b_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!_9Cz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38e4b72c-5b74-4a3f-9794-d9f1e4b4797b_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!_9Cz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38e4b72c-5b74-4a3f-9794-d9f1e4b4797b_2784x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_9Cz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38e4b72c-5b74-4a3f-9794-d9f1e4b4797b_2784x1824.png" width="1456" height="954" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/38e4b72c-5b74-4a3f-9794-d9f1e4b4797b_2784x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:954,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:894565,&quot;alt&quot;:&quot;The Cursor chat panel shows the network error screenshot attached as an image input for the next prompt.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38e4b72c-5b74-4a3f-9794-d9f1e4b4797b_2784x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Cursor chat panel shows the network error screenshot attached as an image input for the next prompt." title="The Cursor chat panel shows the network error screenshot attached as an image input for the next prompt." srcset="https://substackcdn.com/image/fetch/$s_!_9Cz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38e4b72c-5b74-4a3f-9794-d9f1e4b4797b_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!_9Cz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38e4b72c-5b74-4a3f-9794-d9f1e4b4797b_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!_9Cz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38e4b72c-5b74-4a3f-9794-d9f1e4b4797b_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!_9Cz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38e4b72c-5b74-4a3f-9794-d9f1e4b4797b_2784x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I attach the error screenshot to the chat to ask the AI for help</figcaption></figure></div><p>Even better, if you are in Agent mode, <strong>Cursor can actually take control.</strong> It can click the buttons itself, read the browser console, and pull the exact error logs automatically. It&#8217;s a way to save time.</p><p>I fed the error screenshot to the prompt. Cursor told me the authentication flow was failing because it was trying to connect to both Supabase and that completely unnecessary Resend email service.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0W8f!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80b2326c-36c2-481d-88bf-33e83e276f0f_2784x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0W8f!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80b2326c-36c2-481d-88bf-33e83e276f0f_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!0W8f!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80b2326c-36c2-481d-88bf-33e83e276f0f_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!0W8f!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80b2326c-36c2-481d-88bf-33e83e276f0f_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!0W8f!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80b2326c-36c2-481d-88bf-33e83e276f0f_2784x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0W8f!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80b2326c-36c2-481d-88bf-33e83e276f0f_2784x1824.png" width="1456" height="954" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/80b2326c-36c2-481d-88bf-33e83e276f0f_2784x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:954,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1025154,&quot;alt&quot;:&quot;The Cursor chat panel shows an explanation stating the backend API needs external services to be set up first.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80b2326c-36c2-481d-88bf-33e83e276f0f_2784x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Cursor chat panel shows an explanation stating the backend API needs external services to be set up first." title="The Cursor chat panel shows an explanation stating the backend API needs external services to be set up first." srcset="https://substackcdn.com/image/fetch/$s_!0W8f!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80b2326c-36c2-481d-88bf-33e83e276f0f_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!0W8f!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80b2326c-36c2-481d-88bf-33e83e276f0f_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!0W8f!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80b2326c-36c2-481d-88bf-33e83e276f0f_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!0W8f!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80b2326c-36c2-481d-88bf-33e83e276f0f_2784x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The AI agent explains the missing database connections causing the error</figcaption></figure></div><p>I iterated. I insisted. I asked for fixes. I spent way too much time trying to resolve this network error locally. Nothing worked. Usually, I spend a solid hour here polishing the app and clicking every button before putting it on the internet.</p><p>But you know what? <strong>Sometimes you just have to keep moving forward.</strong> It wasn&#8217;t that big of a deal. I decided to stop fighting my local environment. I did a quick file cleanup to move all the messy markdown files into a <code>docs/guides</code> folder.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!w0Fq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0186535-9fa2-4b7e-b373-ed3fd9dbc785_2784x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!w0Fq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0186535-9fa2-4b7e-b373-ed3fd9dbc785_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!w0Fq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0186535-9fa2-4b7e-b373-ed3fd9dbc785_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!w0Fq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0186535-9fa2-4b7e-b373-ed3fd9dbc785_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!w0Fq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0186535-9fa2-4b7e-b373-ed3fd9dbc785_2784x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!w0Fq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0186535-9fa2-4b7e-b373-ed3fd9dbc785_2784x1824.png" width="1456" height="954" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c0186535-9fa2-4b7e-b373-ed3fd9dbc785_2784x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:954,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:920217,&quot;alt&quot;:&quot;The Cursor editor shows the chat panel moving several markdown files into a dedicated guides folder.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0186535-9fa2-4b7e-b373-ed3fd9dbc785_2784x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Cursor editor shows the chat panel moving several markdown files into a dedicated guides folder." title="The Cursor editor shows the chat panel moving several markdown files into a dedicated guides folder." srcset="https://substackcdn.com/image/fetch/$s_!w0Fq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0186535-9fa2-4b7e-b373-ed3fd9dbc785_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!w0Fq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0186535-9fa2-4b7e-b373-ed3fd9dbc785_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!w0Fq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0186535-9fa2-4b7e-b373-ed3fd9dbc785_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!w0Fq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0186535-9fa2-4b7e-b373-ed3fd9dbc785_2784x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I instruct the AI agent to organize the project documentation files</figcaption></figure></div><p>Then, I pushed the whole project to GitHub. I decided to deploy it to Vercel and fix the bugs live in production instead.</p><h3>Step 7: Deploy the website on Vercel and iterate (1h 45m)</h3><p>I opened GitHub Desktop and pushed my latest commits to my main branch.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!p8Zo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd70d712e-6c34-4c1c-b520-fba5bf63054e_2144x1544.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!p8Zo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd70d712e-6c34-4c1c-b520-fba5bf63054e_2144x1544.png 424w, https://substackcdn.com/image/fetch/$s_!p8Zo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd70d712e-6c34-4c1c-b520-fba5bf63054e_2144x1544.png 848w, https://substackcdn.com/image/fetch/$s_!p8Zo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd70d712e-6c34-4c1c-b520-fba5bf63054e_2144x1544.png 1272w, https://substackcdn.com/image/fetch/$s_!p8Zo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd70d712e-6c34-4c1c-b520-fba5bf63054e_2144x1544.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!p8Zo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd70d712e-6c34-4c1c-b520-fba5bf63054e_2144x1544.png" width="1456" height="1049" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d70d712e-6c34-4c1c-b520-fba5bf63054e_2144x1544.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1049,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:641016,&quot;alt&quot;:&quot;The GitHub Desktop interface displays a blue Push origin button for two waiting local commits.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd70d712e-6c34-4c1c-b520-fba5bf63054e_2144x1544.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The GitHub Desktop interface displays a blue Push origin button for two waiting local commits." title="The GitHub Desktop interface displays a blue Push origin button for two waiting local commits." srcset="https://substackcdn.com/image/fetch/$s_!p8Zo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd70d712e-6c34-4c1c-b520-fba5bf63054e_2144x1544.png 424w, https://substackcdn.com/image/fetch/$s_!p8Zo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd70d712e-6c34-4c1c-b520-fba5bf63054e_2144x1544.png 848w, https://substackcdn.com/image/fetch/$s_!p8Zo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd70d712e-6c34-4c1c-b520-fba5bf63054e_2144x1544.png 1272w, https://substackcdn.com/image/fetch/$s_!p8Zo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd70d712e-6c34-4c1c-b520-fba5bf63054e_2144x1544.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I click the button to push the local code commits to GitHub</figcaption></figure></div><p>It feels great to see those files safely backed up online.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Wf9p!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F343bc100-bb5c-4e3b-9769-b571ccb23b48_3002x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Wf9p!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F343bc100-bb5c-4e3b-9769-b571ccb23b48_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!Wf9p!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F343bc100-bb5c-4e3b-9769-b571ccb23b48_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!Wf9p!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F343bc100-bb5c-4e3b-9769-b571ccb23b48_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!Wf9p!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F343bc100-bb5c-4e3b-9769-b571ccb23b48_3002x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Wf9p!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F343bc100-bb5c-4e3b-9769-b571ccb23b48_3002x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/343bc100-bb5c-4e3b-9769-b571ccb23b48_3002x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:518256,&quot;alt&quot;:&quot;The GitHub web interface shows the stanza repository containing the newly pushed code folders and files.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F343bc100-bb5c-4e3b-9769-b571ccb23b48_3002x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The GitHub web interface shows the stanza repository containing the newly pushed code folders and files." title="The GitHub web interface shows the stanza repository containing the newly pushed code folders and files." srcset="https://substackcdn.com/image/fetch/$s_!Wf9p!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F343bc100-bb5c-4e3b-9769-b571ccb23b48_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!Wf9p!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F343bc100-bb5c-4e3b-9769-b571ccb23b48_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!Wf9p!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F343bc100-bb5c-4e3b-9769-b571ccb23b48_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!Wf9p!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F343bc100-bb5c-4e3b-9769-b571ccb23b48_3002x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The GitHub website displays the successfully updated repository files</figcaption></figure></div><p>Now it was time to make the app public. I opened Vercel in my browser.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cGGS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b831e36-6e3a-4eab-9152-2afe17ae2089_3002x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cGGS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b831e36-6e3a-4eab-9152-2afe17ae2089_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!cGGS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b831e36-6e3a-4eab-9152-2afe17ae2089_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!cGGS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b831e36-6e3a-4eab-9152-2afe17ae2089_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!cGGS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b831e36-6e3a-4eab-9152-2afe17ae2089_3002x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cGGS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b831e36-6e3a-4eab-9152-2afe17ae2089_3002x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5b831e36-6e3a-4eab-9152-2afe17ae2089_3002x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:459652,&quot;alt&quot;:&quot;The Vercel dashboard displays a list of Git repositories with an Import button next to the stanza project.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b831e36-6e3a-4eab-9152-2afe17ae2089_3002x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Vercel dashboard displays a list of Git repositories with an Import button next to the stanza project." title="The Vercel dashboard displays a list of Git repositories with an Import button next to the stanza project." srcset="https://substackcdn.com/image/fetch/$s_!cGGS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b831e36-6e3a-4eab-9152-2afe17ae2089_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!cGGS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b831e36-6e3a-4eab-9152-2afe17ae2089_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!cGGS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b831e36-6e3a-4eab-9152-2afe17ae2089_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!cGGS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b831e36-6e3a-4eab-9152-2afe17ae2089_3002x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I click the import button to bring the repository into Vercel</figcaption></figure></div><p>Cursor&#8217;s <code>NEXT_STEPS.md</code> told me exactly what to do here. I clicked &#8220;Add New Project&#8221; and imported my Stanza repository directly from GitHub. Vercel is incredibly helpful. It automatically detected that my app was built with Vite and pre-filled all the correct build settings. I literally just clicked the &#8220;Deploy&#8221; button.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wfy9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faba5d052-716d-4ae9-9305-ee48696d79cb_3002x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wfy9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faba5d052-716d-4ae9-9305-ee48696d79cb_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!wfy9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faba5d052-716d-4ae9-9305-ee48696d79cb_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!wfy9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faba5d052-716d-4ae9-9305-ee48696d79cb_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!wfy9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faba5d052-716d-4ae9-9305-ee48696d79cb_3002x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wfy9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faba5d052-716d-4ae9-9305-ee48696d79cb_3002x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aba5d052-716d-4ae9-9305-ee48696d79cb_3002x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:203322,&quot;alt&quot;:&quot;A Vercel setup screen shows the stanza project name, the Vite application preset, and a white Deploy button.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faba5d052-716d-4ae9-9305-ee48696d79cb_3002x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A Vercel setup screen shows the stanza project name, the Vite application preset, and a white Deploy button." title="A Vercel setup screen shows the stanza project name, the Vite application preset, and a white Deploy button." srcset="https://substackcdn.com/image/fetch/$s_!wfy9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faba5d052-716d-4ae9-9305-ee48696d79cb_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!wfy9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faba5d052-716d-4ae9-9305-ee48696d79cb_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!wfy9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faba5d052-716d-4ae9-9305-ee48696d79cb_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!wfy9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faba5d052-716d-4ae9-9305-ee48696d79cb_3002x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I configure the Vercel deployment settings for the new project</figcaption></figure></div><p>A few seconds later, Vercel showed me a success screen.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!eKJg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2dced77-eb34-4440-8918-2da90d198a21_3002x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eKJg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2dced77-eb34-4440-8918-2da90d198a21_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!eKJg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2dced77-eb34-4440-8918-2da90d198a21_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!eKJg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2dced77-eb34-4440-8918-2da90d198a21_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!eKJg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2dced77-eb34-4440-8918-2da90d198a21_3002x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eKJg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2dced77-eb34-4440-8918-2da90d198a21_3002x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a2dced77-eb34-4440-8918-2da90d198a21_3002x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:355926,&quot;alt&quot;:&quot;The Vercel interface displays a green Ready status and a visual preview of the live web application.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2dced77-eb34-4440-8918-2da90d198a21_3002x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Vercel interface displays a green Ready status and a visual preview of the live web application." title="The Vercel interface displays a green Ready status and a visual preview of the live web application." srcset="https://substackcdn.com/image/fetch/$s_!eKJg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2dced77-eb34-4440-8918-2da90d198a21_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!eKJg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2dced77-eb34-4440-8918-2da90d198a21_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!eKJg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2dced77-eb34-4440-8918-2da90d198a21_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!eKJg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2dced77-eb34-4440-8918-2da90d198a21_3002x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The Vercel dashboard confirms the successful initial website deployment</figcaption></figure></div><p>But <strong>don&#8217;t celebrate just yet.</strong> There is a massive trap here that catches almost every single beginner. If you open your live URL right now, you&#8217;ll probably just stare at a blank white screen.</p><p>Cursor actually warned me about this exact issue in the deployment guide. Your local code knows how to talk to Supabase because of your secret <code>.env.local</code> file. But remember, we explicitly told GitHub to ignore that file for security reasons. This means <strong>Vercel doesn&#8217;t have your database keys.</strong> You have to manually add them.</p><p>I navigated to the Project Settings in Vercel and opened the &#8220;Environment Variables&#8221; tab. It was completely empty.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4D9X!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf0b1473-84de-4546-94a0-15d275a7d654_3002x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4D9X!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf0b1473-84de-4546-94a0-15d275a7d654_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!4D9X!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf0b1473-84de-4546-94a0-15d275a7d654_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!4D9X!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf0b1473-84de-4546-94a0-15d275a7d654_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!4D9X!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf0b1473-84de-4546-94a0-15d275a7d654_3002x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4D9X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf0b1473-84de-4546-94a0-15d275a7d654_3002x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/af0b1473-84de-4546-94a0-15d275a7d654_3002x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:311385,&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.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf0b1473-84de-4546-94a0-15d275a7d654_3002x1474.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_!4D9X!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf0b1473-84de-4546-94a0-15d275a7d654_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!4D9X!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf0b1473-84de-4546-94a0-15d275a7d654_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!4D9X!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf0b1473-84de-4546-94a0-15d275a7d654_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!4D9X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf0b1473-84de-4546-94a0-15d275a7d654_3002x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I open the empty environment variables tab inside the Vercel settings</figcaption></figure></div><p>I copy-pasted my Supabase URL and keys directly into the dashboard. <strong>Always remember to copy your environment variables to your hosting provider.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cZvh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86568f7-5bb2-4f6d-8bc4-4cd8ecc08fd6_3002x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cZvh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86568f7-5bb2-4f6d-8bc4-4cd8ecc08fd6_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!cZvh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86568f7-5bb2-4f6d-8bc4-4cd8ecc08fd6_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!cZvh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86568f7-5bb2-4f6d-8bc4-4cd8ecc08fd6_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!cZvh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86568f7-5bb2-4f6d-8bc4-4cd8ecc08fd6_3002x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cZvh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86568f7-5bb2-4f6d-8bc4-4cd8ecc08fd6_3002x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f86568f7-5bb2-4f6d-8bc4-4cd8ecc08fd6_3002x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:382906,&quot;alt&quot;:&quot;The Vercel interface shows multiple saved environment variables and a blue popup prompting a project redeploy.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86568f7-5bb2-4f6d-8bc4-4cd8ecc08fd6_3002x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Vercel interface shows multiple saved environment variables and a blue popup prompting a project redeploy." title="The Vercel interface shows multiple saved environment variables and a blue popup prompting a project redeploy." srcset="https://substackcdn.com/image/fetch/$s_!cZvh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86568f7-5bb2-4f6d-8bc4-4cd8ecc08fd6_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!cZvh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86568f7-5bb2-4f6d-8bc4-4cd8ecc08fd6_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!cZvh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86568f7-5bb2-4f6d-8bc4-4cd8ecc08fd6_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!cZvh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff86568f7-5bb2-4f6d-8bc4-4cd8ecc08fd6_3002x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I paste the database keys into the Vercel environment variables list</figcaption></figure></div><p>Because I added those keys after the initial deployment, Vercel didn&#8217;t apply them yet. I had to trigger a quick redeploy.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zPu7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73463336-3800-4b9c-8d6d-722d6b2e2225_3002x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zPu7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73463336-3800-4b9c-8d6d-722d6b2e2225_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!zPu7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73463336-3800-4b9c-8d6d-722d6b2e2225_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!zPu7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73463336-3800-4b9c-8d6d-722d6b2e2225_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!zPu7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73463336-3800-4b9c-8d6d-722d6b2e2225_3002x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zPu7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73463336-3800-4b9c-8d6d-722d6b2e2225_3002x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/73463336-3800-4b9c-8d6d-722d6b2e2225_3002x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:399848,&quot;alt&quot;:&quot;The Vercel interface shows a popup window to confirm a redeployment for the production environment.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73463336-3800-4b9c-8d6d-722d6b2e2225_3002x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Vercel interface shows a popup window to confirm a redeployment for the production environment." title="The Vercel interface shows a popup window to confirm a redeployment for the production environment." srcset="https://substackcdn.com/image/fetch/$s_!zPu7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73463336-3800-4b9c-8d6d-722d6b2e2225_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!zPu7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73463336-3800-4b9c-8d6d-722d6b2e2225_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!zPu7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73463336-3800-4b9c-8d6d-722d6b2e2225_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!zPu7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73463336-3800-4b9c-8d6d-722d6b2e2225_3002x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I trigger a manual redeployment in the Vercel dashboard</figcaption></figure></div><p>This tells Vercel to rebuild the app from scratch using the new database credentials. I watched the build run one more time. It only took about 2 minutes.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5cxb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F710b23df-07e4-4b00-943b-237a95c023ea_3002x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5cxb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F710b23df-07e4-4b00-943b-237a95c023ea_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!5cxb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F710b23df-07e4-4b00-943b-237a95c023ea_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!5cxb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F710b23df-07e4-4b00-943b-237a95c023ea_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!5cxb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F710b23df-07e4-4b00-943b-237a95c023ea_3002x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5cxb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F710b23df-07e4-4b00-943b-237a95c023ea_3002x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/710b23df-07e4-4b00-943b-237a95c023ea_3002x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:322271,&quot;alt&quot;:&quot;The Vercel dashboard displays a deployment details page with a green ready status and a visual preview.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F710b23df-07e4-4b00-943b-237a95c023ea_3002x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Vercel dashboard displays a deployment details page with a green ready status and a visual preview." title="The Vercel dashboard displays a deployment details page with a green ready status and a visual preview." srcset="https://substackcdn.com/image/fetch/$s_!5cxb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F710b23df-07e4-4b00-943b-237a95c023ea_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!5cxb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F710b23df-07e4-4b00-943b-237a95c023ea_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!5cxb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F710b23df-07e4-4b00-943b-237a95c023ea_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!5cxb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F710b23df-07e4-4b00-943b-237a95c023ea_3002x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Vercel confirms the successful completion of the deployment</figcaption></figure></div><p>There was just one final piece of plumbing to connect. The <code>NEXT_STEPS.md</code> guide reminded me to configure my auth redirects. Supabase needs to know where to send users after they click a magic login link in their email. I copied my shiny new Vercel URL, went back into the Supabase Authentication settings, and pasted it into the Redirect URLs field.</p><p>I opened my live link in a new tab. It loaded instantly. The blank white screen was gone. The beautiful, minimalist interface was officially live on the internet!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fBoH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d4695b6-253b-40a9-998c-1080992dddc0_3002x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fBoH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d4695b6-253b-40a9-998c-1080992dddc0_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!fBoH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d4695b6-253b-40a9-998c-1080992dddc0_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!fBoH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d4695b6-253b-40a9-998c-1080992dddc0_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!fBoH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d4695b6-253b-40a9-998c-1080992dddc0_3002x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fBoH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d4695b6-253b-40a9-998c-1080992dddc0_3002x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5d4695b6-253b-40a9-998c-1080992dddc0_3002x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:118909,&quot;alt&quot;:&quot;A clean web page displays the Stanza logo and an empty feed message.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d4695b6-253b-40a9-998c-1080992dddc0_3002x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A clean web page displays the Stanza logo and an empty feed message." title="A clean web page displays the Stanza logo and an empty feed message." srcset="https://substackcdn.com/image/fetch/$s_!fBoH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d4695b6-253b-40a9-998c-1080992dddc0_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!fBoH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d4695b6-253b-40a9-998c-1080992dddc0_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!fBoH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d4695b6-253b-40a9-998c-1080992dddc0_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!fBoH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d4695b6-253b-40a9-998c-1080992dddc0_3002x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The live application loads correctly in the web browser</figcaption></figure></div><p>The engine was finally running in production.</p><div><hr></div><h2>Debug and polish the project</h2><p>Telling the story this way makes it sound like a perfect, straight line. It absolutely wasn&#8217;t. You inevitably hit a wall where the happy path ends. We are now entering the messy middle. This is the phase dedicated entirely to <strong>testing, debugging, and pulling your hair out.</strong></p><h3>Troubleshoot the live product</h3><p>Right off the bat, <strong>my very first Vercel deployment actually failed.</strong> The build crashed, and Vercel spit out a red error log about a missing property:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DVmj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b7a873d-300d-439f-89ce-d3cce4e24df5_3002x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DVmj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b7a873d-300d-439f-89ce-d3cce4e24df5_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!DVmj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b7a873d-300d-439f-89ce-d3cce4e24df5_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!DVmj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b7a873d-300d-439f-89ce-d3cce4e24df5_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!DVmj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b7a873d-300d-439f-89ce-d3cce4e24df5_3002x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DVmj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b7a873d-300d-439f-89ce-d3cce4e24df5_3002x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8b7a873d-300d-439f-89ce-d3cce4e24df5_3002x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:447886,&quot;alt&quot;:&quot;The Vercel interface shows a list of build logs with a red line indicating a code error.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b7a873d-300d-439f-89ce-d3cce4e24df5_3002x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Vercel interface shows a list of build logs with a red line indicating a code error." title="The Vercel interface shows a list of build logs with a red line indicating a code error." srcset="https://substackcdn.com/image/fetch/$s_!DVmj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b7a873d-300d-439f-89ce-d3cce4e24df5_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!DVmj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b7a873d-300d-439f-89ce-d3cce4e24df5_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!DVmj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b7a873d-300d-439f-89ce-d3cce4e24df5_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!DVmj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b7a873d-300d-439f-89ce-d3cce4e24df5_3002x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The Vercel build log displays a missing property error</figcaption></figure></div><p>I didn&#8217;t panic. I just copied the exact error text, pasted it into Cursor, and let the AI push a quick fix. <strong>The deployment succeeded on the second try.</strong></p><p>But the real nightmare started when I tried to log in on the live site. I entered my email, clicked continue, and got hit with a brutal &#8220;Network error&#8221; modal.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4hYD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc03f5a41-7e34-4763-b8b1-b321ce637a6c_3002x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4hYD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc03f5a41-7e34-4763-b8b1-b321ce637a6c_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!4hYD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc03f5a41-7e34-4763-b8b1-b321ce637a6c_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!4hYD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc03f5a41-7e34-4763-b8b1-b321ce637a6c_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!4hYD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc03f5a41-7e34-4763-b8b1-b321ce637a6c_3002x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4hYD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc03f5a41-7e34-4763-b8b1-b321ce637a6c_3002x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c03f5a41-7e34-4763-b8b1-b321ce637a6c_3002x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:170228,&quot;alt&quot;:&quot;A web page shows a login popup containing a red network error message.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc03f5a41-7e34-4763-b8b1-b321ce637a6c_3002x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A web page shows a login popup containing a red network error message." title="A web page shows a login popup containing a red network error message." srcset="https://substackcdn.com/image/fetch/$s_!4hYD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc03f5a41-7e34-4763-b8b1-b321ce637a6c_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!4hYD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc03f5a41-7e34-4763-b8b1-b321ce637a6c_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!4hYD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc03f5a41-7e34-4763-b8b1-b321ce637a6c_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!4hYD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc03f5a41-7e34-4763-b8b1-b321ce637a6c_3002x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The live application displays a network error during login</figcaption></figure></div><p>Let me tell you exactly what happened here. Back when I was generating the initial architecture plan, I explicitly told Cursor to <strong>skip adding any external email services.</strong> I wanted to keep things simple. But the AI got a little overzealous. It unilaterally decided to include a third-party tool called <a href="https://resend.com/">Resend</a> in its 16-step to-do list anyway. <strong>I wasn&#8217;t vigilant enough when I approved the plan.</strong> I saw Resend on the list, thought it might be fun to test a new tool, and just let it slide.</p><p><strong>That was a massive mistake.</strong> The integration was overly complex and completely broke the authentication flow. I wasted way too much time trying to fix it. Eventually, I had to put my foot down. I opened Cursor and explicitly commanded it to rip out every single line of code related to Resend. I forced it to clean up its mess and revert to the native Supabase magic link system. <strong>Always trust your gut when an AI solution feels too complicated.</strong></p><p>Even after purging Resend, the live login still failed. I needed to see what was actually happening behind the scenes. I went into Vercel and <strong>clicked on the &#8220;Logs&#8221; tab.</strong> Sure enough, there was a massive red backend error. The server couldn&#8217;t find my Supabase module.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5uIR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc54a86c2-9550-40e1-8cff-fbd8d54dc967_3002x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5uIR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc54a86c2-9550-40e1-8cff-fbd8d54dc967_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!5uIR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc54a86c2-9550-40e1-8cff-fbd8d54dc967_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!5uIR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc54a86c2-9550-40e1-8cff-fbd8d54dc967_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!5uIR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc54a86c2-9550-40e1-8cff-fbd8d54dc967_3002x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5uIR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc54a86c2-9550-40e1-8cff-fbd8d54dc967_3002x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c54a86c2-9550-40e1-8cff-fbd8d54dc967_3002x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:556621,&quot;alt&quot;:&quot;The Vercel logs interface displays a red server error stating it cannot find the Supabase module.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc54a86c2-9550-40e1-8cff-fbd8d54dc967_3002x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Vercel logs interface displays a red server error stating it cannot find the Supabase module." title="The Vercel logs interface displays a red server error stating it cannot find the Supabase module." srcset="https://substackcdn.com/image/fetch/$s_!5uIR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc54a86c2-9550-40e1-8cff-fbd8d54dc967_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!5uIR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc54a86c2-9550-40e1-8cff-fbd8d54dc967_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!5uIR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc54a86c2-9550-40e1-8cff-fbd8d54dc967_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!5uIR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc54a86c2-9550-40e1-8cff-fbd8d54dc967_3002x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The Vercel runtime logs reveal a missing module error</figcaption></figure></div><p>I took a screenshot of the Vercel log and pasted it directly into a new Cursor chat. I made sure to switch back to <strong>Plan mode</strong>. I didn&#8217;t want the AI to guess. I wanted it to diagnose the root cause.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WYiV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F716f418d-70d2-4093-9d5c-070ac7bbc038_2784x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WYiV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F716f418d-70d2-4093-9d5c-070ac7bbc038_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!WYiV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F716f418d-70d2-4093-9d5c-070ac7bbc038_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!WYiV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F716f418d-70d2-4093-9d5c-070ac7bbc038_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!WYiV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F716f418d-70d2-4093-9d5c-070ac7bbc038_2784x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WYiV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F716f418d-70d2-4093-9d5c-070ac7bbc038_2784x1824.png" width="1456" height="954" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/716f418d-70d2-4093-9d5c-070ac7bbc038_2784x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:954,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:883019,&quot;alt&quot;:&quot;The Cursor chat panel shows the pasted error log and an explanation of the missing file extensions.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F716f418d-70d2-4093-9d5c-070ac7bbc038_2784x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Cursor chat panel shows the pasted error log and an explanation of the missing file extensions." title="The Cursor chat panel shows the pasted error log and an explanation of the missing file extensions." srcset="https://substackcdn.com/image/fetch/$s_!WYiV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F716f418d-70d2-4093-9d5c-070ac7bbc038_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!WYiV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F716f418d-70d2-4093-9d5c-070ac7bbc038_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!WYiV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F716f418d-70d2-4093-9d5c-070ac7bbc038_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!WYiV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F716f418d-70d2-4093-9d5c-070ac7bbc038_2784x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I ask the AI agent to analyze the Vercel error log</figcaption></figure></div><p>Cursor nailed it instantly. It explained that Vercel serverless functions require explicit file extensions for certain imports. It wrote a clear plan to update the API routes. I clicked &#8220;Build&#8221; and let it rewrite the broken files.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TWtj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8f3f7ef-b77d-4028-9966-53e1d6f25af3_2784x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TWtj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8f3f7ef-b77d-4028-9966-53e1d6f25af3_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!TWtj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8f3f7ef-b77d-4028-9966-53e1d6f25af3_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!TWtj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8f3f7ef-b77d-4028-9966-53e1d6f25af3_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!TWtj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8f3f7ef-b77d-4028-9966-53e1d6f25af3_2784x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TWtj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8f3f7ef-b77d-4028-9966-53e1d6f25af3_2784x1824.png" width="1456" height="954" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d8f3f7ef-b77d-4028-9966-53e1d6f25af3_2784x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:954,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:971379,&quot;alt&quot;:&quot;The Cursor editor displays a text document detailing a plan to fix module resolution errors in Vercel.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8f3f7ef-b77d-4028-9966-53e1d6f25af3_2784x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Cursor editor displays a text document detailing a plan to fix module resolution errors in Vercel." title="The Cursor editor displays a text document detailing a plan to fix module resolution errors in Vercel." srcset="https://substackcdn.com/image/fetch/$s_!TWtj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8f3f7ef-b77d-4028-9966-53e1d6f25af3_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!TWtj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8f3f7ef-b77d-4028-9966-53e1d6f25af3_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!TWtj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8f3f7ef-b77d-4028-9966-53e1d6f25af3_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!TWtj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8f3f7ef-b77d-4028-9966-53e1d6f25af3_2784x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The AI agent writes a plan to fix the import file extensions</figcaption></figure></div><p>During this debugging session, Cursor also caught a subtle environment variable bug. Because I was using Vite, my frontend needed the database keys to be prefixed with <code>VITE_</code> to actually read them. Cursor automatically updated my <code>.env.local</code> files to fix this mapping.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lbMu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82030bb5-6498-488f-b814-533fae952ded_2784x1824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lbMu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82030bb5-6498-488f-b814-533fae952ded_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!lbMu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82030bb5-6498-488f-b814-533fae952ded_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!lbMu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82030bb5-6498-488f-b814-533fae952ded_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!lbMu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82030bb5-6498-488f-b814-533fae952ded_2784x1824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lbMu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82030bb5-6498-488f-b814-533fae952ded_2784x1824.png" width="1456" height="954" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/82030bb5-6498-488f-b814-533fae952ded_2784x1824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:954,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:891591,&quot;alt&quot;:&quot;The Cursor chat panel shows code modifications adding the VITE prefix to the database keys in the local file.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82030bb5-6498-488f-b814-533fae952ded_2784x1824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Cursor chat panel shows code modifications adding the VITE prefix to the database keys in the local file." title="The Cursor chat panel shows code modifications adding the VITE prefix to the database keys in the local file." srcset="https://substackcdn.com/image/fetch/$s_!lbMu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82030bb5-6498-488f-b814-533fae952ded_2784x1824.png 424w, https://substackcdn.com/image/fetch/$s_!lbMu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82030bb5-6498-488f-b814-533fae952ded_2784x1824.png 848w, https://substackcdn.com/image/fetch/$s_!lbMu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82030bb5-6498-488f-b814-533fae952ded_2784x1824.png 1272w, https://substackcdn.com/image/fetch/$s_!lbMu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82030bb5-6498-488f-b814-533fae952ded_2784x1824.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The AI agent updates the environment variables with the correct prefix</figcaption></figure></div><p>I pushed the code to GitHub, <strong>Vercel rebuilt the site automatically</strong>, and the network error finally disappeared. The engine was flawlessly humming.</p><h3>Improve the final experience</h3><p>With the critical bugs crushed, it was time to polish the experience. Building an app is exactly like building a house. Pouring the foundation and putting up the walls is incredibly fast and highly visible. You know immediately if it worked. But painting the trim, fixing the lighting, and sanding the floors? <strong>The tiny details take the majority of the time.</strong></p><p>I went back to my very first Gemini conversation. I started feeding it screenshots of the live app. I asked for feedback on the spacing, the typography, and the button contrasts. <strong>I took Gemini&#8217;s suggestions, fed them to Cursor</strong>, and iterated on the UI until it felt like a premium product.</p><p>The best part of this setup is <strong>the automatic deployment.</strong> Every time I push new code to GitHub, Vercel automatically updates the live website. For each tiny adjustment, <strong>I just push the changes using GitHub Desktop</strong> (or ask the Cursor agent to do it for you). I only have to wait one or two minutes to see the final result in production.</p><p><strong>I also wanted every touchpoint to feel branded.</strong> The default Supabase magic link email is painfully generic. It looks like a database auto-reply.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KihE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3b1b357-7635-42d7-8c1b-b2ba134fb518_3002x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KihE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3b1b357-7635-42d7-8c1b-b2ba134fb518_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!KihE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3b1b357-7635-42d7-8c1b-b2ba134fb518_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!KihE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3b1b357-7635-42d7-8c1b-b2ba134fb518_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!KihE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3b1b357-7635-42d7-8c1b-b2ba134fb518_3002x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KihE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3b1b357-7635-42d7-8c1b-b2ba134fb518_3002x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b3b1b357-7635-42d7-8c1b-b2ba134fb518_3002x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:302350,&quot;alt&quot;:&quot;The Supabase email settings page shows a basic HTML code block for the login message.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3b1b357-7635-42d7-8c1b-b2ba134fb518_3002x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Supabase email settings page shows a basic HTML code block for the login message." title="The Supabase email settings page shows a basic HTML code block for the login message." srcset="https://substackcdn.com/image/fetch/$s_!KihE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3b1b357-7635-42d7-8c1b-b2ba134fb518_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!KihE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3b1b357-7635-42d7-8c1b-b2ba134fb518_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!KihE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3b1b357-7635-42d7-8c1b-b2ba134fb518_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!KihE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3b1b357-7635-42d7-8c1b-b2ba134fb518_3002x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The Supabase dashboard displays the default magic link email template</figcaption></figure></div><p>I opened Gemini and asked it to act as a frontend developer. I told it to generate a custom HTML email template that matched Stanza&#8217;s minimalist, black-and-white, serif aesthetic. It spat out a <strong>beautifully formatted block of code.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jdpw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41867305-de8a-4764-8c16-f33a07d3cf27_3002x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jdpw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41867305-de8a-4764-8c16-f33a07d3cf27_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!jdpw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41867305-de8a-4764-8c16-f33a07d3cf27_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!jdpw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41867305-de8a-4764-8c16-f33a07d3cf27_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!jdpw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41867305-de8a-4764-8c16-f33a07d3cf27_3002x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jdpw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41867305-de8a-4764-8c16-f33a07d3cf27_3002x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/41867305-de8a-4764-8c16-f33a07d3cf27_3002x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:281612,&quot;alt&quot;:&quot;The Gemini chat interface shows a generated HTML code block designed for a branded magic link email.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41867305-de8a-4764-8c16-f33a07d3cf27_3002x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Gemini chat interface shows a generated HTML code block designed for a branded magic link email." title="The Gemini chat interface shows a generated HTML code block designed for a branded magic link email." srcset="https://substackcdn.com/image/fetch/$s_!jdpw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41867305-de8a-4764-8c16-f33a07d3cf27_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!jdpw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41867305-de8a-4764-8c16-f33a07d3cf27_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!jdpw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41867305-de8a-4764-8c16-f33a07d3cf27_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!jdpw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41867305-de8a-4764-8c16-f33a07d3cf27_3002x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Gemini generates a custom HTML email template</figcaption></figure></div><p>I just copied that raw HTML, went back into the Supabase Email settings, and pasted it directly into the &#8220;Body&#8221; field. Now, when a user logs in, they get a sleek, highly polished email inviting them to &#8220;enter the room&#8221;.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!H7on!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c20c80e-162f-44be-82c7-7a1c2f934406_3002x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!H7on!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c20c80e-162f-44be-82c7-7a1c2f934406_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!H7on!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c20c80e-162f-44be-82c7-7a1c2f934406_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!H7on!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c20c80e-162f-44be-82c7-7a1c2f934406_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!H7on!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c20c80e-162f-44be-82c7-7a1c2f934406_3002x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!H7on!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c20c80e-162f-44be-82c7-7a1c2f934406_3002x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9c20c80e-162f-44be-82c7-7a1c2f934406_3002x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:415841,&quot;alt&quot;:&quot;The Supabase email settings page shows the newly pasted custom HTML code in the body field.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188792568?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c20c80e-162f-44be-82c7-7a1c2f934406_3002x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Supabase email settings page shows the newly pasted custom HTML code in the body field." title="The Supabase email settings page shows the newly pasted custom HTML code in the body field." srcset="https://substackcdn.com/image/fetch/$s_!H7on!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c20c80e-162f-44be-82c7-7a1c2f934406_3002x1474.png 424w, https://substackcdn.com/image/fetch/$s_!H7on!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c20c80e-162f-44be-82c7-7a1c2f934406_3002x1474.png 848w, https://substackcdn.com/image/fetch/$s_!H7on!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c20c80e-162f-44be-82c7-7a1c2f934406_3002x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!H7on!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c20c80e-162f-44be-82c7-7a1c2f934406_3002x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I paste the custom HTML code into the Supabase email settings</figcaption></figure></div><p>For the absolute final step, I used Gemini to <strong>generate some mock data.</strong> I asked it for fake book reviews, controversial thoughts, and insightful quotes. I manually populated the live feed with these posts. This gave me a real sense of how the layout handled actual paragraphs and upvote counts. I tweaked the line heights one last time based on this realistic data.</p><p>And just like that, at the five-hour mark, <strong>Stanza was completely finished.</strong></p><div><hr></div><h2>Build your own idea now!</h2><p>And there you have it. That&#8217;s the entire fever dream from start to finish. Five hours. About &#8364;60 in credits. A few frustrating bugs along the way, but we successfully shipped a live, working product.</p><p>I really hope this walkthrough proved a point. <strong>There has literally never been a better time to build.</strong> The barrier to entry for creating software is completely gone. You don&#8217;t need a massive budget. You don&#8217;t need a team of developers. You don&#8217;t even need to know how to write a database schema from scratch. <strong>You just need a bit of digital discipline, a lot of stubbornness, and a solid vision.</strong></p><p>We all have that one app idea we&#8217;ve been sitting on for years. It&#8217;s the one you always talk about at the office but never actually start. Maybe it&#8217;s a weird niche marketplace. Maybe it&#8217;s a tool to fix a highly specific annoyance in your daily workflow. Whatever it is, <strong>you have absolutely no excuses left.</strong></p><p>Your homework is incredibly simple. I don&#8217;t want you to worry about code, databases, or Vercel deployments today. Just open a new chat window with Gemini. Turn on your microphone. <strong>Pitch your raw idea out loud</strong>, just like you would to a colleague over coffee. Let the AI ask you questions. Once you have that blueprint, the rest of the process is just following a recipe.</p><p>The tools are ready. <strong>The cost is negligible.</strong> Now, close this article, open a chat window, and <strong>go build something awesome!</strong> I can&#8217;t wait to see what you ship.</p>]]></content:encoded></item><item><title><![CDATA[How to talk to any GitHub repo]]></title><description><![CDATA[Paste a GitHub link into your LLM conversation. Ask questions to understand logic, generate doc, and run the app locally. Use the guide and prompts in this article to structure your conversation.]]></description><link>https://www.theaithinker.com/p/how-to-talk-to-any-github-repo</link><guid isPermaLink="false">https://www.theaithinker.com/p/how-to-talk-to-any-github-repo</guid><dc:creator><![CDATA[Adam Faik]]></dc:creator><pubDate>Mon, 16 Feb 2026 12:03:25 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/e4e2189f-607c-4f2e-808d-39ac45050c32_1024x731.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Picture this. You discover an exciting new open-source tool. You click the link and land on its GitHub repository. You see a list of cryptic folders like <code>src</code> or <code>public</code>. Then you spot the <code>README.md</code>. This file is supposed to be the project&#8217;s ID card. It stands for &#8220;read me,&#8221; implying it contains everything you need to know. <strong>But for non-developers, this document is often completely opaque.</strong> It lists complex installation commands. It assumes you already know the tech stack. It rarely explains the actual business rules or the why behind the product. You are left scrolling through text that feels like it was written for a machine, not a human.</p><p>Let&#8217;s take a concrete example to visualize this. We will look at <strong><a href="https://excalidraw.com/">Excalidraw</a></strong>, a fantastic open-source virtual whiteboard. You probably know it already. It works just like Miro or FigJam.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DnmD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20b5c0d8-6af6-4b6d-9604-0ec3801cd023_3000x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DnmD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20b5c0d8-6af6-4b6d-9604-0ec3801cd023_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!DnmD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20b5c0d8-6af6-4b6d-9604-0ec3801cd023_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!DnmD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20b5c0d8-6af6-4b6d-9604-0ec3801cd023_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!DnmD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20b5c0d8-6af6-4b6d-9604-0ec3801cd023_3000x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DnmD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20b5c0d8-6af6-4b6d-9604-0ec3801cd023_3000x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/20b5c0d8-6af6-4b6d-9604-0ec3801cd023_3000x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:938459,&quot;alt&quot;:&quot;Screenshot of the Excalidraw user interface showing a canvas with diagrams and a toolbar.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188028669?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20b5c0d8-6af6-4b6d-9604-0ec3801cd023_3000x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of the Excalidraw user interface showing a canvas with diagrams and a toolbar." title="Screenshot of the Excalidraw user interface showing a canvas with diagrams and a toolbar." srcset="https://substackcdn.com/image/fetch/$s_!DnmD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20b5c0d8-6af6-4b6d-9604-0ec3801cd023_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!DnmD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20b5c0d8-6af6-4b6d-9604-0ec3801cd023_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!DnmD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20b5c0d8-6af6-4b6d-9604-0ec3801cd023_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!DnmD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20b5c0d8-6af6-4b6d-9604-0ec3801cd023_3000x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Excalidraw is a virtual whiteboard for sketching diagrams. This one comes from Andrej Kaparthy&#8217;s <a href="https://youtu.be/EWvNQjAaOHw?si=oClK379yvikIfqrw">How I use LLMs</a></figcaption></figure></div><p>When you open their GitHub repository, the first thing you see is a long list of files. This is the actual code.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hXNo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa24bdb7f-32f1-4401-9747-6e3592c8b2b1_3000x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hXNo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa24bdb7f-32f1-4401-9747-6e3592c8b2b1_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!hXNo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa24bdb7f-32f1-4401-9747-6e3592c8b2b1_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!hXNo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa24bdb7f-32f1-4401-9747-6e3592c8b2b1_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!hXNo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa24bdb7f-32f1-4401-9747-6e3592c8b2b1_3000x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hXNo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa24bdb7f-32f1-4401-9747-6e3592c8b2b1_3000x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a24bdb7f-32f1-4401-9747-6e3592c8b2b1_3000x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:571920,&quot;alt&quot;:&quot;Screenshot of the top section of the Excalidraw GitHub repository showing the file structure.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188028669?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa24bdb7f-32f1-4401-9747-6e3592c8b2b1_3000x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of the top section of the Excalidraw GitHub repository showing the file structure." title="Screenshot of the top section of the Excalidraw GitHub repository showing the file structure." srcset="https://substackcdn.com/image/fetch/$s_!hXNo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa24bdb7f-32f1-4401-9747-6e3592c8b2b1_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!hXNo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa24bdb7f-32f1-4401-9747-6e3592c8b2b1_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!hXNo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa24bdb7f-32f1-4401-9747-6e3592c8b2b1_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!hXNo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa24bdb7f-32f1-4401-9747-6e3592c8b2b1_3000x1474.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The repository homepage displays a list of technical files</figcaption></figure></div><p>Then, if you scroll down a bit, you finally reach that famous README file.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_EI3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c19a50c-9599-4d00-89f9-c3d17a3f7d71_3000x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_EI3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c19a50c-9599-4d00-89f9-c3d17a3f7d71_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!_EI3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c19a50c-9599-4d00-89f9-c3d17a3f7d71_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!_EI3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c19a50c-9599-4d00-89f9-c3d17a3f7d71_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!_EI3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c19a50c-9599-4d00-89f9-c3d17a3f7d71_3000x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_EI3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c19a50c-9599-4d00-89f9-c3d17a3f7d71_3000x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0c19a50c-9599-4d00-89f9-c3d17a3f7d71_3000x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:414245,&quot;alt&quot;:&quot;Screenshot of the README.md section on GitHub showing installation instructions and feature lists.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188028669?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c19a50c-9599-4d00-89f9-c3d17a3f7d71_3000x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of the README.md section on GitHub showing installation instructions and feature lists." title="Screenshot of the README.md section on GitHub showing installation instructions and feature lists." srcset="https://substackcdn.com/image/fetch/$s_!_EI3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c19a50c-9599-4d00-89f9-c3d17a3f7d71_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!_EI3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c19a50c-9599-4d00-89f9-c3d17a3f7d71_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!_EI3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c19a50c-9599-4d00-89f9-c3d17a3f7d71_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!_EI3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c19a50c-9599-4d00-89f9-c3d17a3f7d71_3000x1474.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The README file explains how to install the project</figcaption></figure></div><p>It gives you some context, but it feels static. <strong>It&#8217;s just text on a page, and you can&#8217;t interact with it.</strong></p><p>This frustration is common among product people. We have a curiosity that static text cannot satisfy. We want to understand the product&#8217;s logic. We want to dig into specific features. <strong>We essentially want to have a conversation with the code.</strong> There is definitely a pro way to do this. You can download the code, open an IDE like VS Code or Cursor, and use advanced AI agents. I plan to explore those tools in a future article. But let&#8217;s be honest. <strong>That process is heavy and time-consuming for a simple question.</strong> It feels like bringing a bazooka to a knife fight.</p><p>Today, I want to show you a lighter, smarter way. You can interview a codebase without ever leaving your browser. We will cover everything from understanding the product to generating documentation. <strong>By the end of this article, even if you know nothing about development, you will be able to question code like a pro. </strong>This isn&#8217;t just about curiosity; it&#8217;s about autonomy. You can answer your own questions about business logic and edge cases instantly, without interrupting your developers&#8217; flow. You become a partner who brings informed questions to the table, not just requirements. Let&#8217;s dive in!</p><div><hr></div><h2>Import a GitHub repo into a Gemini conversation</h2><p>Look, I am going to show you something incredible. I honestly don&#8217;t understand why people don&#8217;t talk about this feature more often. It saves me hours of headache every week. As we discussed, the heavy way involves downloading code and setting up complex tools. <strong>But there is a much simpler, more economic way that stays right in your browser.</strong> You don&#8217;t need to be a developer to do this. You just need a link.</p><p>Here is the exact process.</p><ol><li><p><strong>Open your LLM tool.</strong> I use <a href="https://gemini.google.com/">Gemini</a> for this example, but <a href="https://chatgpt.com/">ChatGPT</a> and <a href="https://claude.ai/">Claude</a> have similar features.</p></li><li><p>Look for the &#8220;Add file&#8221; icon in the chat bar. Select the option to <strong>&#8220;Import code.&#8221;</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!02EG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff03b3e72-8db4-49fe-aefa-2e47f696e0db_3000x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!02EG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff03b3e72-8db4-49fe-aefa-2e47f696e0db_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!02EG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff03b3e72-8db4-49fe-aefa-2e47f696e0db_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!02EG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff03b3e72-8db4-49fe-aefa-2e47f696e0db_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!02EG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff03b3e72-8db4-49fe-aefa-2e47f696e0db_3000x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!02EG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff03b3e72-8db4-49fe-aefa-2e47f696e0db_3000x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f03b3e72-8db4-49fe-aefa-2e47f696e0db_3000x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:170559,&quot;alt&quot;:&quot;Screenshot of the Gemini interface showing the tools menu with the Import code option highlighted.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188028669?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff03b3e72-8db4-49fe-aefa-2e47f696e0db_3000x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of the Gemini interface showing the tools menu with the Import code option highlighted." title="Screenshot of the Gemini interface showing the tools menu with the Import code option highlighted." srcset="https://substackcdn.com/image/fetch/$s_!02EG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff03b3e72-8db4-49fe-aefa-2e47f696e0db_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!02EG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff03b3e72-8db4-49fe-aefa-2e47f696e0db_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!02EG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff03b3e72-8db4-49fe-aefa-2e47f696e0db_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!02EG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff03b3e72-8db4-49fe-aefa-2e47f696e0db_3000x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Click the plus button and select Import code</figcaption></figure></div></li><li><p><strong>Then, simply paste the URL of the repository.</strong> In our case, we paste the link to Excalidraw: <a href="https://github.com/excalidraw/excalidraw">https://github.com/excalidraw/excalidraw</a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!l5h9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67ad7e0d-1cce-4f9a-8c3f-c4ed52c3f50e_3000x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!l5h9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67ad7e0d-1cce-4f9a-8c3f-c4ed52c3f50e_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!l5h9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67ad7e0d-1cce-4f9a-8c3f-c4ed52c3f50e_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!l5h9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67ad7e0d-1cce-4f9a-8c3f-c4ed52c3f50e_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!l5h9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67ad7e0d-1cce-4f9a-8c3f-c4ed52c3f50e_3000x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!l5h9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67ad7e0d-1cce-4f9a-8c3f-c4ed52c3f50e_3000x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/67ad7e0d-1cce-4f9a-8c3f-c4ed52c3f50e_3000x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:192387,&quot;alt&quot;:&quot;Screenshot of the Import code dialog box where the GitHub link is entered.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188028669?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67ad7e0d-1cce-4f9a-8c3f-c4ed52c3f50e_3000x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of the Import code dialog box where the GitHub link is entered." title="Screenshot of the Import code dialog box where the GitHub link is entered." srcset="https://substackcdn.com/image/fetch/$s_!l5h9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67ad7e0d-1cce-4f9a-8c3f-c4ed52c3f50e_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!l5h9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67ad7e0d-1cce-4f9a-8c3f-c4ed52c3f50e_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!l5h9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67ad7e0d-1cce-4f9a-8c3f-c4ed52c3f50e_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!l5h9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67ad7e0d-1cce-4f9a-8c3f-c4ed52c3f50e_3000x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Paste the repository URL into the text box</figcaption></figure></div></li><li><p>Click <strong>&#8220;Import.&#8221;</strong></p></li></ol><p>That is it. You don&#8217;t need to clone files or configure a local environment. You simply type your prompt, click submit, and you are ready to go.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qn1T!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F581b3a8b-fa9b-453c-9a27-5bbd052a9bd5_3000x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qn1T!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F581b3a8b-fa9b-453c-9a27-5bbd052a9bd5_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!qn1T!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F581b3a8b-fa9b-453c-9a27-5bbd052a9bd5_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!qn1T!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F581b3a8b-fa9b-453c-9a27-5bbd052a9bd5_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!qn1T!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F581b3a8b-fa9b-453c-9a27-5bbd052a9bd5_3000x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qn1T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F581b3a8b-fa9b-453c-9a27-5bbd052a9bd5_3000x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/581b3a8b-fa9b-453c-9a27-5bbd052a9bd5_3000x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:188592,&quot;alt&quot;:&quot;Screenshot of the Gemini chat input showing the imported Excalidraw repository and a typed prompt.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188028669?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F581b3a8b-fa9b-453c-9a27-5bbd052a9bd5_3000x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of the Gemini chat input showing the imported Excalidraw repository and a typed prompt." title="Screenshot of the Gemini chat input showing the imported Excalidraw repository and a typed prompt." srcset="https://substackcdn.com/image/fetch/$s_!qn1T!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F581b3a8b-fa9b-453c-9a27-5bbd052a9bd5_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!qn1T!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F581b3a8b-fa9b-453c-9a27-5bbd052a9bd5_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!qn1T!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F581b3a8b-fa9b-453c-9a27-5bbd052a9bd5_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!qn1T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F581b3a8b-fa9b-453c-9a27-5bbd052a9bd5_3000x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The repository loads and you type your question</figcaption></figure></div><p>Once you hit submit, the magic happens. The AI processes the link. <strong>It indexes the codebase and loads it into its context window.</strong> This means the LLM now reads the project files as if they were part of the conversation history. You are now ready to chat with the code. It&#8217;s fast, efficient, and requires zero technical setup.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WOxg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb24f48c-8af5-401b-b182-5460e8a1b0de_3000x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WOxg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb24f48c-8af5-401b-b182-5460e8a1b0de_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!WOxg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb24f48c-8af5-401b-b182-5460e8a1b0de_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!WOxg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb24f48c-8af5-401b-b182-5460e8a1b0de_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!WOxg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb24f48c-8af5-401b-b182-5460e8a1b0de_3000x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WOxg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb24f48c-8af5-401b-b182-5460e8a1b0de_3000x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fb24f48c-8af5-401b-b182-5460e8a1b0de_3000x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:237394,&quot;alt&quot;:&quot;Screenshot of the Gemini response summarizing the Excalidraw repository purpose.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188028669?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb24f48c-8af5-401b-b182-5460e8a1b0de_3000x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of the Gemini response summarizing the Excalidraw repository purpose." title="Screenshot of the Gemini response summarizing the Excalidraw repository purpose." srcset="https://substackcdn.com/image/fetch/$s_!WOxg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb24f48c-8af5-401b-b182-5460e8a1b0de_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!WOxg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb24f48c-8af5-401b-b182-5460e8a1b0de_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!WOxg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb24f48c-8af5-401b-b182-5460e8a1b0de_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!WOxg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb24f48c-8af5-401b-b182-5460e8a1b0de_3000x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The system generates a summary of the repository</figcaption></figure></div><p>Now that the brain is loaded, we can start asking the real questions.</p><div><hr></div><h2>See the method in action</h2><p>To prove this works, let&#8217;s use <strong><a href="https://excalidraw.com/">Excalidraw</a></strong>. We product people usually know this tool. It&#8217;s an open-source whiteboard similar to Miro or FigJam. That is why I picked it. But for this exercise, <strong>imagine you have never seen it before.</strong> You just landed on the repo, and you are trying to figure out what&#8217;s going on. Here are the 5 questions that will change how you look at code.</p><h3>Summarize the product purpose</h3><p>Usually, when you discover a new tool, you have to decipher technical jargon to understand the value proposition. You read about dependencies and scripts, but you miss the big picture. <strong>But now, you can just ask the code to pitch itself to you.</strong> I asked Gemini to summarize the purpose of this repository in one non-technical sentence. The result was immediate. It told me exactly what the tool does and who it is for.</p><p><strong>Prompt:</strong></p><blockquote><p>Summarize the purpose of this repository in one non-technical sentence.</p></blockquote><p><strong>Result:</strong></p><blockquote><p>This repository contains the source code for Excalidraw, a virtual whiteboard application that allows users to create diagrams and sketches with a hand-drawn aesthetic.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jWgE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48d6966f-c364-4113-8b61-b6102a96a6fb_3000x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jWgE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48d6966f-c364-4113-8b61-b6102a96a6fb_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!jWgE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48d6966f-c364-4113-8b61-b6102a96a6fb_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!jWgE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48d6966f-c364-4113-8b61-b6102a96a6fb_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!jWgE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48d6966f-c364-4113-8b61-b6102a96a6fb_3000x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jWgE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48d6966f-c364-4113-8b61-b6102a96a6fb_3000x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/48d6966f-c364-4113-8b61-b6102a96a6fb_3000x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:237394,&quot;alt&quot;:&quot;Screenshot of the Gemini response summarizing the Excalidraw repository purpose.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188028669?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48d6966f-c364-4113-8b61-b6102a96a6fb_3000x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of the Gemini response summarizing the Excalidraw repository purpose." title="Screenshot of the Gemini response summarizing the Excalidraw repository purpose." srcset="https://substackcdn.com/image/fetch/$s_!jWgE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48d6966f-c364-4113-8b61-b6102a96a6fb_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!jWgE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48d6966f-c364-4113-8b61-b6102a96a6fb_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!jWgE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48d6966f-c364-4113-8b61-b6102a96a6fb_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!jWgE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48d6966f-c364-4113-8b61-b6102a96a6fb_3000x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The system generates a summary of the repository</figcaption></figure></div><p>It&#8217;s incredible, right? You don&#8217;t need to read the code or guess. <strong>The context window handles it.</strong> You can keep the conversation going without ever re-pasting the link. You just ask, and the answer comes.</p><h3>Explain how features work</h3><p>Now let&#8217;s get technical. Maybe you have always wondered how a digital whiteboard actually works. Usually, to find this out, you would need to schedule a meeting with a developer. You would have to hunt through thousands of lines of code. <strong>Instead, just ask for the logic.</strong> I asked Gemini to trace exactly what happens technically when a user draws a line.</p><p><strong>Prompt:</strong></p><blockquote><p>Trace the logic: What happens technically when a user draws a line?</p></blockquote><p><strong>Result:</strong></p><blockquote><p>The technical lifecycle of drawing a line in Excalidraw involves a coordinated flow between the event listeners, the main application state, and the rendering engine.</p><p><em>[I&#8217;m cutting the rest because it&#8217;s too long&#8230;]</em></p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ipNM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29f8f6e7-6633-4cea-8e97-712568244c69_3000x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ipNM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29f8f6e7-6633-4cea-8e97-712568244c69_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!ipNM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29f8f6e7-6633-4cea-8e97-712568244c69_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!ipNM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29f8f6e7-6633-4cea-8e97-712568244c69_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!ipNM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29f8f6e7-6633-4cea-8e97-712568244c69_3000x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ipNM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29f8f6e7-6633-4cea-8e97-712568244c69_3000x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/29f8f6e7-6633-4cea-8e97-712568244c69_3000x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:404271,&quot;alt&quot;:&quot;Screenshot of a Gemini chat window showing a detailed technical breakdown of the event capture and element creation process in Excalidraw.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188028669?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29f8f6e7-6633-4cea-8e97-712568244c69_3000x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of a Gemini chat window showing a detailed technical breakdown of the event capture and element creation process in Excalidraw." title="Screenshot of a Gemini chat window showing a detailed technical breakdown of the event capture and element creation process in Excalidraw." srcset="https://substackcdn.com/image/fetch/$s_!ipNM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29f8f6e7-6633-4cea-8e97-712568244c69_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!ipNM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29f8f6e7-6633-4cea-8e97-712568244c69_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!ipNM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29f8f6e7-6633-4cea-8e97-712568244c69_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!ipNM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29f8f6e7-6633-4cea-8e97-712568244c69_3000x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The AI explains the technical logic for drawing a line</figcaption></figure></div><p>You can even ask about specific business rules. You can ask about hardcoded limits or encryption logic. <strong>You get precise answers instantly, without bothering your engineering team.</strong> It turns a complex black box into a clear explanation.</p><h3>Generate product doc</h3><p>We often have to write documentation, whether it&#8217;s for users, testers, or stakeholders. <strong>This tool turns the codebase into a content generator.</strong> I asked Gemini to generate a full user manual for Excalidraw. I even used the Canvas tool to export it directly to Google Docs.</p><p><strong>Prompt:</strong></p><blockquote><p>Generate a comprehensive user manual for the entire product based on the codebase capabilities.</p></blockquote><p><strong>Result:</strong></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://docs.google.com/document/d/1j71F0qqC6hmKMdTMTgwSiXeJJfxfFVDnORdiQMMfuKw/edit?usp=sharing&quot;,&quot;text&quot;:&quot;Access the Google Doc&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://docs.google.com/document/d/1j71F0qqC6hmKMdTMTgwSiXeJJfxfFVDnORdiQMMfuKw/edit?usp=sharing"><span>Access the Google Doc</span></a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9kG7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a754012-4441-429f-b288-8bca51d463be_3000x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9kG7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a754012-4441-429f-b288-8bca51d463be_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!9kG7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a754012-4441-429f-b288-8bca51d463be_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!9kG7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a754012-4441-429f-b288-8bca51d463be_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!9kG7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a754012-4441-429f-b288-8bca51d463be_3000x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9kG7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a754012-4441-429f-b288-8bca51d463be_3000x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9a754012-4441-429f-b288-8bca51d463be_3000x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:575209,&quot;alt&quot;:&quot;Screenshot showing the Gemini chat interface on the left and a generated \&quot;Excalidraw User Manual\&quot; in the side panel on the right.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188028669?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a754012-4441-429f-b288-8bca51d463be_3000x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot showing the Gemini chat interface on the left and a generated &quot;Excalidraw User Manual&quot; in the side panel on the right." title="Screenshot showing the Gemini chat interface on the left and a generated &quot;Excalidraw User Manual&quot; in the side panel on the right." srcset="https://substackcdn.com/image/fetch/$s_!9kG7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a754012-4441-429f-b288-8bca51d463be_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!9kG7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a754012-4441-429f-b288-8bca51d463be_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!9kG7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a754012-4441-429f-b288-8bca51d463be_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!9kG7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a754012-4441-429f-b288-8bca51d463be_3000x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The system generates a complete user manual for the product</figcaption></figure></div><p>I generated a user manual, but I could have asked for <strong>release notes</strong>. I could have asked for a <strong>testing plan</strong>. I could have even asked for a <strong>marketing email</strong> to announce a new feature. <strong>You are literally turning raw code into usable doc assets.</strong></p><h3>Run the app locally</h3><p>This is my personal favorite. The <code>README.md</code> often explains how to install the app, but it assumes you are a developer. It skips steps. Personally, I often get stuck. <strong>With this method, you can ask for a dumbed-down guide.</strong> I asked for a step-by-step guide to run this app locally on my Mac, assuming I am a beginner.</p><p><strong>Prompt:</strong></p><blockquote><p>I am a non-technical person. Please generate a step-by-step guide to run this app locally on my specific machine Mac.</p></blockquote><p><strong>Result:</strong></p><blockquote><p>I&#8217;ll generate a beginner-friendly guide to running Excalidraw on your Mac. Since you&#8217;re non-technical, we&#8217;ll avoid complex developer tools where possible and stick to the easiest path.</p><p>Here is the step-by-step guide:</p><p><em>[The specific steps to the right of the conversation, on the Canvas&#8230;]</em></p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nczH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F679b941f-f493-4695-9056-d1be6cea50fc_3000x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nczH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F679b941f-f493-4695-9056-d1be6cea50fc_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!nczH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F679b941f-f493-4695-9056-d1be6cea50fc_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!nczH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F679b941f-f493-4695-9056-d1be6cea50fc_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!nczH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F679b941f-f493-4695-9056-d1be6cea50fc_3000x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nczH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F679b941f-f493-4695-9056-d1be6cea50fc_3000x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/679b941f-f493-4695-9056-d1be6cea50fc_3000x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:610914,&quot;alt&quot;:&quot;Screenshot of a Gemini response providing a beginner-friendly guide titled \&quot;How to Run Excalidraw on Mac\&quot; in the side editor.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188028669?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F679b941f-f493-4695-9056-d1be6cea50fc_3000x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of a Gemini response providing a beginner-friendly guide titled &quot;How to Run Excalidraw on Mac&quot; in the side editor." title="Screenshot of a Gemini response providing a beginner-friendly guide titled &quot;How to Run Excalidraw on Mac&quot; in the side editor." srcset="https://substackcdn.com/image/fetch/$s_!nczH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F679b941f-f493-4695-9056-d1be6cea50fc_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!nczH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F679b941f-f493-4695-9056-d1be6cea50fc_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!nczH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F679b941f-f493-4695-9056-d1be6cea50fc_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!nczH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F679b941f-f493-4695-9056-d1be6cea50fc_3000x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Gemini creates a step-by-step guide for local installation</figcaption></figure></div><p>I followed the steps like a cooking recipe and it worked. <strong>I deployed the app locally and tested it in minutes.</strong></p><p>If the terminal throws a red error message, don&#8217;t panic. <strong>Copy the error, paste it back into Gemini</strong>, and ask: &#8220;I got this error. What is the specific command to fix it?&#8221;</p><h3>Suggest code optimizations</h3><p>For those who want to go further, you can actually use this to help your team. You can identify bugs or suggest optimizations. <strong>I often use Gemini for this because its suggestions are accessible.</strong> I asked it to analyze the code for fragile logic and suggest optimizations.</p><p><strong>Prompt:</strong></p><blockquote><p>Debug the current code: Identify 3 areas where bugs are likely to occur.</p></blockquote><p><strong>Result:</strong></p><blockquote><p>Based on the file structure of the Excalidraw repository, here are 3 specific areas where bugs are likely to occur due to the complexity of the logic involved:</p><p><em>[Cut&#8230;]</em></p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!adb3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eec4918-2b60-427d-b18f-24720afd8a3e_3000x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!adb3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eec4918-2b60-427d-b18f-24720afd8a3e_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!adb3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eec4918-2b60-427d-b18f-24720afd8a3e_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!adb3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eec4918-2b60-427d-b18f-24720afd8a3e_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!adb3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eec4918-2b60-427d-b18f-24720afd8a3e_3000x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!adb3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eec4918-2b60-427d-b18f-24720afd8a3e_3000x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6eec4918-2b60-427d-b18f-24720afd8a3e_3000x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:397741,&quot;alt&quot;:&quot;Screenshot of a Gemini response analyzing the file structure to pinpoint specific areas where technical bugs are likely to occur.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188028669?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eec4918-2b60-427d-b18f-24720afd8a3e_3000x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of a Gemini response analyzing the file structure to pinpoint specific areas where technical bugs are likely to occur." title="Screenshot of a Gemini response analyzing the file structure to pinpoint specific areas where technical bugs are likely to occur." srcset="https://substackcdn.com/image/fetch/$s_!adb3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eec4918-2b60-427d-b18f-24720afd8a3e_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!adb3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eec4918-2b60-427d-b18f-24720afd8a3e_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!adb3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eec4918-2b60-427d-b18f-24720afd8a3e_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!adb3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eec4918-2b60-427d-b18f-24720afd8a3e_3000x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The AI identifies potential bugs and logic risks in the code</figcaption></figure></div><p>I am genuinely impressed by the results.</p><p><strong>Pro tip:</strong> I use Gemini for optimizations because it explains things well. However, if I hit a really complex bug where I am completely stuck, I prefer Claude. I attach the specific file, and Claude is often sharper at spotting the exact logic error to fix it.</p><div><hr></div><h2>Practice the method yourself</h2><p>To be honest, I didn&#8217;t have much time to write this week. That&#8217;s why I am moving fast. But I want to leave you with something concrete to play with. <strong>Here is my proposal.</strong> I have selected 5 open-source repositories for you to test. Excalidraw is just one of them. You can pick any of these, paste the URL into your favorite LLM tool, and start the interview.</p><h3>Select a repository to test</h3><p>Here are the repositories I suggest, but you are free to pick another one that you like.</p><ul><li><p><strong><a href="https://github.com/excalidraw/excalidraw">Excalidraw</a>: </strong>This is the virtual whiteboard for sketching diagrams we just looked at. It&#8217;s a tool, not a platform. So the complexity isn&#8217;t in the database; it&#8217;s in the UI and state. It&#8217;s great for asking user flow questions. Try asking: &#8220;Does this work offline?&#8221; or &#8220;How is the data saved if there is no login?&#8221;</p></li><li><p><strong><a href="https://github.com/calcom/cal.com">Cal.com</a>: </strong>This is an open-source alternative to Calendly. It lets people book meetings with you. It has a crystal clear happy path: User A sends a link, User B books a time, and an email is sent. It&#8217;s perfect for asking about business logic. Try asking: &#8220;What happens to the booking if the Google Calendar API goes down?&#8221; or &#8220;How do we handle timezones?&#8221;</p></li><li><p><strong><a href="https://github.com/forem/forem">Forem</a>: </strong>This is the software that powers <a href="https://dev.to/">dev.to</a>. It&#8217;s a platform for building communities. It&#8217;s huge and complex. It has roles like admin and moderator. It has permissions and rewards. This is the best repo to practice asking business logic and configuration questions. Try asking: &#8220;Can I turn off the shop feature easily?&#8221; or &#8220;What are the different user roles?&#8221;</p></li><li><p><strong><a href="https://github.com/strapi/strapi">Strapi</a>: </strong>This is a headless CMS to manage content. It sends data to your website or app via API. It has two distinct users: the developer who sets it up, and the content editor who writes articles. It&#8217;s perfect for practicing persona questions. Try asking: &#8220;Who is this feature for? The dev or the writer?&#8221;</p></li><li><p><strong><a href="https://github.com/nocodb/nocodb">NocoDB</a>: </strong>This is an open-source alternative to Airtable. It turns any database into a smart spreadsheet. It connects to external things. It&#8217;s great for asking prerequisite and risk questions. Try asking: &#8220;What databases do you support?&#8221; or &#8220;If NocoDB crashes, do I lose my actual data in MySQL?&#8221;</p></li></ul><h3>Ask these specific questions</h3><p>Now that you have the target, you need the questions. <strong>I have prepared a codebase interview guide for you.</strong> It acts as a cheat sheet.</p><p>I organized it into two main scenarios:</p><ul><li><p><strong>Discover a new codebase:</strong> You have never seen the code before and want to understand how it works.</p></li><li><p><strong>Collaborate on an existing project:</strong> You work on the team and need to debug issues or write documentation.</p></li></ul><p><strong>But remember, these are just suggestions for inspiration.</strong> If you have your own specific questions, ask them! If you lack inspiration, feel free to use mine.</p><h4>Scenario 1: Discover a new codebase</h4><p>JTBD 1: Understand the product basics</p><blockquote><p>Summarize the purpose of this repository in one non-technical sentence.</p></blockquote><blockquote><p>Who is the primary user persona for this specific codebase?</p></blockquote><blockquote><p>Does this project run standalone, or does it require a separate backend/database?</p></blockquote><blockquote><p>What are the primary input and output formats?</p></blockquote><blockquote><p>Is this project a monolith (everything in one place) or a monorepo (multiple packages)?</p></blockquote><p>JTBD 2: Map the core architecture</p><blockquote><p>What is the complete data structure of the main domain entity or core object?</p></blockquote><blockquote><p>Where is the entry point for the main application state or data store?</p></blockquote><blockquote><p>How does the application detect and handle core user interaction?</p></blockquote><blockquote><p>Trace the logic: What happens technically during the primary happy path action?</p></blockquote><blockquote><p>How is the visual styling or theming handled?</p></blockquote><p>JTBD 3: Identify business rules</p><blockquote><p>What is the logic for authentication and authorization (who can do what)?</p></blockquote><blockquote><p>How does the main export or data output function work?</p></blockquote><blockquote><p>Are there any hardcoded limits or constants (e.g., max size, max count, timeout)?</p></blockquote><blockquote><p>How is language or internationalization (i18n) handled?</p></blockquote><blockquote><p>What logic handles data persistence (saving)?</p></blockquote><p>JTBD 4: Run the application locally</p><blockquote><p>I am a non-technical person. Please generate a step-by-step guide to run this app locally.</p></blockquote><blockquote><p>List the scripts found in package.json (or Makefile) and explain what they do.</p></blockquote><blockquote><p>Does the project use a configuration file (like .env), and what are the required keys?</p></blockquote><blockquote><p>Is there a container configuration (Docker/K8s)?</p></blockquote><blockquote><p>What are the key external dependencies or libraries?</p></blockquote><blockquote><p>Where are the standard test fixtures or mock data stored?</p></blockquote><h4>Scenario 2: Collaborate on an existing project</h4><p>JTBD 5: Debug and improve the code</p><blockquote><p>If we wanted to add a [new feature], which files would we need to modify?</p></blockquote><blockquote><p>How does the application handle failure states (e.g., offline, API down, database error)?</p></blockquote><blockquote><p>Where is the input validation or sanitization logic?</p></blockquote><blockquote><p>Are there any feature flags or config variables enabled in the code?</p></blockquote><blockquote><p>Check the [critical performance path]. Is it optimized?</p></blockquote><blockquote><p>Based on the code structure, suggest 3 specific code additions or improvements.</p></blockquote><blockquote><p>Debug the current code: Identify 3 areas where bugs are likely to occur.</p></blockquote><blockquote><p>Analyze the code for potential fragile logic (like unhandled errors) and suggest specific test cases to trigger them.</p></blockquote><p>JTBD 6: Generate documentation and content</p><blockquote><p>Generate a comprehensive user manual for the entire product based on the codebase capabilities.</p></blockquote><blockquote><p>Write a draft of the release notes summarizing the top 3 capabilities found in the codebase.</p></blockquote><blockquote><p>Compose a marketing newsletter post announcing the [specific feature] to our users.</p></blockquote><blockquote><p>What are all the accepted user inputs/shortcuts defined in the code?</p></blockquote><blockquote><p>List all the supported integration or export formats.</p></blockquote><blockquote><p>How does the [specific protocol/API] structure look?</p></blockquote><blockquote><p>Does the code contain any accessibility (A11y) attributes?</p></blockquote><blockquote><p>What specific security libraries or encryption methods are used?</p></blockquote><p>Just imagine for a second. Instead of pinging a developer on Slack and waiting hours for a reply, <strong>you can now get an instant response directly from the LLM.</strong></p><div><hr></div><h2>Manage restrictions and access</h2><h3>Know the limits</h3><p>It&#8217;s important to remain realistic. This tool is powerful, but it&#8217;s not magic. There are specific things it simply cannot do.</p><p><strong>First, Gemini cannot see the past.</strong> It analyzes the files as they exist right now, like a snapshot. It does not have access to the Git history or metadata. You cannot ask &#8220;Who wrote this line?&#8221; or &#8220;How many pull requests were merged last week?&#8221; For questions about people, contributors, or timelines, you should stick to the standard GitHub interface.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pTRg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96c7a70c-cd38-40f9-8241-4ef02df703ec_3000x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pTRg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96c7a70c-cd38-40f9-8241-4ef02df703ec_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!pTRg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96c7a70c-cd38-40f9-8241-4ef02df703ec_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!pTRg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96c7a70c-cd38-40f9-8241-4ef02df703ec_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!pTRg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96c7a70c-cd38-40f9-8241-4ef02df703ec_3000x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pTRg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96c7a70c-cd38-40f9-8241-4ef02df703ec_3000x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/96c7a70c-cd38-40f9-8241-4ef02df703ec_3000x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:229952,&quot;alt&quot;:&quot;Screenshot of a Gemini chat window showing the AI explaining that it lacks access to pull request history and metadata.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188028669?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96c7a70c-cd38-40f9-8241-4ef02df703ec_3000x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of a Gemini chat window showing the AI explaining that it lacks access to pull request history and metadata." title="Screenshot of a Gemini chat window showing the AI explaining that it lacks access to pull request history and metadata." srcset="https://substackcdn.com/image/fetch/$s_!pTRg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96c7a70c-cd38-40f9-8241-4ef02df703ec_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!pTRg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96c7a70c-cd38-40f9-8241-4ef02df703ec_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!pTRg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96c7a70c-cd38-40f9-8241-4ef02df703ec_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!pTRg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96c7a70c-cd38-40f9-8241-4ef02df703ec_3000x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The AI cannot access the repository&#8217;s history or live GitHub data</figcaption></figure></div><p>You also need to know that the conversation is static. <strong>The code you import does not sync in real-time.</strong> If your engineering team pushes a major update five minutes after you start your chat, Gemini will not know about it. It&#8217;s frozen in the moment you imported it. If the code changes significantly, you must simply start a new conversation.</p><p>There are also technical limits on the size of the project. <strong>You cannot upload a massive corporate monolith.</strong> Currently, Gemini limits you to one repository per chat. The project must have fewer than 5,000 files and be under 100 MB in size. This is plenty for most modern microservices or tools like Excalidraw, but it will hit a wall with huge legacy codebases.</p><p>Finally, be prepared for a change in pace. <strong>Responses will be slower.</strong> Because the system has to scan thousands of code files for every query, it takes more time than a normal chat, especially with the &#8220;Pro&#8221; model. This heavy lifting also comes at a cost. <strong>You will burn through your daily usage limits much faster.</strong> I actually hit my daily cap just by testing this today. Fortunately, the reset only took an hour, but keep in mind that interviewing a codebase consumes significantly more tokens than a standard conversation. It&#8217;s a power user feature, and it costs power user credits.</p><h3>Analyze private repos</h3><p>You might be wondering about your own work. &#8220;Does this only work for public open-source projects?&#8221; The answer is no,<strong> it works for private repositories too.</strong> You do not need to make your code public. You simply need to connect the AI tool to your GitHub account in the settings. Here is the step-by-step guide (with a crucial tip):</p><ol><li><p>Go to Settings &gt; <strong>&#8220;Connected Apps.&#8221;</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!C6gZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0324b3ab-afac-46f4-b656-8dbb9bbe2c4d_3000x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!C6gZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0324b3ab-afac-46f4-b656-8dbb9bbe2c4d_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!C6gZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0324b3ab-afac-46f4-b656-8dbb9bbe2c4d_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!C6gZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0324b3ab-afac-46f4-b656-8dbb9bbe2c4d_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!C6gZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0324b3ab-afac-46f4-b656-8dbb9bbe2c4d_3000x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!C6gZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0324b3ab-afac-46f4-b656-8dbb9bbe2c4d_3000x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0324b3ab-afac-46f4-b656-8dbb9bbe2c4d_3000x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:211567,&quot;alt&quot;:&quot;Screenshot of the Gemini settings sidebar with the \&quot;Connected Apps\&quot; option highlighted in a red box.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188028669?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0324b3ab-afac-46f4-b656-8dbb9bbe2c4d_3000x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of the Gemini settings sidebar with the &quot;Connected Apps&quot; option highlighted in a red box." title="Screenshot of the Gemini settings sidebar with the &quot;Connected Apps&quot; option highlighted in a red box." srcset="https://substackcdn.com/image/fetch/$s_!C6gZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0324b3ab-afac-46f4-b656-8dbb9bbe2c4d_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!C6gZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0324b3ab-afac-46f4-b656-8dbb9bbe2c4d_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!C6gZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0324b3ab-afac-46f4-b656-8dbb9bbe2c4d_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!C6gZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0324b3ab-afac-46f4-b656-8dbb9bbe2c4d_3000x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Click on Connected Apps in the settings menu</figcaption></figure></div></li><li><p>Find GitHub and toggle it to <strong>&#8220;On&#8221;.</strong> Click <strong>Connect.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0QpS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe585fec3-123a-4b61-9f92-6038ac6f2da9_3000x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0QpS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe585fec3-123a-4b61-9f92-6038ac6f2da9_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!0QpS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe585fec3-123a-4b61-9f92-6038ac6f2da9_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!0QpS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe585fec3-123a-4b61-9f92-6038ac6f2da9_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!0QpS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe585fec3-123a-4b61-9f92-6038ac6f2da9_3000x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0QpS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe585fec3-123a-4b61-9f92-6038ac6f2da9_3000x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e585fec3-123a-4b61-9f92-6038ac6f2da9_3000x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:348170,&quot;alt&quot;:&quot;Screenshot of a modal window asking \&quot;Connect GitHub?\&quot; with a blue \&quot;Connect\&quot; button at the bottom right.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188028669?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe585fec3-123a-4b61-9f92-6038ac6f2da9_3000x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of a modal window asking &quot;Connect GitHub?&quot; with a blue &quot;Connect&quot; button at the bottom right." title="Screenshot of a modal window asking &quot;Connect GitHub?&quot; with a blue &quot;Connect&quot; button at the bottom right." srcset="https://substackcdn.com/image/fetch/$s_!0QpS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe585fec3-123a-4b61-9f92-6038ac6f2da9_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!0QpS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe585fec3-123a-4b61-9f92-6038ac6f2da9_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!0QpS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe585fec3-123a-4b61-9f92-6038ac6f2da9_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!0QpS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe585fec3-123a-4b61-9f92-6038ac6f2da9_3000x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Click the connect button to link your account</figcaption></figure></div></li><li><p><strong>Important step:</strong> You need to click on <strong>&#8220;Learn more&#8221;</strong> and then click the <strong>&#8220;Connect&#8221;</strong> button again to force the authorization window.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0zjh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee8d95d-1de5-4750-a9ae-0d7a1c75e1de_3000x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0zjh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee8d95d-1de5-4750-a9ae-0d7a1c75e1de_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!0zjh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee8d95d-1de5-4750-a9ae-0d7a1c75e1de_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!0zjh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee8d95d-1de5-4750-a9ae-0d7a1c75e1de_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!0zjh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee8d95d-1de5-4750-a9ae-0d7a1c75e1de_3000x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0zjh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee8d95d-1de5-4750-a9ae-0d7a1c75e1de_3000x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eee8d95d-1de5-4750-a9ae-0d7a1c75e1de_3000x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:223157,&quot;alt&quot;:&quot;Screenshot of the GitHub extension card with a red box around the \&quot;Learn more\&quot; link.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188028669?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee8d95d-1de5-4750-a9ae-0d7a1c75e1de_3000x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of the GitHub extension card with a red box around the &quot;Learn more&quot; link." title="Screenshot of the GitHub extension card with a red box around the &quot;Learn more&quot; link." srcset="https://substackcdn.com/image/fetch/$s_!0zjh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee8d95d-1de5-4750-a9ae-0d7a1c75e1de_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!0zjh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee8d95d-1de5-4750-a9ae-0d7a1c75e1de_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!0zjh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee8d95d-1de5-4750-a9ae-0d7a1c75e1de_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!0zjh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee8d95d-1de5-4750-a9ae-0d7a1c75e1de_3000x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Click the &#8220;Learn more&#8221; link to finalize the connection</figcaption></figure></div></li><li><p>Continue the steps until you see your specific <strong>GitHub ID displayed</strong> on the Gemini screen.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QeRt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d0c656d-5f46-479f-8960-b4e5aa5f4085_3000x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QeRt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d0c656d-5f46-479f-8960-b4e5aa5f4085_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!QeRt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d0c656d-5f46-479f-8960-b4e5aa5f4085_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!QeRt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d0c656d-5f46-479f-8960-b4e5aa5f4085_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!QeRt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d0c656d-5f46-479f-8960-b4e5aa5f4085_3000x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QeRt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d0c656d-5f46-479f-8960-b4e5aa5f4085_3000x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7d0c656d-5f46-479f-8960-b4e5aa5f4085_3000x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:232951,&quot;alt&quot;:&quot;Screenshot of the GitHub connection settings showing a successful link with the username \&quot;adamfaik\&quot; highlighted in a red box.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188028669?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d0c656d-5f46-479f-8960-b4e5aa5f4085_3000x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of the GitHub connection settings showing a successful link with the username &quot;adamfaik&quot; highlighted in a red box." title="Screenshot of the GitHub connection settings showing a successful link with the username &quot;adamfaik&quot; highlighted in a red box." srcset="https://substackcdn.com/image/fetch/$s_!QeRt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d0c656d-5f46-479f-8960-b4e5aa5f4085_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!QeRt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d0c656d-5f46-479f-8960-b4e5aa5f4085_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!QeRt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d0c656d-5f46-479f-8960-b4e5aa5f4085_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!QeRt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d0c656d-5f46-479f-8960-b4e5aa5f4085_3000x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Verify your GitHub ID appears on the screen</figcaption></figure></div></li></ol><p>Once connected, you can interview your private code just as easily as we did with Excalidraw.</p><p><strong>Important note:</strong> If you are at a large company, check your internal AI policy. For personal projects or open source, this is fair game.</p><div><hr></div><h2>Explore alternatives</h2><p>Gemini is my go-to because it&#8217;s easy, but it&#8217;s definitely not the only player in town. If you want to explore further, there are other specialized tools worth testing.</p><p><strong>Let&#8217;s start with the one you probably already have: GitHub Copilot.</strong> It&#8217;s integrated directly into the interface, but it&#8217;s surprisingly hard to find. You have to click the tiny Copilot icon in the top navigation bar while browsing a repository.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Csm_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40de8f9d-af61-4ada-9760-0f8351e3b6c4_3000x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Csm_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40de8f9d-af61-4ada-9760-0f8351e3b6c4_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!Csm_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40de8f9d-af61-4ada-9760-0f8351e3b6c4_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!Csm_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40de8f9d-af61-4ada-9760-0f8351e3b6c4_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!Csm_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40de8f9d-af61-4ada-9760-0f8351e3b6c4_3000x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Csm_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40de8f9d-af61-4ada-9760-0f8351e3b6c4_3000x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/40de8f9d-af61-4ada-9760-0f8351e3b6c4_3000x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:533832,&quot;alt&quot;:&quot;Screenshot of the GitHub repository header with a red box highlighting the Copilot icon next to the search bar.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188028669?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40de8f9d-af61-4ada-9760-0f8351e3b6c4_3000x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of the GitHub repository header with a red box highlighting the Copilot icon next to the search bar." title="Screenshot of the GitHub repository header with a red box highlighting the Copilot icon next to the search bar." srcset="https://substackcdn.com/image/fetch/$s_!Csm_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40de8f9d-af61-4ada-9760-0f8351e3b6c4_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!Csm_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40de8f9d-af61-4ada-9760-0f8351e3b6c4_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!Csm_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40de8f9d-af61-4ada-9760-0f8351e3b6c4_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!Csm_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40de8f9d-af61-4ada-9760-0f8351e3b6c4_3000x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Click the Copilot icon in the top navigation bar</figcaption></figure></div><p>Once open, you can ask the exact same question: &#8220;Summarize the purpose of this repository in one non-technical sentence.&#8221; It works well, though the quality of the answers often depends on whether you have a Pro plan with access to advanced models.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!U3vv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5997caec-c9bd-4bad-adf9-b0b82bcda4c2_3000x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!U3vv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5997caec-c9bd-4bad-adf9-b0b82bcda4c2_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!U3vv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5997caec-c9bd-4bad-adf9-b0b82bcda4c2_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!U3vv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5997caec-c9bd-4bad-adf9-b0b82bcda4c2_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!U3vv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5997caec-c9bd-4bad-adf9-b0b82bcda4c2_3000x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!U3vv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5997caec-c9bd-4bad-adf9-b0b82bcda4c2_3000x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5997caec-c9bd-4bad-adf9-b0b82bcda4c2_3000x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:235179,&quot;alt&quot;:&quot;Screenshot of the GitHub Copilot chat interface showing a summary of the Excalidraw project.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188028669?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5997caec-c9bd-4bad-adf9-b0b82bcda4c2_3000x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of the GitHub Copilot chat interface showing a summary of the Excalidraw project." title="Screenshot of the GitHub Copilot chat interface showing a summary of the Excalidraw project." srcset="https://substackcdn.com/image/fetch/$s_!U3vv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5997caec-c9bd-4bad-adf9-b0b82bcda4c2_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!U3vv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5997caec-c9bd-4bad-adf9-b0b82bcda4c2_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!U3vv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5997caec-c9bd-4bad-adf9-b0b82bcda4c2_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!U3vv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5997caec-c9bd-4bad-adf9-b0b82bcda4c2_3000x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The system generates a non-technical summary of the project</figcaption></figure></div><p><strong>Next, there is <a href="https://codewiki.google/">Google CodeWiki</a>.</strong> This feels like a NotebookLM for code. It transforms a repository into a structured documentation site with diagrams and a chat interface. I tested it with Excalidraw, and the experience is unique. It feels like the answers come from a pre-structured knowledge base rather than just raw code files. The coolest part? <strong>It displays videos for some featured repositories.</strong> However, there is a catch. The repository must be pre-indexed by their system. You cannot just throw your private personal project at it yet (at least for now).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!v2P2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3133de5-4a41-4f4a-b70f-02d25c868a04_3000x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!v2P2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3133de5-4a41-4f4a-b70f-02d25c868a04_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!v2P2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3133de5-4a41-4f4a-b70f-02d25c868a04_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!v2P2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3133de5-4a41-4f4a-b70f-02d25c868a04_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!v2P2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3133de5-4a41-4f4a-b70f-02d25c868a04_3000x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!v2P2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3133de5-4a41-4f4a-b70f-02d25c868a04_3000x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d3133de5-4a41-4f4a-b70f-02d25c868a04_3000x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:474285,&quot;alt&quot;:&quot;Screenshot of the Google CodeWiki interface showing a system architecture diagram for Excalidraw and a chat panel.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188028669?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3133de5-4a41-4f4a-b70f-02d25c868a04_3000x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of the Google CodeWiki interface showing a system architecture diagram for Excalidraw and a chat panel." title="Screenshot of the Google CodeWiki interface showing a system architecture diagram for Excalidraw and a chat panel." srcset="https://substackcdn.com/image/fetch/$s_!v2P2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3133de5-4a41-4f4a-b70f-02d25c868a04_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!v2P2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3133de5-4a41-4f4a-b70f-02d25c868a04_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!v2P2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3133de5-4a41-4f4a-b70f-02d25c868a04_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!v2P2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3133de5-4a41-4f4a-b70f-02d25c868a04_3000x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">CodeWiki creates a structured documentation page with diagrams</figcaption></figure></div><p><strong>Finally, you should check out <a href="https://deepwiki.com/">DeepWiki</a>.</strong> This tool feels much more grounded in the actual code. It offers different modes like &#8220;Fast,&#8221; &#8220;Deep Research&#8221; or &#8220;Codemap.&#8221; When I asked it to summarize the repo, I really liked the interface. <strong>The best part is that every answer links directly to the specific code files.</strong> You can see the source material in the right-hand panel, which gives you a lot of confidence in the answer.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!I0Rc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89c52daa-d685-4ed5-889c-9b62c2651d48_3000x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!I0Rc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89c52daa-d685-4ed5-889c-9b62c2651d48_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!I0Rc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89c52daa-d685-4ed5-889c-9b62c2651d48_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!I0Rc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89c52daa-d685-4ed5-889c-9b62c2651d48_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!I0Rc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89c52daa-d685-4ed5-889c-9b62c2651d48_3000x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!I0Rc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89c52daa-d685-4ed5-889c-9b62c2651d48_3000x1474.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/89c52daa-d685-4ed5-889c-9b62c2651d48_3000x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:577857,&quot;alt&quot;:&quot;Screenshot of the DeepWiki interface showing a project summary on the left and the relevant code file on the right.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/188028669?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89c52daa-d685-4ed5-889c-9b62c2651d48_3000x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of the DeepWiki interface showing a project summary on the left and the relevant code file on the right." title="Screenshot of the DeepWiki interface showing a project summary on the left and the relevant code file on the right." srcset="https://substackcdn.com/image/fetch/$s_!I0Rc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89c52daa-d685-4ed5-889c-9b62c2651d48_3000x1474.png 424w, https://substackcdn.com/image/fetch/$s_!I0Rc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89c52daa-d685-4ed5-889c-9b62c2651d48_3000x1474.png 848w, https://substackcdn.com/image/fetch/$s_!I0Rc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89c52daa-d685-4ed5-889c-9b62c2651d48_3000x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!I0Rc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89c52daa-d685-4ed5-889c-9b62c2651d48_3000x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">DeepWiki links every response directly to the source code</figcaption></figure></div><p>This space is moving fast. My research turned up plenty of other tools like <a href="https://talktogithub.com/">TalkToGitHub</a>,  <a href="https://www.greptile.com/">Greptile</a>, <a href="https://getunblocked.com/">Unblocked</a>, or specialized IDE agents. <strong>But the tool doesn&#8217;t matter as much as the mindset.</strong> Whether you use Gemini, Copilot, or DeepWiki, the goal is the same. Stop staring at the code. Start talking to it.</p><div><hr></div><h2>Interview a repo today</h2><p>So, here is the truth. <strong>You don&#8217;t need to learn React or Python to understand how your product works.</strong> You just need to know how to ask the right questions. LLMs bridge the gap between product and engineering like never before. It gives you the confidence to navigate technical discussions without feeling lost.</p><p><strong>Now, it&#8217;s your turn.</strong> Don&#8217;t just bookmark this article for later. Open a new tab right now.</p><ol><li><p><strong>Pick one</strong> of the 5 repositories I shared above.</p></li><li><p><strong>Paste the URL</strong> into Gemini (or your favorite LLM).</p></li><li><p><strong>Ask 3 questions</strong> from the interview guide.</p></li><li><p><strong>Bonus:</strong> Try to install it locally using the cooking recipe method.</p></li></ol><p>I&#8217;m really curious to see what you find. <strong>Did you manage to run the app? Did you find a surprising business rule?</strong> Share your results or your best prompts in the comments below. If you get stuck, just ask, I&#8217;ll be there to help.</p>]]></content:encoded></item><item><title><![CDATA[How to elevate visual storytelling with Nano Banana Pro]]></title><description><![CDATA[Combine a simple prompt with a detailed voice note. Run this in three tabs to find the best variation, then continue the conversation in that winning thread to build a consistent visual library.]]></description><link>https://www.theaithinker.com/p/how-to-elevate-visual-storytelling</link><guid isPermaLink="false">https://www.theaithinker.com/p/how-to-elevate-visual-storytelling</guid><dc:creator><![CDATA[Adam Faik]]></dc:creator><pubDate>Mon, 09 Feb 2026 12:02:45 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/4b5f9ccf-7eb9-4aa6-9ff2-175c909c0e0b_1024x731.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Short on time? I get it. Here is <strong>the entire step-by-step guide</strong> summarized in a single visual:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9NVB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ab8d670-fe16-41cb-af2b-f6dc3181dbb2_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9NVB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ab8d670-fe16-41cb-af2b-f6dc3181dbb2_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!9NVB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ab8d670-fe16-41cb-af2b-f6dc3181dbb2_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!9NVB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ab8d670-fe16-41cb-af2b-f6dc3181dbb2_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!9NVB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ab8d670-fe16-41cb-af2b-f6dc3181dbb2_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9NVB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ab8d670-fe16-41cb-af2b-f6dc3181dbb2_2816x1536.png" width="2816" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6ab8d670-fe16-41cb-af2b-f6dc3181dbb2_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:2816,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1702426,&quot;alt&quot;:&quot;Hand-drawn infographic titled \&quot;How to turn rambling into art\&quot; showing the 6 steps of the process.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/187191446?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bd47bd6-37fd-40d3-8429-599dfaa312bd_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Hand-drawn infographic titled &quot;How to turn rambling into art&quot; showing the 6 steps of the process." title="Hand-drawn infographic titled &quot;How to turn rambling into art&quot; showing the 6 steps of the process." srcset="https://substackcdn.com/image/fetch/$s_!9NVB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ab8d670-fe16-41cb-af2b-f6dc3181dbb2_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!9NVB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ab8d670-fe16-41cb-af2b-f6dc3181dbb2_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!9NVB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ab8d670-fe16-41cb-af2b-f6dc3181dbb2_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!9NVB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ab8d670-fe16-41cb-af2b-f6dc3181dbb2_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The 6-step process to turn voice notes into visuals</figcaption></figure></div><p>And yes, things are getting a little meta here. I used the exact method described in this article to generate the infographic that explains the method. It&#8217;s a bit of an Inception moment.</p><p>Want to see how this simple workflow turns a rambling voice note into a vision from the future, a cinematic storyboard, or a full customer journey map? <strong>Let&#8217;s dive in!</strong></p><div><hr></div><h2>Meet Nano Banana Pro</h2><p>I have a confession to make. I have a new daily obsession, and it honestly lights up my entire day. <strong>I take dense, complex text and convert it into beautiful illustrations</strong> using the <strong>Nano Banana Pro</strong> model. It&#8217;s a total thrill. My addiction started innocently enough, but now I can&#8217;t stop. I take a heavy concept or a messy idea. I feed it to the machine. Then I watch it turn into art. It changes how I work, and it makes the daily grind much more fun.</p><p>My fascination actually started years ago. I remember my early days as a product manager. <strong>I watched graphic facilitators in workshops. They fascinated me.</strong> They started with a blank page. They listened to our messy discussions. Then, they finished with something extremely beautiful. We would hang these posters in the office. The team looked at them with pride. <strong>It represented weeks of collective intelligence.</strong> It was a tangible vision that we could touch and see.</p><p>Just look at this result from <a href="https://thebigpicturegraphicfacilitation.co.uk/graphic-facilitation-gallery/">The Big Picture Graphic Facilitation</a> below. Isn't it beautiful?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HTBx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23863a5a-fcb9-4f59-bb8d-6b329ccedb2e_1600x1200.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HTBx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23863a5a-fcb9-4f59-bb8d-6b329ccedb2e_1600x1200.jpeg 424w, https://substackcdn.com/image/fetch/$s_!HTBx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23863a5a-fcb9-4f59-bb8d-6b329ccedb2e_1600x1200.jpeg 848w, https://substackcdn.com/image/fetch/$s_!HTBx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23863a5a-fcb9-4f59-bb8d-6b329ccedb2e_1600x1200.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!HTBx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23863a5a-fcb9-4f59-bb8d-6b329ccedb2e_1600x1200.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HTBx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23863a5a-fcb9-4f59-bb8d-6b329ccedb2e_1600x1200.jpeg" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23863a5a-fcb9-4f59-bb8d-6b329ccedb2e_1600x1200.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:333460,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/187191446?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23863a5a-fcb9-4f59-bb8d-6b329ccedb2e_1600x1200.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!HTBx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23863a5a-fcb9-4f59-bb8d-6b329ccedb2e_1600x1200.jpeg 424w, https://substackcdn.com/image/fetch/$s_!HTBx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23863a5a-fcb9-4f59-bb8d-6b329ccedb2e_1600x1200.jpeg 848w, https://substackcdn.com/image/fetch/$s_!HTBx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23863a5a-fcb9-4f59-bb8d-6b329ccedb2e_1600x1200.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!HTBx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23863a5a-fcb9-4f59-bb8d-6b329ccedb2e_1600x1200.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">An example of graphic facilitation by <a href="https://thebigpicturegraphicfacilitation.co.uk/graphic-facilitation-gallery/">The Big Picture</a></figcaption></figure></div><p>These facilitators are usually generous people. They try to be good teachers. They always say the same thing: <strong>&#8220;Anyone can draw.&#8221;</strong> They claim all drawings have value. They even use icebreakers to prove it. Honestly? I never bought it. I struggled with that concept. My sketches help me understand a concept. They help me write documentation. <strong>But</strong> <strong>I would never hang my art on the office wall.</strong> I definitely wouldn&#8217;t want the whole company to see my stick figures.</p><p>But recently, everything changed. Thanks to Nano Banana Pro, I can actually manage. Look at what I did recently:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SMJH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0cc8e8b-5aa5-45b9-987c-5d75a14c6df4_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SMJH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0cc8e8b-5aa5-45b9-987c-5d75a14c6df4_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!SMJH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0cc8e8b-5aa5-45b9-987c-5d75a14c6df4_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!SMJH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0cc8e8b-5aa5-45b9-987c-5d75a14c6df4_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!SMJH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0cc8e8b-5aa5-45b9-987c-5d75a14c6df4_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SMJH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0cc8e8b-5aa5-45b9-987c-5d75a14c6df4_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d0cc8e8b-5aa5-45b9-987c-5d75a14c6df4_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:7737346,&quot;alt&quot;:&quot;Hand-drawn infographic in French illustrating the Scrum cycle, including Sprint Planning and Daily Scrum.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/187191446?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0cc8e8b-5aa5-45b9-987c-5d75a14c6df4_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Hand-drawn infographic in French illustrating the Scrum cycle, including Sprint Planning and Daily Scrum." title="Hand-drawn infographic in French illustrating the Scrum cycle, including Sprint Planning and Daily Scrum." srcset="https://substackcdn.com/image/fetch/$s_!SMJH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0cc8e8b-5aa5-45b9-987c-5d75a14c6df4_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!SMJH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0cc8e8b-5aa5-45b9-987c-5d75a14c6df4_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!SMJH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0cc8e8b-5aa5-45b9-987c-5d75a14c6df4_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!SMJH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0cc8e8b-5aa5-45b9-987c-5d75a14c6df4_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A colorful graphic facilitation poster explaining Scrum rituals</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ozrt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9951713a-87d2-47b9-ad37-0527e307dd45_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ozrt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9951713a-87d2-47b9-ad37-0527e307dd45_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!ozrt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9951713a-87d2-47b9-ad37-0527e307dd45_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!ozrt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9951713a-87d2-47b9-ad37-0527e307dd45_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!ozrt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9951713a-87d2-47b9-ad37-0527e307dd45_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ozrt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9951713a-87d2-47b9-ad37-0527e307dd45_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9951713a-87d2-47b9-ad37-0527e307dd45_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5914660,&quot;alt&quot;:&quot;Detailed hand-drawn infographic in French explaining the Product Backlog, User Stories, and Definition of Done.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/187191446?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9951713a-87d2-47b9-ad37-0527e307dd45_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Detailed hand-drawn infographic in French explaining the Product Backlog, User Stories, and Definition of Done." title="Detailed hand-drawn infographic in French explaining the Product Backlog, User Stories, and Definition of Done." srcset="https://substackcdn.com/image/fetch/$s_!ozrt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9951713a-87d2-47b9-ad37-0527e307dd45_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!ozrt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9951713a-87d2-47b9-ad37-0527e307dd45_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!ozrt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9951713a-87d2-47b9-ad37-0527e307dd45_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!ozrt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9951713a-87d2-47b9-ad37-0527e307dd45_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Another example showing Scrum artifacts in a visual way</figcaption></figure></div><p>And I didn&#8217;t stop there. I actually went a little overboard. I generated more than 50 similar infographics. I organized all of them into a <strong>massive FigJam board:</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JbfP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab974022-9bce-466c-8223-c5796054c0df_2990x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JbfP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab974022-9bce-466c-8223-c5796054c0df_2990x1474.png 424w, https://substackcdn.com/image/fetch/$s_!JbfP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab974022-9bce-466c-8223-c5796054c0df_2990x1474.png 848w, https://substackcdn.com/image/fetch/$s_!JbfP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab974022-9bce-466c-8223-c5796054c0df_2990x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!JbfP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab974022-9bce-466c-8223-c5796054c0df_2990x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JbfP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab974022-9bce-466c-8223-c5796054c0df_2990x1474.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ab974022-9bce-466c-8223-c5796054c0df_2990x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:718,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3628960,&quot;alt&quot;:&quot;A zoomed-out view of a FigJam board filled with dozens of square illustrations arranged in a grid.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/187191446?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab974022-9bce-466c-8223-c5796054c0df_2990x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A zoomed-out view of a FigJam board filled with dozens of square illustrations arranged in a grid." title="A zoomed-out view of a FigJam board filled with dozens of square illustrations arranged in a grid." srcset="https://substackcdn.com/image/fetch/$s_!JbfP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab974022-9bce-466c-8223-c5796054c0df_2990x1474.png 424w, https://substackcdn.com/image/fetch/$s_!JbfP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab974022-9bce-466c-8223-c5796054c0df_2990x1474.png 848w, https://substackcdn.com/image/fetch/$s_!JbfP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab974022-9bce-466c-8223-c5796054c0df_2990x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!JbfP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab974022-9bce-466c-8223-c5796054c0df_2990x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The full collection of 50+ images organized in FigJam</figcaption></figure></div><p>Not bad, right? I had to explain product management concepts to a class of data science students. I didn&#8217;t want to use boring slides. I didn&#8217;t want to put them to sleep. So, <strong>I decided to make infographics instead.</strong> I admit it isn&#8217;t perfect. I would love to do this live in front of the students. I would love to capture their feedback in real-time like a true facilitator. <strong>It doesn&#8217;t replace that magic of collective intelligence</strong> building up on a whiteboard. But at least the result is visual. <strong>It helps people learn more efficiently.</strong></p><p>I know it&#8217;s in French. I could have translated it into English for this article. But as you might have guessed, I have a slight problem: I&#8217;m addicted to creating these visuals. <strong>I hit the daily generation limits almost every single day.</strong> I often find myself waiting impatiently until 8 PM for the quota to reset. This happens even with the Gemini Pro subscription. Theoretically, <a href="https://support.google.com/gemini/answer/16275805">the plan</a> offers <strong>up to 100 images per day</strong>. But there is a little warning in the description: &#8220;image generation and editing is in high demand. Limits may change.&#8221; And <strong>I reach those limits very quickly.</strong></p><h2>Keep the prompt simple</h2><p>And now, I want to show you exactly how I generated those specific infographics. <strong>Here is the prompt I used</strong> (translated for you):</p><blockquote><p>I&#8217;m preparing a product management training for data scientists. For the presentation, instead of slides, I want you to generate graphic facilitation visuals. I will provide content section by section. I want you to generate a graphic facilitation image to cover all topics in that section.</p><p>Here is the content for this section:</p><p>---</p><p><em>[Here I activate the microphone and dictate all my notes...]</em></p></blockquote><p>There is this <a href="https://www.radicalcuriosity.xyz/p/how-to-create-an-effective-prompt">very interesting article</a> from <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Nicola Mattina&quot;,&quot;id&quot;:3141893,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F367de179-bb41-45bf-9221-8bfaeb531312_2796x2796.jpeg&quot;,&quot;uuid&quot;:&quot;becc02da-c9c5-4931-a35c-edde6a463550&quot;}" data-component-name="MentionToDOM"></span> that gives a <strong>specific method for writing prompts</strong> for Nano Banana Pro. It insists on a strict structure. You must first indicate the work surface. Then you define the layout. Then you list the specific components. Finally, you set the constraints.</p><p>This is excellent advice if you want a very specific, professional result like a comic strip. But honestly? I&#8217;m not that strict. <strong>My prompts are pretty trash.</strong> They are often messy and full of typos because I dictate them. I prefer to keep my prompts simple and open. <strong>I want the system to be creative.</strong> I don&#8217;t want to constrain it too much. I let the AI surprise me.</p><p>Let me share the details of my process with you.</p><h2>Follow this simple process</h2><p>My actual process is much messier:</p><ol><li><p>I start by writing a <strong>short sentence about the visual result I want</strong>, just like I would ask a colleague.</p></li><li><p>Then, I type <strong>three dashes &#8220;---&#8221;</strong> to create a clear separation.</p></li><li><p>After that, <strong>I activate the microphone</strong>. This is where the magic happens. I launch into a monologue for 10 to 15 minutes. I tell the whole story. I explain the context, the nuances, and the details I want to capture. I might ramble a bit, but that density of information helps the model understand the vibe.</p></li><li><p>Once I run out of breath, <strong>I hit send.</strong></p></li></ol><p>Alternative for step 3: Sometimes, instead of activating the microphone, I simply copy-paste <strong>text directly from my documents</strong>. I don't dump the whole file, though. <strong>I am very precise:</strong> I select only the specific paragraphs that I want to see converted into the illustration.</p><p>And here is my secret for dealing with AI randomness. <strong>I open three separate tabs</strong> in my browser. I paste the exact same prompt into all three tabs and hit enter simultaneously. Since these systems are probabilistic, the results are rarely identical. Usually, one image is weird, one is okay, but one is genuinely cool. <strong>I pick the winner and close the other two tabs.</strong></p><p>To prove this, let&#8217;s look at the results for that Inception infographic I shared at the very beginning of this article. <strong>I used the exact same prompt in three different tabs.</strong> Here is what I got:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!B2mj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b818622-2a90-467b-b6ca-4de156856da4_3024x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!B2mj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b818622-2a90-467b-b6ca-4de156856da4_3024x1964.png 424w, https://substackcdn.com/image/fetch/$s_!B2mj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b818622-2a90-467b-b6ca-4de156856da4_3024x1964.png 848w, https://substackcdn.com/image/fetch/$s_!B2mj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b818622-2a90-467b-b6ca-4de156856da4_3024x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!B2mj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b818622-2a90-467b-b6ca-4de156856da4_3024x1964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!B2mj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b818622-2a90-467b-b6ca-4de156856da4_3024x1964.png" width="1456" height="946" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6b818622-2a90-467b-b6ca-4de156856da4_3024x1964.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:946,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2903522,&quot;alt&quot;:&quot;Screenshot of three browser windows side-by-side running the exact same Gemini prompt to compare the different output variations.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/187191446?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b818622-2a90-467b-b6ca-4de156856da4_3024x1964.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of three browser windows side-by-side running the exact same Gemini prompt to compare the different output variations." title="Screenshot of three browser windows side-by-side running the exact same Gemini prompt to compare the different output variations." srcset="https://substackcdn.com/image/fetch/$s_!B2mj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b818622-2a90-467b-b6ca-4de156856da4_3024x1964.png 424w, https://substackcdn.com/image/fetch/$s_!B2mj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b818622-2a90-467b-b6ca-4de156856da4_3024x1964.png 848w, https://substackcdn.com/image/fetch/$s_!B2mj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b818622-2a90-467b-b6ca-4de156856da4_3024x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!B2mj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b818622-2a90-467b-b6ca-4de156856da4_3024x1964.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Same prompt, three tabs, three different results</figcaption></figure></div><p>You can see the difference. One was a bit chaotic (left), one was just meh (right), but the third one (middle) nailed the style. I didn&#8217;t change a single word of the prompt. <strong>I just rolled the dice three times.</strong></p><p>I&#8217;ve found that iterating on a bad image is a waste of time. <strong>If it starts bad, it usually stays bad.</strong> It&#8217;s much more efficient to pick the best seed and continue the conversation in that specific tab. This ensures the style remains consistent for the next set of images.</p><p>So, once I have that cool result, I tell the system, &#8220;Okay, this is great! Can you do the same thing for the next part?&#8221; I put the three dashes &#8220;---&#8221; again, dictate the next piece of content, and <strong>keep the visual style consistent throughout the entire conversation.</strong></p><h2>Visualize your daily work</h2><h3>Create presentation slides</h3><p>My addiction didn&#8217;t stop at colorful workshop posters. I realized I could apply this same lazy method to my daily work. <strong>I started creating presentation slides:</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rXoP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe279066a-5ee8-4f28-8994-67a5efd927b6_2752x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rXoP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe279066a-5ee8-4f28-8994-67a5efd927b6_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!rXoP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe279066a-5ee8-4f28-8994-67a5efd927b6_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!rXoP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe279066a-5ee8-4f28-8994-67a5efd927b6_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!rXoP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe279066a-5ee8-4f28-8994-67a5efd927b6_2752x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rXoP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe279066a-5ee8-4f28-8994-67a5efd927b6_2752x1536.png" width="2752" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e279066a-5ee8-4f28-8994-67a5efd927b6_2752x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:2752,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1027528,&quot;alt&quot;:&quot;A two-part illustration comparing a passive person reading a PDF to an active creator using digital tools.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/187191446?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd26c0b6e-00cf-42eb-8378-4b40a8001047_2752x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A two-part illustration comparing a passive person reading a PDF to an active creator using digital tools." title="A two-part illustration comparing a passive person reading a PDF to an active creator using digital tools." srcset="https://substackcdn.com/image/fetch/$s_!rXoP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe279066a-5ee8-4f28-8994-67a5efd927b6_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!rXoP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe279066a-5ee8-4f28-8994-67a5efd927b6_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!rXoP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe279066a-5ee8-4f28-8994-67a5efd927b6_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!rXoP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe279066a-5ee8-4f28-8994-67a5efd927b6_2752x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Visualizing the shift from passive observation to active creation</figcaption></figure></div><p>I personally love a <strong>high-contrast style</strong>. I ask for simple, black-and-white, graphic visuals. It looks sharp and professional on a big screen. I use the exact same three-tab method here. I dictate the concept of the slide, and I let the model handle the composition. Here is the prompt that generated it:</p><blockquote><p>Create a simple infographic to present this text.</p><p>Style: Minimalist, simple, black and white. Make it look hand-drawn by a human to explain the concept to a non-tech audience. Put it in a rectangle with black borders. Be artistic and professional, not too cartoonish. Not too much text, just the essentials.</p><p>At the bottom, include: &#8220;Adam Faik - theaithinker.com&#8221;</p><p>It will be used in a Google Slide.</p><p>---</p><p><em>[Here I activate the microphone and dictate my notes...]</em></p></blockquote><h3>Illustrate your documentation</h3><p>I also started using this for my <strong>written documentation and articles</strong>. You might have seen this one in my <a href="https://www.theaithinker.com/p/how-to-save-5-hours-a-week-with-gems">previous article</a> about Gems:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yoDy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b37a0f3-287e-40f8-a3b2-5529b4ffb4b5_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yoDy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b37a0f3-287e-40f8-a3b2-5529b4ffb4b5_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!yoDy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b37a0f3-287e-40f8-a3b2-5529b4ffb4b5_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!yoDy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b37a0f3-287e-40f8-a3b2-5529b4ffb4b5_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!yoDy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b37a0f3-287e-40f8-a3b2-5529b4ffb4b5_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yoDy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b37a0f3-287e-40f8-a3b2-5529b4ffb4b5_2816x1536.png" width="2816" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3b37a0f3-287e-40f8-a3b2-5529b4ffb4b5_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:2816,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:506288,&quot;alt&quot;:&quot;A diagram titled \&quot;The Gem Schema\&quot; showing inputs going into a black box and structured outputs coming out.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/187191446?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8103e31-a080-483a-99f9-9c1980cc8878_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A diagram titled &quot;The Gem Schema&quot; showing inputs going into a black box and structured outputs coming out." title="A diagram titled &quot;The Gem Schema&quot; showing inputs going into a black box and structured outputs coming out." srcset="https://substackcdn.com/image/fetch/$s_!yoDy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b37a0f3-287e-40f8-a3b2-5529b4ffb4b5_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!yoDy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b37a0f3-287e-40f8-a3b2-5529b4ffb4b5_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!yoDy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b37a0f3-287e-40f8-a3b2-5529b4ffb4b5_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!yoDy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b37a0f3-287e-40f8-a3b2-5529b4ffb4b5_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">An illustration used in my previous article about Gems</figcaption></figure></div><p>And here is the prompt that generated it:</p><blockquote><p>Create a simple infographic to explain this concept.</p><p>Style: Minimalist, simple, black and white, clear. Hand-drawn style, as if made by a human, to explain the concept to a non-technical audience.</p><p>It will be included in an article.</p><p>---</p><p><em>[Here I copy and paste the part of the article that I want to illustrate&#8230;]</em></p></blockquote><h3>Upgrade your napkin sketches</h3><p>But the absolute coolest trick is the <strong>napkin sketch upgrade</strong>. Sometimes I just need to think with my hands. I draw a terrible sketch in my notebook. It&#8217;s messy, imperfect, and frankly ugly. Then, <strong>I take a photo of it</strong>. I upload it to the chat and simply ask the model to make this clean and professional. The result is great. It keeps the structure of my thought but <strong>applies a professional design layer on top.</strong></p><p>Here is the raw input. As you can see, I am definitely not winning any art awards here:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!w3DF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c7ac1fa-b658-484c-991b-d59c24238a04_1938x1386.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!w3DF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c7ac1fa-b658-484c-991b-d59c24238a04_1938x1386.png 424w, https://substackcdn.com/image/fetch/$s_!w3DF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c7ac1fa-b658-484c-991b-d59c24238a04_1938x1386.png 848w, https://substackcdn.com/image/fetch/$s_!w3DF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c7ac1fa-b658-484c-991b-d59c24238a04_1938x1386.png 1272w, https://substackcdn.com/image/fetch/$s_!w3DF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c7ac1fa-b658-484c-991b-d59c24238a04_1938x1386.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!w3DF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c7ac1fa-b658-484c-991b-d59c24238a04_1938x1386.png" width="1938" height="1386" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6c7ac1fa-b658-484c-991b-d59c24238a04_1938x1386.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1386,&quot;width&quot;:1938,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2323029,&quot;alt&quot;:&quot;A messy, handwritten diagram drawn with pen on a piece of paper showing an \&quot;Agent Core Gateway\&quot; architecture.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/187191446?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9db2479-17e1-4418-a83a-c247e8e4ab1d_1938x1386.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A messy, handwritten diagram drawn with pen on a piece of paper showing an &quot;Agent Core Gateway&quot; architecture." title="A messy, handwritten diagram drawn with pen on a piece of paper showing an &quot;Agent Core Gateway&quot; architecture." srcset="https://substackcdn.com/image/fetch/$s_!w3DF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c7ac1fa-b658-484c-991b-d59c24238a04_1938x1386.png 424w, https://substackcdn.com/image/fetch/$s_!w3DF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c7ac1fa-b658-484c-991b-d59c24238a04_1938x1386.png 848w, https://substackcdn.com/image/fetch/$s_!w3DF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c7ac1fa-b658-484c-991b-d59c24238a04_1938x1386.png 1272w, https://substackcdn.com/image/fetch/$s_!w3DF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c7ac1fa-b658-484c-991b-d59c24238a04_1938x1386.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">My original (and very ugly) hand-drawn sketch</figcaption></figure></div><p>And here is the output. It retained every bit of the structural logic but stripped away the mess:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xE0d!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f23603c-d965-47cc-9c10-a3ae57f00f83_2752x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xE0d!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f23603c-d965-47cc-9c10-a3ae57f00f83_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!xE0d!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f23603c-d965-47cc-9c10-a3ae57f00f83_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!xE0d!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f23603c-d965-47cc-9c10-a3ae57f00f83_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!xE0d!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f23603c-d965-47cc-9c10-a3ae57f00f83_2752x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xE0d!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f23603c-d965-47cc-9c10-a3ae57f00f83_2752x1536.png" width="2752" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8f23603c-d965-47cc-9c10-a3ae57f00f83_2752x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:2752,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:609774,&quot;alt&quot;:&quot;A clean, digital version of the previous handwritten diagram, featuring neat icons and clear text.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/187191446?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35687915-da68-4d24-8841-b139de669c96_2752x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A clean, digital version of the previous handwritten diagram, featuring neat icons and clear text." title="A clean, digital version of the previous handwritten diagram, featuring neat icons and clear text." srcset="https://substackcdn.com/image/fetch/$s_!xE0d!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f23603c-d965-47cc-9c10-a3ae57f00f83_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!xE0d!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f23603c-d965-47cc-9c10-a3ae57f00f83_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!xE0d!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f23603c-d965-47cc-9c10-a3ae57f00f83_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!xE0d!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f23603c-d965-47cc-9c10-a3ae57f00f83_2752x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The professional result generated from the sketch above</figcaption></figure></div><p>I want to prove that this wasn&#8217;t the result of twenty iterations. Here is the actual chat interface showing it happened in a single turn:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BQ7k!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0365a22-dd09-41f5-80a1-43067874bc51_3000x1432.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BQ7k!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0365a22-dd09-41f5-80a1-43067874bc51_3000x1432.png 424w, https://substackcdn.com/image/fetch/$s_!BQ7k!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0365a22-dd09-41f5-80a1-43067874bc51_3000x1432.png 848w, https://substackcdn.com/image/fetch/$s_!BQ7k!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0365a22-dd09-41f5-80a1-43067874bc51_3000x1432.png 1272w, https://substackcdn.com/image/fetch/$s_!BQ7k!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0365a22-dd09-41f5-80a1-43067874bc51_3000x1432.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BQ7k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0365a22-dd09-41f5-80a1-43067874bc51_3000x1432.png" width="1456" height="695" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d0365a22-dd09-41f5-80a1-43067874bc51_3000x1432.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:695,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:655265,&quot;alt&quot;:&quot;Screenshot of the Gemini chat interface showing the uploaded sketch and the immediate clean result below it.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/187191446?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0365a22-dd09-41f5-80a1-43067874bc51_3000x1432.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of the Gemini chat interface showing the uploaded sketch and the immediate clean result below it." title="Screenshot of the Gemini chat interface showing the uploaded sketch and the immediate clean result below it." srcset="https://substackcdn.com/image/fetch/$s_!BQ7k!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0365a22-dd09-41f5-80a1-43067874bc51_3000x1432.png 424w, https://substackcdn.com/image/fetch/$s_!BQ7k!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0365a22-dd09-41f5-80a1-43067874bc51_3000x1432.png 848w, https://substackcdn.com/image/fetch/$s_!BQ7k!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0365a22-dd09-41f5-80a1-43067874bc51_3000x1432.png 1272w, https://substackcdn.com/image/fetch/$s_!BQ7k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0365a22-dd09-41f5-80a1-43067874bc51_3000x1432.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Proof that this was generated in a single chat turn</figcaption></figure></div><p>And if you want to try this yourself, here is the prompt I used to get that result:</p><blockquote><p>Create a simple infographic to explain the concept in the attached image.</p><p>Style: Minimalist, simple, black and white, clear. Use a hand-drawn style, as if made by a human, to explain the concept to a non-technical audience.</p><p>Add icons that make sense for each component. Clean up the layout with a perfect white background. Ensure the diagram is perfectly horizontal and centered.</p><p>It will be included in an article.</p></blockquote><h2>Explore a product case study</h2><p>One last thing I did recently really sparked this whole experiment. I had to present a product strategy, and instead of a boring doc, I wrote it as a newspaper article from the future. It aligned stakeholders on the target vision. Since it&#8217;s confidential, I can&#8217;t share it here. But it made me think: <strong>How about using Nano Banana Pro for all the other visual artifacts product managers and designers need to do for their work?</strong></p><p>That&#8217;s when I asked Gemini to <strong>list every possible visual artifact a product manager might need.</strong> The list was absolutely massive. I honestly had forgotten half of the things we are supposed to visualize. Here is the prompt I used to uncover that list (feel free to prompt it):</p><blockquote><p>Product managers and designers often need to create visual artifacts: storyboards to explain flow, diagrams for workshops, prototypes, sketches, or even slides for training and communication.</p><p>Can you please list all the graphical assets that product managers and designers might need to create?</p><p>Group them by themes.</p><p>Be creative. For example, include things like a newspaper from the future to explain a product vision in a realistic way.</p></blockquote><p>I wanted to test them all, but I ran into those pesky daily limits again. So, specifically for this article, I decided to <strong>narrow it down to one case study.</strong> I needed a product that everyone knows and a feature that is instantly understandable, so we don&#8217;t get bogged down in explaining the business context. Let&#8217;s pretend we are product managers at Netflix. We are working on a new feature called: <strong>random shuffle.</strong></p><p>Imagine a user persona we all know very well. Let&#8217;s call him tired Tom. He has a few sitcoms he loves (Friends, The Office, How I Met). He has seen them a dozen times. He comes home from work, exhausted. He doesn&#8217;t want to decide. He doesn&#8217;t want to scroll. He just wants to <strong>click one button and have an episode start by magic.</strong></p><h3>Experiment with NotebookLM</h3><p>First, I tried a quick and fun experiment. I asked Gemini to write a PRD for this feature. I exported it to Google Docs and <strong>imported it into NotebookLM</strong>. Then, I asked NotebookLM to generate the infographics directly.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kj4Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47dbb166-1628-4fb3-9558-8f5b774cd3c4_2990x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kj4Y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47dbb166-1628-4fb3-9558-8f5b774cd3c4_2990x1474.png 424w, https://substackcdn.com/image/fetch/$s_!kj4Y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47dbb166-1628-4fb3-9558-8f5b774cd3c4_2990x1474.png 848w, https://substackcdn.com/image/fetch/$s_!kj4Y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47dbb166-1628-4fb3-9558-8f5b774cd3c4_2990x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!kj4Y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47dbb166-1628-4fb3-9558-8f5b774cd3c4_2990x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kj4Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47dbb166-1628-4fb3-9558-8f5b774cd3c4_2990x1474.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/47dbb166-1628-4fb3-9558-8f5b774cd3c4_2990x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:718,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:550357,&quot;alt&quot;:&quot;Screenshot of NotebookLM showing a document titled \&quot;Netflix Sitcom Shuffle PRD\&quot; and the studio panel on the right with an \&quot;Infographic\&quot; button.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/187191446?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47dbb166-1628-4fb3-9558-8f5b774cd3c4_2990x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of NotebookLM showing a document titled &quot;Netflix Sitcom Shuffle PRD&quot; and the studio panel on the right with an &quot;Infographic&quot; button." title="Screenshot of NotebookLM showing a document titled &quot;Netflix Sitcom Shuffle PRD&quot; and the studio panel on the right with an &quot;Infographic&quot; button." srcset="https://substackcdn.com/image/fetch/$s_!kj4Y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47dbb166-1628-4fb3-9558-8f5b774cd3c4_2990x1474.png 424w, https://substackcdn.com/image/fetch/$s_!kj4Y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47dbb166-1628-4fb3-9558-8f5b774cd3c4_2990x1474.png 848w, https://substackcdn.com/image/fetch/$s_!kj4Y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47dbb166-1628-4fb3-9558-8f5b774cd3c4_2990x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!kj4Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47dbb166-1628-4fb3-9558-8f5b774cd3c4_2990x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The NotebookLM workspace showing the PRD source</figcaption></figure></div><p><strong>Pro-tip:</strong> Just before generating, <strong>I clicked the little pencil icon</strong> to give specific instructions:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nbdY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7572dc8f-01f4-4a35-81dd-57420b669d2d_2990x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nbdY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7572dc8f-01f4-4a35-81dd-57420b669d2d_2990x1474.png 424w, https://substackcdn.com/image/fetch/$s_!nbdY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7572dc8f-01f4-4a35-81dd-57420b669d2d_2990x1474.png 848w, https://substackcdn.com/image/fetch/$s_!nbdY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7572dc8f-01f4-4a35-81dd-57420b669d2d_2990x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!nbdY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7572dc8f-01f4-4a35-81dd-57420b669d2d_2990x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nbdY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7572dc8f-01f4-4a35-81dd-57420b669d2d_2990x1474.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7572dc8f-01f4-4a35-81dd-57420b669d2d_2990x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:718,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:439648,&quot;alt&quot;:&quot;Screenshot of a modal window in NotebookLM where the user is typing specific instructions to describe the desired infographic.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/187191446?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7572dc8f-01f4-4a35-81dd-57420b669d2d_2990x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of a modal window in NotebookLM where the user is typing specific instructions to describe the desired infographic." title="Screenshot of a modal window in NotebookLM where the user is typing specific instructions to describe the desired infographic." srcset="https://substackcdn.com/image/fetch/$s_!nbdY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7572dc8f-01f4-4a35-81dd-57420b669d2d_2990x1474.png 424w, https://substackcdn.com/image/fetch/$s_!nbdY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7572dc8f-01f4-4a35-81dd-57420b669d2d_2990x1474.png 848w, https://substackcdn.com/image/fetch/$s_!nbdY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7572dc8f-01f4-4a35-81dd-57420b669d2d_2990x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!nbdY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7572dc8f-01f4-4a35-81dd-57420b669d2d_2990x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Adding custom instructions before generating the infographic</figcaption></figure></div><p>The results were surprisingly decent. For each example below, I have included the <strong>short custom prompt I added to customize the infographic.</strong> Here are some cool examples:</p><blockquote><p>Step-by-step visual guide for onboarding new users.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RQ4L!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3bb0ebe-b2f2-4640-a8a8-4c07373b7290_2752x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RQ4L!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3bb0ebe-b2f2-4640-a8a8-4c07373b7290_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!RQ4L!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3bb0ebe-b2f2-4640-a8a8-4c07373b7290_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!RQ4L!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3bb0ebe-b2f2-4640-a8a8-4c07373b7290_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!RQ4L!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3bb0ebe-b2f2-4640-a8a8-4c07373b7290_2752x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RQ4L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3bb0ebe-b2f2-4640-a8a8-4c07373b7290_2752x1536.png" width="1456" height="813" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d3bb0ebe-b2f2-4640-a8a8-4c07373b7290_2752x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:813,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5992850,&quot;alt&quot;:&quot;An infographic illustrating the 3-step process to use \&quot;Sitcom Shuffle,\&quot; from clicking the button to leaning back and watching.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/187191446?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3bb0ebe-b2f2-4640-a8a8-4c07373b7290_2752x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="An infographic illustrating the 3-step process to use &quot;Sitcom Shuffle,&quot; from clicking the button to leaning back and watching." title="An infographic illustrating the 3-step process to use &quot;Sitcom Shuffle,&quot; from clicking the button to leaning back and watching." srcset="https://substackcdn.com/image/fetch/$s_!RQ4L!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3bb0ebe-b2f2-4640-a8a8-4c07373b7290_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!RQ4L!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3bb0ebe-b2f2-4640-a8a8-4c07373b7290_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!RQ4L!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3bb0ebe-b2f2-4640-a8a8-4c07373b7290_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!RQ4L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3bb0ebe-b2f2-4640-a8a8-4c07373b7290_2752x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A step-by-step visual guide for onboarding new users to the feature</figcaption></figure></div><blockquote><p>The newspaper from the future: A realistic front-page layout dated 3-5 years in the future, featuring headlines about the product&#8217;s massive success. Great for setting a bold vision.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TXYJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad551b14-cc81-49a9-80b2-19659e47205d_2752x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TXYJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad551b14-cc81-49a9-80b2-19659e47205d_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!TXYJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad551b14-cc81-49a9-80b2-19659e47205d_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!TXYJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad551b14-cc81-49a9-80b2-19659e47205d_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!TXYJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad551b14-cc81-49a9-80b2-19659e47205d_2752x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TXYJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad551b14-cc81-49a9-80b2-19659e47205d_2752x1536.png" width="1456" height="813" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ad551b14-cc81-49a9-80b2-19659e47205d_2752x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:813,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:7131095,&quot;alt&quot;:&quot;A realistic fake newspaper front page titled \&quot;The Streaming Times\&quot; with headlines about how Sitcom Shuffle saved streaming.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/187191446?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad551b14-cc81-49a9-80b2-19659e47205d_2752x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A realistic fake newspaper front page titled &quot;The Streaming Times&quot; with headlines about how Sitcom Shuffle saved streaming." title="A realistic fake newspaper front page titled &quot;The Streaming Times&quot; with headlines about how Sitcom Shuffle saved streaming." srcset="https://substackcdn.com/image/fetch/$s_!TXYJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad551b14-cc81-49a9-80b2-19659e47205d_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!TXYJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad551b14-cc81-49a9-80b2-19659e47205d_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!TXYJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad551b14-cc81-49a9-80b2-19659e47205d_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!TXYJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad551b14-cc81-49a9-80b2-19659e47205d_2752x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The newspaper from the future celebrating the feature&#8217;s massive success</figcaption></figure></div><blockquote><p>Business model canvas: A visual chart with elements describing a product&#8217;s value proposition, infrastructure, customers, and finances.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WV1h!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F641cd7df-0f52-4892-ba53-6e960eac7282_2752x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WV1h!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F641cd7df-0f52-4892-ba53-6e960eac7282_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!WV1h!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F641cd7df-0f52-4892-ba53-6e960eac7282_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!WV1h!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F641cd7df-0f52-4892-ba53-6e960eac7282_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!WV1h!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F641cd7df-0f52-4892-ba53-6e960eac7282_2752x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WV1h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F641cd7df-0f52-4892-ba53-6e960eac7282_2752x1536.png" width="1456" height="813" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/641cd7df-0f52-4892-ba53-6e960eac7282_2752x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:813,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5956261,&quot;alt&quot;:&quot;A structured chart organizing the product strategy into columns for Value Proposition, Infrastructure, Customers, and Finances.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/187191446?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F641cd7df-0f52-4892-ba53-6e960eac7282_2752x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A structured chart organizing the product strategy into columns for Value Proposition, Infrastructure, Customers, and Finances." title="A structured chart organizing the product strategy into columns for Value Proposition, Infrastructure, Customers, and Finances." srcset="https://substackcdn.com/image/fetch/$s_!WV1h!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F641cd7df-0f52-4892-ba53-6e960eac7282_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!WV1h!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F641cd7df-0f52-4892-ba53-6e960eac7282_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!WV1h!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F641cd7df-0f52-4892-ba53-6e960eac7282_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!WV1h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F641cd7df-0f52-4892-ba53-6e960eac7282_2752x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A Business Model Canvas breaking down value, segments, and metrics</figcaption></figure></div><blockquote><p>The north star slide: A single, high-impact graphic that simplifies the complex strategy into one memorable image or metric visualization.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VrZF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0e985f8-3e9a-4891-9e06-4a37f3dffd31_2752x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VrZF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0e985f8-3e9a-4891-9e06-4a37f3dffd31_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!VrZF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0e985f8-3e9a-4891-9e06-4a37f3dffd31_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!VrZF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0e985f8-3e9a-4891-9e06-4a37f3dffd31_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!VrZF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0e985f8-3e9a-4891-9e06-4a37f3dffd31_2752x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VrZF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0e985f8-3e9a-4891-9e06-4a37f3dffd31_2752x1536.png" width="1456" height="813" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e0e985f8-3e9a-4891-9e06-4a37f3dffd31_2752x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:813,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:7129437,&quot;alt&quot;:&quot;A high-contrast slide comparing the \&quot;Friction of Choice\&quot; (sad user) with the \&quot;Solution &amp; Impact\&quot; (happy user) and a -40% playback time metric.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/187191446?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0e985f8-3e9a-4891-9e06-4a37f3dffd31_2752x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A high-contrast slide comparing the &quot;Friction of Choice&quot; (sad user) with the &quot;Solution &amp; Impact&quot; (happy user) and a -40% playback time metric." title="A high-contrast slide comparing the &quot;Friction of Choice&quot; (sad user) with the &quot;Solution &amp; Impact&quot; (happy user) and a -40% playback time metric." srcset="https://substackcdn.com/image/fetch/$s_!VrZF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0e985f8-3e9a-4891-9e06-4a37f3dffd31_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!VrZF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0e985f8-3e9a-4891-9e06-4a37f3dffd31_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!VrZF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0e985f8-3e9a-4891-9e06-4a37f3dffd31_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!VrZF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0e985f8-3e9a-4891-9e06-4a37f3dffd31_2752x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The north star slide simplifying the strategy into one high-impact visual</figcaption></figure></div><blockquote><p>Empathy maps: Visual quadrants (Says, Thinks, Does, Feels) often filled with sticky notes or sketches of user reactions.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5NDK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82fc399b-abf8-4c39-824f-ab73d78b78cf_2752x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5NDK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82fc399b-abf8-4c39-824f-ab73d78b78cf_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!5NDK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82fc399b-abf8-4c39-824f-ab73d78b78cf_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!5NDK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82fc399b-abf8-4c39-824f-ab73d78b78cf_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!5NDK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82fc399b-abf8-4c39-824f-ab73d78b78cf_2752x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5NDK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82fc399b-abf8-4c39-824f-ab73d78b78cf_2752x1536.png" width="1456" height="813" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/82fc399b-abf8-4c39-824f-ab73d78b78cf_2752x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:813,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5976032,&quot;alt&quot;:&quot;A diagram with four sticky-note quadrants (Says, Does, Thinks, Feels) describing a tired user who just wants background noise.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/187191446?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82fc399b-abf8-4c39-824f-ab73d78b78cf_2752x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A diagram with four sticky-note quadrants (Says, Does, Thinks, Feels) describing a tired user who just wants background noise." title="A diagram with four sticky-note quadrants (Says, Does, Thinks, Feels) describing a tired user who just wants background noise." srcset="https://substackcdn.com/image/fetch/$s_!5NDK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82fc399b-abf8-4c39-824f-ab73d78b78cf_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!5NDK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82fc399b-abf8-4c39-824f-ab73d78b78cf_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!5NDK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82fc399b-abf8-4c39-824f-ab73d78b78cf_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!5NDK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82fc399b-abf8-4c39-824f-ab73d78b78cf_2752x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">User empathy map visualizing the analysis paralysis pain point</figcaption></figure></div><blockquote><p>Customer journey maps: A timeline visualization showing the user&#8217;s emotional highs and lows, touchpoints, and friction areas across the experience.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6lm1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18820332-70a4-4796-aaaf-83d763716c79_2752x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6lm1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18820332-70a4-4796-aaaf-83d763716c79_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!6lm1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18820332-70a4-4796-aaaf-83d763716c79_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!6lm1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18820332-70a4-4796-aaaf-83d763716c79_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!6lm1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18820332-70a4-4796-aaaf-83d763716c79_2752x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6lm1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18820332-70a4-4796-aaaf-83d763716c79_2752x1536.png" width="1456" height="813" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/18820332-70a4-4796-aaaf-83d763716c79_2752x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:813,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:6413728,&quot;alt&quot;:&quot;A timeline visualization showing the user's emotional dip during manual browsing versus the emotional high of using the Shuffle button.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/187191446?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18820332-70a4-4796-aaaf-83d763716c79_2752x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A timeline visualization showing the user's emotional dip during manual browsing versus the emotional high of using the Shuffle button." title="A timeline visualization showing the user's emotional dip during manual browsing versus the emotional high of using the Shuffle button." srcset="https://substackcdn.com/image/fetch/$s_!6lm1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18820332-70a4-4796-aaaf-83d763716c79_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!6lm1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18820332-70a4-4796-aaaf-83d763716c79_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!6lm1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18820332-70a4-4796-aaaf-83d763716c79_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!6lm1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18820332-70a4-4796-aaaf-83d763716c79_2752x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Customer journey map contrasting the scroll spiral with the instant comfort path</figcaption></figure></div><blockquote><p>Mood boards: Collages of textures, colors, interface examples, and photography to define the emotional feel of the product.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!T6N5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed76ddcb-8544-4a92-a430-6e09008cce28_2752x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!T6N5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed76ddcb-8544-4a92-a430-6e09008cce28_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!T6N5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed76ddcb-8544-4a92-a430-6e09008cce28_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!T6N5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed76ddcb-8544-4a92-a430-6e09008cce28_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!T6N5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed76ddcb-8544-4a92-a430-6e09008cce28_2752x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!T6N5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed76ddcb-8544-4a92-a430-6e09008cce28_2752x1536.png" width="1456" height="813" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ed76ddcb-8544-4a92-a430-6e09008cce28_2752x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:813,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:6949473,&quot;alt&quot;:&quot;A collage-style graphic contrasting chaotic images of stressed users with cozy, warm images of couples watching TV.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/187191446?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed76ddcb-8544-4a92-a430-6e09008cce28_2752x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A collage-style graphic contrasting chaotic images of stressed users with cozy, warm images of couples watching TV." title="A collage-style graphic contrasting chaotic images of stressed users with cozy, warm images of couples watching TV." srcset="https://substackcdn.com/image/fetch/$s_!T6N5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed76ddcb-8544-4a92-a430-6e09008cce28_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!T6N5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed76ddcb-8544-4a92-a430-6e09008cce28_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!T6N5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed76ddcb-8544-4a92-a430-6e09008cce28_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!T6N5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed76ddcb-8544-4a92-a430-6e09008cce28_2752x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A mood board capturing the emotional shift from frustration to relaxation</figcaption></figure></div><blockquote><p>Crazy 8s and concept sketches: Rapid, rough hand-drawn UI concepts folded into eight sections of a paper.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-845!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F460805ae-b66f-4c27-ac7c-4e9cbf9416b9_2752x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-845!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F460805ae-b66f-4c27-ac7c-4e9cbf9416b9_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!-845!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F460805ae-b66f-4c27-ac7c-4e9cbf9416b9_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!-845!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F460805ae-b66f-4c27-ac7c-4e9cbf9416b9_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!-845!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F460805ae-b66f-4c27-ac7c-4e9cbf9416b9_2752x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-845!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F460805ae-b66f-4c27-ac7c-4e9cbf9416b9_2752x1536.png" width="1456" height="813" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/460805ae-b66f-4c27-ac7c-4e9cbf9416b9_2752x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:813,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:6614401,&quot;alt&quot;:&quot;A sheet of paper folded into eight sections, each containing rough hand-drawn concepts for the Netflix interface and user personas.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/187191446?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F460805ae-b66f-4c27-ac7c-4e9cbf9416b9_2752x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A sheet of paper folded into eight sections, each containing rough hand-drawn concepts for the Netflix interface and user personas." title="A sheet of paper folded into eight sections, each containing rough hand-drawn concepts for the Netflix interface and user personas." srcset="https://substackcdn.com/image/fetch/$s_!-845!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F460805ae-b66f-4c27-ac7c-4e9cbf9416b9_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!-845!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F460805ae-b66f-4c27-ac7c-4e9cbf9416b9_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!-845!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F460805ae-b66f-4c27-ac7c-4e9cbf9416b9_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!-845!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F460805ae-b66f-4c27-ac7c-4e9cbf9416b9_2752x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Crazy 8s concept sketches exploring different UI and logic angles</figcaption></figure></div><blockquote><p>Storyboards: Comic-strip style sketches illustrating a user&#8217;s specific problem (current state) or how they use the new solution (future state).</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SNeM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f381963-180e-4a43-8424-0c8d019f6745_2752x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SNeM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f381963-180e-4a43-8424-0c8d019f6745_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!SNeM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f381963-180e-4a43-8424-0c8d019f6745_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!SNeM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f381963-180e-4a43-8424-0c8d019f6745_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!SNeM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f381963-180e-4a43-8424-0c8d019f6745_2752x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SNeM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f381963-180e-4a43-8424-0c8d019f6745_2752x1536.png" width="1456" height="813" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2f381963-180e-4a43-8424-0c8d019f6745_2752x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:813,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:7407001,&quot;alt&quot;:&quot;A split-screen comic showing a exhausted girl browsing Netflix at 11 PM versus a happy girl watching instantly with one click.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/187191446?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f381963-180e-4a43-8424-0c8d019f6745_2752x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A split-screen comic showing a exhausted girl browsing Netflix at 11 PM versus a happy girl watching instantly with one click." title="A split-screen comic showing a exhausted girl browsing Netflix at 11 PM versus a happy girl watching instantly with one click." srcset="https://substackcdn.com/image/fetch/$s_!SNeM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f381963-180e-4a43-8424-0c8d019f6745_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!SNeM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f381963-180e-4a43-8424-0c8d019f6745_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!SNeM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f381963-180e-4a43-8424-0c8d019f6745_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!SNeM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f381963-180e-4a43-8424-0c8d019f6745_2752x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A comic-strip storyboard illustrating the before vs. after user experience</figcaption></figure></div><blockquote><p>Mind Maps: Branching diagrams to organize thoughts, feature sets, or information architecture.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GYM0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50ccfa23-cebb-4a31-8f6d-4b74347d1a55_2752x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GYM0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50ccfa23-cebb-4a31-8f6d-4b74347d1a55_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!GYM0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50ccfa23-cebb-4a31-8f6d-4b74347d1a55_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!GYM0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50ccfa23-cebb-4a31-8f6d-4b74347d1a55_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!GYM0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50ccfa23-cebb-4a31-8f6d-4b74347d1a55_2752x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GYM0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50ccfa23-cebb-4a31-8f6d-4b74347d1a55_2752x1536.png" width="1456" height="813" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/50ccfa23-cebb-4a31-8f6d-4b74347d1a55_2752x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:813,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:6117073,&quot;alt&quot;:&quot;A central node labeled \&quot;Sitcom Shuffle\&quot; with colorful branches connecting to User Personas, System Architecture, and Success Metrics.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/187191446?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50ccfa23-cebb-4a31-8f6d-4b74347d1a55_2752x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A central node labeled &quot;Sitcom Shuffle&quot; with colorful branches connecting to User Personas, System Architecture, and Success Metrics." title="A central node labeled &quot;Sitcom Shuffle&quot; with colorful branches connecting to User Personas, System Architecture, and Success Metrics." srcset="https://substackcdn.com/image/fetch/$s_!GYM0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50ccfa23-cebb-4a31-8f6d-4b74347d1a55_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!GYM0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50ccfa23-cebb-4a31-8f6d-4b74347d1a55_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!GYM0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50ccfa23-cebb-4a31-8f6d-4b74347d1a55_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!GYM0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50ccfa23-cebb-4a31-8f6d-4b74347d1a55_2752x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A mind map organizing the feature&#8217;s architecture and strategic pillars</figcaption></figure></div><blockquote><p>Mockups (Hi-Fi): Pixel-perfect static representations of the final design, including color, typography, and imagery.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cmT-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5ccfa24-5c32-46ff-bf59-f9786f533c17_2752x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cmT-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5ccfa24-5c32-46ff-bf59-f9786f533c17_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!cmT-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5ccfa24-5c32-46ff-bf59-f9786f533c17_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!cmT-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5ccfa24-5c32-46ff-bf59-f9786f533c17_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!cmT-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5ccfa24-5c32-46ff-bf59-f9786f533c17_2752x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cmT-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5ccfa24-5c32-46ff-bf59-f9786f533c17_2752x1536.png" width="1456" height="813" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d5ccfa24-5c32-46ff-bf59-f9786f533c17_2752x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:813,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5906374,&quot;alt&quot;:&quot;A detailed infographic combining the user problem, the specific feature logic, and the final success metrics into one single view.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/187191446?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5ccfa24-5c32-46ff-bf59-f9786f533c17_2752x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A detailed infographic combining the user problem, the specific feature logic, and the final success metrics into one single view." title="A detailed infographic combining the user problem, the specific feature logic, and the final success metrics into one single view." srcset="https://substackcdn.com/image/fetch/$s_!cmT-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5ccfa24-5c32-46ff-bf59-f9786f533c17_2752x1536.png 424w, https://substackcdn.com/image/fetch/$s_!cmT-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5ccfa24-5c32-46ff-bf59-f9786f533c17_2752x1536.png 848w, https://substackcdn.com/image/fetch/$s_!cmT-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5ccfa24-5c32-46ff-bf59-f9786f533c17_2752x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!cmT-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5ccfa24-5c32-46ff-bf59-f9786f533c17_2752x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The comprehensive one-pager summary of the entire strategy</figcaption></figure></div><p>Honestly, it&#8217;s amazing all the things you can get from just one single PRD. I generated a ton of other visuals, and t<strong>he creativity of the designs is genuinely interesting</strong>. Sometimes it follows the Netflix visual identity, and other times it goes in a completely different direction. But you can clearly see the power here at least for <strong>finding new inspiration</strong>. If you want to explore all the results yourself:</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://notebooklm.google.com/notebook/c134df52-1f2d-4deb-b5cd-bfb653c9c231?authuser=1&quot;,&quot;text&quot;:&quot;Access the NotebookLM&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://notebooklm.google.com/notebook/c134df52-1f2d-4deb-b5cd-bfb653c9c231?authuser=1"><span>Access the NotebookLM</span></a></p><p>However, NotebookLM has certain limitations:</p><ol><li><p>Once you get a style you love, it&#8217;s hard to tell NotebookLM to <strong>do the exact same style again for the next image.</strong> You might need to download the image and re-upload it as a source to guide it.</p></li><li><p>NotebookLM is <strong>very creative</strong>. I would use it for <strong>vision</strong> work, things that are long-term, flexible, or inspiring. But I would not use it if I need something extremely precise or truthful. NotebookLM has a <strong>tendency to extrapolate</strong>.</p></li></ol><p>This brings me to an important point: Y<strong>ou really need to master your subject matter</strong> to use NotebookLM studio effectively and share the results. You have to review the output with <strong>extreme care.</strong> Otherwise, you risk being fooled by a result that looks convincing but is factually wrong.</p><p>I didn&#8217;t push this specific experiment to its absolute limit, but I&#8217;m sure there is a way to get incredible results with more detailed instructions. You could, for instance, <strong>upload <a href="https://www.nngroup.com/articles/">NN/g guides</a> as sources</strong> to teach the model best practices, or add more project documentation to provide richer context. <strong>The potential to have fun here is huge.</strong> But for now, let&#8217;s get back to Gemini, mostly because I personally love those little black-and-white, hand-made graphic facilitation sketches.</p><h3>Visualize the product vision</h3><p>Remember that newspaper from the future strategy I mentioned earlier? Let&#8217;s apply that exact technique here for this Netflix feature. Think of this as the <strong>Amazon press release method,</strong> but visual. <strong>It aligns stakeholders</strong> on the ultimate victory state before writing a single line of code.</p><p>I didn&#8217;t just ask for an image out of nowhere. I went back to my PRD conversation and asked Gemini to <strong>write the text of a 2027 press release first.</strong> Then, I took that text, opened a fresh chat, and used the following prompt to generate the artifact.</p><blockquote><p>Act as a product manager at Netflix working on the new random shuffle feature.</p><p>Create a motivating newspaper front page from the future (like a press release) to show how this feature is a massive hit and how it helps people.</p><p>Goal: Make it motivating. Show the value of the feature and how it fits our strategy.</p><p>Visuals: Ensure the image is positive.</p><p>Text: I want to be able to read the headlines clearly to share this with stakeholders.</p><p>Use the context we just discussed regarding the PRD to fill in the details.</p><p>---</p><p><em>[Here I copied and pasted the text from the generated article&#8230;]</em></p></blockquote><p>The result:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zqVg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf8a7d11-1dda-4ba4-8e66-b579ce30145f_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zqVg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf8a7d11-1dda-4ba4-8e66-b579ce30145f_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!zqVg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf8a7d11-1dda-4ba4-8e66-b579ce30145f_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!zqVg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf8a7d11-1dda-4ba4-8e66-b579ce30145f_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!zqVg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf8a7d11-1dda-4ba4-8e66-b579ce30145f_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zqVg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf8a7d11-1dda-4ba4-8e66-b579ce30145f_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bf8a7d11-1dda-4ba4-8e66-b579ce30145f_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:8340740,&quot;alt&quot;:&quot;A realistic photo of a newspaper on a table with the headline \&quot;How 'Shuffle' Brought the Magic Back\&quot; and a picture of a laughing user.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/187191446?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf8a7d11-1dda-4ba4-8e66-b579ce30145f_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A realistic photo of a newspaper on a table with the headline &quot;How 'Shuffle' Brought the Magic Back&quot; and a picture of a laughing user." title="A realistic photo of a newspaper on a table with the headline &quot;How 'Shuffle' Brought the Magic Back&quot; and a picture of a laughing user." srcset="https://substackcdn.com/image/fetch/$s_!zqVg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf8a7d11-1dda-4ba4-8e66-b579ce30145f_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!zqVg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf8a7d11-1dda-4ba4-8e66-b579ce30145f_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!zqVg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf8a7d11-1dda-4ba4-8e66-b579ce30145f_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!zqVg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf8a7d11-1dda-4ba4-8e66-b579ce30145f_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A 2027 newspaper article celebrating the renaissance of Relaxation</figcaption></figure></div><p>It sets the tone immediately. But a vision is just a dream without execution. Let&#8217;s leave the high-level strategy and <strong>get down to the details of the UX. </strong>Remember that massive list of visual artifacts I asked for earlier? <strong>I decided to build some of them.</strong> But here is where I got really lazy, in the best way possible.</p><p>I already had a conversation open where Gemini had written the PRD for the Netflix feature. It knew everything: the user personas, the pain points, the roadmap. Instead of re-explaining all of that or recording new voice notes, I just <strong>asked Gemini to generate the text content</strong> for each artifact in that original thread.</p><blockquote><p>Generate the text for a Netflix empathy map.</p></blockquote><blockquote><p>Generate the text for a 12-month roadmap.</p></blockquote><p>Then, I simply copied that text and pasted it into my visual generator tabs. I used the exact same <strong>3-tab rule</strong>, but instead of my voice, I used Gemini&#8217;s own output as the context.</p><h3>Create minimalist diagrams</h3><p>Let&#8217;s start with the clean, black and white, hand-drawn style.</p><blockquote><p>Can you please create a simple infographic to explain this concept.</p><p>Style: Minimalist, simple, black and white, white background, clear. Hand-made like made by a human to explain the concept.</p><p>Will be included in an article.</p><p>---</p><p><em>[Here I copied and pasted the text from the PRD conversation&#8230;]</em></p></blockquote><p>For the subsequent images, I just typed in the same conversation:</p><blockquote><p><em>Nice! Same for the next part:</em></p><p><em>---</em></p><p><em>[Next chunk of text&#8230;]</em></p></blockquote><p>Here are the results:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sW8m!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91a5228a-3d7e-494b-bddb-065a2aa9cb2e_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sW8m!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91a5228a-3d7e-494b-bddb-065a2aa9cb2e_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!sW8m!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91a5228a-3d7e-494b-bddb-065a2aa9cb2e_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!sW8m!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91a5228a-3d7e-494b-bddb-065a2aa9cb2e_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!sW8m!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91a5228a-3d7e-494b-bddb-065a2aa9cb2e_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sW8m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91a5228a-3d7e-494b-bddb-065a2aa9cb2e_2816x1536.png" width="2816" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/91a5228a-3d7e-494b-bddb-065a2aa9cb2e_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:2816,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1092500,&quot;alt&quot;:&quot;A split-panel drawing comparing a stressed user scrolling endlessly versus a happy user laughing after clicking a single button.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/187191446?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fade7e171-9b4b-456d-9f72-fb2655bbabc8_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A split-panel drawing comparing a stressed user scrolling endlessly versus a happy user laughing after clicking a single button." title="A split-panel drawing comparing a stressed user scrolling endlessly versus a happy user laughing after clicking a single button." srcset="https://substackcdn.com/image/fetch/$s_!sW8m!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91a5228a-3d7e-494b-bddb-065a2aa9cb2e_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!sW8m!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91a5228a-3d7e-494b-bddb-065a2aa9cb2e_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!sW8m!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91a5228a-3d7e-494b-bddb-065a2aa9cb2e_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!sW8m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91a5228a-3d7e-494b-bddb-065a2aa9cb2e_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A sketch contrasting the pain of scrolling with the joy of one-click playback</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!umIu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ab6d03-724b-4bf1-9a81-c869421fa53f_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!umIu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ab6d03-724b-4bf1-9a81-c869421fa53f_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!umIu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ab6d03-724b-4bf1-9a81-c869421fa53f_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!umIu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ab6d03-724b-4bf1-9a81-c869421fa53f_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!umIu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ab6d03-724b-4bf1-9a81-c869421fa53f_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!umIu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ab6d03-724b-4bf1-9a81-c869421fa53f_2816x1536.png" width="2816" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/70ab6d03-724b-4bf1-9a81-c869421fa53f_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:2816,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1052190,&quot;alt&quot;:&quot;Three character sketches illustrating the \&quot;Lunch Breaker,\&quot; \&quot;Anxious Scroller,\&quot; and \&quot;Background Tasker\&quot; personas.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/187191446?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaebed92-c3c1-4d7a-a3cc-5f5df0a62b5e_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Three character sketches illustrating the &quot;Lunch Breaker,&quot; &quot;Anxious Scroller,&quot; and &quot;Background Tasker&quot; personas." title="Three character sketches illustrating the &quot;Lunch Breaker,&quot; &quot;Anxious Scroller,&quot; and &quot;Background Tasker&quot; personas." srcset="https://substackcdn.com/image/fetch/$s_!umIu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ab6d03-724b-4bf1-9a81-c869421fa53f_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!umIu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ab6d03-724b-4bf1-9a81-c869421fa53f_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!umIu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ab6d03-724b-4bf1-9a81-c869421fa53f_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!umIu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ab6d03-724b-4bf1-9a81-c869421fa53f_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Defining the three specific personas who suffer most from decision fatigue</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VJ4I!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f072ec1-26f6-4d2e-9b4d-95fe9cc9f5ad_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VJ4I!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f072ec1-26f6-4d2e-9b4d-95fe9cc9f5ad_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!VJ4I!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f072ec1-26f6-4d2e-9b4d-95fe9cc9f5ad_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!VJ4I!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f072ec1-26f6-4d2e-9b4d-95fe9cc9f5ad_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!VJ4I!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f072ec1-26f6-4d2e-9b4d-95fe9cc9f5ad_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VJ4I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f072ec1-26f6-4d2e-9b4d-95fe9cc9f5ad_2816x1536.png" width="2816" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1f072ec1-26f6-4d2e-9b4d-95fe9cc9f5ad_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:2816,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:916468,&quot;alt&quot;:&quot;A hand-drawn chart listing Adoption Rate, Session Length, and Abandonment Rate as the primary metrics.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/187191446?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbfafba0c-8f3c-4d9f-9959-baecca494e25_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A hand-drawn chart listing Adoption Rate, Session Length, and Abandonment Rate as the primary metrics." title="A hand-drawn chart listing Adoption Rate, Session Length, and Abandonment Rate as the primary metrics." srcset="https://substackcdn.com/image/fetch/$s_!VJ4I!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f072ec1-26f6-4d2e-9b4d-95fe9cc9f5ad_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!VJ4I!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f072ec1-26f6-4d2e-9b4d-95fe9cc9f5ad_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!VJ4I!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f072ec1-26f6-4d2e-9b4d-95fe9cc9f5ad_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!VJ4I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f072ec1-26f6-4d2e-9b4d-95fe9cc9f5ad_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The three key KPIs we need to track to measure success</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ny6U!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d64dadf-3028-4203-8e3d-c54a6dc16827_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ny6U!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d64dadf-3028-4203-8e3d-c54a6dc16827_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!Ny6U!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d64dadf-3028-4203-8e3d-c54a6dc16827_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!Ny6U!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d64dadf-3028-4203-8e3d-c54a6dc16827_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!Ny6U!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d64dadf-3028-4203-8e3d-c54a6dc16827_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ny6U!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d64dadf-3028-4203-8e3d-c54a6dc16827_2816x1536.png" width="2816" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3d64dadf-3028-4203-8e3d-c54a6dc16827_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:2816,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1142076,&quot;alt&quot;:&quot;An 8-panel storyboard showing a user going from \&quot;Mentally Drained\&quot; to \&quot;Finished Happy\&quot; using the shuffle button.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/187191446?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b64ebd5-37b3-4c61-894c-7acba3fee790_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="An 8-panel storyboard showing a user going from &quot;Mentally Drained&quot; to &quot;Finished Happy&quot; using the shuffle button." title="An 8-panel storyboard showing a user going from &quot;Mentally Drained&quot; to &quot;Finished Happy&quot; using the shuffle button." srcset="https://substackcdn.com/image/fetch/$s_!Ny6U!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d64dadf-3028-4203-8e3d-c54a6dc16827_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!Ny6U!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d64dadf-3028-4203-8e3d-c54a6dc16827_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!Ny6U!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d64dadf-3028-4203-8e3d-c54a6dc16827_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!Ny6U!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d64dadf-3028-4203-8e3d-c54a6dc16827_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A happy path storyboard visualizing the ideal user experience</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9oUT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19d32224-2ba4-433c-8dfb-1b61178f7afc_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9oUT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19d32224-2ba4-433c-8dfb-1b61178f7afc_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!9oUT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19d32224-2ba4-433c-8dfb-1b61178f7afc_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!9oUT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19d32224-2ba4-433c-8dfb-1b61178f7afc_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!9oUT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19d32224-2ba4-433c-8dfb-1b61178f7afc_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9oUT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19d32224-2ba4-433c-8dfb-1b61178f7afc_2816x1536.png" width="2816" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/19d32224-2ba4-433c-8dfb-1b61178f7afc_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:2816,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1639053,&quot;alt&quot;:&quot;A storyboard illustrating a user skipping a dramatic episode and the algorithm quickly correcting to find a funny clip.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/187191446?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89e53550-a667-41b1-ab11-096c157b90c2_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A storyboard illustrating a user skipping a dramatic episode and the algorithm quickly correcting to find a funny clip." title="A storyboard illustrating a user skipping a dramatic episode and the algorithm quickly correcting to find a funny clip." srcset="https://substackcdn.com/image/fetch/$s_!9oUT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19d32224-2ba4-433c-8dfb-1b61178f7afc_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!9oUT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19d32224-2ba4-433c-8dfb-1b61178f7afc_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!9oUT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19d32224-2ba4-433c-8dfb-1b61178f7afc_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!9oUT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F19d32224-2ba4-433c-8dfb-1b61178f7afc_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">An edge case storyboard showing how the system recovers</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_tyN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc066acac-6e82-4722-bede-4e5cc24b0794_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_tyN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc066acac-6e82-4722-bede-4e5cc24b0794_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!_tyN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc066acac-6e82-4722-bede-4e5cc24b0794_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!_tyN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc066acac-6e82-4722-bede-4e5cc24b0794_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!_tyN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc066acac-6e82-4722-bede-4e5cc24b0794_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_tyN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc066acac-6e82-4722-bede-4e5cc24b0794_2816x1536.png" width="2816" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c066acac-6e82-4722-bede-4e5cc24b0794_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:2816,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1385635,&quot;alt&quot;:&quot;A five-step journey map illustrating user thoughts and feelings from \&quot;Discovery\&quot; to \&quot;Retention.\&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/187191446?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24c54ed0-e382-4be1-abab-9b6cdd41a230_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A five-step journey map illustrating user thoughts and feelings from &quot;Discovery&quot; to &quot;Retention.&quot;" title="A five-step journey map illustrating user thoughts and feelings from &quot;Discovery&quot; to &quot;Retention.&quot;" srcset="https://substackcdn.com/image/fetch/$s_!_tyN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc066acac-6e82-4722-bede-4e5cc24b0794_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!_tyN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc066acac-6e82-4722-bede-4e5cc24b0794_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!_tyN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc066acac-6e82-4722-bede-4e5cc24b0794_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!_tyN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc066acac-6e82-4722-bede-4e5cc24b0794_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A detailed user journey map tracking the emotional flow and system logic</figcaption></figure></div><h3>Switch to workshop mode</h3><p>After a while, I felt the black and white was getting a little repetitive. I wanted to see if I could shift the vibe to look like a <strong>real-time workshop</strong>. I switched the prompt in a new conversation to simulate a graphic facilitator drawing live during a design sprint.</p><blockquote><p>I&#8217;m preparing a design sprint session for product people. For the facilitation, instead of slides, I want you to generate graphic facilitation visuals.</p><p>Act as an experienced graphic facilitator. I want you to generate a graphic facilitation image to cover all topics in that workshop.</p><p>Here is the content for this section:</p><p><em>---</em></p><p><em>[Here I copied and pasted the text from the PRD conversation&#8230;]</em></p></blockquote><p>And the results:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rzNS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb7741a-8195-4899-890e-967c99c2703b_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rzNS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb7741a-8195-4899-890e-967c99c2703b_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!rzNS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb7741a-8195-4899-890e-967c99c2703b_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!rzNS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb7741a-8195-4899-890e-967c99c2703b_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!rzNS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb7741a-8195-4899-890e-967c99c2703b_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rzNS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb7741a-8195-4899-890e-967c99c2703b_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/efb7741a-8195-4899-890e-967c99c2703b_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:7237376,&quot;alt&quot;:&quot;A colorful comic strip showing a user cleaning the kitchen while \&quot;Friends\&quot; plays in the background.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/187191446?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb7741a-8195-4899-890e-967c99c2703b_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A colorful comic strip showing a user cleaning the kitchen while &quot;Friends&quot; plays in the background." title="A colorful comic strip showing a user cleaning the kitchen while &quot;Friends&quot; plays in the background." srcset="https://substackcdn.com/image/fetch/$s_!rzNS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb7741a-8195-4899-890e-967c99c2703b_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!rzNS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb7741a-8195-4899-890e-967c99c2703b_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!rzNS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb7741a-8195-4899-890e-967c99c2703b_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!rzNS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefb7741a-8195-4899-890e-967c99c2703b_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A design sprint sketch showing the ambient listening flow</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!A42l!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F562e8cf6-aeef-4f7f-8fef-3a56102ccaf1_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!A42l!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F562e8cf6-aeef-4f7f-8fef-3a56102ccaf1_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!A42l!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F562e8cf6-aeef-4f7f-8fef-3a56102ccaf1_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!A42l!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F562e8cf6-aeef-4f7f-8fef-3a56102ccaf1_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!A42l!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F562e8cf6-aeef-4f7f-8fef-3a56102ccaf1_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!A42l!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F562e8cf6-aeef-4f7f-8fef-3a56102ccaf1_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/562e8cf6-aeef-4f7f-8fef-3a56102ccaf1_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:7474395,&quot;alt&quot;:&quot;A colorful poster detailing Sarah's frustrations with short lunch breaks and her need for instant comedy.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/187191446?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F562e8cf6-aeef-4f7f-8fef-3a56102ccaf1_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A colorful poster detailing Sarah's frustrations with short lunch breaks and her need for instant comedy." title="A colorful poster detailing Sarah's frustrations with short lunch breaks and her need for instant comedy." srcset="https://substackcdn.com/image/fetch/$s_!A42l!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F562e8cf6-aeef-4f7f-8fef-3a56102ccaf1_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!A42l!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F562e8cf6-aeef-4f7f-8fef-3a56102ccaf1_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!A42l!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F562e8cf6-aeef-4f7f-8fef-3a56102ccaf1_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!A42l!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F562e8cf6-aeef-4f7f-8fef-3a56102ccaf1_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A full persona profile for Sarah, the lunch breaker</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aCDn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d8a09c5-f4fb-49c0-8c5f-81a0cb61eb98_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aCDn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d8a09c5-f4fb-49c0-8c5f-81a0cb61eb98_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!aCDn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d8a09c5-f4fb-49c0-8c5f-81a0cb61eb98_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!aCDn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d8a09c5-f4fb-49c0-8c5f-81a0cb61eb98_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!aCDn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d8a09c5-f4fb-49c0-8c5f-81a0cb61eb98_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aCDn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d8a09c5-f4fb-49c0-8c5f-81a0cb61eb98_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5d8a09c5-f4fb-49c0-8c5f-81a0cb61eb98_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:7359216,&quot;alt&quot;:&quot;A colorful poster detailing Mark's anxiety and his need for a familiar \&quot;comfort show\&quot; to fall asleep.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/187191446?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d8a09c5-f4fb-49c0-8c5f-81a0cb61eb98_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A colorful poster detailing Mark's anxiety and his need for a familiar &quot;comfort show&quot; to fall asleep." title="A colorful poster detailing Mark's anxiety and his need for a familiar &quot;comfort show&quot; to fall asleep." srcset="https://substackcdn.com/image/fetch/$s_!aCDn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d8a09c5-f4fb-49c0-8c5f-81a0cb61eb98_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!aCDn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d8a09c5-f4fb-49c0-8c5f-81a0cb61eb98_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!aCDn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d8a09c5-f4fb-49c0-8c5f-81a0cb61eb98_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!aCDn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d8a09c5-f4fb-49c0-8c5f-81a0cb61eb98_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A full persona profile for Mark, the anxious scroller</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4U_Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1252b21-a8de-4bcc-b3c3-55f9c3b94b48_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4U_Y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1252b21-a8de-4bcc-b3c3-55f9c3b94b48_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!4U_Y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1252b21-a8de-4bcc-b3c3-55f9c3b94b48_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!4U_Y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1252b21-a8de-4bcc-b3c3-55f9c3b94b48_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!4U_Y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1252b21-a8de-4bcc-b3c3-55f9c3b94b48_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4U_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1252b21-a8de-4bcc-b3c3-55f9c3b94b48_2816x1536.png" width="2816" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d1252b21-a8de-4bcc-b3c3-55f9c3b94b48_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:2816,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:8477351,&quot;alt&quot;:&quot;A complex table mapping user actions (Frontstage) to backend server logic (Backstage) and API calls.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/187191446?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2470e125-a7a9-4604-84cc-7bc1492fa347_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A complex table mapping user actions (Frontstage) to backend server logic (Backstage) and API calls." title="A complex table mapping user actions (Frontstage) to backend server logic (Backstage) and API calls." srcset="https://substackcdn.com/image/fetch/$s_!4U_Y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1252b21-a8de-4bcc-b3c3-55f9c3b94b48_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!4U_Y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1252b21-a8de-4bcc-b3c3-55f9c3b94b48_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!4U_Y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1252b21-a8de-4bcc-b3c3-55f9c3b94b48_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!4U_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1252b21-a8de-4bcc-b3c3-55f9c3b94b48_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A comprehensive blueprint detailing every technical layer behind the button</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oSJ6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe664f57e-a7bd-4800-a7c8-03dce1edcc26_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oSJ6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe664f57e-a7bd-4800-a7c8-03dce1edcc26_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!oSJ6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe664f57e-a7bd-4800-a7c8-03dce1edcc26_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!oSJ6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe664f57e-a7bd-4800-a7c8-03dce1edcc26_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!oSJ6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe664f57e-a7bd-4800-a7c8-03dce1edcc26_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oSJ6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe664f57e-a7bd-4800-a7c8-03dce1edcc26_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e664f57e-a7bd-4800-a7c8-03dce1edcc26_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:7603046,&quot;alt&quot;:&quot;A timeline chart divided into four phases: Discovery, MVP, Pilot, and Global Launch, listing key milestones for each.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/187191446?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe664f57e-a7bd-4800-a7c8-03dce1edcc26_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A timeline chart divided into four phases: Discovery, MVP, Pilot, and Global Launch, listing key milestones for each." title="A timeline chart divided into four phases: Discovery, MVP, Pilot, and Global Launch, listing key milestones for each." srcset="https://substackcdn.com/image/fetch/$s_!oSJ6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe664f57e-a7bd-4800-a7c8-03dce1edcc26_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!oSJ6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe664f57e-a7bd-4800-a7c8-03dce1edcc26_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!oSJ6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe664f57e-a7bd-4800-a7c8-03dce1edcc26_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!oSJ6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe664f57e-a7bd-4800-a7c8-03dce1edcc26_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A 4-phase roadmap from concept to global launch</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hc4M!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1401fff0-6c8c-4e42-9865-6941e96f3721_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hc4M!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1401fff0-6c8c-4e42-9865-6941e96f3721_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!hc4M!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1401fff0-6c8c-4e42-9865-6941e96f3721_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!hc4M!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1401fff0-6c8c-4e42-9865-6941e96f3721_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!hc4M!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1401fff0-6c8c-4e42-9865-6941e96f3721_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hc4M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1401fff0-6c8c-4e42-9865-6941e96f3721_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1401fff0-6c8c-4e42-9865-6941e96f3721_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:7557817,&quot;alt&quot;:&quot;A diagram connecting the \&quot;Customer Profile\&quot; circle (Job, Pains, Gains) to the \&quot;Value Map\&quot; square (Pain Relievers, Gain Creators).&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/187191446?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1401fff0-6c8c-4e42-9865-6941e96f3721_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A diagram connecting the &quot;Customer Profile&quot; circle (Job, Pains, Gains) to the &quot;Value Map&quot; square (Pain Relievers, Gain Creators)." title="A diagram connecting the &quot;Customer Profile&quot; circle (Job, Pains, Gains) to the &quot;Value Map&quot; square (Pain Relievers, Gain Creators)." srcset="https://substackcdn.com/image/fetch/$s_!hc4M!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1401fff0-6c8c-4e42-9865-6941e96f3721_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!hc4M!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1401fff0-6c8c-4e42-9865-6941e96f3721_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!hc4M!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1401fff0-6c8c-4e42-9865-6941e96f3721_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!hc4M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1401fff0-6c8c-4e42-9865-6941e96f3721_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Mapping user pains directly to our product gains</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EaM5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa70c76b3-a780-490a-a827-9e622ba5b742_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EaM5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa70c76b3-a780-490a-a827-9e622ba5b742_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!EaM5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa70c76b3-a780-490a-a827-9e622ba5b742_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!EaM5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa70c76b3-a780-490a-a827-9e622ba5b742_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!EaM5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa70c76b3-a780-490a-a827-9e622ba5b742_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EaM5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa70c76b3-a780-490a-a827-9e622ba5b742_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a70c76b3-a780-490a-a827-9e622ba5b742_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:8254454,&quot;alt&quot;:&quot;A tree diagram rooting in \&quot;Reduce Browse Time\&quot; and branching out to different user opportunities and potential solutions like \&quot;Blind Date Mode.\&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/187191446?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa70c76b3-a780-490a-a827-9e622ba5b742_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A tree diagram rooting in &quot;Reduce Browse Time&quot; and branching out to different user opportunities and potential solutions like &quot;Blind Date Mode.&quot;" title="A tree diagram rooting in &quot;Reduce Browse Time&quot; and branching out to different user opportunities and potential solutions like &quot;Blind Date Mode.&quot;" srcset="https://substackcdn.com/image/fetch/$s_!EaM5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa70c76b3-a780-490a-a827-9e622ba5b742_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!EaM5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa70c76b3-a780-490a-a827-9e622ba5b742_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!EaM5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa70c76b3-a780-490a-a827-9e622ba5b742_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!EaM5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa70c76b3-a780-490a-a827-9e622ba5b742_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Visualizing every possible path to the business outcome</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!eTk0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6adc577d-972d-4753-b5ca-065d0a4951fa_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eTk0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6adc577d-972d-4753-b5ca-065d0a4951fa_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!eTk0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6adc577d-972d-4753-b5ca-065d0a4951fa_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!eTk0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6adc577d-972d-4753-b5ca-065d0a4951fa_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!eTk0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6adc577d-972d-4753-b5ca-065d0a4951fa_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eTk0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6adc577d-972d-4753-b5ca-065d0a4951fa_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6adc577d-972d-4753-b5ca-065d0a4951fa_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:7318032,&quot;alt&quot;:&quot;Grayscale sketches of four interface screens showing the user flow from the Series Page to the Video Player.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/187191446?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6adc577d-972d-4753-b5ca-065d0a4951fa_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Grayscale sketches of four interface screens showing the user flow from the Series Page to the Video Player." title="Grayscale sketches of four interface screens showing the user flow from the Series Page to the Video Player." srcset="https://substackcdn.com/image/fetch/$s_!eTk0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6adc577d-972d-4753-b5ca-065d0a4951fa_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!eTk0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6adc577d-972d-4753-b5ca-065d0a4951fa_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!eTk0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6adc577d-972d-4753-b5ca-065d0a4951fa_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!eTk0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6adc577d-972d-4753-b5ca-065d0a4951fa_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Low-fi wireframes to validate the flow before making it pretty</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Paeb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae7b8810-b63f-4f8d-a9d4-6f53dcd7dd64_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Paeb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae7b8810-b63f-4f8d-a9d4-6f53dcd7dd64_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!Paeb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae7b8810-b63f-4f8d-a9d4-6f53dcd7dd64_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!Paeb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae7b8810-b63f-4f8d-a9d4-6f53dcd7dd64_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!Paeb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae7b8810-b63f-4f8d-a9d4-6f53dcd7dd64_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Paeb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae7b8810-b63f-4f8d-a9d4-6f53dcd7dd64_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ae7b8810-b63f-4f8d-a9d4-6f53dcd7dd64_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:7752825,&quot;alt&quot;:&quot;Polished, realistic UI designs showing \&quot;The Office\&quot; on Netflix with the new Shuffle button in the actual dark mode interface.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/187191446?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae7b8810-b63f-4f8d-a9d4-6f53dcd7dd64_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Polished, realistic UI designs showing &quot;The Office&quot; on Netflix with the new Shuffle button in the actual dark mode interface." title="Polished, realistic UI designs showing &quot;The Office&quot; on Netflix with the new Shuffle button in the actual dark mode interface." srcset="https://substackcdn.com/image/fetch/$s_!Paeb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae7b8810-b63f-4f8d-a9d4-6f53dcd7dd64_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!Paeb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae7b8810-b63f-4f8d-a9d4-6f53dcd7dd64_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!Paeb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae7b8810-b63f-4f8d-a9d4-6f53dcd7dd64_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!Paeb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae7b8810-b63f-4f8d-a9d4-6f53dcd7dd64_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">High-fidelity mockups using the real design system</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pDDO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7cf38f6-9da4-4619-804b-e6256e045ad6_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pDDO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7cf38f6-9da4-4619-804b-e6256e045ad6_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!pDDO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7cf38f6-9da4-4619-804b-e6256e045ad6_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!pDDO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7cf38f6-9da4-4619-804b-e6256e045ad6_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!pDDO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7cf38f6-9da4-4619-804b-e6256e045ad6_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pDDO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7cf38f6-9da4-4619-804b-e6256e045ad6_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a7cf38f6-9da4-4619-804b-e6256e045ad6_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:7585578,&quot;alt&quot;:&quot;An illustrated \&quot;Help Center\&quot; page explaining how to find the button, how the shuffle works, and answering FAQs.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/187191446?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7cf38f6-9da4-4619-804b-e6256e045ad6_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="An illustrated &quot;Help Center&quot; page explaining how to find the button, how the shuffle works, and answering FAQs." title="An illustrated &quot;Help Center&quot; page explaining how to find the button, how the shuffle works, and answering FAQs." srcset="https://substackcdn.com/image/fetch/$s_!pDDO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7cf38f6-9da4-4619-804b-e6256e045ad6_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!pDDO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7cf38f6-9da4-4619-804b-e6256e045ad6_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!pDDO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7cf38f6-9da4-4619-804b-e6256e045ad6_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!pDDO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7cf38f6-9da4-4619-804b-e6256e045ad6_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A simple visual guide to help users navigate the magic</figcaption></figure></div><p>And then... crash. <strong>I hit the daily image generation limit again.</strong> But I think you get the point. For this experiment, I sprinted through a dozen complex artifacts to test the limits and have some fun. In real life, I wouldn&#8217;t spam the model like this. I would generate one or two key visuals, like that empathy map or the vision poster, and really iterate on them to make them impactful.</p><p>But knowing that I can <strong>visualize an entire product strategy in minutes?</strong> That changes the game.</p><div><hr></div><p>We used to be stuck with ugly stick figures or endless bullet points while waiting for the real designs to materialize. Now, <strong>the barrier between your ideas and the screen is gone.</strong> To be clear: <strong>this doesn&#8217;t replace the deep collaboration</strong> of a live workshop. But it does bridge the gap between a messy thought and a shared vision. It allows us to <strong>communicate faster</strong>, with more emotion, and honestly? It makes the daily grind incredibly fun. I can finally agree with those graphic facilitators from my early days: <strong>everyone can draw now.</strong> You just need raw ideas, a little AI assistance, and the willingness to experiment.</p><p>So here is my challenge to you. Pick one boring document you are working on today, a Jira ticket, a spec, a strategy memo, and try to replace 500 words of text with one visual. <strong>Don&#8217;t overthink the prompt.</strong> Just open three tabs, hit the microphone button, and ramble. Let the machine handle the pixels while you handle the vision. Trust me, once you start, you won&#8217;t be able to stop.</p>]]></content:encoded></item><item><title><![CDATA[How to lead a tech team through the AI shift]]></title><description><![CDATA[Empower your champions to create social proof that pulls the team forward. Launch small lighthouse projects to demonstrate immediate value and reframe the developer role to elevate professional craft.]]></description><link>https://www.theaithinker.com/p/how-to-lead-a-tech-team-through-the</link><guid isPermaLink="false">https://www.theaithinker.com/p/how-to-lead-a-tech-team-through-the</guid><dc:creator><![CDATA[Adam Faik]]></dc:creator><pubDate>Mon, 02 Feb 2026 12:04:10 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/d471937b-b72f-4c41-b87d-261d4ee9b0a5_1024x731.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>For the last decades, the formula for disrupting a market has been the same: <strong>Business people + developers = revolution.</strong></p><p>When real estate agents were disrupted by Zillow, it was developers who built the code. When the hospitality industry was shaken by Airbnb, or taxi drivers were challenged by Uber, it was developers who wrote the algorithms. Every time an industry was turned upside down, <strong>the developers were the ones holding the shovel</strong>. They were the architects of change, safe in the control room while the rest of the world adapted to their code.</p><p>But now, for the first time to my knowledge, the disruption has come inside the house. <strong>The developers are disrupting themselves.</strong></p><p>This is not just another framework update or a new cloud provider; this is a fundamental shift in who does the work. Just recently, Andrej Karpathy, one of the most respected thinkers in AI, shared a post on X that <strong>illustrates a paradigm shift</strong>:</p><div class="twitter-embed" data-attrs="{&quot;url&quot;:&quot;https://x.com/karpathy/status/2015883857489522876&quot;,&quot;full_text&quot;:&quot;A few random notes from claude coding quite a bit last few weeks.\n\nCoding workflow. Given the latest lift in LLM coding capability, like many others I rapidly went from about 80% manual+autocomplete coding and 20% agents in November to 80% agent coding and 20% edits+touchups in&quot;,&quot;username&quot;:&quot;karpathy&quot;,&quot;name&quot;:&quot;Andrej Karpathy&quot;,&quot;profile_image_url&quot;:&quot;https://pbs.substack.com/profile_images/1296667294148382721/9Pr6XrPB_normal.jpg&quot;,&quot;date&quot;:&quot;2026-01-26T20:25:39.000Z&quot;,&quot;photos&quot;:[],&quot;quoted_tweet&quot;:{},&quot;reply_count&quot;:1550,&quot;retweet_count&quot;:5104,&quot;like_count&quot;:37375,&quot;impression_count&quot;:6339937,&quot;expanded_url&quot;:null,&quot;video_url&quot;:null,&quot;video_preview_media_key&quot;:null,&quot;belowTheFold&quot;:false}" data-component-name="Twitter2ToDOM"></div><p>He admitted that by December, his workflow had completely flipped: he is now <strong>80% managing AI agents and only 20% touching the code manually</strong>. If one of the best engineers in the world is shifting from writing code to managing coding agents in the span of four weeks, imagine how the engineers on your team are processing this shift.</p><p>The result? <strong>A mix of adrenaline, confusion, and deep preoccupation.</strong></p><p>Open Reddit or Hacker News, and you see two parallel realities. On one side, you have the hyper-enthusiasts claiming they built a startup in a weekend using Claude Code. On the other, you have legitimate anxiety and deep questioning. People aren&#8217;t just worried about their next performance review; <strong>they are wondering about their long-term relevance</strong>. They are asking:</p><blockquote><p>Is my craft dead? Am I just a glorified spell-checker now? Is this even sustainable for the planet?</p></blockquote><p>As a manager, <strong>you are standing in the middle of this storm</strong>. You might have top management demanding 90% AI adoption by Q4, while your team is looking at you with skepticism. You can&#8217;t just tell them, &#8220;Get on the bus or get left behind.&#8221; That&#8217;s lazy leadership. You also can&#8217;t recite the tired clich&#233; that &#8220;AI won&#8217;t replace you, a human using AI will.&#8221; They know it&#8217;s a platitude.</p><p>I&#8217;ve spent the last months in the trenches, reading the forums, talking to developers at meetups, and watching the mood shift from &#8220;autocomplete is cool&#8221; to &#8220;how do I orchestrate agents?&#8221; But I didn&#8217;t just rely on my own observations. I spent hours dissecting these challenges with Gemini, asking it to act as a change management expert, to challenge my assumptions and help me structure a playbook for this specific transition. This article is the result of that collaboration: a distillation of the <strong>principles and tactics to help you lead when the ground is moving</strong>.</p><p>If you want to move your team from point A, uncertainty, to point B, empowerment, you need more than a license to access the latest model. <strong>You need a new way to talk about work</strong>. You need to address the legitimate concerns (e.g., the quality issues, the boredom, the loss of craft) without dismissing their reality.</p><p>Here is the plan we will cover:</p><ul><li><p><strong>Some principles.</strong> We start with the psychology of change. We will look at why selling the solution fails if you don&#8217;t address the head, hands, and heart, and why you need to stop wasting energy arguing with resistors.</p></li><li><p><strong>Some tactics.</strong> We move to execution. I will share the concept of building lighthouse teams to prove value, explore why a training matrix might work better than a bootcamp, and discuss how to use Aikido to redirect energy in 1-on-1s.</p></li><li><p><strong>Some scripts.</strong> We face the hard truths. We will break down three deep objections I see most often: the fear of becoming a compliance officer, the risk of understanding debt, and the ethical concerns about energy usage.</p></li></ul><p>I share here the patterns I have observed in the trenches and the strategies that are currently working for me. <strong>Every engineering culture is unique</strong>, and the AI landscape changes so fast that what works today might be obsolete in six months. Please treat these ideas not as laws, but as <strong>experiments to run</strong>. Take what resonates with your specific culture, discard what doesn&#8217;t, and iterate on the rest.</p><p>Let&#8217;s get to work!</p><div><hr></div><h2>Some principles for navigating change</h2><p>Before we get into the specific scripts and tactics, I want to share how I mentally approach change. When I&#8217;m looking at a transformation, <strong>there are three specific visuals that always pop into my head</strong>. They aren&#8217;t the only models out there, obviously, but these are the ones that really stuck with me and helped me make sense of the human side of things.</p><p>Here are those three core principles defined as deep-dive action plans for managers.</p><h3>#1. The head, hands, and heart: Ignite motivation</h3><p><strong>The context: </strong>When we talk about change, we often overcomplicate it. At its core, moving a human being from point A to point B requires three things to happen simultaneously. First, the <strong>head</strong>: they need the intellectual understanding of the strategy (the map). Second, the <strong>hands</strong>: they need the technical capability and the tools to execute (the driving skills). And finally, the <strong>heart</strong>: they need the emotional motivation to actually want to move (the fuel). If all three are present, you get movement. <strong>If one is missing, you stall.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_o9w!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc54f2e8c-0f7f-401a-bc00-b3a77e0804ca_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_o9w!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc54f2e8c-0f7f-401a-bc00-b3a77e0804ca_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!_o9w!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc54f2e8c-0f7f-401a-bc00-b3a77e0804ca_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!_o9w!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc54f2e8c-0f7f-401a-bc00-b3a77e0804ca_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!_o9w!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc54f2e8c-0f7f-401a-bc00-b3a77e0804ca_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_o9w!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc54f2e8c-0f7f-401a-bc00-b3a77e0804ca_2816x1536.png" width="2816" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c54f2e8c-0f7f-401a-bc00-b3a77e0804ca_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:2816,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:799158,&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.theaithinker.com/i/186422589?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2a63b4f-522b-4828-bd5b-e5b46888b347_2816x1536.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_!_o9w!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc54f2e8c-0f7f-401a-bc00-b3a77e0804ca_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!_o9w!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc54f2e8c-0f7f-401a-bc00-b3a77e0804ca_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!_o9w!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc54f2e8c-0f7f-401a-bc00-b3a77e0804ca_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!_o9w!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc54f2e8c-0f7f-401a-bc00-b3a77e0804ca_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>The challenge: </strong>In most AI transformations, companies are excellent at addressing the head and the hands. You organize team meetings to explain the strategic vision (head), and you buy thousands of licenses for Claude Code (hands). But you completely neglect the heart. <strong>You give the team a map and a brand-new car, but you forget to put fuel in the tank.</strong> If your developers feel that AI is a threat to their craft, their identity, or their job security, their tank is empty. No amount of training will make the car move if there is no fuel.</p><p><strong>The common trap: </strong>The most common mistake managers make is trying to fix a heart problem with a head solution. When a developer says, &#8220;I don&#8217;t trust this code, it&#8217;s garbage,&#8221; they are often expressing fear, not a technical opinion. If you respond by showing them a chart of productivity gains or explaining the roadmap again, you are missing the point. <strong>You are answering an emotional objection with a logical argument.</strong> This doesn&#8217;t reassure them; it makes them feel unheard and pushed into a corner. You cannot fix a feeling with a spreadsheet.</p><p><strong>A different perspective: </strong>Stop selling the solution and start diagnosing the blocker. You need to identify exactly which of the three buckets, head, heart, or hands, is empty. <strong>Resistance is rarely a monolith; it&#8217;s specific.</strong> Is it that they don&#8217;t understand the goal? Is it that they feel unskilled? Or is it that they are afraid? You need to play the role of a mechanic diagnosing an engine before you try to drive the car.</p><p><strong>The diagnosis: </strong>Conduct a <strong>listening tour</strong>. Don&#8217;t do this with other managers; do it with the people actually typing the code. Pick five developers and ask them these three specific questions to map their resistance.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_nDj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8ccf434-1573-41ec-a50f-5332f0c0a417_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_nDj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8ccf434-1573-41ec-a50f-5332f0c0a417_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!_nDj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8ccf434-1573-41ec-a50f-5332f0c0a417_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!_nDj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8ccf434-1573-41ec-a50f-5332f0c0a417_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!_nDj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8ccf434-1573-41ec-a50f-5332f0c0a417_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_nDj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8ccf434-1573-41ec-a50f-5332f0c0a417_2816x1536.png" width="2816" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f8ccf434-1573-41ec-a50f-5332f0c0a417_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:2816,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1044835,&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.theaithinker.com/i/186422589?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd1d2ec3-a96a-4f99-8398-ab6025804dbe_2816x1536.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_!_nDj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8ccf434-1573-41ec-a50f-5332f0c0a417_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!_nDj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8ccf434-1573-41ec-a50f-5332f0c0a417_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!_nDj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8ccf434-1573-41ec-a50f-5332f0c0a417_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!_nDj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8ccf434-1573-41ec-a50f-5332f0c0a417_2816x1536.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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><ol><li><p><strong>Test the head:</strong> &#8220;If you had to explain to a new hire why leadership wants us to use AI, what would you say?&#8221; Listen carefully. If they say &#8220;To ship features faster&#8221; you are good. If they say &#8220;Because the boss read a tweet and got FOMO,&#8221; you have a head problem.</p></li><li><p><strong>Test the hands:</strong> &#8220;What is the specific friction point that makes you want to close the tool right now?&#8221; Maybe the model keeps hallucinating deprecated libraries or losing context. This is a hands problem.</p></li><li><p><strong>Test the heart:</strong> &#8220;When you open the AI tool, does it feel like a superpower, or does it feel like a chore?&#8221; This is the critical question. If they say &#8220;It feels like a chore&#8221; or &#8220;It makes me lazy,&#8221; you are dealing with a heart problem.</p></li></ol><p><strong>The fix:</strong></p><ul><li><p><strong>If the head is empty:</strong> Stop training. Start contextualizing. Show them how AI solves their specific business problems, not just the company&#8217;s stock price.</p></li><li><p><strong>If the hands are empty:</strong> Stop motivating. Start unblocking. The friction is rarely the laptop speed; it&#8217;s the integration complexity. Provide pre-built context scaffolding (like <code>.cursorrules</code> files) or run a context engineering workshop to solve the specific hallucinations blocking them.</p></li><li><p><strong>If the heart is empty:</strong> Stop explaining. Start reassuring. Explicitly frame AI as a tool to remove drudgery so they can focus on architecture. Give them a guarantee that using AI won&#8217;t negatively impact their performance review if things break initially.</p></li></ul><h3>#2. The change curve: Navigate emotional stages</h3><p><strong>The context: </strong>We tend to sell AI adoption like a rocket ship: you install the tool, and productivity shoots up and to the right immediately. But human reaction to deep change doesn&#8217;t work like that. <strong>It follows an U shape known as the K&#252;bler-Ross change curve.</strong> It starts with shock, moves to denial, crashes into frustration and depression, and only then slowly climbs up to experimentation and acceptance.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oVKg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57af7149-cf59-416a-8e7c-7d4f84653b67_3072x1376.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oVKg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57af7149-cf59-416a-8e7c-7d4f84653b67_3072x1376.png 424w, https://substackcdn.com/image/fetch/$s_!oVKg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57af7149-cf59-416a-8e7c-7d4f84653b67_3072x1376.png 848w, https://substackcdn.com/image/fetch/$s_!oVKg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57af7149-cf59-416a-8e7c-7d4f84653b67_3072x1376.png 1272w, https://substackcdn.com/image/fetch/$s_!oVKg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57af7149-cf59-416a-8e7c-7d4f84653b67_3072x1376.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oVKg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57af7149-cf59-416a-8e7c-7d4f84653b67_3072x1376.png" width="3072" height="1376" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/57af7149-cf59-416a-8e7c-7d4f84653b67_3072x1376.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1376,&quot;width&quot;:3072,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:970571,&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.theaithinker.com/i/186422589?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cd51c7d-33b6-4261-afb5-d1e954797693_3072x1376.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_!oVKg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57af7149-cf59-416a-8e7c-7d4f84653b67_3072x1376.png 424w, https://substackcdn.com/image/fetch/$s_!oVKg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57af7149-cf59-416a-8e7c-7d4f84653b67_3072x1376.png 848w, https://substackcdn.com/image/fetch/$s_!oVKg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57af7149-cf59-416a-8e7c-7d4f84653b67_3072x1376.png 1272w, https://substackcdn.com/image/fetch/$s_!oVKg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57af7149-cf59-416a-8e7c-7d4f84653b67_3072x1376.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>The challenge: </strong>The danger zone is the bottom of the U, often called the <strong>valley of despair</strong>. After the initial excitement wears off, reality hits. Your team realizes the AI writes buggy code, uses outdated libraries, and requires heavy debugging. They spend more time fixing the AI&#8217;s mess than if they had written the code manually. <strong>Productivity drops below the baseline.</strong> This is where morale tanks, and people think: &#8220;This is useless. My workflow is ruined. <strong>I want to go back to the old way.</strong>&#8221;</p><p><strong>The common trap: </strong>The worst thing you can do when your team is in the valley of despair is to stand at the finish line and cheerlead. If you stand in the integration phase and yell down to your depressed team, &#8220;Come on guys, look at the ROI! It&#8217;s great up here!&#8221; You look out of touch and delusional. <strong>It feels like toxic positivity.</strong> They don&#8217;t need to hear how great the future is; they need you to acknowledge how hard the present is.</p><p><strong>A different perspective: </strong>You need to throw them a rope. Validation is your most powerful tool here. You must admit that the tool is imperfect and that the dip in productivity is the price of admission. By acknowledging the pain, you remove the pressure to pretend everything is perfect. <strong>You normalize the struggle</strong>, which paradoxically helps them move through it faster. The only way out of the valley is through it.</p><p><strong>The diagnosis: </strong>Identify the phase. Look at your team honestly. Are they in <strong>denial</strong> (&#8221;This will pass&#8221;)? <strong>Anger</strong> (&#8221;This tool creates bugs&#8221;)? Or <strong>depression</strong> (&#8221;What&#8217;s the point&#8221;)?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qW7R!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf18df6a-239b-481a-a8c7-e577c3074a5b_3104x1376.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qW7R!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf18df6a-239b-481a-a8c7-e577c3074a5b_3104x1376.png 424w, https://substackcdn.com/image/fetch/$s_!qW7R!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf18df6a-239b-481a-a8c7-e577c3074a5b_3104x1376.png 848w, https://substackcdn.com/image/fetch/$s_!qW7R!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf18df6a-239b-481a-a8c7-e577c3074a5b_3104x1376.png 1272w, https://substackcdn.com/image/fetch/$s_!qW7R!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf18df6a-239b-481a-a8c7-e577c3074a5b_3104x1376.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qW7R!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf18df6a-239b-481a-a8c7-e577c3074a5b_3104x1376.png" width="3104" height="1376" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/df18df6a-239b-481a-a8c7-e577c3074a5b_3104x1376.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1376,&quot;width&quot;:3104,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1021287,&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.theaithinker.com/i/186422589?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf9ead6e-bde7-4ba1-9561-2cf2a7104788_3104x1376.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_!qW7R!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf18df6a-239b-481a-a8c7-e577c3074a5b_3104x1376.png 424w, https://substackcdn.com/image/fetch/$s_!qW7R!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf18df6a-239b-481a-a8c7-e577c3074a5b_3104x1376.png 848w, https://substackcdn.com/image/fetch/$s_!qW7R!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf18df6a-239b-481a-a8c7-e577c3074a5b_3104x1376.png 1272w, https://substackcdn.com/image/fetch/$s_!qW7R!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf18df6a-239b-481a-a8c7-e577c3074a5b_3104x1376.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>The fix:</strong></p><ol><li><p><strong>Validate loudly:</strong> Say clearly in your next meeting: &#8220;I know it feels slower right now. That is normal. We are in the messy middle, and I expect productivity to dip while we learn.&#8221;</p></li><li><p><strong>The small step:</strong> Don&#8217;t ask for transformation. Ask for <strong>exploration</strong>. Tell them: &#8220;I don&#8217;t need you to change your whole workflow today. Just try to use it for one boring unit test. Just one.&#8221; Small wins are the ladder rungs out of the pit.</p></li></ol><h3>#3. The 20-60-20 rule: Focus on the watchers</h3><p><strong>The context: </strong>You cannot transform everyone at the same speed, and if you try, you will burn out. In every organization, adoption follows the 20-60-20 rule. Imagine a wedding dance floor. You have the <strong>top 20% champions </strong>who are already dancing and love the music. You have the <strong>bottom 20% resistors</strong> who are sitting in the corner with their arms crossed, skeptical of the playlist. And you have the <strong>middle 60% watchers</strong> standing on the edge, holding their drinks, waiting to see if it&#8217;s safe to join in.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2cpU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F184dcbc8-6b68-4ce7-9ccf-718cf131e5ba_3104x1376.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2cpU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F184dcbc8-6b68-4ce7-9ccf-718cf131e5ba_3104x1376.png 424w, https://substackcdn.com/image/fetch/$s_!2cpU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F184dcbc8-6b68-4ce7-9ccf-718cf131e5ba_3104x1376.png 848w, https://substackcdn.com/image/fetch/$s_!2cpU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F184dcbc8-6b68-4ce7-9ccf-718cf131e5ba_3104x1376.png 1272w, https://substackcdn.com/image/fetch/$s_!2cpU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F184dcbc8-6b68-4ce7-9ccf-718cf131e5ba_3104x1376.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2cpU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F184dcbc8-6b68-4ce7-9ccf-718cf131e5ba_3104x1376.png" width="3104" height="1376" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/184dcbc8-6b68-4ce7-9ccf-718cf131e5ba_3104x1376.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1376,&quot;width&quot;:3104,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1209565,&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.theaithinker.com/i/186422589?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef8ec3f2-a071-4d5e-92f7-a60c2e16cc70_3104x1376.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_!2cpU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F184dcbc8-6b68-4ce7-9ccf-718cf131e5ba_3104x1376.png 424w, https://substackcdn.com/image/fetch/$s_!2cpU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F184dcbc8-6b68-4ce7-9ccf-718cf131e5ba_3104x1376.png 848w, https://substackcdn.com/image/fetch/$s_!2cpU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F184dcbc8-6b68-4ce7-9ccf-718cf131e5ba_3104x1376.png 1272w, https://substackcdn.com/image/fetch/$s_!2cpU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F184dcbc8-6b68-4ce7-9ccf-718cf131e5ba_3104x1376.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>The challenge: </strong>Most leaders spend most of their energy arguing with the resistors. They try to convert the loudest critics using logic, debate, and pressure. This is a massive trap. <strong>You risk confusing resistance with wisdom.</strong> While you are busy exhausting yourself in that argument, you miss the technical risks they are spotting, and the critical middle 60% gets bored, sees the conflict, and decides to sit down.</p><p><strong>The common trap: </strong>Silencing the skeptics. In engineering, resistors are often the guardians of institutional memory. If you treat every objection as negativity, you create a culture of toxic positivity where legitimate technical risks, like security flaws or non-deterministic behaviors, are suppressed.</p><p><strong>A different perspective: </strong>Filter the noise. Focus entirely on empowering the champions to attract the watchers, while simultaneously redirecting the resistors&#8217; energy into quality control. The watchers don&#8217;t look to you (the manager) for social cues; <strong>they look to their peers</strong>. If they see the champions having fun and the resistors ensuring the system is robust, the watchers will naturally feel safe to join.</p><p><strong>The diagnosis: </strong>Map the room. Before your next team sync, look at the roster and mentally tag everyone: dancer, watcher, or wallflower.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UiF_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84e226c9-6f5f-4642-b399-6ff1aca8a1f2_3104x1376.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UiF_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84e226c9-6f5f-4642-b399-6ff1aca8a1f2_3104x1376.png 424w, https://substackcdn.com/image/fetch/$s_!UiF_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84e226c9-6f5f-4642-b399-6ff1aca8a1f2_3104x1376.png 848w, https://substackcdn.com/image/fetch/$s_!UiF_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84e226c9-6f5f-4642-b399-6ff1aca8a1f2_3104x1376.png 1272w, https://substackcdn.com/image/fetch/$s_!UiF_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84e226c9-6f5f-4642-b399-6ff1aca8a1f2_3104x1376.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UiF_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84e226c9-6f5f-4642-b399-6ff1aca8a1f2_3104x1376.png" width="3104" height="1376" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/84e226c9-6f5f-4642-b399-6ff1aca8a1f2_3104x1376.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1376,&quot;width&quot;:3104,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1168778,&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.theaithinker.com/i/186422589?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb169968a-4403-4559-a7f4-263512657866_3104x1376.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_!UiF_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84e226c9-6f5f-4642-b399-6ff1aca8a1f2_3104x1376.png 424w, https://substackcdn.com/image/fetch/$s_!UiF_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84e226c9-6f5f-4642-b399-6ff1aca8a1f2_3104x1376.png 848w, https://substackcdn.com/image/fetch/$s_!UiF_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84e226c9-6f5f-4642-b399-6ff1aca8a1f2_3104x1376.png 1272w, https://substackcdn.com/image/fetch/$s_!UiF_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84e226c9-6f5f-4642-b399-6ff1aca8a1f2_3104x1376.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>The fix:</strong></p><ol><li><p><strong>Amplify the dancers:</strong> Give your champions beta access to the newest models, assign them the most interesting greenfield projects, and praise them publicly. Make being a champion look fun.</p></li><li><p><strong>Pull the middle:</strong> Explicitly highlight the benefits the champions are getting. &#8220;Hey everyone, look how Team X finished their testing phase in half the time because they used the AI agents.&#8221; Let the results do the selling.</p></li><li><p><strong>Red-team the resistors: </strong>Distinguish between emotional resistance (fear) and principled objection (quality). Don&#8217;t argue too much with the principled objectors; assign them the role of red team. Tell them: &#8220;Your job isn&#8217;t to stop the AI, but to break it. Find the flaws.&#8221; Use their skepticism as a stress-test mechanism to ensure stability.</p></li></ol><p>Now that we have a shared language, it&#8217;s time to start doing. Let's move on to the specific, battle-tested maneuvers you can use to start moving the needle.</p><div><hr></div><h2>Some practical tactics for driving adoption</h2><p>You don&#8217;t need a 50-page strategy document to transform a team. You need a few targeted interventions that create momentum without burning you out. In this section, I will cover three specific levers: organizational structure (how you run pilots), skill acquisition (how you teach), and communication (how you handle the 1-on-1s).</p><h3>#1. The lighthouse strategy: Build visible success</h3><p><strong>The context: </strong>When you start a transformation, the temptation is to go big immediately. You look at your developers and think: &#8220;We need everyone using AI by next month.&#8221; You plan a massive rollout, generic training for every department, and expect immediate organizational impact.</p><p><strong>The challenge: </strong>If you try to change everything at once, you will trigger the organizational immune system. You will be fighting a war on ten fronts. The watchers will get frustrated by setup issues, the resistors will band together to complain, and you will spend all your time putting out fires. Worse, if you give everyone a generic tool without a specific purpose, they will use it for trivial things and conclude it&#8217;s a toy.</p><p><strong>The common trap: </strong>The big bang rollout. This is sending an email saying: &#8220;Starting Monday, everyone must use Claude Code.&#8221; This creates chaos. You are forcing the valley of despair on the entire company at the exact same moment.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PLFG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa47c4e88-def6-4a02-9f8a-76588eb8d35c_3104x1376.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PLFG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa47c4e88-def6-4a02-9f8a-76588eb8d35c_3104x1376.png 424w, https://substackcdn.com/image/fetch/$s_!PLFG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa47c4e88-def6-4a02-9f8a-76588eb8d35c_3104x1376.png 848w, https://substackcdn.com/image/fetch/$s_!PLFG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa47c4e88-def6-4a02-9f8a-76588eb8d35c_3104x1376.png 1272w, https://substackcdn.com/image/fetch/$s_!PLFG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa47c4e88-def6-4a02-9f8a-76588eb8d35c_3104x1376.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PLFG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa47c4e88-def6-4a02-9f8a-76588eb8d35c_3104x1376.png" width="3104" height="1376" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a47c4e88-def6-4a02-9f8a-76588eb8d35c_3104x1376.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1376,&quot;width&quot;:3104,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1214156,&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.theaithinker.com/i/186422589?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd83b093c-ca54-4bf8-9d52-b8b22dc5d110_3104x1376.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_!PLFG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa47c4e88-def6-4a02-9f8a-76588eb8d35c_3104x1376.png 424w, https://substackcdn.com/image/fetch/$s_!PLFG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa47c4e88-def6-4a02-9f8a-76588eb8d35c_3104x1376.png 848w, https://substackcdn.com/image/fetch/$s_!PLFG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa47c4e88-def6-4a02-9f8a-76588eb8d35c_3104x1376.png 1272w, https://substackcdn.com/image/fetch/$s_!PLFG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa47c4e88-def6-4a02-9f8a-76588eb8d35c_3104x1376.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>A different perspective: </strong>Build a fleet of <strong>lighthouses</strong>. Instead of pushing the whole company, pick 3 or 4 small, agile squads and give them <strong>specific missions</strong>.</p><ul><li><p><strong>Squad A, the builders:</strong> &#8220;Your mission is to see if AI can speed up our boilerplate coding.&#8221;</p></li><li><p><strong>Squad B, the guardians:</strong> &#8220;Your mission is to see if AI can write 80% of our unit tests.&#8221;</p></li><li><p><strong>Squad C, the scribes:</strong> &#8220;Your mission is to automate our technical documentation.&#8221;</p></li></ul><p>Your goal is not to get +100 people using AI poorly; it&#8217;s to get 3 teams using AI perfectly to solve specific, painful problems. Crucially, the job of these teams is not just to succeed, but to <strong>package their success so others can copy it</strong>.</p><p><strong>Experiments to try:</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qG2i!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d5fcc0e-7d4f-4cf5-8849-e6925bf11e54_3104x1376.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qG2i!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d5fcc0e-7d4f-4cf5-8849-e6925bf11e54_3104x1376.png 424w, https://substackcdn.com/image/fetch/$s_!qG2i!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d5fcc0e-7d4f-4cf5-8849-e6925bf11e54_3104x1376.png 848w, https://substackcdn.com/image/fetch/$s_!qG2i!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d5fcc0e-7d4f-4cf5-8849-e6925bf11e54_3104x1376.png 1272w, https://substackcdn.com/image/fetch/$s_!qG2i!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d5fcc0e-7d4f-4cf5-8849-e6925bf11e54_3104x1376.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qG2i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d5fcc0e-7d4f-4cf5-8849-e6925bf11e54_3104x1376.png" width="3104" height="1376" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3d5fcc0e-7d4f-4cf5-8849-e6925bf11e54_3104x1376.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1376,&quot;width&quot;:3104,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1436689,&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.theaithinker.com/i/186422589?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74cee1fd-1a05-45e1-aa51-0ca8f851b122_3104x1376.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_!qG2i!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d5fcc0e-7d4f-4cf5-8849-e6925bf11e54_3104x1376.png 424w, https://substackcdn.com/image/fetch/$s_!qG2i!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d5fcc0e-7d4f-4cf5-8849-e6925bf11e54_3104x1376.png 848w, https://substackcdn.com/image/fetch/$s_!qG2i!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d5fcc0e-7d4f-4cf5-8849-e6925bf11e54_3104x1376.png 1272w, https://substackcdn.com/image/fetch/$s_!qG2i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d5fcc0e-7d4f-4cf5-8849-e6925bf11e54_3104x1376.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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><ol><li><p><strong>Assign specific missions.</strong> Don&#8217;t just say &#8220;Use AI.&#8221; <strong>Give them a target.</strong></p><ol><li><p>To the QA team: &#8220;Can you use AI agents to automate the regression testing that eats up your Thursdays?&#8221;</p></li><li><p>To the backend team: &#8220;Can you use AI to refactor this legacy module we are all scared to touch?&#8221;</p></li><li><p>&#8230;</p></li></ol></li><li><p><strong>Grant velocity immunity, but enforce quality rigor.</strong> Give these teams permission to be slow, but forbid them from being sloppy. Tell them: &#8220;For the next 4 weeks, <strong>ignore your velocity metrics</strong>. It&#8217;s okay to be slow while learning. However, because AI generates code so fast, you must be stricter than ever on quality. You can use AI to build it, but <strong>you must use rigorous testing to verify it</strong>. No PR is merged without a comprehensive test suite.&#8221;</p></li><li><p><strong>Market the impact. </strong>When the experiment is done, don&#8217;t talk about lifestyle improvement or time saved. Talk about the <strong>elevation of craft</strong>.</p><ol><li><p>The message: &#8220;Look at the squad C. They used to hate writing documentation, so our docs were always outdated. Now, they use AI to generate structured, perfect documentation automatically. <strong>They stopped doing the boring work</strong> and spent that time designing the new API architecture.&#8221;</p></li><li><p>The hook: You are showing the other teams that AI doesn&#8217;t replace them; <strong>it replaces the boring parts of their job</strong> so they can focus on the high-impact engineering they actually enjoy.</p></li></ol></li><li><p><strong>Enforce the teacher tax. </strong>This is the deal: The lighthouse teams get the cool toys and the immunity, but in exchange, they must <strong>distribute the kit</strong>. They don&#8217;t just say &#8220;it works.&#8221; They must publish the specific prompts, the scripts, and the configuration files they used to the shared internal wiki. The goal: <strong>Any other team should be able to fork their success and start at step 10, not step 1.</strong></p></li></ol><h3>#2. The training matrix: Go beyond the bootcamp</h3><p><strong>The context: </strong>When companies decide to up-skill their workforce, they usually default to a single mode: the corporate bootcamp. You hire an agency, book a room, and teach +100 people at once. There is nothing wrong with this; <strong>it creates energy, establishes a shared vocabulary, and gets everyone&#8217;s attention</strong>. It&#8217;s a necessary kick-off.</p><p><strong>The challenge: </strong>The problem isn&#8217;t the bootcamp itself; the problem is stopping there. People don&#8217;t learn a complex new behavior just by listening to a lecture. <strong>They learn by trying, failing, and getting unstuck</strong>. If you rely 100% on the bootcamp, you hit the <strong>forgetting curve</strong>: people leave the room inspired, but the moment they face a specific blocker at their desk, they revert to their old habits. You are only pulling one lever when you need to pull four.</p><p><strong>The common trap: </strong>The <strong>one-size-fits-all approach</strong>. This is thinking that once you have ticked the box marked &#8220;training session,&#8221; your job is done. It assumes that a senior architect learns the same way as a junior dev, and that listening to a slide deck is the same as writing code.</p><p><strong>A different perspective: </strong>You need to deploy a <strong>training matrix</strong>. To get true adoption, you must cover all four quadrants of learning.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!y07Q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3abe7f7-fdb7-4999-b403-b0e0436b3a76_3104x1376.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!y07Q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3abe7f7-fdb7-4999-b403-b0e0436b3a76_3104x1376.png 424w, https://substackcdn.com/image/fetch/$s_!y07Q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3abe7f7-fdb7-4999-b403-b0e0436b3a76_3104x1376.png 848w, https://substackcdn.com/image/fetch/$s_!y07Q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3abe7f7-fdb7-4999-b403-b0e0436b3a76_3104x1376.png 1272w, https://substackcdn.com/image/fetch/$s_!y07Q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3abe7f7-fdb7-4999-b403-b0e0436b3a76_3104x1376.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!y07Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3abe7f7-fdb7-4999-b403-b0e0436b3a76_3104x1376.png" width="3104" height="1376" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a3abe7f7-fdb7-4999-b403-b0e0436b3a76_3104x1376.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1376,&quot;width&quot;:3104,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1311287,&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.theaithinker.com/i/186422589?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb788beba-f428-4483-950d-1337c704665c_3104x1376.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_!y07Q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3abe7f7-fdb7-4999-b403-b0e0436b3a76_3104x1376.png 424w, https://substackcdn.com/image/fetch/$s_!y07Q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3abe7f7-fdb7-4999-b403-b0e0436b3a76_3104x1376.png 848w, https://substackcdn.com/image/fetch/$s_!y07Q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3abe7f7-fdb7-4999-b403-b0e0436b3a76_3104x1376.png 1272w, https://substackcdn.com/image/fetch/$s_!y07Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3abe7f7-fdb7-4999-b403-b0e0436b3a76_3104x1376.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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><ol><li><p><strong>The launchpad (group + synchronous):</strong> The bootcamps. Use them to set the vision, explain the basics, and create group momentum.</p></li><li><p><strong>The library (group + asynchronous):</strong> This is your <strong>AI playbook</strong>. It&#8217;s the self-service documentation and tutorials where anyone can go to find answers when they are stuck.</p></li><li><p><strong>The shadowing (individual + synchronous):</strong> This is the most important quadrant. This is 1-on-1 coaching. It&#8217;s when an AI champion sits next to a watcher and helps them debug a specific problem. That moment of clicking: when the watcher realizes, &#8220;Oh, that&#8217;s how you do it,&#8221; only happens here.</p></li><li><p><strong>The lab (individual + asynchronous):</strong> This is learning by doing. Giving people specific solo projects or homework to explore the tools at their own pace.</p></li></ol><p><strong>Experiments to try:</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0rDV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f76ee3e-bd40-48a1-9493-9d133280d17f_3104x1376.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0rDV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f76ee3e-bd40-48a1-9493-9d133280d17f_3104x1376.png 424w, https://substackcdn.com/image/fetch/$s_!0rDV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f76ee3e-bd40-48a1-9493-9d133280d17f_3104x1376.png 848w, https://substackcdn.com/image/fetch/$s_!0rDV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f76ee3e-bd40-48a1-9493-9d133280d17f_3104x1376.png 1272w, https://substackcdn.com/image/fetch/$s_!0rDV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f76ee3e-bd40-48a1-9493-9d133280d17f_3104x1376.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0rDV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f76ee3e-bd40-48a1-9493-9d133280d17f_3104x1376.png" width="3104" height="1376" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2f76ee3e-bd40-48a1-9493-9d133280d17f_3104x1376.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1376,&quot;width&quot;:3104,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1414272,&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.theaithinker.com/i/186422589?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9422797e-4982-4b88-94ce-9f6085dabf94_3104x1376.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_!0rDV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f76ee3e-bd40-48a1-9493-9d133280d17f_3104x1376.png 424w, https://substackcdn.com/image/fetch/$s_!0rDV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f76ee3e-bd40-48a1-9493-9d133280d17f_3104x1376.png 848w, https://substackcdn.com/image/fetch/$s_!0rDV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f76ee3e-bd40-48a1-9493-9d133280d17f_3104x1376.png 1272w, https://substackcdn.com/image/fetch/$s_!0rDV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f76ee3e-bd40-48a1-9493-9d133280d17f_3104x1376.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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><ol><li><p><strong>Organize the bootcamps.</strong> Use the workshops to set the vision, explain the basics, and create group momentum. They are your launchpad for the head (alignment), not the destination for the hands (skills).</p></li><li><p><strong>Launch shadowing sessions.</strong> This is where the real skill transfer happens.</p><ol><li><p>The action: Pair your champions (top 20%) with your watchers (middle 60%).</p></li><li><p>The task: &#8220;Sit together for 1 hour. The champion watches the watcher work and intervenes only to show a better AI workflow.&#8221;</p></li><li><p>The goal: Creating those <strong>&#8220;Aha!&#8221; moments</strong> that never happen in a classroom.</p></li></ol></li><li><p><strong>Build the AI playbook.</strong> Don&#8217;t just list prompts. Build a series of guides.</p><ol><li><p>The content: &#8220;How to refactor legacy code,&#8221; &#8220;How to write unit tests with agents,&#8221; &#8220;What not to do.&#8221;</p></li><li><p>The method: <strong>Gamify it</strong>. Encourage the team to write these pages. The person who writes the most useful guide gets a badge.</p></li></ol></li><li><p><strong>Establish office hours. </strong>Create a recurring open slot where anyone can drop in to share what they learned or ask for help. This bridges the gap between individual struggle and group learning.</p></li></ol><h3>#3. The Aikido move: Redirect individual energy</h3><p><strong>The context: </strong>Earlier, I told you to ignore the resistors in group settings. That rule stands: never give a platform to negativity in a town hall. However, <strong>you cannot manage a team by ignoring individuals</strong>. Eventually, you will sit down for a coffee with a scared watcher, or a frustrated champion who wants to bypass security protocols. You need a universal way to handle these conversations without getting into an exhausting debate.</p><p><strong>The challenge: </strong>Most managers handle objections with <strong>logic</strong> or <strong>policy</strong>.</p><ul><li><p>When a <strong>watcher</strong> says, &#8220;AI writes bad code,&#8221; the manager argues: &#8220;No, look at the benchmarks, it&#8217;s faster.&#8221;</p></li><li><p>When a <strong>champion</strong> says, &#8220;Security is blocking me, I need to use this unauthorized tool,&#8221; the manager quotes the rulebook: &#8220;Compliance is mandatory.&#8221;</p></li></ul><p>In both cases, <strong>you are building a wall</strong>. The watcher feels unheard and digs in. The champion feels stifled and disengages (or goes rogue). You are fighting against their energy.</p><p><strong>The common trap: </strong>The <strong>head-on collision</strong>. This is when you try to stop someone&#8217;s emotion with a fact. If a developer feels a loss of craft, showing them a productivity chart doesn&#8217;t help; it insults them. If a champion feels a need for speed, telling them to wait for legal kills their drive.</p><p><strong>A different perspective: </strong>Use <strong>Aikido</strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mIV1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0c5250c-632a-443c-9904-84d19e26c639_3104x1376.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mIV1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0c5250c-632a-443c-9904-84d19e26c639_3104x1376.png 424w, https://substackcdn.com/image/fetch/$s_!mIV1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0c5250c-632a-443c-9904-84d19e26c639_3104x1376.png 848w, https://substackcdn.com/image/fetch/$s_!mIV1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0c5250c-632a-443c-9904-84d19e26c639_3104x1376.png 1272w, https://substackcdn.com/image/fetch/$s_!mIV1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0c5250c-632a-443c-9904-84d19e26c639_3104x1376.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mIV1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0c5250c-632a-443c-9904-84d19e26c639_3104x1376.png" width="3104" height="1376" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c0c5250c-632a-443c-9904-84d19e26c639_3104x1376.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1376,&quot;width&quot;:3104,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1129808,&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.theaithinker.com/i/186422589?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F543331e4-3f63-46c6-8f8a-22c564b44a88_3104x1376.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_!mIV1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0c5250c-632a-443c-9904-84d19e26c639_3104x1376.png 424w, https://substackcdn.com/image/fetch/$s_!mIV1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0c5250c-632a-443c-9904-84d19e26c639_3104x1376.png 848w, https://substackcdn.com/image/fetch/$s_!mIV1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0c5250c-632a-443c-9904-84d19e26c639_3104x1376.png 1272w, https://substackcdn.com/image/fetch/$s_!mIV1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0c5250c-632a-443c-9904-84d19e26c639_3104x1376.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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>Aikido is a Japanese martial art where you do not block an attack. Instead, you step aside, grab the attacker&#8217;s wrist, and use their own momentum to throw them in a new direction. In management, this means: <strong>Don&#8217;t fight the energy; redirect it. </strong>You must <strong>validate their specific feeling</strong> (catch the punch) and then <strong>pivot that energy toward a goal</strong> that helps the company (redirect the throw).</p><p><strong>Experiments to try:</strong></p><ul><li><p><strong>Validate the emotion, the catch.</strong> No matter who you are talking to, agree with their emotion. Do not say &#8220;But...&#8221; Say &#8220;You&#8217;re right.&#8221;</p><ul><li><p>To the watcher (fear): &#8220;You&#8217;re right. The AI code is often mediocre and risky compared to what you write.&#8221;</p></li><li><p>To the champion (frustration): &#8220;I agree. The security process is too slow and it is killing your momentum.&#8221;</p></li><li><p>Why: This lowers their defenses. <strong>You are no longer the enemy; you are an ally.</strong></p></li></ul></li><li><p><strong>Redirect the momentum, the pivot. </strong>Use their specific energy to assign a new, valuable role that benefits the team.</p><ul><li><p><strong>For the watcher:</strong> They have fear or caution. Tell them: &#8220;Because you are so skeptical of the quality, I need you to be the final Human-in-the-Loop. Don&#8217;t write the code; audit the AI. You are now our quality guardian.&#8221;</p></li><li><p><strong>For the champion:</strong> They have excess energy. Tell them: &#8220;Because you move so fast, I need you to lead the experimental sandbox. You break the rules there, and then you teach us what is safe. You are now our R&amp;D lead.&#8221;</p></li></ul></li><li><p><strong>Formalize the new mandate.</strong> Don&#8217;t leave it as a casual chat. Send a follow-up email confirming their new special assignment.</p><ul><li><p>The action: &#8220;Mark, as discussed, I&#8217;m counting on you to be the quality guardian for the AI output. Please reject any PR that doesn&#8217;t meet your standards.&#8221;</p></li><li><p>The result: <strong>You have turned their objection into a job description.</strong></p></li></ul></li></ul><p>With these three tactics, you have a complete operating system for driving change. You are no longer pushing a boulder uphill; you are creating an environment where adoption becomes the path of least resistance. However, even with the best strategy, you will still encounter specific, loud roadblocks. In the next section, we will look at the common objections you will face and exactly how to handle them.</p><div><hr></div><h2>Some scripts for overcoming resistance</h2><p>Tactics are useful for how to implement AI, but they don&#8217;t answer the why. In my conversations at meetups, forums, and coffee breaks, I&#8217;ve noticed a shift. It&#8217;s no longer just about &#8220;how do I prompt?&#8221;. <strong>The questions are getting deeper.</strong> From what I can see right now, the resistance tends to cluster around three main anxieties. This isn&#8217;t an exhaustive list (and the landscape changes every week) but these are the three main battles I see managers facing most often today.</p><p>These aren&#8217;t haters; <strong>they are often your most conscientious employees</strong> acting as the company&#8217;s immune system. If you ignore them, you lose your soul. If you fight them, you lose your talent. Here is how to navigate them.</p><h3>#1. The crisis of meaning: Redefine the craft</h3><p><strong>The context: </strong>You are in a 1-on-1 with a senior developer. They look demoralized. They tell you: &#8220;If my job is just to verify code generated by a machine, I feel like a factory operator, not an engineer. <strong>I don&#8217;t want to be a human-in-the-loop compliance officer.</strong> If you strip the craftsmanship out of my role, why should I be loyal to the mission? I might as well be a mercenary doing the bare minimum.&#8221;</p><p><strong>The challenge: </strong>This is the fear of <strong>mediocrity and boredom</strong>. Your top talent thrives on problem-solving. They fear that AI will automate the fun part (the creative coding) and leave them with the boring part (reading and debugging someone else&#8217;s sloppy code). <strong>They worry about mediocrity by design</strong> that by relying on a probabilistic model, we are destined to build average, uninspired products.</p><p><strong>The common trap: Dismissing their pride</strong>. Telling them: &#8220;You shouldn&#8217;t care who writes the code as long as it ships.&#8221; Or worse, telling them: &#8220;This frees you up to do higher level thinking,&#8221; without defining what that actually means. To a builder, not building feels like dying.</p><p><strong>A different perspective:</strong> You must redefine craftsmanship. Acknowledge that AI is, by definition, the average of the internet. It cannot invent the &#8220;pink elephant with wings&#8221; unless it has seen it. Don&#8217;t try to rebrand them as curators. <strong>Reviewing AI code is painful work</strong>, and they know it. Instead, reframe the altitude of their work. Tell them: &#8220;You are right. Reviewing code is boring. But I don&#8217;t need you to be a compliance officer. I need you to be the staff engineer. The AI is the junior developer. You need to stop writing loops and start designing systems.&#8221;</p><p><strong>Experiments to try:</strong></p><ol><li><p><strong>Map the difference between drudgery and art.</strong> Sit down and map their tasks. Agree that debugging AI code is boring. Ask: &#8220;Let&#8217;s use the AI only <strong>for the parts of the job you hate</strong> (boilerplate, unit tests). I want you to ban AI from the crown jewels, the complex core architecture where your human expertise is irreplaceable.&#8221;</p></li><li><p><strong>Elevate their role to system architect.</strong> Formalize their shift from code writer to system designer. Stop asking them to curate output. <strong>Ask them to orchestrate solutions</strong>. Tell them: &#8220;The AI can lay the bricks, but it cannot design the cathedral. I need you to focus 100% of your energy on system design, security, and scalability. You are now the architect; the AI is just the contractor.&#8221;</p></li><li><p><strong>Designate specific no-AI zones.</strong> Designate specific complex projects where AI is forbidden to keep their mental muscles sharp. &#8220;For this critical security module, I want zero AI. We need pure human understanding here.&#8221;</p></li></ol><h3>#2. The debt trap: Enforce explainability</h3><p><strong>The context: </strong>A lead architect challenges you in a meeting: &#8220;We are generating features at 10x speed, but we are also accruing 10x understanding debt. In three years, when this complex AI-generated system fails, will we have anyone left on staff <strong>who actually understands the architecture well enough to fix it?</strong> Or are we becoming a vibe coding company where we just guess until it works?&#8221;</p><p><strong>The challenge: </strong>This is the fear of <strong>fragility</strong>. It&#8217;s a valid fear. If the goal of AI is to remove human input from decision-making, code robustness usually suffers. We risk building a black box that nobody understands, leading to a catastrophic failure that no human can debug because they have lost the meta-knowledge of how the system was built.</p><p><strong>The common trap: </strong>Blind optimism. Saying: &#8220;The AI will be better at debugging by then,&#8221; or &#8220;We have tests for that.&#8221; This confirms their suspicion that leadership is reckless and focused only on <strong>short-term KPIs</strong> like lines of code generated.</p><p><strong>A different perspective: </strong>Treat the AI as an <strong>unreliable narrator</strong>. Agree that understanding debt is the biggest risk to the company. Position the senior architect not as a blocker, but as the guardian against this debt.</p><p><strong>Experiments to try:</strong></p><ol><li><p><strong>Enforce explainability reviews.</strong> Change your code review policy. &#8220;If you use AI to generate a function, you must be able to explain exactly how it works line-by-line during the review. <strong>If you can&#8217;t explain it, the PR is rejected</strong>. We don&#8217;t ship code we do not understand.&#8221;</p></li><li><p><strong>Institute the whiteboard rule.</strong> Build knowledge maintenance into the daily workflow. During a PR review, the reviewer picks one complex, AI-generated function at random and asks the author to explain the logic on a whiteboard (or shared screen) without looking at the comments. <strong>If they fail, the code is rewritten manually.</strong></p></li><li><p><strong>Define strict limits for vibe coding.</strong> Set strict boundaries. &#8220;Vibe coding is okay for prototypes. <strong>It&#8217;s strictly banned for production core.</strong> For production, we need engineering, not vibes.&#8221;</p></li></ol><h3>#3. The ethical objector: Prioritize utility</h3><p><strong>The context: </strong>An employee raises a hand at a team meeting: &#8220;How do we plan to take responsibility for the environmental impact? We are consuming water and energy at the scale of a small nation just to generate mediocre emails. <strong>Are we becoming an unsustainable company?</strong> Is this just a bubble like the Expert Systems of the 70s, and we are destroying the planet for a fad?&#8221;</p><p><strong>The challenge: </strong>This is the fear of <strong>moral alignment</strong>. Employees want to work for a company that does good. If they see AI being used wastefully (e.g., generating 4 images of a wine glass just to pick one), they see leadership as irresponsible. They worry about the out by default principle: that perhaps <strong>we shouldn&#8217;t use AI at all unless necessary.</strong></p><p><strong>The common trap: </strong>Greenwashing. Saying: &#8220;We offset our carbon,&#8221; or &#8220;We have to do it because competitors are.&#8221; This sounds hollow to someone who is genuinely worried about the depletion of resources.</p><p><strong>A different perspective: </strong>Adopt a strategy of <strong>intelligent parsimony </strong>or frugal AI. Agree that AI should be out by default. It should only be used when the value exceeds the cost.</p><p><strong>Experiments to try:</strong></p><ol><li><p><strong>Conduct a utility vs. cost audit.</strong> Don&#8217;t use AI for everything. &#8220;We are not going to use LLMs to classify simple text if a regex script can do it. We will use the smallest model possible for the job. <strong>We don&#8217;t need a cannon to kill a fly.</strong>&#8221;</p></li><li><p><strong>Reward real work over POCs.</strong> Address the fear that only AI toys are rewarded. Publicly recognize a team that delivered a critical non-AI feature or optimized a system to use less compute.</p></li><li><p><strong>Assign the value density mandate.</strong> Redirect their eco-anxiety into governance. &#8220;I share your concern. That&#8217;s why I want you to audit our usage. We will strictly limit inference to <strong>high-leverage engineering tasks</strong>. We will not use GPUs to summarize Slack threads or write emails. If the output doesn&#8217;t justify the energy cost, we kill the feature. Your job is to ensure we aren&#8217;t using a chainsaw to cut butter.&#8221;</p></li></ol><p>If you want to dig deeper into the actual ecological impact of LLMs, there is this article from <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Andy Masley&quot;,&quot;id&quot;:166280567,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/96781da3-f773-46cb-b236-dd80350291a2_1002x1002.png&quot;,&quot;uuid&quot;:&quot;c07b1d2f-4c6f-4fd0-a806-8f7e3560fcbb&quot;}" data-component-name="MentionToDOM"></span>. It really helped ground my understanding. It has become my personal reference whenever I need logical explanations on the topic.</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:162196004,&quot;url&quot;:&quot;https://andymasley.substack.com/p/a-cheat-sheet-for-conversations-about&quot;,&quot;publication_id&quot;:1915042,&quot;embedding_publication_id&quot;:null,&quot;publication_name&quot;:&quot;Andy Masley&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Pru0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad4afb3e-1bea-4341-8b57-ef4f1aae571b_1128x1128.png&quot;,&quot;title&quot;:&quot;Using ChatGPT is not bad for the environment - a cheat sheet&quot;,&quot;truncated_body_text&quot;:&quot;This post will be a cheat sheet for answering every environmental objection to using ChatGPT. I&#8217;ve broken it up so you can skip around and only read sections relevant or interesting to you. If you think I&#8217;m getting anything wrong I&#8217;d be excited to update this with the most accurate numbers. Please let me know in the comments or at&quot;,&quot;date&quot;:&quot;2025-04-28T03:25:56.052Z&quot;,&quot;like_count&quot;:715,&quot;comment_count&quot;:102,&quot;bylines&quot;:[{&quot;id&quot;:166280567,&quot;name&quot;:&quot;Andy Masley&quot;,&quot;handle&quot;:&quot;andymasley&quot;,&quot;previous_name&quot;:&quot;Andrew Masley&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/96781da3-f773-46cb-b236-dd80350291a2_1002x1002.png&quot;,&quot;bio&quot;:&quot;Director of EA DC. When the going gets weird the weird turn pro.&quot;,&quot;profile_set_up_at&quot;:&quot;2023-08-31T04:55:33.979Z&quot;,&quot;reader_installed_at&quot;:&quot;2023-09-05T18:58:19.147Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:1904560,&quot;user_id&quot;:166280567,&quot;publication_id&quot;:1915042,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:1915042,&quot;name&quot;:&quot;Andy Masley&quot;,&quot;subdomain&quot;:&quot;andymasley&quot;,&quot;custom_domain&quot;:null,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Crossing the river by touching the stones&quot;,&quot;logo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ad4afb3e-1bea-4341-8b57-ef4f1aae571b_1128x1128.png&quot;,&quot;author_id&quot;:166280567,&quot;primary_user_id&quot;:166280567,&quot;theme_var_background_pop&quot;:&quot;#0068EF&quot;,&quot;created_at&quot;:&quot;2023-08-31T04:55:35.918Z&quot;,&quot;email_from_name&quot;:&quot;Andy Masley&quot;,&quot;copyright&quot;:&quot;Andrew Masley&quot;,&quot;founding_plan_name&quot;:&quot;Andy Superfan Tier&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;enabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false}}],&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null,&quot;status&quot;:{&quot;bestsellerTier&quot;:null,&quot;subscriberTier&quot;:null,&quot;leaderboard&quot;:null,&quot;vip&quot;:false,&quot;badge&quot;:null,&quot;paidPublicationIds&quot;:[],&quot;subscriber&quot;:null}}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;,&quot;source&quot;:null}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://andymasley.substack.com/p/a-cheat-sheet-for-conversations-about?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><div class="embedded-post-header"><img class="embedded-post-publication-logo" src="https://substackcdn.com/image/fetch/$s_!Pru0!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad4afb3e-1bea-4341-8b57-ef4f1aae571b_1128x1128.png" loading="lazy"><span class="embedded-post-publication-name">Andy Masley</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">Using ChatGPT is not bad for the environment - a cheat sheet</div></div><div class="embedded-post-body">This post will be a cheat sheet for answering every environmental objection to using ChatGPT. I&#8217;ve broken it up so you can skip around and only read sections relevant or interesting to you. If you think I&#8217;m getting anything wrong I&#8217;d be excited to update this with the most accurate numbers. Please let me know in the comments or at&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">a year ago &#183; 715 likes &#183; 102 comments &#183; Andy Masley</div></a></div><p>You cannot win these battles by arguing. You win them by agreeing. The bored genius is right: AI is boring if you use it wrong. The architect is right: understanding debt is real. The eco-warrior is right: the energy cost is high. By validating these fears and putting strict human guardrails in place, you turn your biggest critics into the guardians of your quality. <strong>You don&#8217;t ask them to blindly trust the machine; you ask them to manage it.</strong></p><div><hr></div><h2>One final tip: Build your own compass</h2><p>Before we wrap up, I want to share where a lot of these insights came from.</p><p>I didn&#8217;t just rely on my own observations from the trenches. To structure the concepts, I spent some hours debating with Gemini. I treated the AI as a sparring partner, asking it to role-play as a <strong>change management expert</strong> to challenge my assumptions and refine these tactics.</p><p>I remember when I was a consultant at the beginning of my career, I had to read stack of books on change management. Those books gave me great reflexes and models that I still use today. <strong>But books have one flaw: they are static.</strong> They give you the average advice for the average company. But your company is not average. Your culture is specific. <strong>Your blockers are unique.</strong></p><p>Today, the best way to learn change management isn&#8217;t just to read a book; it&#8217;s to ask questions. Change management is, at its core, very simple: it&#8217;s just helping people move from point A to point B. But because every person is different, <strong>the help they need varies wildly</strong>. Some need reassurance, some need data, some need a challenge. You will have to repeat yourself, and <strong>you will have to adapt your pitch ten different ways</strong>.</p><p>So, rather than just giving you the fish, I want to give you the fishing rod. If you are stuck with a specific team or a specific battle we didn&#8217;t cover here, go ask the AI. But don&#8217;t ask it to write an email. <strong>Ask it to think with you.</strong></p><p>Here is the exact prompt I used to start thinking about the broader challenges of AI transformation and how it impacts people. Feel free to adapt it and use it to debug your own specific challenges:</p><blockquote><p>Imagine you are a change management expert and we have a simple conversation at the coffee machine. You have managed a lot of AI transformations in other companies so you know the main obstacles. You are my friend and you try to help me. I will ask you some questions and you will answer them with simple words, no jargon, and concrete analogies. Let&#8217;s start.</p></blockquote><p><strong>Treat the AI as your coach.</strong> It won&#8217;t do the change for you, but it will help you find the words to make the change happen.</p><div><hr></div><p>If you take only one thing away from this, let it be this: <strong>AI adoption is 10% technology and 90% sociology.</strong></p><p>We spend hours debating which model or tool is better but we spend almost no time debating <strong>how to make the teams feel safe enough to use them.</strong> As we have seen, the barrier isn&#8217;t that the tool is too hard to learn; the barrier is that the change feels too dangerous to accept.</p><p>Your job as a manager has changed. You&#8217;re no longer a lead ensuring the code ships. You are now the <strong>bridge</strong>:</p><ul><li><p>You are the bridge between the <strong>head</strong> (strategy) and the <strong>heart</strong> (fear).</p></li><li><p>You are the bridge between the <strong>champions</strong> who want to run fast and the <strong>watchers</strong> who are afraid to fall.</p></li><li><p>You are the bridge between the <strong>efficiency</strong> of the machine and the <strong>craftsmanship</strong> of the human.</p></li></ul><p>This transition will not be a straight line. You will hit the valley of despair. You will have days where the resistors make you want to quit, and days where the champions accidentally break production. That is not a sign of failure; <strong>that&#8217;s the messy, necessary work of evolution.</strong></p><p>The goal is not to build a team that works for the AI, blindly following prompts. The goal is to build a team where the AI handles the drudgery (the boilerplate, the tests, the docs) so that your humans can finally do the job they were actually hired to do: <strong>think, create, and architect.</strong></p><p>The tools will change next week. The principles of human psychology will not. <strong>Focus on the humans, and the tech will take care of itself.</strong></p>]]></content:encoded></item><item><title><![CDATA[How to write prompts that actually work]]></title><description><![CDATA[Talk to the AI as you would to a human and use voice dictation to provide rich context. Force the model to ask clarifying questions and request concrete plans before it starts working.]]></description><link>https://www.theaithinker.com/p/how-to-write-prompts-that-actually</link><guid isPermaLink="false">https://www.theaithinker.com/p/how-to-write-prompts-that-actually</guid><dc:creator><![CDATA[Adam Faik]]></dc:creator><pubDate>Mon, 26 Jan 2026 12:02:48 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/13aa0da2-b362-4133-85c3-5243b983db45_1024x731.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I still see workshops and courses popping up everywhere about the art of writing prompts. I&#8217;m not sure we should elevate this to the rank of an art. Personally, <strong>I write my prompts quickly</strong> most of the time. When the task is important, <strong>I simply ask the model to write the prompt for me</strong>. That&#8217;s how I manage. You could honestly stop reading right here and just do that. Everything else I&#8217;m about to share is just training and muscle memory, but you don&#8217;t need to spend hours studying theory.</p><p>This current phase with LLMs reminds me exactly of my childhood. My parents put a computer and a stack of floppy disks on my desk. It felt magical to look at that <strong>black screen where you could type commands</strong> and watch programs run. The problem was that I didn&#8217;t know how to read yet, let alone write. I just wanted to play with the arrow keys. <strong>I had to wait for my uncle to visit</strong> so he could type the right command for me to finally see something happen.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Usz9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53cff5ae-a5f9-4810-b323-0b140591edb2_2000x1333.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Usz9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53cff5ae-a5f9-4810-b323-0b140591edb2_2000x1333.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Usz9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53cff5ae-a5f9-4810-b323-0b140591edb2_2000x1333.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Usz9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53cff5ae-a5f9-4810-b323-0b140591edb2_2000x1333.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Usz9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53cff5ae-a5f9-4810-b323-0b140591edb2_2000x1333.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Usz9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53cff5ae-a5f9-4810-b323-0b140591edb2_2000x1333.jpeg" width="2000" height="1333" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/53cff5ae-a5f9-4810-b323-0b140591edb2_2000x1333.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1333,&quot;width&quot;:2000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:581064,&quot;alt&quot;:&quot;A young child in a plaid shirt sits at a large, vintage computer terminal with a dark screen at an exhibit in the 1990s.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/185455972?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3729516-5e1a-46f8-8ebf-3a0fe71c50da_2000x1333.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A young child in a plaid shirt sits at a large, vintage computer terminal with a dark screen at an exhibit in the 1990s." title="A young child in a plaid shirt sits at a large, vintage computer terminal with a dark screen at an exhibit in the 1990s." srcset="https://substackcdn.com/image/fetch/$s_!Usz9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53cff5ae-a5f9-4810-b323-0b140591edb2_2000x1333.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Usz9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53cff5ae-a5f9-4810-b323-0b140591edb2_2000x1333.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Usz9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53cff5ae-a5f9-4810-b323-0b140591edb2_2000x1333.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Usz9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53cff5ae-a5f9-4810-b323-0b140591edb2_2000x1333.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Not my personal machine. Just me at a 1990s Paris exhibit, already fascinated by terminal screens</figcaption></figure></div><p>We are back in that exact era with LLMs today. We stare at a blinking cursor and need to know precisely what to type to get a quality result. It&#8217;s ironic when you think about it. Designers spent decades fighting to prove that <strong>user experience matters more than raw features</strong>. They built beautiful interfaces to hide the complexity of the machine. Now, with the arrival of LLMs, <strong>all that work has reset to zero</strong>. We are effectively <strong>back to the command line</strong>.</p><p>Interfaces will eventually evolve to become more intuitive. We won&#8217;t always need to guess the right words. But in the meantime, we have to understand how the system works to get what we want. It&#8217;s like Aladdin&#8217;s magic lamp. It can do almost anything, but <strong>you still need to know how to rub it the right way</strong>.</p><p>I checked my usage statistics recently and was actually shocked. I send a prompt roughly every ten minutes. I haven&#8217;t studied the theory, <strong>I just tested things relentlessly</strong>.</p><p>In this article, I share a <strong>list of what actually works for me</strong>. To be clear, these are tips from my personal experience, so it&#8217;s very empirical. Some might be interesting for you, others you may already know, and some might not benefit you at all. But I wanted to list everything, speaking as an extensive user of Gemini, while also applying lessons from ChatGPT and Claude. I have no scientific background or experimentation to prove my points; I am just sharing the practical workflows that make me a better professional today.</p><div><hr></div><h3>Tip 1: Push through the initial disappointment</h3><p>If this is your first time prompting, or if you are trying again after a break, here is the secret: <strong>just keep going</strong>. You have to force the habit. Eventually, something will click. In the meantime, you must <strong>make the LLM your default reflex for every single task</strong>. </p><p>It&#8217;s perfectly normal to feel disappointed at the start. I went through this exact phase. I gave up for a while because I thought asking AI was slowing me down. But then I changed my approach. I stopped asking the AI to do the job for me. Instead, I started asking it to <strong>help me do the job</strong>. That small shift changed everything. But even today, when a new AI tool doesn&#8217;t work instantly, I sometimes get frustrated and want to <strong>go back to my old, comfortable workflow</strong>.</p><p>If you are staring at that empty bar and don&#8217;t know where to start, keep it simple. <strong>Talk to it like a colleague</strong>. Don&#8217;t worry about being formal. You don&#8217;t need to say &#8220;Hello&#8221; or be polite. Just ask your question directly, exactly as you would to a peer sitting next to you. You have to be resilient enough to <strong>push past the friction</strong> until you truly understand how the tool thinks.</p><h3>Tip 2: Fix your delegation skills to fix your prompts</h3><p>I&#8217;ve noticed a revealing pattern. The people who find it hardest to write prompts are often the same people who <strong>struggle to communicate their needs to other humans</strong>. Prompting is not really a technical skill: it&#8217;s a communication skill.</p><p>When I draft a prompt, especially orally, I play a mental trick. <strong>I visualize a specific colleague sitting across from me</strong>. I imagine I&#8217;m formally delegating a task to them. I explain the project, the background, the current problem, and exactly what I need them to do.</p><p>If you treat the prompt bar like a Google search, you will get vague results. But if you <strong>treat it like a delegation meeting</strong>, you will naturally include the right context, the right nuance, and the right constraints. If you can explain it clearly to a smart intern, you can explain it to the model.</p><h3>Tip 3: Replace your Google reflex with an AI query</h3><p>We all have the same reflex: when we need information, we open a new tab and type it into Google. Even I still catch myself doing it, yet it&#8217;s often the least efficient way.</p><p>Recently, I needed to know exactly which AI models are used by Miro&#8217;s new features. I instinctively Googled &#8220;AI models Miro support center.&#8221; I had to click through five different links, accept cookies, and scan vague support pages. If I had just asked Gemini, it would have browsed the web for me and given me the answer in seconds, with sources.</p><p>Some argue that AI consumes too much energy for simple queries. But my opinion is that <strong>one targeted prompt is more efficient than ten hazardous Google searches</strong> that load ads and scripts on every page.</p><p>This is even more true for complex searches. Search engines are optimized for SEO and engagement, not for relevance. Recently, I was looking for specific YouTube videos about a niche AI feature. YouTube&#8217;s native search kept feeding me popular, generic videos that had nothing to do with my query. When I launched a <strong>deep research </strong>on Gemini for the same topic, it ignored the algorithm&#8217;s noise and found the exact videos I needed, even ones that weren&#8217;t trending.</p><p>For specific technical queries, <strong>having an AI extract the exact answer</strong> is often much more efficient than filtering through a list of search results yourself.</p><h3>Tip 4: Make reasoning models your default</h3><p>The choice of model is actually more important than the prompt itself. <strong>I use a reasoning model (like Gemini 3 Pro) by default</strong>, even if it takes a few extra seconds to generate an answer. The value is that it acts like a translator: it takes my rough, hand-waving input and <strong>converts it into detailed instructions</strong> automatically.</p><p>There was a time when prompt experts told us we had to list every action step-by-step to get a good result. They called it &#8220;chain of thought&#8221; prompting. <strong>That&#8217;s no longer necessary</strong>. With reasoning models, you can write a lazy prompt. The model will pause, think, breaking your request down into logical steps before it even starts writing the answer.</p><p>For me, <strong>fast, non-reasoning models are now the exception</strong>. I only use them when I don&#8217;t want a complex answer or when I am in a rush. For everything else, I let the model do the heavy lifting of structuring the problem.</p><h3>Tip 5: Anonymize everything unless you have an NDA</h3><p>At first, in the euphoria of discovery, we tend to dump everything into the prompt. Client names, confidential figures, internal strategy. You have to be careful. Unless your company has a specific enterprise agreement with the provider, <strong>assume your data isn&#8217;t private</strong>. I&#8217;m not a lawyer, but with so many new tools appearing, it&#8217;s risky to trust them blindly.</p><p>My golden rule is simple: <strong>if you wouldn&#8217;t post it on LinkedIn, don&#8217;t paste it into the model</strong>.</p><p>When I need to analyze a spreadsheet or sensitive feedback, I am extra cautious because simply changing a name to &#8220;client A&#8221; is often not enough. Unique data patterns can still identify a company (a risk known as &#8220;fingerprinting&#8221;). So, instead of relying on manual editing which is prone to error, I ask the model to <strong>write a Python script to anonymize the file locally</strong> before I upload the real data. It&#8217;s a small habit to build, but it allows you to work with peace of mind.</p><h3>Tip 6: Unfreeze your thinking by speaking</h3><p>I write about 60% of my prompts vocally. I&#8217;m not talking about the conversational voice mode where you chat back and forth. I mean using <strong>speech-to-text dictation</strong>. I use this for prompts, messages, and notes because typing on a keyboard tends to freeze your thinking. You worry about structure while you type.</p><p>When you speak, you can just <strong>dump everything out</strong>. It doesn&#8217;t matter if it&#8217;s unstructured or repetitive. In fact, repetition is good: it tells the model which points are important.</p><p>My best documents were created when I got up from my chair, put in my AirPods, and went for a walk. I just <strong>ranted to the model about all my problems</strong> on a project. Then, I simply asked it to turn that chaotic monologue into a structured document. I do this at the office, too. I find a quiet spot and just talk. My colleagues probably think I am in a meeting, but <strong>I am just having a meeting with my models</strong>.</p><p>Standard dictation tools (like on Mac) can make you want to pull your hair out. I recommend using dedicated tools like <a href="https://superwhisper.com/">Superwhisper</a>, <a href="https://betterdictation.com/">Better Dictation</a>, <a href="https://tryvoiceink.com/">Voice Ink</a>, or <a href="https://wisprflow.ai/">Wispr Flow</a>. Otherwise, the voice feature in the ChatGPT is also very reliable (the small microphone &#8220;dictate&#8221; icon in the text bar). Their dictation feature is surprisingly accurate.</p><p>You don&#8217;t have to do everything this way, but for complex topics, <strong>speaking beats typing every time</strong>.</p><h3>Tip 7: Ask the model to write the prompt for you</h3><p>I honestly don&#8217;t know why I waited this long to share this one. It&#8217;s probably <strong>the most important tip</strong> on this list. Sometimes the stakes are high. Maybe you are launching a deep research task that will run for 20 minutes, or you are building a prompt you intend to reuse fifty times. You cannot afford to be vague.</p><p>In these specific cases, I stop trying to be the expert. I admit that <strong>the model knows how to speak AI better than I do</strong>. Instead of struggling to write a prompt that respects all the complex standards and best practices, I simply ask Gemini to do it for me.</p><p>Here is how it works. I tell the model: &#8220;I want to create an AI assistant that analyzes a project and suggests success metrics. <strong>Write the best possible system instructions for this assistant</strong>.&#8221; The model will then generate a perfectly structured prompt, often better than anything I could have crafted myself. It&#8217;s like asking a chef to write down the recipe for you, rather than trying to guess the ingredients by taste.</p><h3>Tip 8: Assign a persona to unlock specific skills</h3><p>I mentioned earlier that you should talk to the AI like a colleague. But I realized that it works even better if you <strong>choose exactly which colleague</strong>. If you don&#8217;t specify anything, you get a generic, average response from someone polite, smooth, who tries to please everyone but delivers nothing remarkable.</p><p>You have to cast the role. If I explicitly say <strong>&#8220;act as a ruthless senior developer&#8221;</strong> or &#8220;act as a pedagogical expert for children,&#8221; everything changes. The vocabulary shifts, the sentence structure adapts, and the depth increases. It feels like unlocking a hidden part of the model&#8217;s brain.</p><p>Recently, I tried something extreme: I asked the model to <strong>&#8220;act as a skeptic who absolutely hates this project.&#8221;</strong> The arguments it produced were brutal, but they were incredibly valuable. They helped me prepare a solid defense for my actual stakeholders.</p><h3>Tip 9: Show the format, don&#8217;t just describe it</h3><p>Sometimes you have a very specific picture in your head of what the result should look like. Describing it with words can be frustrating and imprecise. If you try to explain &#8220;I want a summary with a title in bold, then a list, but not too long...&#8221;, the model might interpret it differently.</p><p>The solution is stupidly simple: <strong>don&#8217;t describe the format, show it</strong>.</p><p>If I want meeting notes that follow a specific company standard, I don&#8217;t write a paragraph describing the standard. I just <strong>copy-paste a previous, perfect email</strong> into the prompt and say: <strong>&#8220;Here is an example of the expected format. Follow this exact structure.&#8221;</strong> It removes all ambiguity. The model stops guessing and starts mimicking.</p><h3>Tip 10: Feed it images instead of long descriptions</h3><p>We have this reflex to try and describe everything with text, and sometimes <strong>it&#8217;s absolute hell</strong>. Trying to explain a buggy web interface or a complex diagram in writing is a waste of time. You risk the model misunderstanding you completely.</p><p>Now, I have stopped fighting. I simply <strong>take a screenshot and feed it to the model</strong>. Whether it is a messy sketch on my notebook about a new architecture or a dense slide, I just upload it and say: &#8220;Look at this and base your answer on it.&#8221;</p><p><strong>One image is truly worth 1,000 tokens</strong> in this case. The model sees the context instantly. We avoid paragraphs of clumsy explanations and get straight to the point.</p><h3>Tip 11: Use &#8220;---&#8221; to separate instructions from data</h3><p>When you paste a document or a transcript into the prompt, you have to be careful. The model can get confused between <strong>what you want it to do</strong> and <strong>what is written in the text</strong>.</p><p>Imagine you upload a meeting transcript where a colleague says, &#8220;We really need to write an email to the client about this.&#8221; If you are not careful, the model might read that sentence and think the instruction is directed at it. Instead of summarizing the meeting, it starts drafting that email.</p><p>To prevent this confusion, I created a simple habit. I build a wall between my command and the data. I write my instruction at the top, then I type <strong>three dashes &#8220;</strong><code>---</code><strong>&#8221;</strong>, and only then do I paste the text. It seems like a small detail, but it tells the model clearly: &#8220;Everything above the line is the order, everything below is just raw material.&#8221;</p><h3>Tip 12: Ask the model to interview you before answering</h3><p>Sometimes, I feel like I have been crystal clear. I wrote a long prompt, gave all the context, and yet, the answer falls flat. I realized that <strong>the problem is that I don&#8217;t know what I don&#8217;t know</strong>. I might have forgotten a technical constraint, a specific audience detail, or a format requirement that is obvious to me but invisible to the model.</p><p>So, for complex topics, I use a safeguard. I don&#8217;t let the model answer immediately. Instead, I end my prompt with this specific instruction: <strong>&#8220;Before you start, ask me 3 questions to ensure you have all the context.&#8221;</strong></p><p>It&#8217;s surprisingly effective. The model often <strong>points out blind spots</strong> I hadn&#8217;t even considered. It might ask, &#8220;Do you want this for technical or non-technical users?&#8221; or &#8220;Is there a budget limit?&#8221; I answer the questions, and the final result is better on the first try. It saves me from five rounds of corrections later and actually helps me clarify my own thinking.</p><h3>Tip 13: Use a magic word to hold the answer</h3><p>While I mostly use dictation, sometimes I switch to the <strong>conversational voice mode</strong> to have a real back-and-forth discussion. The problem with these modes is that they are often too eager. You pause for two seconds to catch your breath or think, and the AI thinks you are done. <strong>It interrupts you immediately</strong> to answer.</p><p>To fix this, I use a magic word. This is crucial when you are in a reasoning or creative phase and need to dump a lot of complex context. At the very start of the session, I tell the model: &#8220;I have a lot of context to give you. <strong>Don&#8217;t answer me yet</strong>. Just say okay and keep listening until I say the word <strong>abracadabra</strong>.&#8221;</p><p>Then, I can take my time. I can pause, think, hesitate, and rephrase without being interrupted. I treat the AI like a silent listener. I build the full picture, layer by layer. Only when I am absolutely sure I have said everything do I drop the magic word. <strong>&#8220;Abracadabra.&#8221;</strong> That&#8217;s the signal. The model instantly processes the whole monologue and gives me a much smarter, holistic answer.</p><h3>Tip 14: Break down mountains into step-by-step checklists</h3><p>The vast majority of my prompts are surprisingly simple: <strong>I just ask for plans</strong>. Before the AI era, I often found myself procrastinating on complex, high-value tasks like strategy or organizational changes. Instead, I would focus on busy work like writing meeting notes. Why? Because <strong>busy work gives you an immediate feeling of progress</strong>. Strategy requires so many invisible steps that you often don&#8217;t see the light at the end of the tunnel.</p><p>I realized that the root cause of my procrastination was not laziness, but the lack of a clear path. Now, whenever I face a daunting task that feels too big to handle, like scaling a complex project, I stop staring at the blank page. I talk to the AI, explain the full context, and ask one specific thing: <strong>&#8220;Generate a detailed, step-by-step plan to achieve this.&#8221;</strong></p><p>It works like magic because it turns a scary, abstract goal into a simple checklist. I suddenly have a roadmap. I just need to execute the first step, report back to the model, and ask for guidance on the second step. This loop keeps me focused on deep work instead of superficial tasks.</p><p>Today, I feel like <strong>nothing can stop me</strong>. No task feels inaccessible anymore, simply because I know I can always get a plan to navigate it.</p><h3>Tip 15: Explicitly trigger the tools you need</h3><p>Modern models have access to incredible tools, but they are often shy about using them. Sometimes the tools are visible in the interface, sometimes they are hidden. Even when you activate them on the interface, the model might try to answer with its own internal knowledge instead of using the specialized tool. <strong>Don&#8217;t leave this to chance</strong>.</p><p>When I know a specific tool is the best fit for the job, I ask for it explicitly in the prompt. &#8220;Use Python to calculate this,&#8221; or &#8220;Search the web for the latest data.&#8221; It forces the model out of its comfort zone.</p><p>Here is a list of tools I use most frequently (specifically on Gemini, but the logic applies to ChatGPT or Claude):</p><ul><li><p><strong>Internet search:</strong> Essential when I need real-time data or fact-checking, rather than the model&#8217;s frozen training data.</p></li><li><p><strong>Canvas:</strong> My go-to for iterative work. It opens a separate window to draft documents or code side-by-side with the chat.</p></li><li><p><strong>Python code:</strong> I force this whenever I need math, logic puzzles, or complex data processing. It reduces hallucinations significantly.</p></li><li><p><strong>Google Slides:</strong> This one was a total surprise. One day, just for fun, I asked Gemini &#8220;Generate a slide deck for this,&#8221; and it actually worked. Always test if a feature exists, even if you don&#8217;t see a button for it.</p></li><li><p><strong>Audio overviews:</strong> I upload a PDF document and ask for an audio summary. It turns a boring report into a podcast I can listen to while commuting.</p></li><li><p><strong>Github analysis:</strong> I connect Gemini to public or private repositories to analyze codebases or understand a complex library.</p></li><li><p><strong>Video analysis (a Gemini superpower)</strong>: I can ask questions about a YouTube video or an .mp4 file without watching it. It analyzes the visual frames and the transcript.</p></li><li><p><strong>Image generation:</strong> For creating visuals or infographics on the fly.</p></li><li><p><strong>Google Sheets export:</strong> I ask specifically for a &#8220;table exportable to Google Sheets&#8221; so I don&#8217;t have to copy-paste cells manually.</p></li></ul><p>The possibilities are expanding every week, especially with Claude and ChatGPT adding integrations with external apps. My advice? <strong>Be curious</strong>. If you wonder &#8220;Can it do X?&#8221;, just ask. You might be surprised.</p><h3>Tip 16: Chain your prompts</h3><p>Even though reasoning models are capable of handling complex tasks in one block, sometimes I prefer to <strong>keep the control</strong>. I have noticed that if I ask &#8220;Find an idea, critique it, and write the final post&#8221; all in the same prompt, the result is often just average.</p><p>I prefer to <strong>chain the prompts</strong>. First, &#8220;Give me 10 ideas.&#8221; <strong>I choose the winner</strong>. Then, &#8220;Critique this specific idea.&#8221; I read the feedback. Only then do I say, &#8220;Now, write the draft.&#8221;</p><p>The fact that I validate each step myself prevents the model from going off the rails or hallucinating in the middle of the process. It&#8217;s a bit like <strong>building with Legos</strong>; I assemble the prompts piece by piece rather than dumping the whole bucket on the floor and hoping for the best.</p><h3>Tip 17: Be ruthless, less context, more honesty</h3><p>In contrast to the brainstorming phase where context is king, when I want the tool to perform a specific transactional action, I have noticed something counter-intuitive: <strong>extremely short prompts often work better</strong> than long ones. We often think we need to tell the model our whole life story to get a good result, but that can actually backfire.</p><p>Take slide decks, for example. In the beginning, I used to upload my slides and write a novel: &#8220;Here is why I made this, here is the context, here is how hard I worked on it.&#8221; The result? The feedback was weak. It was polite. <strong>The model sensed my emotional attachment</strong> to the work and tried to be nice to me. It became a people pleaser.</p><p>Now, I do the opposite. I upload the document and type just two words: <strong>&#8220;Ruthless feedback.&#8221; </strong>The difference is night and day. The results are sharper, more critical, and much more reliable.</p><p>If you explain too much or are too polite during these execution tasks, the model tends to drift into a mode where it validates you rather than correcting you. So when you need a specific task done without creative interpretation, cut the polite small talk. Be direct, be surgical, and <strong>don&#8217;t be afraid to be brief</strong>.</p><h3>Tip 18: Don&#8217;t fix a broken thread, just restart</h3><p>Remember that these models are probabilistic, not deterministic. A single phrase or a slight change in wording can send the answer in a completely different direction. Even with the exact same prompt, <strong>the results can vary wildly</strong> from one attempt to the next.</p><p>So, if a conversation isn&#8217;t going where you want, stop fighting it. <strong>Don&#8217;t waste energy trying to correct it</strong> with endless feedback, especially at the start. It&#8217;s much easier to just hit &#8220;new chat&#8221; and try again. <strong>Starting from scratch is often faster</strong> than trying to steer a derailed train back onto the tracks.</p><p>I use this tactic frequently, especially with image generation where styles fluctuate randomly. I often <strong>open five tabs and paste the exact same prompt</strong> in all of them at once. I don&#8217;t try to perfect one image; I just look at the five results and <strong>pick the winner</strong>.</p><h3>Tip 19: Use sliders to fine-tune the output</h3><p>When I want to adjust a text, I used to struggle with vague instructions. I would say things like &#8220;make it a little shorter&#8221; or &#8220;make it more dynamic.&#8221; The problem is that <strong>&#8220;a little&#8221; means nothing to a machine</strong>. It&#8217;s too subjective. The model guesses, and usually, it guesses wrong.</p><p>I found a technique that works much better: <strong>I use scales from 1 to 10 </strong>with clear anchors. Instead of using adjectives, I give it coordinates. I say, &#8220;Rewrite this with a simplification level of 8/10 where 1 is a PhD thesis and 10 is a viral Tweet.&#8221;</p><p>It seems stupid, but it works because <strong>models understand structure better than nuance</strong>. It treats the number like a volume knob or a slider. Without anchors, &#8220;8/10&#8221; is just a random guess. But when you define the extremes, it calibrates the cursor instantly. This saves me from having to say &#8220;no, a little bit more&#8221; three times in a row.</p><h3>Tip 20: Demand 3 versions, safe, risky, and crazy</h3><p>I used to fall into a trap: I would ask for one thing, get one answer, and then spend my time fixing it. I was just a proofreader. Recently, I noticed that Gemini sometimes automatically proposes three drafts for emails, messages, titles, etc. I found that incredibly useful, but it doesn&#8217;t do it every time.</p><p>So now, whenever I need creativity or ideas, <strong>I force it to happen systematically</strong>. I don&#8217;t just ask for a solution; I ask for the spectrum. I tell the model: &#8220;<strong>Propose 3 versions</strong>: one very conservative, one completely risky, and one humorous.&#8221;</p><p>This immediately breaks the tunnel vision. It allows me to see the full range of possibilities. Often, the perfect solution is actually a mix of the safe and the risky version. By doing this, I stop being a person who corrects mistakes and I go back to being a <strong>decision maker who picks the winning strategy</strong>.</p><h3>Tip 21: Demand exact quotes and timestamps</h3><p>When I am doing deep research or analysis, like processing transcripts from user interviews, I cannot afford approximation. I don&#8217;t want the model to give me a summary in its own words&#8221;or, worse, to hallucinate things that weren&#8217;t said. I need the raw truth.</p><p>So, I don&#8217;t just ask for an analysis. I demand proof. I explicitly ask the model: <strong>&#8220;Support every point with an exact quote and its timestamp.&#8221; </strong>This changes everything. Instead of a vague generalization, I get the <strong>exact verbatims</strong> and the precise moment they were spoken.</p><p>This is where Gemini shines with a specific feature. When you upload a PDF or a document, it often adds <strong>small clickable citations</strong> next to its claims. When I click one, it opens the original document and <strong>highlights the exact passage</strong> where it found the information. It allows me to verify facts in a split second and ensures I am quoting my users correctly, not quoting the AI&#8217;s interpretation of them.</p><h3>Tip 22: Reverse-engineer your best conversations</h3><p>Sometimes, my conversations get extremely long. I give feedback, the model corrects itself, and we slowly build something powerful. By the end, the result is intelligent and perfectly tailored to my needs. It feels like a waste to just leave it there. My first reflex is to bookmark the chat, but <strong>I also want to capture the recipe</strong> that got us there.</p><p>So, I do one more thing before closing the tab. I ask the model: <strong>&#8220;Write the single prompt I should have used from the start to get this result immediately.&#8221;</strong></p><p>Here is a concrete example. I often use AI to write product documentation. It rarely works on the first try. I have to nag it: &#8220;Make sentences shorter,&#8221; &#8220;Use active voice,&#8221; &#8220;Stop using gerunds,&#8221; &#8220;Make it professional but neutral.&#8221; It can take ten tries to get the style right. Once we finally nail it, I ask for that meta prompt. Next time, I don&#8217;t have to fight. I just <strong>paste that optimized prompt</strong> and get the same result instantly.</p><h3>Tip 23: Create keyboard shortcuts to replace text</h3><p>In many conversations, I find myself repeating the exact same introductions. I have to explain my job, my current focus, or my long-term goals just to give the model the right context. <strong>It gets tedious very quickly</strong>.</p><p>To avoid this, I use a native feature on my Mac called <strong>&#8220;text replacement&#8221;</strong>. It allows you to type a short keyword, and the system instantly replaces it with a long block of text. You don&#8217;t need fancy software for this. If you are on a Mac, just open your System Settings, go to Keyboard, and click on <strong>&#8220;text replacements&#8230;&#8221;</strong>. Windows surely has an equivalent.</p><p>I built a library of prompt bricks. Now, I don't just use it for my bio. As you can see in the screenshot, I have shortcuts for specific project needs:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rKLa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa08f170e-745a-4b0c-baf4-3aa0fb310584_1670x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rKLa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa08f170e-745a-4b0c-baf4-3aa0fb310584_1670x1474.png 424w, https://substackcdn.com/image/fetch/$s_!rKLa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa08f170e-745a-4b0c-baf4-3aa0fb310584_1670x1474.png 848w, https://substackcdn.com/image/fetch/$s_!rKLa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa08f170e-745a-4b0c-baf4-3aa0fb310584_1670x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!rKLa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa08f170e-745a-4b0c-baf4-3aa0fb310584_1670x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rKLa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa08f170e-745a-4b0c-baf4-3aa0fb310584_1670x1474.png" width="1456" height="1285" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a08f170e-745a-4b0c-baf4-3aa0fb310584_1670x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1285,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:772341,&quot;alt&quot;:&quot;A screenshot of the macOS Keyboard settings window displaying a list of text replacements. Shortcuts starting with a semicolon, such as \&quot;;me\&quot;, \&quot;;tone\&quot;, and \&quot;;review\&quot;, are set to trigger long, pre-written paragraphs of text used for prompting.&quot;,&quot;title&quot;:&quot;A screenshot of the macOS Keyboard settings window displaying a list of text replacements. Shortcuts starting with a semicolon, such as \&quot;;me\&quot;, \&quot;;tone\&quot;, and \&quot;;review\&quot;, are set to trigger long, pre-written paragraphs of text used for prompting.&quot;,&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.theaithinker.com/i/185455972?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa08f170e-745a-4b0c-baf4-3aa0fb310584_1670x1474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A screenshot of the macOS Keyboard settings window displaying a list of text replacements. Shortcuts starting with a semicolon, such as &quot;;me&quot;, &quot;;tone&quot;, and &quot;;review&quot;, are set to trigger long, pre-written paragraphs of text used for prompting." title="A screenshot of the macOS Keyboard settings window displaying a list of text replacements. Shortcuts starting with a semicolon, such as &quot;;me&quot;, &quot;;tone&quot;, and &quot;;review&quot;, are set to trigger long, pre-written paragraphs of text used for prompting." srcset="https://substackcdn.com/image/fetch/$s_!rKLa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa08f170e-745a-4b0c-baf4-3aa0fb310584_1670x1474.png 424w, https://substackcdn.com/image/fetch/$s_!rKLa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa08f170e-745a-4b0c-baf4-3aa0fb310584_1670x1474.png 848w, https://substackcdn.com/image/fetch/$s_!rKLa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa08f170e-745a-4b0c-baf4-3aa0fb310584_1670x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!rKLa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa08f170e-745a-4b0c-baf4-3aa0fb310584_1670x1474.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">My personal library of prompt bricks stored in macOS text replacements</figcaption></figure></div><ul><li><p><code>;bedrock</code> &#8594; Inserts a full paragraph explaining my company&#8217;s business model and tech stack.</p></li><li><p><code>;constraints</code> &#8594; Adds a standard block about strict GDPR compliance and data privacy.</p></li><li><p><code>;tone</code> &#8594; Sets the output voice to pragmatic, peer-to-peer so I don&#8217;t get a fluffy marketing-style answer.</p></li><li><p><code>;review</code> &#8594; Triggers a specific persona instruction: &#8220;Act as a skeptical CTO.&#8221;</p></li></ul><p>I just type these codes in sequence, and boom: a detailed, perfectly contextualized text appears instantly without me typing a sentence.</p><h3>Tip 24: Turn your best prompts into Gems or custom GPTs</h3><p>I don&#8217;t have a massive document where I hoard all my prompts. I used to do that, but it becomes unmanageable. Now, when I have a prompt that works really well, <strong>I save it as a Gem in Gemini or Custom GPT in ChatGPT</strong>.</p><p>I take that meta prompt I just generated and turn it into a dedicated mini app. This way, I don&#8217;t have to search through my notes or copy-paste text every time. I just click the button, and <strong>the model already knows exactly what to do</strong>.</p><p>I actually wrote a detailed edition about how to build these Gems previously, so I won&#8217;t repeat it all here:</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;038dad5c-93bc-4bfb-b06e-48a961a5ba24&quot;,&quot;caption&quot;:&quot;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;How to save +5 hours a week with Gems&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:4824458,&quot;name&quot;:&quot;Adam Faik&quot;,&quot;bio&quot;:&quot;Convinced that every problem has a solution, which is either inspiring or delusional depending on the day.&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/41de16f9-51a4-4763-ba7d-dfb35429b196_1585x1585.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-01-12T12:02:51.421Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d34f60e7-b42a-4ef5-8a2d-82f09a83a128_1024x731.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://www.theaithinker.com/p/how-to-save-5-hours-a-week-with-gems&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:184192150,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:2,&quot;comment_count&quot;:0,&quot;publication_id&quot;:6132538,&quot;publication_name&quot;:&quot;The AI Thinker&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!s5nF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37afd3e1-3442-4517-94cb-068668baf9ef_1024x1024.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>But the takeaway is simple: <strong>build a library of mini apps</strong>, not a text file of prompts.</p><div><hr></div><p>I didn&#8217;t expect to write this much when I started listing these tips. But looking back at them, I want to answer the most important question: <strong>So what?</strong></p><blockquote><p>Why bother learning these subtleties? Why make the effort to cast a persona, structure a plan, or dictate your thoughts?</p></blockquote><p>It&#8217;s certainly not just to satisfy a corporate AI-first mandate or to avoid FOMO. The goal isn&#8217;t to become a professional prompt engineer. The goal is to <strong>expand what you are capable of delivering.</strong></p><p>When you master these interactions, the benefits are concrete:</p><ul><li><p><strong>You clear the noise:</strong> By delegating low-value, time-consuming tasks (like formatting, summarizing, or initial drafting) to the machine, you buy back time for high-level strategy.</p></li><li><p><strong>You upgrade your quality:</strong> Having a tireless colleague who can ruthlessly critique your logic or propose ten creative variations ensures you never settle for your first, average idea.</p></li><li><p><strong>You unlock new skills:</strong> With the right checklist and guidance, you can suddenly execute tasks (like coding a script, analyzing complex data, or designing a strategy) that were previously outside your skillset.</p></li></ul><p>Ultimately, AI is just a lever. The better you are at communicating your intent (the prompt), the heavier the load you can lift.</p><p>The good news? You already have the core skill. <strong>If you can explain a project to a human colleague, you can explain it to a model.</strong> It requires the same clarity, the same context, and the same patience. The only difference is that this colleague never gets tired and has trained by reading the internet several times.</p><p><strong>Your turn: </strong>You don&#8217;t need to apply all these tips tomorrow. That would be overwhelming. <strong>Here is my challenge to you:</strong> Pick just <strong>one</strong> tip from this list, whether it&#8217;s asking for a plan to avoid procrastination, or using a &#8220;magic word&#8221; to force deep listening, and use it to solve a real problem next week. Don&#8217;t prompt just to prompt. Prompt to get a result you couldn&#8217;t have achieved alone.</p>]]></content:encoded></item><item><title><![CDATA[How to fast-track your AI product education]]></title><description><![CDATA[15h of essential viewing to bridge the gap between traditional PM and AI. You will learn to use AI for product work, adopt an IDE as your cockpit, multiply your output, and build AI into your roadmap.]]></description><link>https://www.theaithinker.com/p/how-to-fast-track-your-ai-product</link><guid isPermaLink="false">https://www.theaithinker.com/p/how-to-fast-track-your-ai-product</guid><dc:creator><![CDATA[Adam Faik]]></dc:creator><pubDate>Mon, 19 Jan 2026 12:03:30 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/4f8a0060-6650-40c8-b262-938df62a9597_1024x731.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I&#8217;ve been in the product game for a decade. I&#8217;ve seen the trends come and go. Agile, Lean, Web3, whatever was cool last Tuesday. Usually, the core job stays the same. <strong>But let&#8217;s be honest: AI is not just another trend.</strong> It&#8217;s a fundamental shift in how we build. It changes everything. It&#8217;s not just about productivity (I actually hate that corporate buzzword). It&#8217;s about <strong>extending your abilities</strong>. You can suddenly do things that used to take a team of three. You can execute faster and more efficiently. The opportunities to solve user problems are exploding right now. We have never had this much leverage to deliver value instantly.</p><p>A few months back, I wrote an article sharing the best videos I found to help anyone get started with AI tools. It was about developing that first AI reflex.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;41559a06-626a-4108-8a38-17990a2537bd&quot;,&quot;caption&quot;:&quot;Let&#8217;s be real. As a product manager, you have hundred things to do on your current projects. You haven&#8217;t had time for a deep dive on Generative AI tools. But you finally look up from your backlog, and it feels like you&#8217;ve been in a cave for a year.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;How to go from zero to AI-first in 3 hours&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:4824458,&quot;name&quot;:&quot;Adam Faik&quot;,&quot;bio&quot;:&quot;Convinced that every problem has a solution, which is either inspiring or delusional depending on the day.&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/41de16f9-51a4-4763-ba7d-dfb35429b196_1585x1585.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-11-24T12:02:56.591Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9d43dc6c-a030-46e7-b4cc-2510a45d7726_1024x731.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://www.theaithinker.com/p/how-to-go-from-zero-to-ai-first-in&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:178923082,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:1,&quot;comment_count&quot;:0,&quot;publication_id&quot;:6132538,&quot;publication_name&quot;:&quot;The AI Thinker&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!s5nF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37afd3e1-3442-4517-94cb-068668baf9ef_1024x1024.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>But looking back, that was just the warm-up. <strong>We are facing a much bigger shift now.</strong></p><p>Think about industrial engineers at a company decades ago. They spent their lives drafting beautiful blueprints on paper. It was an art. Then, Computer-Aided Design (CAD) arrived. Imagine telling those engineers to drop their pens and start modeling on a screen. <strong>It must have felt unnatural.</strong> They probably hated it at first. But today, you cannot build a plane or car with paper and pencil. <strong>We are in that exact moment again.</strong> I see smart people freeze up when they have to write a prompt. It&#8217;s a mental block. But the &#8220;paper era&#8221; of product management is over. We have to learn CAD.</p><p>I wanted to create a crash course specifically for product people to make this jump. I went down the YouTube rabbit hole. It&#8217;s honestly shocking how much expert knowledge is free right now. But nobody has time to watch 100 hours of video. <strong>So I cheated.</strong> I opened a conversation with Gemini. I fed it transcripts video by video. I made the AI do the heavy lifting to filter the noise. It took some time, but it saved me weeks of watching bad tutorials.</p><p>The result is a tight, 15-hour curriculum of absolute gold.</p><p><strong>I am willing to bet on this:</strong> by the end of this year, our job will look completely different. Here is exactly where the industry is going. These are the <strong>four massive themes</strong> you need to master:</p><ol><li><p><strong><a href="https://www.theaithinker.com/i/184880041/module-1-use-ai-for-product-work">Use AI for product work</a>:</strong> We aren&#8217;t just summarizing meeting notes anymore. We are using LLMs and prototyping tools for extremely precise use cases. We can simulate user personas to debate ideas before we even build them. We can prototype high-fidelity solutions in an afternoon. We have never had a better chance to do our job with this level of quality. It&#8217;s about being an artisan who knows exactly which tool to pick for the job.</p></li><li><p><strong><a href="https://www.theaithinker.com/i/184880041/module-2-adopt-an-ide-as-your-work-cockpit">Adopt an IDE as your work cockpit</a>:</strong> This is the scary part for some, but there is no secret here. For ambitious projects, product people need to go where the code lives. The days of handing off a Google Doc are ending. We need to work directly in Github repositories and use IDEs like Cursor or VS Code. We will be writing specs, reviewing PRs, and vibe coding directly in the environment where the product is built. If you want to ship fast, you have to be in the cockpit.</p></li><li><p><strong><a href="https://www.theaithinker.com/i/184880041/module-3-multiply-your-output">Multiply your output</a>.</strong> You need to become a super-individual. New AI tools drop almost daily. You don&#8217;t need to master them all, but you need the curiosity to test them instantly. You need to develop your AI sensitivity. It&#8217;s about realizing that using your voice to dictate context is 10x faster than typing. It&#8217;s about building a personal external brain that handles the mundane so you can focus on the strategy.</p></li><li><p><strong><a href="https://www.theaithinker.com/i/184880041/module-4-build-ai-into-your-product-roadmap">Build AI into your product roadmap</a>.</strong> We are all becoming AI product managers. We aren&#8217;t just using AI: we are putting it in the roadmap. This means understanding new architectures. We need to treat things like Model Context Protocol (MCPs) as products in their own right, just like we used to treat APIs. We have to figure out how to sell, test, and ship probabilistic software that adds massive value to the client.</p></li></ol><blockquote><p><strong>Notes:</strong></p><ul><li><p>Don&#8217;t get hung up on the specific tools: <strong>focus on the underlying principles</strong>, as the software evolves but the mindset remains universal.</p></li><li><p>You will see some concepts overlap across these sessions; treat this as <strong>validation, not repetition</strong>, as seeing the connections is the fastest way to learn.</p></li><li><p>For those who prefer to dive straight in, here is the <strong><a href="https://youtube.com/playlist?list=PLAO2ui_9t-UT0P8FTIxYYtfH6nKOhnSWU&amp;si=xZKi9eq36qYpZKPx">full YouTube playlist</a></strong> so you can binge-watch the entire curriculum without my commentary.</p></li></ul></blockquote><p>I&#8217;ve organized the videos to cover these four pillars. I think this curriculum is the best content produced in the last months. <strong>It will stay relevant for maybe 5 or 6 months.</strong> That is how fast we are moving. So let&#8217;s not waste any more time.</p><div><hr></div><h2>Chat with the content</h2><p>Watching 15 hours of video is a heavy lift. I know you want the insights, but you might not have the time to scrub through every minute. So, I decided to apply the very principles we are about to discuss.</p><p>I took the links of every single video in this guide and fed them into a<strong> NotebookLM</strong>.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://notebooklm.google.com/notebook/ca9b7f49-833d-4355-a581-1a8b7aa83fbb?authuser=1&quot;,&quot;text&quot;:&quot;Access the NotebookLM&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://notebooklm.google.com/notebook/ca9b7f49-833d-4355-a581-1a8b7aa83fbb?authuser=1"><span>Access the NotebookLM</span></a></p><p>Think of this as your on-demand board of directors. Instead of passively watching, you can now <strong>interrogate</strong> the content. If you are stuck on a specific problem, like &#8220;How do I actually set up a calendar agent?&#8221; or &#8220;What is the first step to test a risky idea without code?&#8221; don&#8217;t guess. <strong>Just ask the notebook.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RfPL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa45f7f24-3587-4572-ba28-19d3be73dc61_3008x1458.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RfPL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa45f7f24-3587-4572-ba28-19d3be73dc61_3008x1458.png 424w, https://substackcdn.com/image/fetch/$s_!RfPL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa45f7f24-3587-4572-ba28-19d3be73dc61_3008x1458.png 848w, https://substackcdn.com/image/fetch/$s_!RfPL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa45f7f24-3587-4572-ba28-19d3be73dc61_3008x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!RfPL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa45f7f24-3587-4572-ba28-19d3be73dc61_3008x1458.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RfPL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa45f7f24-3587-4572-ba28-19d3be73dc61_3008x1458.png" width="1456" height="706" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a45f7f24-3587-4572-ba28-19d3be73dc61_3008x1458.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:706,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:851782,&quot;alt&quot;:&quot;A screenshot of the Google NotebookLM interface displaying a detailed AI response to the question \&quot;How do I actually set up a calendar agent?\&quot; based on the 20 uploaded video transcripts.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/184880041?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa45f7f24-3587-4572-ba28-19d3be73dc61_3008x1458.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A screenshot of the Google NotebookLM interface displaying a detailed AI response to the question &quot;How do I actually set up a calendar agent?&quot; based on the 20 uploaded video transcripts." title="A screenshot of the Google NotebookLM interface displaying a detailed AI response to the question &quot;How do I actually set up a calendar agent?&quot; based on the 20 uploaded video transcripts." srcset="https://substackcdn.com/image/fetch/$s_!RfPL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa45f7f24-3587-4572-ba28-19d3be73dc61_3008x1458.png 424w, https://substackcdn.com/image/fetch/$s_!RfPL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa45f7f24-3587-4572-ba28-19d3be73dc61_3008x1458.png 848w, https://substackcdn.com/image/fetch/$s_!RfPL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa45f7f24-3587-4572-ba28-19d3be73dc61_3008x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!RfPL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa45f7f24-3587-4572-ba28-19d3be73dc61_3008x1458.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I fed YouTube video links into NotebookLM so you can chat with the content</figcaption></figure></div><p>It will search the collective wisdom of these 20+ experts and give you a specific answer, citing the exact video and timestamp it came from. It feels a bit like magic, having this entire group of geniuses sitting in a room, waiting to answer your specific question.</p><p>Okay, enough talking from me. The studio lights are dimming, the ice is melting in the glass, and it&#8217;s time to get into the music. I&#8217;ve arranged these tracks to tell a story, but feel free to skip to the one that speaks to you. Let&#8217;s play the first set.</p><div><hr></div><h2>Module 1: Use AI for product work</h2><p>Let&#8217;s settle in and get to work. This first module is where the rubber meets the road. We aren&#8217;t just talking about writing better emails here. We are talking about mastering the core end-to-end workflow of our craft: researching, validating, and prototyping features in record time. The goal here is simple: to help you execute your core product tasks ten times faster by chaining specialized tools together.</p><p>Over the next <strong>five hours of content</strong>, we are going to go on a journey through the product lifecycle. We kick things off with <strong>Marily Nika</strong>, who sets the stage for this new mindset. Then, we dive deep into the data: <strong>Zach Leach</strong> will show us how to handle qualitative research at scale, followed by <strong>Tina Huang</strong> on crunching quantitative numbers without needing a data science degree. Once we have the data, we need to prove we are right, so <strong>David Bland</strong> will walk us through validation strategy. Finally, we wrap up by getting our hands dirty with <strong>Aakash Gupta and Colin Matthews</strong>, moving straight into prototyping. It&#8217;s a dense, practical start, so grab a coffee.</p><h3>1/5. Generate a full product from scratch (40 min)</h3><p>Let&#8217;s start with a bang. You know how product discovery usually feels? Weeks of scheduling user interviews, endless sticky-note sessions in Miro, and drafting PRDs that nobody reads. <strong>What if you could compress all of that into one afternoon?</strong></p><p>This first video features <strong><span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Marily Nika&quot;,&quot;id&quot;:9335923,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F097ba0bb-59c1-415a-90d8-f44c529aff4d_400x400.jpeg&quot;,&quot;uuid&quot;:&quot;7d9bfc80-9154-49c6-82fe-5a6ba771eeed&quot;}" data-component-name="MentionToDOM"></span></strong>, an AI product lead at Google. She isn&#8217;t just talking theory; she is showing us a speedrun. She takes a random idea (a smart fridge) and goes from &#8220;I wonder if this is a good idea&#8221; to a full PRD, a coded prototype, and a marketing video.</p><p>It&#8217;s a perfect example of what I call <strong>tool hopping.</strong> She doesn&#8217;t try to make one AI do everything. She acts like an artisan, picking up the right tool for the exact right moment. Watch closely how she doesn&#8217;t just ask the AI for validation. She forces it to challenge her.</p><div id="youtube2-fFqZm_dJXdw" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;fFqZm_dJXdw&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/fFqZm_dJXdw?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Did you catch that trick with Perplexity? That was the aha moment for me.</p><p>Most people just ask, &#8220;Is a smart fridge a good idea?&#8221; and the AI, being a people-pleaser, says, &#8220;Yes! Everyone loves fridges!&#8221; Marily didn&#8217;t do that. She scraped Reddit for real user data, then created <strong>two AI agents</strong>, one who loves the idea and one who hates it. She forced them to debate each other. She only moved forward with the features that convinced the hater. <strong>That is how you can engineer artificial conflict to get to the truth.</strong></p><p>Here is the cheat sheet from this session:</p><ul><li><p><strong>Don&#8217;t write PRDs from scratch.</strong> Marily fed the debate results into a Custom GPT trained on her specific PRD template. It generated the document instantly.</p></li><li><p><strong>The PRD is the prompt.</strong> She didn&#8217;t tell v0 &#8220;make me a fridge UI.&#8221; She pasted the <em>entire</em> PRD into the coding tool. The result? A UI that actually matched the specific requirements (like the &#8220;local-only&#8221; privacy mode).</p></li><li><p><strong>Video kills the slide deck.</strong> Instead of a PowerPoint, she used video generation tools (like Sora/Veo) to show the user story. It&#8217;s much harder for a stakeholder to say no to a video that makes them feel something.</p></li><li><p><strong>The AI judge.</strong> Did you see how she used NotebookLM at the end? She uploaded audio files of pitches and asked it to act as an unbiased judge. This is brilliant for hackathons or even ranking your own roadmap ideas.</p></li></ul><p><strong>Your action:</strong> Try the debate technique today. Take a feature you are unsure about, spin up two personas in ChatGPT, and make them fight. The winner gets into your roadmap.</p><h3>2/5. Analyze feedback and generate designs (40 min)</h3><p>Here is a nightmare scenario every PM knows: you launch a feature, and suddenly you have 550 rows of user feedback in a CSV. Half of them are in Turkish, Spanish, or French. Usually, you read the first twenty in English, get tired, and guess what the rest say. <strong>That is not data; that is vibes.</strong></p><p>In this session, <strong>Zach Leach</strong>, head of design at Gamma, shows us how to stop guessing. He reveals a use case for deep research that most people miss. We usually think of these tools as browsers that go out to the web to find answers. Zach shows us that their real power is looking inward, digesting massive, messy internal files to find patterns a human would miss. Plus, stick around for the second half where he shows how to force Midjourney to stop generating generic AI art and actually follow your brand guidelines.</p><div id="youtube2-hzPKb8bDvdY" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;hzPKb8bDvdY&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/hzPKb8bDvdY?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>The most important takeaway here is the distinction Zach made between Python analysis and deep research.</p><p>When you upload a CSV to a standard LLM and ask for a summary, the AI usually writes a lazy Python script to count keywords. It sees the word &#8220;slow&#8221; 50 times and tells you &#8220;users think it&#8217;s slow.&#8221; <strong>That is shallow.</strong> By forcing the model into deep research mode on a local file, Zach forced it to actually read and reason about every single row, regardless of language. It understood that a user complaining about &#8220;extra arms&#8221; on a generated image wasn&#8217;t a bug report about biology. It was a specific critique of their vectorization model.</p><p>Here is the cheat sheet from this session:</p><ul><li><p><strong>Deep research is also for local files:</strong> Don&#8217;t just use it to search things. Upload your rawest, ugliest datasets (CSV, PDF, Slack dumps). It shines at cross-referencing internal data that is too large for your context window but too nuanced for a simple keyword search.</p></li><li><p><strong>Globalize your listening:</strong> Zach didn&#8217;t translate the feedback first. He let the model handle the translation and sentiment analysis simultaneously. This allows you to analyze 100% of your feedback, not just the English-speaking slice.</p></li><li><p><strong>Brand lock-in:</strong> For the designers, the style reference (<code>--sref</code>) trick in Midjourney is non-negotiable. Stop trying to prompt &#8220;surrealist colorful bird.&#8221; Feed it your brand kit as a reference image so the AI adopts your exact aesthetic instantly.</p></li><li><p><strong>The replicate approach:</strong> Note how he didn&#8217;t try to make Midjourney do the background removal. He used Replicate for that specific task. This reinforces the tool hopping lesson: use generalists for creativity, specialists for utility.</p></li></ul><p><strong>Your action:</strong> Go find that neglected CSV of open-ended survey responses or NPS verbatims you haven&#8217;t looked at in months. Upload it to a deep research capable model today and ask it to &#8220;classify these into 5 distinct problem buckets.&#8221; You will be shocked at what you missed.</p><h3>3/5. Clean and visualize your data (30 min)</h3><p>Quantitative analysis usually scares product managers. We either wait weeks for a data analyst to run a SQL query, or we suffer through pivot tables ourselves. We often treat data as &#8220;black and white.&#8221; It&#8217;s either right or wrong. But with AI, we run the risk of <strong>hallucinated analytics.</strong> You ask for a chart, and the AI gives you a beautiful line that goes up and to the right, but it made up the numbers.</p><p>In this session, <strong>Alice Yang</strong>, a former Meta data scientist, teaches us how to avoid that trap. She introduces vibe analysis, which sounds funny, but is actually a rigorous method called <strong>DIG</strong>. It&#8217;s the difference between a Junior PM who blindly trusts the chatbot and a Senior PM who audits the machine. She also shows how to turn a one-off analysis into a reusable software tool without writing code.</p><div id="youtube2-dvFDxwlT2e8" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;dvFDxwlT2e8&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/dvFDxwlT2e8?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>The critical lesson here is: <strong>Stop asking for the chart immediately.</strong></p><p>If you upload a file and say &#8220;graph the revenue,&#8221; the AI guesses how your columns are formatted. If it guesses wrong, your strategy is based on a lie. Alice teaches the <strong>DIG Framework</strong> to force the AI to show its work before it draws a conclusion:</p><ol><li><p><strong>Describe</strong>: Ask the AI to list the columns and show you a sample of data. You verify it reads NaN correctly.</p></li><li><p><strong>Introspect</strong>: Ask the AI to look for patterns or weirdness before you give it a goal. &#8220;Are there any outliers?&#8221; &#8220;Is the currency all USD?&#8221;</p></li><li><p><strong>Goals</strong>: Only after you trust its understanding do you ask for the final chart or report.</p></li></ol><p>Here is the cheat sheet from this session:</p><ul><li><p><strong>The traceability document:</strong> This is a pro move. After the AI does an analysis, ask it to generate a traceability document or README. This explains exactly how it calculated the numbers so your team can verify the methodology.</p></li><li><p><strong>Appification:</strong> Don&#8217;t let your analysis die in the chat. If you build a useful workflow (e.g., &#8220;take these video frames and resize them&#8221;), ask the AI to <strong>&#8220;turn this conversation into a downloadable Python program.&#8221;</strong> It will give you a script you can run forever.</p></li><li><p><strong>The safety net protocol:</strong> Use AI as your red team. Upload your presentation or spec and tell it: &#8220;act as a skeptic. Find the flaws in my assumptions.&#8221; It&#8217;s better the AI finds the hole in your logic than your VP.</p></li><li><p><strong>Zip file organizing:</strong> If you have a messy folder of 50 random files, zip them up, upload the zip, and ask the AI to propose a better folder structure and rename the files. It handles the organizational chaos for you.</p></li></ul><p><strong>Your action:</strong> Take a spreadsheet you use often. Upload it. Don&#8217;t ask for a chart. Ask: &#8220;Describe the columns in this file and identify any potential formatting errors.&#8221; See if it catches something you missed.</p><h3>4/5. Test your product assumptions (80 min)</h3><p>Before we dive into the final technical prototyping session of this module, we need a strategic reality check. You can have the best prototypes (video 1), the deepest data (video 2), and the cleanest dashboards (video 3), but if you are building the wrong thing, you are just failing faster.</p><p><strong>David Bland</strong>, the author of Testing Business Ideas, is a legend in this space. In this session, he shows us how to use LLMs to overcome the blank page syndrome that paralyzes PMs when they try to define risk. He introduces the <strong>EMT Process (Extract, Map, Test)</strong>. He doesn&#8217;t use AI to generate ideas; he uses it to interrogate your roadmap and tell you exactly why it might fail.</p><div id="youtube2-IFsiX18Mcjg" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;IFsiX18Mcjg&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/IFsiX18Mcjg?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>David touches on a critical pain point: most product managers spend 90% of their time on <strong>feasibility</strong> (can we build it?). We obsess over the engineering.</p><p>David forces the AI to act as a rigorous partner to check the other two circles: <strong>desirability</strong> (do they want it?) and <strong>viability</strong> (should we build it/Is it a business?). He uses a Human-in-the-Loop workflow. He doesn&#8217;t write one giant prompt to &#8220;do the strategy.&#8221; He breaks it down step-by-step: first Extract, then review. Then Map, then review. This prevents the AI from drifting and keeps you in the driver&#8217;s seat.</p><p>Here is the cheat sheet from this session:</p><ul><li><p><strong>The EMT framework:</strong></p><ul><li><p><strong>Extract</strong>: Ask the AI to list all assumptions underlying your feature.</p></li><li><p><strong>Map</strong>: Ask it to prioritize them based on &#8220;high importance&#8221; and &#8220;low evidence.&#8221;</p></li><li><p><strong>Test</strong>: Ask it to draft experiments for the riskiest ones.</p></li></ul></li><li><p><strong>The leap of faith matrix:</strong> Your roadmap is likely full of features that are &#8220;high importance&#8221; (if this fails, we die) but &#8220;low evidence&#8221; (we are guessing). Use AI to spot these. If the AI can&#8217;t find a source for your confidence, you probably don&#8217;t have one.</p></li><li><p><strong>Draft the test card:</strong> Don&#8217;t just say &#8220;we will beta test.&#8221; Ask the AI to draft a formal test card: Hypothesis, Experiment, Metric, Success Criteria.</p></li><li><p><strong>Set the bar early:</strong> David notes that teams move the goalposts. Use the AI to suggest a success metric (e.g., &#8220;We need a 70% click-through rate to justify building this&#8221;) before you run the test.</p></li></ul><p><strong>Your action:</strong> Go to your current roadmap. Pick one feature you are sure about. Open ChatGPT and prompt: &#8220;I am building [Feature X]. List 5 assumptions for Desirability, Viability, and Feasibility that must be true for this to succeed. Rank them by which ones we have the least evidence for.&#8221; The result might scare you, but it&#8217;s better to be scared now than sorry later.</p><h3>5/5. Code a working prototype (90 min)</h3><p>We finish Module 1 with a masterclass in speed. We talked about theory, research, and strategy. Now, we build.</p><p>In this session, <strong><span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Colin Matthews&quot;,&quot;id&quot;:176430401,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!h0Lm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c242111-3b2c-4b82-bde0-1a02a8ce401f_443x512.jpeg&quot;,&quot;uuid&quot;:&quot;e86da6ec-3f73-4cf2-bcc4-416fa02633a6&quot;}" data-component-name="MentionToDOM"></span></strong>, creator of the AI Prototyping for PMs course, does something terrifying: he builds a functional clone of a complex SaaS product live, from scratch, in about 15 minutes. He tests four different tools, <strong>Bolt, Cursor, Lovable, and Replit</strong>, to show you exactly which one fits which use case.</p><p>This isn&#8217;t just about making things look pretty. It&#8217;s about breaking the 3-month build cycle. Instead of waiting a quarter to see if users like a feature, you can put a working, coded version in their hands this afternoon.</p><div id="youtube2-Gp6tMkCr_0w" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;Gp6tMkCr_0w&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/Gp6tMkCr_0w?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Colin demonstrates a crucial principle: <strong>The ghost PRD.</strong></p><p>Notice how he never starts by saying &#8220;build this app.&#8221; He asks the AI to &#8220;create a detailed plan&#8221; first. The AI generates a technical PRD for itself. This forces the model to structure its thinking before it writes a single line of code. It&#8217;s like forcing a contractor to show you the blueprints before they pour the cement.</p><p>Here is the cheat sheet from this session:</p><ul><li><p><strong>The no-code prompt:</strong> When asking for complex logic, tell the AI: &#8220;How would you build this? Don&#8217;t write any code yet.&#8221; This allows you to audit its logic. If the plan is wrong, the code will be wrong. Catch it early.</p></li><li><p><strong>Multimodal is king:</strong> Don&#8217;t describe your UI with words. Take a screenshot of your existing product (or a competitor&#8217;s) and paste it into the chat. Tools like Bolt use vision models to copy the styling pixel-perfectly in seconds.</p></li><li><p><strong>Revert, don&#8217;t argue:</strong> If the AI breaks your app, don&#8217;t spend 20 minutes arguing with it to fix the bug. Just hit <strong>undo/revert</strong>. Go back to the clean state and re-prompt with better context. It&#8217;s faster to restart than to repair.</p></li><li><p><strong>The tool selector:</strong></p><ul><li><p><strong>Bolt, Lovable, v0:</strong> Best for frontend prototypes. Quick, visual, easy to share a link.</p></li><li><p><strong>Replit:</strong> Best if you need a real <strong>database</strong> and <strong>authentication</strong> (e.g., saving user data).</p></li><li><p><strong>Cursor:</strong> Best if you want to work on a real, professional codebase (we will cover this deeply in Module 2).</p></li></ul></li></ul><p><strong>Your action:</strong> Pick a feature you are stuck on. Take a screenshot of a similar feature in another product. Open Bolt.new or v0.dev, paste the image, and say: &#8220;Create a plan to build a functional prototype of this interface.&#8221; See what happens.</p><div><hr></div><h2>Module 2: Adopt an IDE as your work cockpit</h2><p>Now, we are going to do something that might feel a little scary for some of you. We are going to leave the comfort of our documents and slide decks and step into the engine room. This module is about adopting the Cursor IDE, not just as a tool for developers, but as a 360-degree cockpit for you. The goal is to bridge that painful gap between writing specs, designing UIs, and shipping code.</p><p>We have packed this transformation into <strong>three hours of high-intensity learning</strong>. We start with <strong>Claire Vo</strong>, who shows us how to actually build the cockpit. Then, <strong>Dennis Yang</strong> teaches us how to manage our context and technical knowledge within it. Once the structure is there, <strong>Elizabeth Lin</strong> comes in to show us how to style our work so it doesn&#8217;t look like a wireframe from 1999. Finally, <strong>Lee Robinson</strong> helps us stabilize the workflow so we can ship with confidence. By the end of this, you won&#8217;t just be writing PRDs; you&#8217;ll be shipping them.</p><h3>1/4. Set up your local environment (45 min)</h3><p>This video is the safe space for anyone who has never opened a code editor. <strong><span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Claire Vo&quot;,&quot;id&quot;:5636738,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!9F1P!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fca382ecd-862b-433d-bf35-b5a7d9dceeeb_400x400.jpeg&quot;,&quot;uuid&quot;:&quot;28ad6410-c13a-44ef-a1c1-f0c7220b59a0&quot;}" data-component-name="MentionToDOM"></span></strong>, chief product officer at LaunchDarkly, walks us through a live failure. She tries to use a web-based builder (v0) to make a simple product hub, but it over-engineers the solution with unnecessary complexity.</p><p>So, she pivots. She opens <strong>Cursor</strong>, starts from zero, and builds a local application to host her PRDs and prototypes. This is a massive unlock: owning your own local sandbox means you aren&#8217;t reliant on a monthly subscription or a cloud limit. You own the code.</p><div id="youtube2-k0gmTOm1eus" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;k0gmTOm1eus&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/k0gmTOm1eus?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Claire demonstrated that sometimes, smart tools are too smart. By switching to a local IDE, she got exactly what she wanted: a simple folder for markdown docs and a simple folder for code prototypes.</p><p>The killer feature here is the <strong>agents folder.</strong> She didn&#8217;t just ask the AI to write PRDs randomly. She created a specific file (<code>agents/prd_instructions.md</code>) that acts as a permanent set of instructions for the AI. Every time she needs a new spec, she points Cursor to that file, and it generates a PRD in her exact preferred format. <strong>She turned her management style into code.</strong></p><p>Here is the cheat sheet from this session:</p><ul><li><p><strong>The scope creep trap:</strong> Web-based AI builders love to add auth and databases you don&#8217;t need. If the tool fights you, switch to a local IDE where you control the file structure.</p></li><li><p><strong>The agents directory:</strong> Create a folder in your repo called <code>.cursorrules</code> or <code>agents</code>. Put markdown files in there that describe your job. &#8220;Here is how I write user stories.&#8221; &#8220;Here is how we style buttons.&#8221; This aligns the AI to your specific taste.</p></li><li><p><strong>Visual git:</strong> If the command line scares you, download <strong>GitHub Desktop</strong>. It turns the complex history of code changes into a simple timeline you can click through.</p></li><li><p><strong>Multimodal debugging:</strong> When the UI looks ugly (like gray text on a gray background), don&#8217;t describe it. Screenshot it, drag it into Cursor, and say <strong>&#8220;fix this.&#8221;</strong></p></li></ul><p><strong>Your action:</strong> Download Cursor and GitHub Desktop. Create a folder on your computer called &#8220;my product work.&#8221; Open it in Cursor and ask the Composer (Cmd+I): &#8220;Scaffold a simple Next.js app that lists markdown files from a /docs folder.&#8221; You just built your first local product management tool.</p><h3>2/4. Manage documents and tickets (50 min)</h3><p>If you are like most product managers, your life is scattered across a dozen browser tabs: Jira, Confluence, Notion, Slack, Google Docs. It&#8217;s a context-switching nightmare.</p><p>In this session, <strong>Dennis Yang</strong>, principal PM at Chime, shows us a radical alternative. He doesn&#8217;t use Cursor to write code. He uses it to write product.</p><p>He treats the IDE as his command center. He writes PRDs in markdown, but he doesn&#8217;t copy-paste them into Confluence. He uses something called <strong>Model Context Protocol (MCPs)</strong> to connect his local AI directly to his company&#8217;s SaaS tools. He pushes docs, reads stakeholder comments, and even creates Jira tickets without ever leaving the code editor.</p><div id="youtube2-rwmR7m5rvqw" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;rwmR7m5rvqw&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/rwmR7m5rvqw?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Dennis is proving a massive shift: <strong>Code and specs belong together.</strong></p><p>Instead of keeping requirements in a dead Google Doc that nobody reads, he keeps them in the repository alongside the code. But the real magic is the <strong>admin loop</strong>. He didn&#8217;t just generate text; he orchestrated a workflow. He asked the AI to read comments from his team on Confluence, categorize them by priority, draft replies, and then convert the approved features into Jira epics.</p><p>Here is the cheat sheet from this session:</p><ul><li><p><strong>Markdown is truth:</strong> Stop writing in proprietary formats. Write in markdown locally. It&#8217;s faster, cleaner, and version-controlled.</p></li><li><p><strong>The power of MCPs:</strong> This is the technical takeaway. MCPs are the plumbing that let your local AI talk to external tools. Dennis uses the Atlassian MCP to give his AI read/write access to Jira.</p></li><li><p><strong>The zero-context status report:</strong> Because his AI can see Jira, he doesn&#8217;t write status reports manually. He prompts: &#8220;Read this epic and tell me what happened since Monday.&#8221; The AI pulls the ground truth directly from the ticket history.</p></li><li><p><strong>The super MVP:</strong> Dennis prototypes logic before building UI. He wrote a technical design document for a morning news briefer and asked Cursor to executing the logic (calling a News API and summarizing it) inside the chat. He validated the value of the AI feature without building a real app.</p></li></ul><p><strong>Your action:</strong> Check if your company tools (Jira, Linear, Notion, GitHub) have an MCP server available. Install one of them in Cursor settings. Try asking Cursor to &#8220;Read the last 5 tickets in this project and summarize the blockers.&#8221;</p><h3>3/4. Style and refine your app (35 min)</h3><p>Most product managers think the IDE is a cold, rigid place for engineers. They think creativity happens in Figma. <strong>Elizabeth Lin</strong>, designer and educator, disagrees.</p><p>In this session, she shows how to treat Cursor like an infinite canvas. She doesn&#8217;t write code; she prompts for vibes. She takes a boring dashboard and asks the AI to re-skin it in &#8220;Y2K style&#8221; or &#8220;brutalist style.&#8221; She drags in screenshots of K-Pop music videos to steal their color palettes.</p><p>Why do this in code? because <strong>code has physics.</strong> You can prototype sound, animation, and real data (like a bookshelf powered by Notion) in ways that Figma simply cannot.</p><div id="youtube2-zQkFJNj-2lw" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;zQkFJNj-2lw&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/zQkFJNj-2lw?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Elizabeth teaches us how to hack the AI&#8217;s taste.</p><p>If you ask an LLM to &#8220;make it pretty,&#8221; it will give you generic corporate Memphis art. But if you use <strong>authority prompting</strong>, like &#8220;Make this look like something a top designer at Apple would approve,&#8221; the model switches context and outputs higher-quality CSS. She also introduces a crucial workflow: <strong>The reverse engineer prompt.</strong> When she stumbles upon a design she loves, she asks the AI: &#8220;Write a note to yourself explaining exactly how you achieved this style so we can reuse it later.&#8221;</p><p>Here is the cheat sheet from this session:</p><ul><li><p><strong>Authority prompting:</strong> Don&#8217;t just ask for changes. Cite authorities. &#8220;Redesign this using Edward Tufte&#8217;s data visualization principles.&#8221; &#8220;Make the layout look like a Linear.app dashboard.&#8221;</p></li><li><p><strong>The taste injection:</strong> AI defaults to boring. To fix this, ask it to &#8220;List 5 distinct design aesthetics for this page&#8221; before you choose one. Or, drag in an image of a painting or a movie scene and say &#8220;Use this color palette.&#8221;</p></li><li><p><strong>Sound and physics:</strong> Figma can&#8217;t do sound. Cursor can. Elizabeth builds a working piano in one prompt. As PMs, we often ignore sound design. AI makes it trivial to add boops and whooshes that delight users.</p></li><li><p><strong>The undo button is your best friend:</strong> Design is iterative. If the AI hallucinates a terrible layout, <strong>do not argue with it.</strong> Hit <code>Cmd+Z</code> (Undo) immediately. It&#8217;s faster to retry the prompt than to fix the bad code.</p></li></ul><p><strong>Your action:</strong> Open that simple product hub app we built in Video 1. Drag a screenshot of your favorite app (Spotify, Airbnb, whatever) into Cursor composer and say: &#8220;Reskin my app to match this aesthetic.&#8221; Watch what happens to your boring CSS.</p><h3>4/4. Debug and verify your code (45 min)</h3><p>We end Module 2 by growing up. Vibe coding is fun, but it breaks easily. If you want to build software that users actually rely on, you need <strong>rigor</strong>.</p><p>In this session,<strong> <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Lee Robinson&quot;,&quot;id&quot;:1866504,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/a5fd9634-0ffd-4fc3-8ebd-7c67dd792989_500x500.png&quot;,&quot;uuid&quot;:&quot;5633ad1b-443c-47f1-9c88-fd94eb2e9d89&quot;}" data-component-name="MentionToDOM"></span></strong>, head of AI education at Cursor, explains the difference between a toy and a tool. He shows us how to treat the AI not just as a generator, but as a self-healing system. He sets up guardrails, like linters and tests, so that when the AI writes bad code (and it will), it catches its own mistakes and fixes them before you even notice.</p><div id="youtube2-Gqpk7-FruqI" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;Gqpk7-FruqI&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/Gqpk7-FruqI?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Lee demonstrated the most important concept for AI-native builders: <strong>The feedback loop.</strong></p><p>In the demo, he didn&#8217;t fix the error himself. He asked the Agent to &#8220;fix the lint errors.&#8221; The Agent ran a command, saw it failed, read the error message, rewrote the code, and ran the command again to verify it passed. <strong>It checked its own work.</strong></p><p>This is why we use an IDE like Cursor instead of a web chat. In the web chat, the AI guesses. In the IDE, the AI runs the code to prove it works. Lee also touched on <strong>context hygiene.</strong> Just like humans get confused if a meeting drags on for 4 hours, the AI gets stupid if a chat session gets too long.</p><p>Here is the cheat sheet from this session:</p><ul><li><p><strong>Guardrails are mandatory:</strong> You need three things to keep the AI from breaking your app:</p><ol><li><p><strong>Types</strong> (Strict rules on what data looks like).</p></li><li><p><strong>Linters</strong> (Spellcheck for code).</p></li><li><p><strong>Tests</strong> (Pass/Fail exams).</p></li></ol><p>Why? Because these give the AI error messages it can read to self-correct.</p></li><li><p><strong>Micro-slicing context:</strong> Don&#8217;t have one giant chat history for the whole project. Start a <strong>New Chat</strong> for every specific task. If the context window gets too full (over 80%), the AI starts hallucinating. Keep it fresh.</p></li><li><p><strong>Parallel processing:</strong> Use the three pane method. You work on the strategy in the middle pane, while the Agent runs background tasks (like &#8220;write tests for this feature&#8221;) in the right pane.</p></li><li><p><strong>Linting your English:</strong> Lee doesn&#8217;t just lint code; he lints his writing. He has a system prompt that bans &#8220;AI slop&#8221; words like &#8220;delve,&#8221; &#8220;game-changing,&#8221; or &#8220;tapestry.&#8221; If the AI uses them, it corrects itself.</p></li></ul><p><strong>Your action:</strong> Open your Cursor project. Create a file called <code>.cursorrules</code> in the root folder. In that file, write a list of &#8220;Banned Words&#8221; for your documentation (e.g., &#8220;Never use the word &#8216;Delve&#8217;&#8221;). Ask the AI to rewrite your README file and watch it obey your new law.</p><div><hr></div><h2>Module 3: Multiply your output</h2><p>We&#8217;ve talked about the product and the tools; now let&#8217;s talk about the producer: you. This module is dedicated to the augmented human. It&#8217;s about automating your daily operations so you can reclaim your time for the high-leverage strategic work that actually gets you promoted. We are going to instill an AI-first mindset that defends your calendar and amplifies your output.</p><p>In these <strong>three hours</strong>, we are going to restructure your workday. <strong>Dave Killeen</strong> starts us off with a masterclass on speed and input, literally talking faster than you can type. Then <strong>Rachel Wolen</strong> takes us through autonomy and operations, showing us how to automate the busy work. <strong>Amir Klein</strong> pivots to soft skills and insight, proving that AI can help with the human side of the job, too. And to close the loop, <strong>Peter Yang</strong> shows us how to manage our own knowledge base and personal OS. This is about getting your life back.</p><h3>1/4. Automate tasks with your voice (30 min)</h3><p>I used to feel embarrassed walking down the street talking to my phone. I looked like a crazy person rambling into the void. Now? I don&#8217;t care. I realized that my best ideas happen when I am moving, not when I am staring at a blinking cursor.</p><p>In this session, <strong><a href="https://www.linkedin.com/in/davekilleen/">Dave Killeen</a></strong>, VP of product at Pendo, validates this obsession. He explains why the keyboard is a legacy device that is slowing you down. He introduces the concept of the <strong>magic word</strong>, a technique to dump your raw, messy thoughts into the AI and have it restructure them into gold while you are walking the dog.</p><p>He also moves beyond simple chat (opening the &#8220;fridge&#8221;) to building full automation workflows (cooking in the &#8220;kitchen&#8221;) with tools like Gumloop.</p><div id="youtube2-1gL_Vw9TCxk" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;1gL_Vw9TCxk&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/1gL_Vw9TCxk?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Dave hit on a profound psychological truth: <strong>We self-censor when we type.</strong></p><p>When you sit at a keyboard, you try to structure your thoughts before you type them. That slows you down. When you use voice, you dump the raw data. Dave&#8217;s workflow is simple: Ramble for 10 minutes, include every detail, every worry, every half-baked idea. Then, at the end, say the <strong>magic word</strong>: &#8220;process.&#8221;</p><p>The AI takes that chaotic stream of consciousness and formats it into a crisp 2-page strategy doc. You are the source of truth; the AI is just the editor.</p><p>Here is the cheat sheet from this session:</p><ul><li><p><strong>The speed gap:</strong> You type at 50 wpm. You speak at 180+ wpm. If you aren&#8217;t using voice-to-text (like Super Whisper or the ChatGPT mobile app), you are working at 25% capacity.</p></li><li><p><strong>The burger prompt:</strong> Stop writing lazy prompts like &#8220;Write a PRD.&#8221; Go to the Anthropic developer console, feed it your lazy prompt, and ask it to generate a better prompt. Let the AI do the prompt engineering for you.</p></li><li><p><strong>The brain transplant:</strong> Use <strong>Claude projects</strong>. Upload your specific context (your OKRs, your career competency matrix, your strategy docs) once. Now, every time you chat, the AI knows who you are.</p></li><li><p><strong>The kitchen (Gumloop):</strong></p><ul><li><p>Concept: Chatting is just checking the fridge. Automation is cooking.</p></li><li><p>Example: He built a workflow that takes a domain name &#8594; scrapes the web for news &#8594; matches it to his value prop &#8594; drafts a personalized email.</p></li></ul></li></ul><p><strong>Your action:</strong> Download the ChatGPT or Claude mobile app. Go for a 10-minute walk without your laptop. Open the app, hit the headphones icon, and ramble about a problem you are facing. At the end, say: &#8220;Process this into a structured 1-page memo proposing a solution.&#8221; You will be shocked at the quality.</p><h3>2/4. Manage your calendar and inbox (45 min)</h3><p>We often think that as you get more senior, you touch the tools less. You delegate more. <strong>Rachel Wolen</strong>, CPO of Webflow, argues the opposite. To lead an AI-native team, you must be an <strong>Individual Contributor</strong> (IC) CPO. You need to get your hands dirty.</p><p>In this session, she reveals her personal chief of staff, a suite of AI agents she built herself. She doesn&#8217;t just use AI to write emails; she uses it to audit her calendar for wasted time, triage her inbox, and even query her data warehouse (Snowflake) directly.</p><p>This is also a masterclass in <strong>Strategy</strong>. She explains how Webflow builds AI features not just because they are cool, but because they leverage their core strength (the CMS) and solve for the new era of Answer Engine Optimization.</p><div id="youtube2-82zF4BUqxkA" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;82zF4BUqxkA&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/82zF4BUqxkA?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Rachel introduced a concept that every leader needs: <strong>The personal ops team.</strong></p><p>She didn&#8217;t wait for a developer to build her a dashboard. She used <strong>Claude Code</strong> and <strong>MCPs</strong> to connect directly to Snowflake. Now, she can ask: &#8220;How many sites used our new feature last week?&#8221; and get an answer instantly. She also audits her own leadership by asking an AI agent: &#8220;Look at my calendar for the last two weeks. Where did I waste time? Where should I have delegated?&#8221;</p><p>Here is the cheat sheet from this session:</p><ul><li><p><strong>The chief of staff agents:</strong></p><ul><li><p><strong>Calendar audit:</strong> An agent that reviews your past schedule and flags meetings you should have skipped.</p></li><li><p><strong>Inbox triage:</strong> An agent that archives spam and drafts replies for high-priority emails before you open Gmail.</p></li><li><p><strong>Meeting prep:</strong> An agent that scans the LinkedIn profiles of everyone in your next meeting and writes a briefing doc.</p></li></ul></li><li><p><strong>The dream eval:</strong> When building AI products, don&#8217;t guess. Build a suite of evals (test cases). Include both success cases (happy path) and failure cases (edge cases). If you swap the underlying model (e.g., GPT-4 to Claude 3.5), run the eval to ensure you didn&#8217;t break the user experience.</p></li><li><p><strong>Answer Engine Optimization (AEO):</strong> SEO is dying. The future is AEO. Optimize your product&#8217;s public data (FAQs, docs) so that AI engines like ChatGPT and Perplexity can read them. If the AI can&#8217;t read your docs, you don&#8217;t exist.</p></li></ul><p><strong>Your action:</strong> Build a &#8220;meeting prep&#8221; agent. Create a new chat in ChatGPT or Claude. Upload the LinkedIn PDFs of the people you are meeting tomorrow. Prompt: &#8220;Based on these profiles, what are three conversation starters and one shared interest for each person?&#8221;</p><h3>3/4. Create custom research assistants (40 min)</h3><p>We have talked about automating tasks. Now we talk about automating <strong>memory</strong>.</p><p>As a PM, your brain is fried because you are holding 50 threads of context at once: the roadmap, the user feedback, the competitor&#8217;s pricing, the angry email from sales. In this session, <strong>Amir Klein</strong>, AI PM at Monday.com, shows us how to dump that load.</p><p>He doesn&#8217;t use AI for chats. He builds <strong>project brains. </strong>He creates persistent project folders in ChatGPT or Claude loaded with every relevant document (PDFs of websites, slide decks, raw data). He treats these projects like individual employees who never forget a detail.</p><div id="youtube2-Qj-67aJmEDA" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;Qj-67aJmEDA&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/Qj-67aJmEDA?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Amir showed us the power of <strong>bootstrap coding.</strong></p><p>He wanted to know what people on Reddit thought about AI agents. Instead of reading threads manually, he asked Claude to write a Python script to scrape Reddit. He didn&#8217;t know how to run it, so he asked Claude to guide him step-by-step. The result? A CSV with 34,000 comments. He then fed that back into the AI to analyze. He turned a feeling into a <strong>quantified dataset</strong> without writing a single line of code himself.</p><p>Here is the cheat sheet from this session:</p><ul><li><p><strong>The project brain:</strong> Stop starting new chats. Create a <strong>project</strong> (in Claude or ChatGPT). Upload your strategy deck, your OKRs, and your competitor&#8217;s pricing page. Now, every question you ask is answered with that specific context.</p></li><li><p><strong>The ping pong method:</strong> Before asking the AI to write a document, have a conversation. Challenge it. &#8220;Here is my data. What is missing?&#8221; &#8220;Critique my assumption.&#8221; Force it to think before it executes.</p></li><li><p><strong>The skills coach:</strong> Amir got feedback that his Slack messages were too long. He didn&#8217;t just try harder. He built a custom GPT loaded with &#8220;concise writing&#8221; books and forces all his updates through it. He automated his own professional development.</p></li><li><p><strong>Voice mode for prep:</strong> He uses ChatGPT Voice Mode to roleplay tough conversations. But he prompts it first: &#8220;Be candid. Don&#8217;t be nice. Challenge me.&#8221; It&#8217;s the only way to get real prep for a difficult stakeholder meeting.</p></li></ul><p><strong>Your action:</strong> Create a project called &#8220;My career.&#8221; Upload your resume, your last performance review, and the job description of the role you want next. Ask it: &#8220;Based on my review, what is the one skill I need to build to get promoted next year?&#8221;</p><h3>4/4. Organize your work with text files (50 min)</h3><p>We finish Module 3 with a masterclass in personal leverage. You might think building an AI agent requires a team of engineers and a massive server.</p><p>In this session, <strong><span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Peter Yang&quot;,&quot;id&quot;:6052627,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d2dbd75e-1c5a-48ab-94ef-b24caea63cdf_1024x1024.png&quot;,&quot;uuid&quot;:&quot;df213536-59db-44aa-9d4d-578de641ff4c&quot;}" data-component-name="MentionToDOM"></span></strong> hosts a roundtable with <strong><span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Tal Raviv&quot;,&quot;id&quot;:3269279,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7ebe7e6-cd97-479f-95a8-c19fc3ae402c_664x664.jpeg&quot;,&quot;uuid&quot;:&quot;72ea4816-eaf2-4484-b2cc-38aedcd5c3eb&quot;}" data-component-name="MentionToDOM"></span></strong> and <strong><span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Aman Khan&quot;,&quot;id&quot;:128655487,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!XLkV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2babe551-c5b2-4c0f-8c1a-d493518832d5_1203x1203.jpeg&quot;,&quot;uuid&quot;:&quot;0ad13211-1d78-403c-811d-719cd0ba4ab4&quot;}" data-component-name="MentionToDOM"></span></strong> to prove otherwise. They show that you can build a sophisticated personal operating system using nothing but <strong>markdown files</strong>.</p><p>They treat their own career and productivity as a product. They use Obsidian, Claude Projects, and Cursor not just to write code, but to manage their entire life, from strategic roadmaps to daily task prioritization.</p><div id="youtube2-VXdrfvqiH-0" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;VXdrfvqiH-0&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/VXdrfvqiH-0?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>The big revelation here is <strong>context engineering.</strong></p><p>Aman didn&#8217;t train a custom model. He simply created a folder with text files: <code>goals.md</code>, <code>backlog.md</code>, <code>context.md</code>. When he asks the AI &#8220;what should I work on today?&#8221;, the AI reads his goals, checks his calendar (via a simple script), and tells him exactly what to do. He built a chief of staff using text files.</p><p>Tal showed us how to separate <strong>strategy</strong> (Obsidian) from <strong>execution</strong> (Linear). He uses AI as the bridge, asking it to read his high-level strategy and check if his low-level tickets actually align with it. It&#8217;s a strategic audit on demand.</p><p>Here is the cheat sheet from this session:</p><ul><li><p><strong>Prototype first, spec later:</strong> Peter argues that writing a long PRD is dead. Instead, use Google AI Studio (or v0) to clone your competitor&#8217;s UI, modify it, and show that to your boss. A working toy beats a text memo every time.</p></li><li><p><strong>The personal OS stack:</strong></p><ul><li><p><strong>Storage:</strong> Markdown files (simple text) in a folder.</p></li><li><p><strong>Interface:</strong> Obsidian (for viewing) + Cursor (for AI editing).</p></li><li><p><strong>Logic:</strong> Skills (simple instructions like &#8220;Check my calendar&#8221;).</p></li></ul></li><li><p><strong>The diff review:</strong> Never let the AI auto-save changes to your strategy docs. Use Cursor&#8217;s diff view to approve every change. You are the editor-in-chief; the AI is just the writer.</p></li><li><p><strong>The granola hack:</strong> Use a tool like Granola to transcribe meetings, then feed those transcripts into your personal OS folder. Now your AI knows what you promised in that meeting last Tuesday.</p></li></ul><p><strong>Your action:</strong> Create a folder called <code>Me</code>. Inside, create <code>goals.md</code> and list your top 3 professional goals for this quarter. Open that folder in Cursor/Claude and ask: &#8220;Read my goals. Now, look at my calendar for tomorrow (paste it in). Am I spending my time on the right things?&#8221;</p><div><hr></div><h2>Module 4: Build AI into your product roadmap</h2><p>We have arrived at the final module of this journey. We are shifting gears now from &#8220;how to use the tools&#8221; to &#8220;how to build the future.&#8221; This isn&#8217;t just about efficiency anymore; it&#8217;s about defining a winning AI strategy and <strong>preparing for the agentic future</strong> that is coming at us fast. We are going to look at how to integrate AI directly into your product&#8217;s DNA.</p><p>I have curated <strong>four hours of strategic gold</strong> here. We begin with the big picture vision from <strong>a16z</strong>, setting the market context. Then, the legendary <strong>Andrej Karpathy</strong> gives us the mental model we need to understand this new software stack. We move to tactics with <strong>James Lowe</strong>, and then get a dose of execution reality from <strong>Ben Stein</strong>. <strong>Tomer Cohen</strong> helps us think about how to organize our teams for this new reality, and <strong>Andrew Ng</strong> breaks down the agentic architecture. Finally, we look at the plumbing of the future with the <strong>MCP</strong> standard.</p><h3>1/7. Understand the future of interfaces (15 min)</h3><p>We kick off this final module with a look at the near future, specifically, 2026.</p><p>In this session, three partners from <strong>Andreessen Horowitz (a16z)</strong> drop some hard truths that might hurt if you are a UI/UX designer. They argue that the prompt box (the empty text field we are all obsessed with) is actually a design failure. Users don&#8217;t want to chat; they want work done.</p><p>They also introduce a concept that will change your roadmap: <strong>machine legibility.</strong> For the last 20 years, we optimized our apps for human eyeballs (colors, layout, hooks). Now, we must optimize for AI Agents. If an AI can&#8217;t read your app to perform a task for a user, your app is effectively broken.</p><div id="youtube2-ULszsXDyjMY" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;ULszsXDyjMY&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/ULszsXDyjMY?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Marc Andrusko introduced a mental model that I love: <strong>The employee pyramid.</strong></p><ul><li><p><strong>Level 1 employee:</strong> Waits to be told what to do. This is most software today.</p></li><li><p><strong>S-tier employee:</strong> Identifies the problem, does the research, drafts the solution, and just asks you for <strong>final approval</strong>.</p></li></ul><p>Your product roadmap needs to move from Level 1 to S-tier. Stop building tools that wait for the user to type. Build tools that observe the user, realize they need an email drafted, draft it, and just present a &#8220;send?&#8221; button.</p><p>Here is the cheat sheet from this session:</p><ul><li><p><strong>Kill the prompt box:</strong> The future isn&#8217;t chatting with your data. It&#8217;s <strong>proactive intervention</strong>. The AI should do the work in the background and only interrupt the user for review.</p></li><li><p><strong>Machine legibility &gt; Visual hierarchy:</strong> Your API and your structured data are now more important than your UI. If an external agent (like ChatGPT or a Siri-of-the-future) can&#8217;t browse your documentation or access your endpoints, you are invisible.</p></li><li><p><strong>The $13 trillion opportunity:</strong> Traditional software replaces paper (a $300B market). AI replaces labor (a $13T market). Don&#8217;t just sell a tool to help a recruiter; sell a digital recruiter.</p></li><li><p><strong>Compliance as a feature:</strong> Olivia Moore makes a great point about voice AI. It&#8217;s not just about convenience; it&#8217;s about <strong>compliance</strong>.<sup> </sup>A voice agent never forgets the legal disclosure. Humans do.</p></li></ul><p><strong>Your action:</strong> Look at the top feature on your current roadmap. Is it a Level 1 feature that waits for the user to click a button? <strong>Redesign it as an S-tier feature.</strong></p><ul><li><p>Level 1: User clicks &#8220;generate weekly report.&#8221;</p></li><li><p>S-tier: The system detects it&#8217;s Friday morning, generates the report, identifies two anomalies, drafts a summary, and sends a push notification: &#8220;Weekly report ready. Revenue is down 5% due to X. Click here to approve sending to the team.&#8221; <strong>Put that version on your backlog.</strong></p></li></ul><h3>2/7. Design the user control (40 min)</h3><p>If the previous session was the &#8220;what&#8221; (agents), this session is the &#8220;how.&#8221;</p><p><strong>Andrej Karpathy</strong>, former director of AI at Tesla, founding member of OpenAI, gives us the definitive mental model for building AI products. He argues we have entered the era of <strong>Software 3.0</strong>.</p><ul><li><p><strong>Software 1.0:</strong> Code written by humans (C++, Python).</p></li><li><p><strong>Software 2.0:</strong> Neural networks (weights trained on data).</p></li><li><p><strong>Software 3.0:</strong> English (prompting LLMs).</p></li></ul><p>His core message: <strong>Stop trying to build robots. Build Iron Man suits.</strong></p><div id="youtube2-LCEmiRjPEtQ" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;LCEmiRjPEtQ&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/LCEmiRjPEtQ?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Karpathy warns against the full autonomy trap. We saw this with self-driving cars; the last 1% of autonomy takes 10 years. If you try to build a product that does everything for the user, you will fail.</p><p>Instead, build <strong>partial autonomy</strong>. Build a tool that makes the human 10x stronger but keeps them in the driver&#8217;s seat. He calls this the <strong>autonomy slider.</strong></p><p>Your product should allow the user to slide between &#8220;I&#8217;ll do it myself&#8221; (manual), &#8220;help me do it&#8221; (copilot), and &#8220;do it for me&#8221; (agent).</p><p>Here is the cheat sheet from this session:</p><ul><li><p><strong>Software 3.0 is English:</strong> The barrier to entry for coding has collapsed. If you can write a spec in English, you are a programmer. Vibe coding isn&#8217;t a meme; it&#8217;s the future of development.</p></li><li><p><strong>The Iron Man principle:</strong> Don&#8217;t replace the human; augment them. Design interfaces where the AI generates a draft, but the human has a high-speed way to verify and approve it.</p></li><li><p><strong>Speed up the verification loop:</strong> The bottleneck isn&#8217;t generating content; it&#8217;s checking it. Build UIs (like Cursor&#8217;s diff view) that make it instant for a human to spot errors.</p></li><li><p><strong>Manage the people spirit:</strong> Treat the AI like a brilliant but forgetful intern (people spirit). It has amnesia (small context window) and hallucinations. Your product needs to keep it on a leash by managing its memory for the user.</p></li></ul><p><strong>Your action:</strong> Revisit the S-tier feature you designed in the last section. Add an autonomy slider to the UI concept.</p><ul><li><p>Slider Left: &#8220;Draft the report for me to edit.&#8221;</p></li><li><p>Slider Right: &#8220;Auto-send the report every Friday if metrics are within normal range.&#8221;</p></li></ul><h3>3/7. Assess technical feasibility (20 min)</h3><p>We often assume that if we can imagine it, we can build it. In AI, that is dangerous.</p><p>In this session, <strong>James Lowe</strong>, head of AI engineering at the UK Government&#8217;s AI Incubator, shares hard-earned lessons from building AI for the public sector. He argues that AI product manager isn&#8217;t just a new title; it&#8217;s a new risk model.</p><p>He introduces a fourth circle to the classic PM Venn Diagram (Business, Tech, User): <strong>possibility.</strong> Before you ask &#8220;is it viable?&#8221;, you must ask &#8220;is it even possible?&#8221;</p><div id="youtube2-xzJdSi2Tsqw" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;xzJdSi2Tsqw&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/xzJdSi2Tsqw?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>James shared a painful story about Consult, a tool for analyzing public survey data. They built the whole product UI first, only to realize later that the AI simply couldn&#8217;t meet the legal accuracy threshold. They built a car without an engine.</p><p>This leads to his core rule: <strong>Evaluate capability first.</strong> Don&#8217;t build the wrapper until you have proven the model can do the job. He also advises us to <strong>&#8220;Go wide, prune ruthlessly.&#8221;</strong> Because AI coding is cheap, you should build 10 features, see what sticks, and delete the other 9 without sentiment.</p><p>Here is the cheat sheet from this session:</p><ul><li><p><strong>The possibility check:</strong> AI is probabilistic. Just because ChatGPT can do it once doesn&#8217;t mean it can do it 1,000 times reliably. Test the <em>model</em> before you build the <em>interface</em>.</p></li><li><p><strong>Evaluation first:</strong> Don&#8217;t wait for beta. Create a golden set of data (e.g., 50 perfect examples) and test the AI against it on Day 1. If it fails the eval, kill the project.</p></li><li><p><strong>Zero attachment:</strong> Use AI coding tools to prototype fast. If a feature confuses users (like his &#8220;AI Chat&#8221; in the transcription tool), delete it. The code was cheap; don&#8217;t hug it.</p></li><li><p><strong>Pivot speed:</strong> The infrastructure changes weekly. James had to pivot his Redbox chat tool entirely because Microsoft released Copilot for free. If the platform commoditizes you, move instantly.</p></li></ul><p><strong>Your action:</strong> Take your current AI feature idea. Create a simple eval spreadsheet with 20 input examples and the perfect expected output. Run your prompt against these 20 rows. If the success rate is below 80%, stop designing the UI and fix the prompt.</p><h3>4/7. Define and test AI behavior (20 min)</h3><p>We are used to building software that follows rules: If user clicks X, do Y. AI software is different. It follows probabilities. If user asks X, maybe do Y, or maybe do Z.</p><p>In this session, <strong>Ben Stein</strong>, founder of Teammates, explains why this shift breaks traditional Product Management. He discusses the nightmare of trying to write requirements for an autonomous agent &#8221;Stacy&#8221; that lives in Slack and Google Docs. He realized he couldn&#8217;t predict her behavior, so he couldn&#8217;t spec it.</p><div id="youtube2-PthmdT92qNg" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;PthmdT92qNg&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/PthmdT92qNg?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Ben introduced a critical shift: <strong>Affordances &gt; Requirements.</strong></p><p>You can&#8217;t write a requirement for every possible sentence a user might say to an AI. Instead, you define <strong>affordances</strong> (capabilities). You give the AI the &#8220;ability to read email&#8221; and the &#8220;ability to draft replies.&#8221; You don&#8217;t script exactly when it uses them; you trust the model&#8217;s reasoning (and test it).</p><p>He also doubled down on <strong>evals as specs.</strong> Since you can&#8217;t write a unit test for personality, you write an eval: &#8220;Is Stacy snarky but not mean? (pass/fail).&#8221; You then run this across 100 conversations to get a percentage score. That score is your new definition of quality.</p><p>Here is the cheat sheet from this session:</p><ul><li><p><strong>The black box problem:</strong> You don&#8217;t know what the model knows. You can&#8217;t predict every output. Stop trying to spec the happy path.</p></li><li><p><strong>Affordances:</strong> Define what the AI can do (tools it has access to), not exactly what it will do in every scenario.</p></li><li><p><strong>Evals are the new PRD:</strong> Don&#8217;t write &#8220;The bot should be helpful.&#8221; Write a test case where the bot fails if it&#8217;s rude. Run it 100 times. If it passes 90 times, ship it.</p></li><li><p><strong>Vibe coding as validation:</strong> You can&#8217;t spec vibes. You have to build a prototype to feel if the latency is too high or the tone is too annoying. Ben found that &#8220;asking clarifying questions&#8221; sounded great in a spec but was annoying in practice. He only learned that by building it.</p></li></ul><p><strong>Your action:</strong> Identify one probabilistic feature in your product (e.g., search, recommendations, chatbot). Define a vibe eval for it.</p><ul><li><p>Example: &#8220;The chatbot should feel helpful but concise.&#8221;</p></li><li><p>Test: Run 10 queries. Rate them 1-5 on &#8220;helpfulness&#8221; and &#8220;conciseness.&#8221; If the average is below 4, the feature is broken.</p></li></ul><h3>5/7. Build across all functions (70 min)</h3><p>Is the product manager role dying? Maybe. But something better is replacing it.</p><p>In this session, <strong>Tomer Cohen</strong>, chief product officer at LinkedIn, introduces the <strong>full-stack builder </strong>model. LinkedIn is actively piloting this. They are dissolving the lines between PM, designer, and engineer. Why? Because AI allows one person to do all three.</p><p>He warns that <strong>70% of current job skills will change by 2030</strong>. If you are still just a PM who writes tickets for engineers, you are obsolete. You need to become a builder who uses AI to execute.</p><div id="youtube2-R-zCfLQD_84" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;R-zCfLQD_84&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/R-zCfLQD_84?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Tomer identified the five skills that <strong>cannot</strong> be automated. These are the ones you must double down on:</p><ol><li><p><strong>Vision</strong></p></li><li><p><strong>Empathy</strong></p></li><li><p><strong>Communication</strong></p></li><li><p><strong>Creativity</strong></p></li><li><p><strong>Judgment</strong> (the most critical one).</p></li></ol><p>Everything else (writing code, drafting specs, QA) will be automated. He also shared how LinkedIn builds <strong>specialized agents</strong>: a trust agent that reviews specs for safety risks, and a growth agent that critiques funnels. They don&#8217;t just use ChatGPT; they build custom internal tools to augment their workforce.</p><p>Here is the cheat sheet from this session:</p><ul><li><p><strong>The full-stack shift:</strong> Stop waiting for an engineer to build your prototype. Stop waiting for a designer to mock it up. Use the tools from Module 1 &amp; 2 to do it yourself.</p></li><li><p><strong>The golden set strategy:</strong> Don&#8217;t give an AI access to all your company data (it&#8217;s too messy). Curate a golden set of your best 50 PRDs or designs. Train the agent on those so it learns what good looks like.</p></li><li><p><strong>Don&#8217;t wait for permission:</strong> Tomer&#8217;s advice: If you are waiting for a reorg to start building differently, you are waiting too long. Start using these tools now, even if your company hasn&#8217;t officially rolled them out.</p></li></ul><p><strong>Your action:</strong> Identify a small feature you have been waiting on engineering to build. Spend one weekend building a working version of it yourself using Bolt, Cursor, or Replit. Even if it&#8217;s not production-ready, showing a working app changes the conversation.</p><h3>6/7. Improve quality with workflows (40 min)</h3><p>We have talked about agents a lot. But why do they work better?</p><p>In this session, <strong>Andrew Ng</strong>, AI pioneer, founder of DeepLearning.AI, breaks down the math. He explains that LLMs are not smart enough to write a perfect essay in one go. But if you force them to <strong>iterate</strong> (Plan &#8594; Draft &#8594; Critique &#8594; Revise), their performance skyrockets.</p><p>He also validates the product opportunity. While everyone is obsessing over infrastructure (chips and models), the real money is in the <strong>application layer</strong>. That is where we live.</p><div id="youtube2-RNJCfif1dPY" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;RNJCfif1dPY&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/RNJCfif1dPY?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Andrew Ng gave us permission to treat code as <strong>disposable</strong>. Because AI makes coding so cheap, technical decisions are no longer one-way doors (irreversible). If you pick the wrong database, just ask the AI to rewrite the backend next week. This changes the risk profile of product management. You don&#8217;t need to plan for 6 months; you can build for 6 days and throw it away if it fails.</p><p>Here is the cheat sheet from this session:</p><ul><li><p><strong>Agentic workflows:</strong> Don&#8217;t ask for the answer. Ask for a process. Plan &#8594; Do &#8594; Check &#8594; Fix. This loop beats a smarter model every time (e.g., GPT-3.5 with a loop beats GPT-4 without one).</p></li><li><p><strong>The two-way door:</strong> Stop agonizing over tech stacks. AI makes refactoring cheap. Treat architecture decisions as reversible experiments.</p></li><li><p><strong>The new bottleneck:</strong> Engineering is now fast (10x speed). The new bottleneck is <strong>product management</strong>. If you can&#8217;t spec features fast enough, your engineers will sit idle.</p></li><li><p><strong>Concrete ideas:</strong> Vague ideas (&#8221;use AI for healthcare&#8221;) kill speed. Concrete ideas (&#8221;let patients book MRI slots via WhatsApp&#8221;) allow engineers to build immediately. Be specific.</p></li></ul><p><strong>Your action:</strong> Identify a task you currently do in one step (e.g., &#8220;write a blog post&#8221;). Break it into an agentic workflow for the AI:</p><ol><li><p>Research the topic.</p></li><li><p>Create an outline.</p></li><li><p>Draft the first section.</p></li><li><p>Critique the tone.</p></li><li><p>Revise.</p></li></ol><p>Run this chain manually in ChatGPT to feel the difference in quality.</p><h3>7/7. Connect AI to your internal data (10 min)</h3><p>We end this curriculum with a piece of architecture that will define your roadmap for the next months. We have talked about agents, but how do they actually talk to your database, your Slack, or your internal API?</p><p>In this session, the instructor breaks down the <strong>Model Context Protocol (MCP)</strong>. This is the new standard, think of it as the USB-C for AI apps. It solves the biggest problem in AI product development: connecting the brain (LLM) to the hands (Tools) without writing custom glue code for every single integration.</p><p>If you are a PM, you don&#8217;t need to code an MCP server, but you <strong>must</strong> have MCP support on your infrastructure roadmap. It&#8217;s how your product will survive in an agentic world.</p><div id="youtube2-FLpS7OfD5-s" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;FLpS7OfD5-s&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/FLpS7OfD5-s?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>This video clarifies the difference between <strong>resources</strong> and <strong>tools</strong>, a distinction every AI PM needs to master.</p><ul><li><p><strong>Resources</strong> are things the AI can read (a file, a database row, a calendar status).</p></li><li><p><strong>Tools</strong> are things the AI can do (book a meeting, update a record, send a Slack DM).</p></li></ul><p>The beauty of MCP is <strong>composability</strong>. You don&#8217;t build one giant AI that knows everything. You build a &#8220;calendar MCP server&#8221; and a &#8220;restaurant MCP server.&#8221; Your agent connects to both. If you change your calendar provider from Google to Outlook, you just swap the MCP server. You don&#8217;t rewrite the agent.</p><p>Here is the cheat sheet from this session:</p><ul><li><p><strong>The host vs. server model:</strong> Your app is the host. It connects to MCP servers (like a Jira server or a Postgres server). This decouples your AI logic from your data logic.</p></li><li><p><strong>Safety first:</strong> The LLM does not execute code. It recommends a tool call (&#8221;I suggest you invoke <code>book_meeting</code>&#8220;). Your application (the host) receives that recommendation and asks the user for permission. This is the technical implementation of Human-in-the-Loop.</p></li><li><p><strong>Don&#8217;t hardcode integrations:</strong> Stop building custom &#8220;chat with Salesforce&#8221; features. Build a generic &#8220;chat with MCP&#8221; feature. Then, plug in the Salesforce MCP. Next week, you can plug in the HubSpot MCP for free.</p></li></ul><p><strong>Your action:</strong> Go to your engineering lead tomorrow and ask: &#8220;Do we have an internal API that exposes our data as resources? If I wanted to build an MCP server for our product this weekend, is the documentation ready?&#8221; Their answer will tell you if you are ready for 2026.</p><div><hr></div><h2>Watch the best sources</h2><p>This curriculum didn&#8217;t come out of thin air. The AI landscape moves too fast for static textbooks. To stay ahead, you need to plug into the right live feeds.</p><p>Here are the <strong>YouTube channels</strong> I personally rely on to keep my edge. I have categorized them by how I use them, so you know exactly where to look depending on what you need.</p><ul><li><p><strong><a href="https://www.youtube.com/@howiaipodcast">How I AI</a> hosted by <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Claire Vo&quot;,&quot;id&quot;:5636738,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!9F1P!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fca382ecd-862b-433d-bf35-b5a7d9dceeeb_400x400.jpeg&quot;,&quot;uuid&quot;:&quot;cfcfa2d8-e9f5-4c28-9dfb-5feff67c9b89&quot;}" data-component-name="MentionToDOM"></span></strong>: This is my absolute number one recommendation. It&#8217;s incredibly practical. Unlike other podcasts that just talk about AI, this show features guests who open their laptops and share their screens. You watch them work in real-time. It&#8217;s deeply inspiring to see exactly how the work is made: the prompts, the tools, the mistakes, and the wins. It makes the magic of AI feel accessible.</p></li><li><p><strong><a href="https://www.youtube.com/@PeterYangYT">Peter Yang</a> (<span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Behind the Craft&quot;,&quot;id&quot;:25792,&quot;type&quot;:&quot;pub&quot;,&quot;url&quot;:&quot;https://open.substack.com/pub/peteryang&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c944a891-b38f-40ba-a756-7ddd70824b7e_1024x1024.png&quot;,&quot;uuid&quot;:&quot;57e81926-ce64-444f-876a-884058f958b7&quot;}" data-component-name="MentionToDOM"></span>) and <a href="https://www.youtube.com/@growproduct">Aakash Gupta</a> (<span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Product Growth&quot;,&quot;id&quot;:454003,&quot;type&quot;:&quot;pub&quot;,&quot;url&quot;:&quot;https://open.substack.com/pub/aakashgupta&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/266f66c3-ca9f-4c0b-93a7-b1dc6ed89901_512x512.png&quot;,&quot;uuid&quot;:&quot;6f63a4a4-ebe5-4f0d-bc04-362fa57930b5&quot;}" data-component-name="MentionToDOM"></span>)</strong>: These are not for casual viewing. These sessions are often long, sometimes well over an hour, and they go deep. You need stamina to get through them, but the payoff is huge. They don&#8217;t just give you a tutorial; they give you a masterclass. I don&#8217;t watch every single one, but when the topic hits, I clear my schedule. These are for when you want to move from &#8220;knowing about&#8221; a topic to &#8220;mastering&#8221; it.</p></li><li><p><strong><a href="https://www.youtube.com/@aiDotEngineer">AI Engineer</a></strong>: Don&#8217;t let the name scare you. Yes, this is focused on engineering, but as a product manager, you cannot afford to ignore it. This channel is where you discover the feasibility of your ideas. They cover advanced use cases and technical breakthroughs before they hit the mainstream. Even if you don&#8217;t write the code, watching these videos ensures you know what is technically possible before your competitors do. It&#8217;s the most advanced channel on this list, and arguably the most important for staying future-proof.</p></li><li><p><strong><a href="https://www.youtube.com/@LennysPodcast">Lenny&#8217;s Podcast</a> from <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Lenny Rachitsky&quot;,&quot;id&quot;:1849774,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/afba5161-65bb-4d99-8d6b-cce660917fa1_1540x1540.png&quot;,&quot;uuid&quot;:&quot;f224cc5b-89b6-49c1-acc9-52de49e7f00e&quot;}" data-component-name="MentionToDOM"></span> , <a href="https://www.youtube.com/@ycombinator">Y Combinator</a>, and <a href="https://www.youtube.com/@a16z">a16z</a>:</strong> This is your big picture diet. They don&#8217;t always talk about AI, but they provide the crucial context of where the market is going. Whether it&#8217;s a VC trend report from a16z, startup advice from YC, or a leadership interview on Lenny&#8217;s, these channels help you place your AI work into the broader business ecosystem. It&#8217;s about inspiration, vision, and understanding the why behind the how.</p></li><li><p><strong><a href="https://www.youtube.com/@ShreyasDoshiVideos">Shreyas Doshi</a> (<span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Shreyas Free Newsletter&quot;,&quot;id&quot;:25400,&quot;type&quot;:&quot;pub&quot;,&quot;url&quot;:&quot;https://open.substack.com/pub/shreyasdoshi&quot;,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/24aaa60a-dbb0-4155-8daa-307de20b1ec2_256x256.png&quot;,&quot;uuid&quot;:&quot;decf2bec-4a4b-48e0-ba17-27508d1ab6fd&quot;}" data-component-name="MentionToDOM"></span>)</strong>: These are short, high-impact videos (5-10 mins). He provides the context for what it means to be a PM today. Even when he isn&#8217;t explicitly talking about AI, his frameworks on product sense are the foundation you need to use AI effectively.</p></li><li><p><strong><a href="https://www.youtube.com/@departmentofproduct">Department of Product</a> (<span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Department of Product&quot;,&quot;id&quot;:949779,&quot;type&quot;:&quot;pub&quot;,&quot;url&quot;:&quot;https://open.substack.com/pub/departmentofproduct&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aab60aea-ff4d-4b53-a92d-ed3c5536f679_512x512.png&quot;,&quot;uuid&quot;:&quot;c86f2ebf-b4af-4d42-95d5-4fd6c0598511&quot;}" data-component-name="MentionToDOM"></span>)</strong>: This is, hands down, the best recap of AI news on the internet. I never miss a video. If you want to know what happened this week without scrolling through Twitter for hours, this is your source.</p></li></ul><div><hr></div><h2>Start building today</h2><p>We have covered a lot. I know 15 hours of video can feel overwhelming. It&#8217;s easy to feel like you are drowning in new tools, new frameworks, and new acronyms.</p><p><strong>My advice? Don&#8217;t try to master it all at once.</strong></p><p>First, just <strong>visualize</strong>. Scan through the videos to understand the landscape. See what is possible. Let your brain expand to fit the new reality. Then, pick ONE idea. Do not get lost trying to learn AI in general. Pick that one specific project you have kept in the back of your mind for years, the one you never had the time or engineering resources to build.</p><p><strong>Build that. </strong>Try building it with two or three tools simultaneously. Try one version in Lovable, then try to replicate it in Cursor. Compare them. That is the only way to truly understand the texture and potential of each tool.</p><p>The goal isn&#8217;t to be a scholar of AI; it&#8217;s to be a <strong>practitioner</strong>. The transition from the paper era to the CAD era didn&#8217;t happen by reading manuals; it happened by sitting at the terminal and drawing the first line. So, browse the videos that spark your interest, but then close the tab. <strong>Pass to action.</strong> Build something tangible this weekend.</p><p><strong>I want to hear from you:</strong> Which of these modules are you going to tackle first? Do you have a pet project in mind that you are finally going to build? Tell me in the comments. I&#8217;d love to see what you create.</p>]]></content:encoded></item></channel></rss>