<?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>Thu, 07 May 2026 11:36:52 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 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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>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;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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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;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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Five 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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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;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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"></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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"></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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The 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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The 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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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;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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>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;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;}" 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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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;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;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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">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><item><title><![CDATA[How to save +5 hours a week with Gems]]></title><description><![CDATA[Create a real-world Gem to see the immediate value. Learn a repeatable workflow where Gemini handles the drafting while you focus on the critique. Explore ideas to start automating your tasks.]]></description><link>https://www.theaithinker.com/p/how-to-save-5-hours-a-week-with-gems</link><guid isPermaLink="false">https://www.theaithinker.com/p/how-to-save-5-hours-a-week-with-gems</guid><dc:creator><![CDATA[Adam Faik]]></dc:creator><pubDate>Mon, 12 Jan 2026 12:02:51 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/d34f60e7-b42a-4ef5-8a2d-82f09a83a128_1024x731.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;4372f2c1-e0c1-40ec-b967-48196ad288b9&quot;,&quot;duration&quot;:null}"></div><div><hr></div><p>For a long time, I was just dabbling. I had maybe one or two Gems in Gemini. I used them just to test the feature. Then, I understood the real potential. I morphed into a factory overnight. I might be exaggerating, but I have <strong>over a hundred of them</strong> now. I sometimes forget what I built. I just create new ones because it&#8217;s so fast. I have a massive collection gathering digital dust. But I use about ten of them every week. These aren&#8217;t toys. They are my <strong>unfair advantage</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_!te_O!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29799721-a49d-4033-9938-982fa94911c2_3000x1462.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!te_O!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29799721-a49d-4033-9938-982fa94911c2_3000x1462.png 424w, https://substackcdn.com/image/fetch/$s_!te_O!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29799721-a49d-4033-9938-982fa94911c2_3000x1462.png 848w, https://substackcdn.com/image/fetch/$s_!te_O!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29799721-a49d-4033-9938-982fa94911c2_3000x1462.png 1272w, https://substackcdn.com/image/fetch/$s_!te_O!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29799721-a49d-4033-9938-982fa94911c2_3000x1462.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!te_O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29799721-a49d-4033-9938-982fa94911c2_3000x1462.png" width="1456" height="710" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/29799721-a49d-4033-9938-982fa94911c2_3000x1462.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;:363960,&quot;alt&quot;:&quot;Screenshot of the Gemini interface showing a list of custom Gems like \&quot;The Sanitizer\&quot; and \&quot;PRD Writer\&quot;.&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/184192150?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29799721-a49d-4033-9938-982fa94911c2_3000x1462.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of the Gemini interface showing a list of custom Gems like &quot;The Sanitizer&quot; and &quot;PRD Writer&quot;." title="Screenshot of the Gemini interface showing a list of custom Gems like &quot;The Sanitizer&quot; and &quot;PRD Writer&quot;." srcset="https://substackcdn.com/image/fetch/$s_!te_O!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29799721-a49d-4033-9938-982fa94911c2_3000x1462.png 424w, https://substackcdn.com/image/fetch/$s_!te_O!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29799721-a49d-4033-9938-982fa94911c2_3000x1462.png 848w, https://substackcdn.com/image/fetch/$s_!te_O!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29799721-a49d-4033-9938-982fa94911c2_3000x1462.png 1272w, https://substackcdn.com/image/fetch/$s_!te_O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29799721-a49d-4033-9938-982fa94911c2_3000x1462.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">My personal tribe of Gems</figcaption></figure></div><p>It&#8217;s hard to estimate the exact time saved. But let&#8217;s look at the boring stuff as an example. We all spend too much time in meetings. I built a simple Gem for that. It takes the raw, messy transcript as input. It churns out a structured recap following my exact template in seconds. The quality beats the auto-generated notes from Google Meet. That one tool saves me two hours a week. I can&#8217;t put a precise number on the rest. But my intuition is:</p><blockquote><p><strong>I save at least five hours a week with my tribe of Gems.</strong></p></blockquote><p>Probably much more. That is nearly a full working day gained every month. Imagine having an extra Friday every month just by automating the busy work.</p><p>I use Gems here. That is what Gemini calls them. But don&#8217;t worry if you use ChatGPT or Claude. This works for <strong>Custom GPTs</strong> or <strong>Claude Skills</strong> too. The principle is the same. I focus on Gems because I started there. But the logic applies everywhere. Of course, I assume throughout this article that you are working in an environment that fully complies with your company&#8217;s data privacy and security policies.</p><p>I want to show you exactly how I do this. First, we will <strong>build a concrete example</strong> together: a news refiner that turns long, messy articles into sharp briefings. Then, I will <strong>break down my factory process step-by-step</strong>. I will show you how to generate effective instructions quickly, how to fix them when they fail, and how to share Gems. By the end of this article, you will have the method to create an infinite number of Gems for your own boring tasks.</p><p>The goal is simple: <strong>build the tools that will give you your time back</strong>.</p><p>Let&#8217;s get started!</p><div><hr></div><h2>Build a Gem to summarize news</h2><p>Let&#8217;s face it. We are drowning in content. Every week brings a flood of new podcasts, research papers, and articles about AI. Some take ten minutes to consume. Others take five hours. <strong>You can&#8217;t read everything. But you can&#8217;t ignore it either</strong>. You need a filter.</p><p>I used to waste hours skimming. So, I built a Gem to do the heavy lifting. I call it <strong>The Product News Refiner</strong>. Here is how it works. I feed it raw text: articles, messy video transcripts, or PDF dumps. It acts as a ruthless editor. <strong>It gives me a 5-minute briefing</strong> and helps me decide if the full piece is worth my time.</p><p>Let&#8217;s build it together right now. It&#8217;s easier than you think.</p><ul><li><p><strong>Step 1:</strong> Open Gemini and click on <strong>Gem Manager</strong>.</p></li><li><p><strong>Step 2:</strong> Click &#8220;<strong>+ New Gem</strong>&#8221;.</p></li><li><p><strong>Step 3:</strong> Name it &#8220;<strong>&#128478;&#65039; The Product News Refiner</strong>&#8221;.</p><ul><li><p>Tip: Start with an Emoji. It helps you spot it visually in the sidebar.</p></li></ul></li><li><p><strong>Step 4:</strong> Add a <strong>one-line description</strong>: &#8220;Turns raw articles, transcripts, and reports into high-signal, emoji-led strategic briefings for Product Managers and Designers.&#8221;</p></li><li><p><strong>Step 5:</strong> Paste the instructions below into the <strong>&#8220;Instructions&#8221; box</strong>.</p></li></ul><pre><code>Role &amp; Persona

You are an expert Product Strategy Consultant assisting a team of Product Managers and Product Designers. Your job is to read raw input (articles, video transcripts, whitepapers) and synthesize them into a "5-minute update" format that is ready to be spoken in a meeting or pasted into Slack.

Target Audience

Product Managers: Interested in growth strategy, metrics (KPIs), business models (PLG, B2B), and competitive landscape.

Product Designers: Interested in user experience (UX), workflow changes, new tooling capabilities, and design systems.

Analysis Process

Before writing, analyze the input for the following high-value signals:

Strategic Pivots: Is the company changing its business model (e.g., B2C to B2B)?

Metrics: Specific numbers (revenue, user growth, latency, token costs).

Product Mechanics: How does the feature actually work? (e.g., "parallel agents," "visual reasoning").

Risks &amp; Friction: Safety guardrails, UX trade-offs, security vulnerabilities.

Formatting Rules

The Hook: Always start with a bolded section titled Why it matters: followed by a one-sentence summary explaining the strategic implication.

The Body: Create a list of 3-5 bullet points.

Emoji Start: Every bullet point must start with a relevant emoji (&#127919;, &#128260;, &#128736;&#65039;, &#128201;, &#128184;, &#9888;&#65039;).

Bolded Lead-in: Bold the first 3-5 words of the bullet to create a "title" for that point.

Conciseness: Keep descriptions punchy. Avoid fluff. Use active verbs.

Context: If the input mentions a competitor (e.g., Google vs. OpenAI), explicitly mention the comparison.

Output Template

Use the following structure exactly:

Why it matters: [One sentence summary of the strategic impact].

[Emoji] [Bolded Concept]: [Explanation focusing on product/design implications].

[Emoji] [Bolded Concept]: [Explanation focusing on metrics or mechanics].

[Emoji] [Bolded Concept]: [Explanation focusing on risks or opportunities].

Constraints

Do not use standard "summary" language like "The article talks about..."

Jump straight into the insights.

Keep the tone professional but energetic (tech-insider vibe).</code></pre><ul><li><p><strong>Step 6 (Optional):</strong> You can select tools (like Canvas or Deep Research) or upload documents to the Knowledge base. For this specific Gem, we don&#8217;t need them. Leave it default.</p></li><li><p><strong>Step 7:</strong> Click <strong>Save</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_!dcAI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5b9ff25-77b1-4fe4-ae2d-114283597feb_3000x1462.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dcAI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5b9ff25-77b1-4fe4-ae2d-114283597feb_3000x1462.png 424w, https://substackcdn.com/image/fetch/$s_!dcAI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5b9ff25-77b1-4fe4-ae2d-114283597feb_3000x1462.png 848w, https://substackcdn.com/image/fetch/$s_!dcAI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5b9ff25-77b1-4fe4-ae2d-114283597feb_3000x1462.png 1272w, https://substackcdn.com/image/fetch/$s_!dcAI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5b9ff25-77b1-4fe4-ae2d-114283597feb_3000x1462.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dcAI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5b9ff25-77b1-4fe4-ae2d-114283597feb_3000x1462.png" width="1456" height="710" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b5b9ff25-77b1-4fe4-ae2d-114283597feb_3000x1462.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;:388100,&quot;alt&quot;:&quot;The Gem configuration screen showing the \&quot;Instructions\&quot; field filled out for The Product News Refiner.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/184192150?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5b9ff25-77b1-4fe4-ae2d-114283597feb_3000x1462.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Gem configuration screen showing the &quot;Instructions&quot; field filled out for The Product News Refiner." title="The Gem configuration screen showing the &quot;Instructions&quot; field filled out for The Product News Refiner." srcset="https://substackcdn.com/image/fetch/$s_!dcAI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5b9ff25-77b1-4fe4-ae2d-114283597feb_3000x1462.png 424w, https://substackcdn.com/image/fetch/$s_!dcAI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5b9ff25-77b1-4fe4-ae2d-114283597feb_3000x1462.png 848w, https://substackcdn.com/image/fetch/$s_!dcAI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5b9ff25-77b1-4fe4-ae2d-114283597feb_3000x1462.png 1272w, https://substackcdn.com/image/fetch/$s_!dcAI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5b9ff25-77b1-4fe4-ae2d-114283597feb_3000x1462.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">This is where you paste the instructions to define the Gem's behavior</figcaption></figure></div><p>That&#8217;s it. You now have a specialized analyst.</p><p>I tested this recently on an article by Itamar Gilad titled <a href="https://itamargilad.com/discovery-ai/">Why Not Just Launch It? (AI Edition)</a>. I copied the whole webpage, header, footer and all, and pasted it into the Gem. Here is the result it gave 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_!suIZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d16ff9a-ce51-4710-bd84-159c1481e688_3000x1482.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!suIZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d16ff9a-ce51-4710-bd84-159c1481e688_3000x1482.png 424w, https://substackcdn.com/image/fetch/$s_!suIZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d16ff9a-ce51-4710-bd84-159c1481e688_3000x1482.png 848w, https://substackcdn.com/image/fetch/$s_!suIZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d16ff9a-ce51-4710-bd84-159c1481e688_3000x1482.png 1272w, https://substackcdn.com/image/fetch/$s_!suIZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d16ff9a-ce51-4710-bd84-159c1481e688_3000x1482.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!suIZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d16ff9a-ce51-4710-bd84-159c1481e688_3000x1482.png" width="1456" height="719" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1d16ff9a-ce51-4710-bd84-159c1481e688_3000x1482.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;:466802,&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/184192150?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d16ff9a-ce51-4710-bd84-159c1481e688_3000x1482.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_!suIZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d16ff9a-ce51-4710-bd84-159c1481e688_3000x1482.png 424w, https://substackcdn.com/image/fetch/$s_!suIZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d16ff9a-ce51-4710-bd84-159c1481e688_3000x1482.png 848w, https://substackcdn.com/image/fetch/$s_!suIZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d16ff9a-ce51-4710-bd84-159c1481e688_3000x1482.png 1272w, https://substackcdn.com/image/fetch/$s_!suIZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d16ff9a-ce51-4710-bd84-159c1481e688_3000x1482.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The result: exactly the briefing I needed</figcaption></figure></div><p>This summary was compelling. It flagged the search co-pilot insight as interesting. So, <strong>I decided to read the actual article</strong>. I even shared this recap with my colleagues on Slack, along with the link, telling them: &#8220;Here is what Gemini extracted, it looks worth a read.&#8221;</p><p>This specific Gem took me just <strong>10 minutes to build</strong>. There were not many risks. But others have taken me over an hour. That might surprise you. But sometimes you have to iterate a lot. You generate a response, it fails, you tweak the instructions, and you try again. We will talk about this iteration loop shortly.</p><p>And the best part? <strong>You can share these Gems</strong>. Just click the &#8220;Share&#8221; button. You can give &#8220;Edit&#8221; access to a fellow builder or &#8220;Read&#8221; access to a user.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nHSu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c50c41b-834c-4552-a432-b856830222bd_3000x1482.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nHSu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c50c41b-834c-4552-a432-b856830222bd_3000x1482.png 424w, https://substackcdn.com/image/fetch/$s_!nHSu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c50c41b-834c-4552-a432-b856830222bd_3000x1482.png 848w, https://substackcdn.com/image/fetch/$s_!nHSu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c50c41b-834c-4552-a432-b856830222bd_3000x1482.png 1272w, https://substackcdn.com/image/fetch/$s_!nHSu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c50c41b-834c-4552-a432-b856830222bd_3000x1482.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nHSu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c50c41b-834c-4552-a432-b856830222bd_3000x1482.png" width="1456" height="719" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9c50c41b-834c-4552-a432-b856830222bd_3000x1482.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;:367294,&quot;alt&quot;:&quot;The sharing pop-up menu in Gemini allowing the user to copy a link or add people.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/184192150?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c50c41b-834c-4552-a432-b856830222bd_3000x1482.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The sharing pop-up menu in Gemini allowing the user to copy a link or add people." title="The sharing pop-up menu in Gemini allowing the user to copy a link or add people." srcset="https://substackcdn.com/image/fetch/$s_!nHSu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c50c41b-834c-4552-a432-b856830222bd_3000x1482.png 424w, https://substackcdn.com/image/fetch/$s_!nHSu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c50c41b-834c-4552-a432-b856830222bd_3000x1482.png 848w, https://substackcdn.com/image/fetch/$s_!nHSu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c50c41b-834c-4552-a432-b856830222bd_3000x1482.png 1272w, https://substackcdn.com/image/fetch/$s_!nHSu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c50c41b-834c-4552-a432-b856830222bd_3000x1482.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Sharing a Gem with a colleague is as easy as sharing a Google Doc</figcaption></figure></div><p>Now, look at the instructions above. They are structured. They define a persona. They have constraints. <strong>I did not write them from scratch. </strong>That&#8217;s the secret. I don&#8217;t write prompts by myself. But I do invest time in managing the creation process. It might take me one hour to perfect a complex Gem. But if that tool saves me 15 minutes every day for the next year, the math is simple. <strong>It&#8217;s a massive ROI.</strong></p><p>Let me show you my exact process for building these effectively.</p><div><hr></div><h2>Create a Gem in 6 steps</h2><p>I don&#8217;t treat building Gems as a creative writing exercise. I treat it like a manufacturing process. This keeps me from getting stuck on a blank screen. Here is the <strong>6-step process</strong> we are about to cover.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!f44L!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa311e8-5ad5-4a9f-9d81-e3aeef265a23_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!f44L!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa311e8-5ad5-4a9f-9d81-e3aeef265a23_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!f44L!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa311e8-5ad5-4a9f-9d81-e3aeef265a23_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!f44L!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa311e8-5ad5-4a9f-9d81-e3aeef265a23_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!f44L!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa311e8-5ad5-4a9f-9d81-e3aeef265a23_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!f44L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa311e8-5ad5-4a9f-9d81-e3aeef265a23_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6aa311e8-5ad5-4a9f-9d81-e3aeef265a23_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;:8320743,&quot;alt&quot;:&quot;A step-by-step visual guide detailing the 6 phases of creating a Gem: Define, Setup, Prompt, Copy, Test, and Share.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/184192150?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa311e8-5ad5-4a9f-9d81-e3aeef265a23_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A step-by-step visual guide detailing the 6 phases of creating a Gem: Define, Setup, Prompt, Copy, Test, and Share." title="A step-by-step visual guide detailing the 6 phases of creating a Gem: Define, Setup, Prompt, Copy, Test, and Share." srcset="https://substackcdn.com/image/fetch/$s_!f44L!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa311e8-5ad5-4a9f-9d81-e3aeef265a23_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!f44L!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa311e8-5ad5-4a9f-9d81-e3aeef265a23_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!f44L!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa311e8-5ad5-4a9f-9d81-e3aeef265a23_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!f44L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6aa311e8-5ad5-4a9f-9d81-e3aeef265a23_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">This is the 6-step process I use to go from idea to a working Gem</figcaption></figure></div><ul><li><p><strong><a href="https://www.theaithinker.com/i/184192150/step-1-define-the-specific-task">Step 1: Define the specific task</a>.</strong> Before touching the keyboard, draw a rectangle to map exactly what goes in (input) and what comes out (output). Keep the scope narrow to ensure quality.</p></li><li><p><strong><a href="https://www.theaithinker.com/i/184192150/step-2-open-two-browser-tabs">Step 2: Open two browser tabs</a>.</strong> Set up your workspace. Use tab 1 as your prompt writer (standard chat) and Tab 2 as your Gem builder (the destination).</p></li><li><p><strong><a href="https://www.theaithinker.com/i/184192150/step-3-ask-gemini-to-write-the-instructions-in-tab-1">Step 3: Ask Gemini to write the instructions in tab 1</a>.</strong> Request instructions for an AI assistant in tab 1 to avoid confusion with the specific Gem feature name. Alternatively, frame it as a manual for a human employee. The goal is simply clear, operational steps.</p></li><li><p><strong><a href="https://www.theaithinker.com/i/184192150/step-4-copy-the-text-into-the-gem-in-tab-2">Step 4: Copy the text into the Gem in tab 2</a>.</strong> Paste the generated manual into tab 2. Add an emoji for visual scanning and upload documents for context (knowledge), but avoid Google Sheets or Excel files to prevent hallucinations.</p></li><li><p><strong><a href="https://www.theaithinker.com/i/184192150/step-5-test-and-improve-the-result-in-tabs-1-and-2">Step 5: Test and improve the result in tabs 1 and 2</a>.</strong> Run a trial. If it fails, copy the bad output back to tab 1 and ask Gemini in the meta-prompt conversation to rewrite the instructions based on your feedback. Repeat until perfect.</p></li><li><p><strong><a href="https://www.theaithinker.com/i/184192150/step-6-share-your-gem-with-your-team">Step 6: Share your Gem with your team</a>.</strong> Distribute the link. Choose the view mode for standard users and the edit mode for fellow builders who want to see the logic.</p></li></ul><p>Now, let&#8217;s break down exactly how to execute each step.</p><h3>Step 1: Define the specific task</h3><p>Before opening my computer, I stop. I grab a notebook or just visualize it in my head. The most important thing to understand is specificity. A Gem is not a general chatbot. <strong>It&#8217;s a tool for one single, extremely precise task</strong>. Don&#8217;t try to create a Gem with multiple missions. It will fail. You must be extremely precise about the task before you type a single word.</p><p>So, I draw a quick schema. It takes thirty seconds. I draw a rectangle in the middle. That is the <strong>Gem</strong>. I write its name inside. Then, I draw arrows coming in from the left. These are the <strong>inputs</strong>. You must be precise here. What exactly are you giving it? Is it a messy transcript? A clean CSV file? A URL? Finally, I draw an arrow going out to the right. This is the <strong>output</strong>. What does success look like exactly? Is it a JSON object? A table? A specific email format? Sometimes I add a box at the bottom of the rectangle for the <strong>knowledge</strong>. That is for things the Gem needs to know beforehand. Once I can visualize this black box, the rest is easy. Only then do I go to 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_!mjn_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdaec8521-40c3-40df-a4c4-0d91808f751f_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mjn_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdaec8521-40c3-40df-a4c4-0d91808f751f_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!mjn_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdaec8521-40c3-40df-a4c4-0d91808f751f_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!mjn_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdaec8521-40c3-40df-a4c4-0d91808f751f_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!mjn_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdaec8521-40c3-40df-a4c4-0d91808f751f_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mjn_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdaec8521-40c3-40df-a4c4-0d91808f751f_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/daec8521-40c3-40df-a4c4-0d91808f751f_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;:14173018,&quot;alt&quot;:&quot;A hand-drawn diagram illustrating the \&quot;Gem Schema\&quot; with inputs on the left, the Gem in the center, and specific outputs 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/184192150?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdaec8521-40c3-40df-a4c4-0d91808f751f_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A hand-drawn diagram illustrating the &quot;Gem Schema&quot; with inputs on the left, the Gem in the center, and specific outputs on the right." title="A hand-drawn diagram illustrating the &quot;Gem Schema&quot; with inputs on the left, the Gem in the center, and specific outputs on the right." srcset="https://substackcdn.com/image/fetch/$s_!mjn_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdaec8521-40c3-40df-a4c4-0d91808f751f_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!mjn_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdaec8521-40c3-40df-a4c4-0d91808f751f_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!mjn_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdaec8521-40c3-40df-a4c4-0d91808f751f_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!mjn_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdaec8521-40c3-40df-a4c4-0d91808f751f_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Before touching the keyboard, I visualize this schema</figcaption></figure></div><p>Let&#8217;s look at the &#8220;<strong>&#128478;&#65039; The Product News Refiner</strong>&#8221; Gem we just built. Before I created it, my schema was simple. The center rectangle was this Gem. The input arrow on the left said &#8220;Raw, messy text from articles or transcripts.&#8221; The output arrow on the right said &#8220;Strategic briefing, emoji bullet points, TL;DR format.&#8221; There was no knowledge box at the bottom for this one. It was a clean, simple flow. Only when I had this clear picture did I touch the 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_!AHzZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaa35475-25a2-4e11-a1d4-443f7d39a370_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AHzZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaa35475-25a2-4e11-a1d4-443f7d39a370_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!AHzZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaa35475-25a2-4e11-a1d4-443f7d39a370_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!AHzZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaa35475-25a2-4e11-a1d4-443f7d39a370_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!AHzZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaa35475-25a2-4e11-a1d4-443f7d39a370_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AHzZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaa35475-25a2-4e11-a1d4-443f7d39a370_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/caa35475-25a2-4e11-a1d4-443f7d39a370_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;:7468953,&quot;alt&quot;:&quot;A diagram showing the specific flow for the \&quot;Product News Refiner\&quot; Gem: taking raw text as input and producing a strategic briefing as 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/184192150?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaa35475-25a2-4e11-a1d4-443f7d39a370_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A diagram showing the specific flow for the &quot;Product News Refiner&quot; Gem: taking raw text as input and producing a strategic briefing as output." title="A diagram showing the specific flow for the &quot;Product News Refiner&quot; Gem: taking raw text as input and producing a strategic briefing as output." srcset="https://substackcdn.com/image/fetch/$s_!AHzZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaa35475-25a2-4e11-a1d4-443f7d39a370_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!AHzZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaa35475-25a2-4e11-a1d4-443f7d39a370_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!AHzZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaa35475-25a2-4e11-a1d4-443f7d39a370_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!AHzZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcaa35475-25a2-4e11-a1d4-443f7d39a370_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Here is the sketch for the Gem we just built</figcaption></figure></div><h3>Step 2: Open two browser tabs</h3><p>Now, I open my browser. I always open two tabs side-by-side. This is my factory floor.</p><ul><li><p><strong>Tab 1</strong> is my prompt writer. This is just a standard Gemini chat. Its only job is to write the instructions for me.</p></li><li><p><strong>Tab 2</strong> is the Gem builder. This is where I will paste the final result and test it.</p></li></ul><p>I almost never write the final system instructions myself. Especially for Gems I plan to use often. I simply ask Gemini to write the prompt for itself. Generally, <strong>it writes much better instructions than I do</strong>.</p><h3>Step 3: Ask Gemini to write the instructions in tab 1</h3><p>In the first tab, I write my request. But here is a funny detail. I think Gemini doesn&#8217;t understand what a Gem is. It&#8217;s not fully aware of its own features yet. If I ask for Gem instructions, it often gets confused.</p><p>So I use a trick. I don&#8217;t talk about Gems. Instead, I ask it to write instructions for an <strong>AI assistant</strong> or even a <strong>human employee</strong> joining my team. It makes sense. LLMs are trained on the internet. There is much more data on management and human delegation than on prompt engineering. It turns out AI responds to the same things humans do: clear goals, context, and incentives.</p><p>I type a meta-prompt like this:</p><blockquote><p>Write the instructions for an AI assistant that takes as input [input], gives as output [output], and has access to [knowledge]. Here is the context of why I need this: [context].</p></blockquote><p>Here is what I typed to generate the instructions for the &#8220;<strong>&#128478;&#65039; The Product News Refiner</strong>&#8221; Gem:</p><blockquote><p>Write the instructions for an AI assistant that takes as input raw text from articles or transcripts. It gives as output a structured summary with emojis and a &#8220;Why it matters&#8221; section. Context: I am a busy product manager and I need to decide quickly if an article is worth reading or if it&#8217;s just noise.</p></blockquote><p>When it generates the text, I scan it quickly. I don&#8217;t read every word yet. I just check for the structure. According to <a href="https://services.google.com/fh/files/misc/gemini-for-google-workspace-prompting-guide-101.pdf">Gemini&#8217;s own guide</a>, effective instructions must contain four specific elements: <strong>Persona, Task, Context, and Format:</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_!2Sdp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8aa7298-5cd4-4227-ad7f-37ce323a5b37_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2Sdp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8aa7298-5cd4-4227-ad7f-37ce323a5b37_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!2Sdp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8aa7298-5cd4-4227-ad7f-37ce323a5b37_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!2Sdp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8aa7298-5cd4-4227-ad7f-37ce323a5b37_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!2Sdp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8aa7298-5cd4-4227-ad7f-37ce323a5b37_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2Sdp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8aa7298-5cd4-4227-ad7f-37ce323a5b37_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c8aa7298-5cd4-4227-ad7f-37ce323a5b37_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;:8037421,&quot;alt&quot;:&quot;An illustration breaking down the four elements of effective instructions: Persona (Who), Task (What), Context (Why), and Format (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/184192150?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8aa7298-5cd4-4227-ad7f-37ce323a5b37_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="An illustration breaking down the four elements of effective instructions: Persona (Who), Task (What), Context (Why), and Format (Output)." title="An illustration breaking down the four elements of effective instructions: Persona (Who), Task (What), Context (Why), and Format (Output)." srcset="https://substackcdn.com/image/fetch/$s_!2Sdp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8aa7298-5cd4-4227-ad7f-37ce323a5b37_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!2Sdp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8aa7298-5cd4-4227-ad7f-37ce323a5b37_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!2Sdp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8aa7298-5cd4-4227-ad7f-37ce323a5b37_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!2Sdp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8aa7298-5cd4-4227-ad7f-37ce323a5b37_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Every effective instruction needs these four building blocks to work reliably</figcaption></figure></div><p>If the draft has these four blocks, it&#8217;s good enough for now. <strong>Don&#8217;t waste time perfecting it here.</strong> We will fix the details when we test.</p><h3>Step 4: Copy the text into the Gem in tab 2</h3><p>Now, I switch to <strong>tab 2</strong>. I paste the instructions I just copied into the &#8220;<strong>Instructions</strong>&#8221; box. I give the Gem a clear title. I always start with an <strong>emoji</strong>. It sounds trivial, but when you have 50 Gems in your Gem manager, that visual cue is the only way to find things quickly. I also add a one-line description so I remember what it does in a month.</p><p>Then, there are two powerful settings you can tweak: <strong>Knowledge</strong> and <strong>Tools</strong>.</p><p><strong>The knowledge:</strong> You can upload files here. Think of it as giving the Gem a permanent memory.</p><ul><li><p><strong>What works:</strong> I often upload a PDF or Google Slide deck with context about my company, product, or project. This way, I don&#8217;t have to explain &#8220;who we are&#8221; in every single prompt. It creates a shortcut. You can add up to 10 files.</p></li><li><p><strong>The trap:</strong> Avoid Google Sheets or Excel files. In my experience, Gems struggle to interpret complex spreadsheets in the knowledge base and often hallucinate the numbers. If you have data, it&#8217;s much safer to copy-paste the raw text directly into the system instructions.</p></li></ul><p><strong>The tools:</strong> This is a newer feature, but it&#8217;s valuable. You can select which tools are active by default for this Gem.</p><ul><li><p><strong>Deep research:</strong> Great if your Gem needs to browse the web for up-to-date sources.</p></li><li><p><strong>Canvas:</strong> Essential if you want the Gem to generate content you need to edit, iterate on, or preview, like code or a long article.</p></li><li><p><strong>Image or video generation:</strong> If your Gem is a creative partner.</p></li></ul><p>For the &#8220;<strong>&#128478;&#65039; The Product News Refiner</strong>&#8221; Gem, I don&#8217;t need extra files or tools, so I keep it simple. But for a coding assistant, I would definitely turn on Canvas.</p><h3>Step 5: Test and improve the result in tabs 1 and 2</h3><p>I click <strong>Save</strong> and run the first test. If it works perfectly right away, that&#8217;s great. But honestly? It rarely does. The first version is usually just okay. It might miss the tone or hallucinate a format.</p><p>This is where the <strong>Two-Tab workflow</strong> shines. I copy the imperfect result from the Gem (tab 2). I switch back to the meta-prompt chat (tab 1). I paste the result and say: &#8220;Here is what the assistant produced.&#8221;</p><p><strong>Note:</strong> If you just ask &#8220;What do you think?&#8221;, Gemini will likely congratulate itself. <strong>It&#8217;s often very lenient with its own work</strong>. You need to step in and be the critic. Read the result in detail. Then, tell in the meta-prompt conversation in tab 1 exactly what is wrong: &#8220;This is too long. It missed the metrics. The tone is too academic.&#8221;</p><p>The tab 1 conversation will then rewrite the instructions to fix those specific errors. I copy the new instructions, update the Gem in tab 2, and test again. I repeat this loop until the result is perfect.</p><h3>Step 6: Share your Gem with your team</h3><p>I hope you build as many Gems as you have boring tasks. But the real power unlocks when you share them. It works just like sharing a Google Doc. You click a button, and you choose between two modes: <strong>viewer</strong> or <strong>editor</strong>.</p><ul><li><p>A <strong>viewer</strong> can use the Gem but cannot see the instructions. It&#8217;s a black box for them.</p></li><li><p>An <strong>editor</strong> can see the prompt and tweak it.</p></li></ul><p>Personally, <strong>I prefer sharing with edit access</strong>. I like my colleagues to see the logic behind the magic.</p><p>One question comes up constantly: &#8220;If I use your Gem, can you see my chat?&#8221; The answer is no. <strong>Conversations are siloed</strong>. If I share a Gem with you, you use it in your own private instance. I have no access to your data or your inputs.</p><p>Another common question is about memory. <strong>Gems do not learn from your team&#8217;s usage</strong> (for now). They don&#8217;t get smarter on their own. If a Gem starts giving bad answers, you can&#8217;t just tell it to &#8220;do better next time.&#8221; You have to go back to the settings and update the system prompt manually.</p><p>We now have a <strong>shared library</strong> in our company where we drop our best Gems. It changes the team culture. Recently, we had to define specific KPIs for every product using a strict new methodology. I immediately built a Gem to guide us through the framework. But the best part wasn&#8217;t the tool itself. It was seeing that a colleague had the exact same reflex on other types of processes. We are no longer just doing the work: <strong>we are building the tools to do the work</strong>.</p><h3>A note on manual friction</h3><p>You will notice this workflow relies on copy-pasting: between tabs during the build, and from the Gem to Slack or Jira when you use it. Some might argue <strong>this isn&#8217;t true automation</strong> like you would get with Zapier or Make. That is a deliberate choice. I never trust a fully automated process to send meeting recaps or publish PRDs without me checking them first. <strong>I prefer to keep a human in the loop.</strong> I am happy to pay the copy-paste tax to ensure quality, because the time I save on the heavy lifting is still massive.</p><div><hr></div><h2>Turn a long conversation into a Gem</h2><p>The factory method I just described is what I use when I have a clear plan. But in reality? That only happens about 50% of the time. The rest of the time, I am much more chaotic. <strong>I don&#8217;t start with a Gem in mind</strong>. I just have a problem to solve right now.</p><p>I open a chat and ask Gemini to do the work. It fails. I correct it. We discuss. I give more context. It tries again. It gets better. This might go on for twenty turns. <strong>It&#8217;s a long, messy conversation. </strong>Eventually, we land on a result that is perfect. I look at the chat and think: &#8220;This conversation is gold. I don&#8217;t want to have this long debate next time I need this task done.&#8221;</p><p>That is when <strong>I save the conversation</strong>. I don&#8217;t write a prompt from scratch. I simply type this at the end of the chat:</p><blockquote><p>Analyze our conversation. If I wanted you to achieve this exact same result next time without going through this long back-and-forth loop, what system instructions should I give you? Write them for me.</p></blockquote><p>Gemini looks back at its own success. <strong>It extracts the rules we discovered together</strong>. It hands me the instructions on a silver platter. I simply copy them and create a new Gem.</p><p>So, if you feel stuck staring at a blank &#8220;Instructions&#8221; box, don&#8217;t worry. Just chat. <strong>Solve the problem manually first. Then, ask Gemini to automate the solution.</strong></p><div><hr></div><h2>Chain Gems into an assembly line</h2><p>Since the golden rule is &#8220;<strong>one Gem = one task</strong>,&#8221; complex workflows require a chain reaction. You can create a multi-agent system simply by passing the output of one Gem as the input for the next.</p><p>It&#8217;s digital Taylorism. Just as a factory line has one worker to bend the metal and another to paint it, you can have one Gem to extract facts, another to analyze trends, and a third to format the report. The manual copy-pasting between them is actually a feature, not a bug. It allows you to <strong>perform quality control at every station</strong>. If the final result is bad, you know exactly which Gem messed up.</p><p>I tried this once for an AI newsletter. I built a chain of at least five Gems: a fact extractor, a trend analyst, a dot connector, an editor, and a social sharer. It was fascinating to watch, but I stopped it. I realized that while the machine can do the heavy lifting, the final spark must come from you. If you remove the human expertise from the chain, you aren&#8217;t creating value; you are just generating dopamine. But when you use this factory to support your thinking rather than replace it, <strong>you unlock a massive value</strong>.</p><div><hr></div><h2>Find ideas for your own Gems</h2><p>You now have the factory method. You know how to build, test, and share. The only thing missing is <strong>inspiration</strong>.</p><p>I often get asked: &#8220;Can you just share the links to your Gems?&#8221; I would love to, but honestly, it wouldn&#8217;t help you much. <strong>My Gems are like my running shoes</strong>: they are molded to my feet. They are tuned to my company&#8217;s specific jargon, our weird document templates, and my personal tone of voice. If I gave you my &#8220;PRD writer&#8221; Gem, it would write like me, not like you.</p><p>The real power isn&#8217;t in using my tools; it&#8217;s in realizing that <strong>you can build a tool for literally anything.</strong></p><p>To get you started, here is a peek into my own Gem manager. Here are Gems I&#8217;ve built recently that you can replicate for yourself.</p><ul><li><p><strong>&#128221; The PRD writer</strong></p><ul><li><p><strong>Input:</strong> Messy meeting notes or a rough feature idea.</p></li><li><p><strong>Output:</strong> A structured PRD following your company&#8217;s specific template.</p></li><li><p><strong>Why:</strong> Never start a document from a blank page again.</p></li></ul></li><li><p><strong>&#127903;&#65039; The user story refiner</strong></p><ul><li><p><strong>Input:</strong> A vague requirement like &#8220;Users need to log in.&#8221;</p></li><li><p><strong>Output:</strong> A perfect Gherkin-syntax story (<code>Given/When/Then</code>) with acceptance criteria.</p></li></ul></li><li><p><strong>&#128640; The release note writer</strong></p><ul><li><p><strong>Input:</strong> A list of Jira tickets or technical commits.</p></li><li><p><strong>Output:</strong> A friendly, non-technical announcement for customers explaining what changed.</p></li></ul></li><li><p><strong>&#129514; The experiment card generator</strong></p><ul><li><p><strong>Input:</strong> A hypothesis or a question you want to answer.</p></li><li><p><strong>Output:</strong> A one-page experiment card defining the metrics, the method, and the success criteria.</p></li></ul></li><li><p><strong>&#128373;&#65039;&#8205;&#9792;&#65039; The interview coach</strong></p><ul><li><p><strong>Input:</strong> The transcript of a user interview you just conducted.</p></li><li><p><strong>Output:</strong> A critique of your performance. Did you ask leading questions? Did you interrupt?</p></li></ul></li><li><p><strong>&#129504; The insight extractor</strong></p><ul><li><p><strong>Input:</strong> A 1-hour video transcript of a user interview.</p></li><li><p><strong>Output:</strong> The top 5 actionable design insights and direct quotes, ready for a slide deck.</p></li></ul></li><li><p><strong>&#127917; The persona simulator</strong></p><ul><li><p><strong>Input:</strong> A feature idea you are considering.</p></li><li><p><strong>Knowledge Base:</strong> Your detailed user persona PDF.</p></li><li><p><strong>Output:</strong> The Gem acts as that persona and tells you why they would hate (or love) this feature.</p></li><li><p><strong>Important:</strong> Do not use this to validate features. AI cannot simulate real human irrationality and often confirms your own biases. Use this tool only to prepare better questions for your actual user interviews.</p></li></ul></li><li><p><strong>&#129324; The customer retention specialist</strong></p><ul><li><p><strong>Input:</strong> A furious email or negative review from a client.</p></li><li><p><strong>Output:</strong> A calm, empathetic draft response and a bulleted list of the root causes to fix.</p></li></ul></li><li><p><strong>&#128220; The code documenter</strong></p><ul><li><p><strong>Input:</strong> A snippet of code or a SQL query pasted by a developer.</p></li><li><p><strong>Output:</strong> A plain-English explanation of what this code actually does (great for non-technical PMs).</p></li></ul></li><li><p><strong>&#128737;&#65039; The API compliance analyst</strong></p><ul><li><p><strong>Input:</strong> Technical API documentation.</p></li><li><p><strong>Output:</strong> A checklist verifying if it meets your internal standards (naming conventions, security).</p></li></ul></li><li><p><strong>&#128030; The bug ticket generator</strong></p><ul><li><p><strong>Input:</strong> A slack message saying &#8220;Hey, the login is broken on mobile.&#8221;</p></li><li><p><strong>Output:</strong> A formatted Jira bug report with &#8220;steps to reproduce,&#8221; &#8220;expected result,&#8221; and &#8220;actual result.&#8221;</p></li></ul></li><li><p><strong>&#129529; The data sanitizer</strong></p><ul><li><p><strong>Input:</strong> Text containing emails, names, or phone numbers.</p></li><li><p><strong>Output:</strong> The same text, but with all Personal Identifiable Information (PII) replaced by [REDACTED], ready to be shared safely.</p></li></ul></li><li><p><strong>&#129299; The tech translator</strong></p><ul><li><p><strong>Input:</strong> Complex engineering specs or architecture documents.</p></li><li><p><strong>Output:</strong> A simple, benefit-driven blog post or internal update for the sales team.</p></li></ul></li><li><p><strong>&#128104;&#8205;&#127979; The strict manager</strong></p><ul><li><p><strong>Input:</strong> A draft of a presentation script or an important email.</p></li><li><p><strong>Output:</strong> Brutal feedback. It ignores the good parts and only points out logical fallacies, weak arguments, or boring sections.</p></li></ul></li><li><p><strong>&#128226; The social strategist</strong></p><ul><li><p><strong>Input:</strong> A new feature launch or an internal win.</p></li><li><p><strong>Output:</strong> Three variations of a LinkedIn post (one visionary, one metric-focused, one storytelling).</p></li></ul></li><li><p><strong>&#127897;&#65039; The podcast script writer</strong></p><ul><li><p><strong>Input:</strong> Raw notes from a team discussion or interview.</p></li><li><p><strong>Output:</strong> A narrative script format to turn that discussion into an internal podcast episode.</p></li></ul></li><li><p><strong>&#9889;&#65039; The meeting auditor</strong></p><ul><li><p><strong>Input:</strong> A transcript of a weekly team sync.</p></li><li><p><strong>Output:</strong> A &#8220;Did we actually decide anything?&#8221; report. It lists decisions made vs. topics discussed with no outcome.</p></li></ul></li><li><p><strong>&#128216; The onboarding buddy</strong></p><ul><li><p><strong>Input:</strong> &#8220;How do I expense travel?&#8221; or &#8220;What is our holiday policy?&#8221;</p></li><li><p><strong>Knowledge base:</strong> Your employee handbook PDF.</p></li><li><p><strong>Output:</strong> The exact answer with the page reference.</p></li></ul></li><li><p><strong>&#128203; The project kick-off generator</strong></p><ul><li><p><strong>Input:</strong> A rough email with a project idea.</p></li><li><p><strong>Output:</strong> A full project charter document outlining scope, stakeholders, and timeline.</p></li></ul></li></ul><div><hr></div><h2>Start with one simple task</h2><p>Don&#8217;t try to build a massive library today. Don&#8217;t try to build a super Gem that does everything. Just look at your calendar for tomorrow. <strong>Find the one task you are dreading</strong>. The one that feels repetitive. The one where you think, &#8220;I am a robot for doing this.&#8221;</p><p>Draw the box. Open two tabs. <strong>Build that Gem. </strong>Then do it again the next day. Before you know it, you won&#8217;t just be a product manager, <strong>you will be the architect of your own work</strong>.</p>]]></content:encoded></item><item><title><![CDATA[How to ship AI-generated code on GitHub]]></title><description><![CDATA[Bridge the gap between idea and execution: get started with GitHub. Use this step-by-step guide to publish and edit your first HTML project. Elevate your career by becoming a builder who ships code.]]></description><link>https://www.theaithinker.com/p/how-to-ship-ai-generated-code-on</link><guid isPermaLink="false">https://www.theaithinker.com/p/how-to-ship-ai-generated-code-on</guid><dc:creator><![CDATA[Adam Faik]]></dc:creator><pubDate>Mon, 05 Jan 2026 12:02:45 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/a5f4f872-d7c3-4039-9ded-51a8b2a3e700_1024x731.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;bcb545dd-9db8-4f9f-bf27-26d3e4881fb4&quot;,&quot;duration&quot;:null}"></div><div><hr></div><p>For years, product people lived in a world of requirements and mockups. You wrote tickets. You designed in Figma. <strong>Then you waited</strong>. You waited for engineers to bring those ideas to life. But the rules have changed. With AI tools like Claude and Cursor, <strong>you can now build.</strong></p><p>This isn&#8217;t about replacing engineers or writing production code. <strong>It&#8217;s about extending your capabilities</strong>. It&#8217;s about unblocking yourself to <strong>test prototypes</strong>, <strong>communicate complex ideas</strong>, and <strong>speak the same language</strong> as your technical team. You are no longer just a manager of ideas; you are an <strong>AI builder</strong>.</p><p>This shift is already happening at the highest levels. Take <a href="https://github.com/Shubhamsaboo">Shubham Saboo</a>, an AI PM at Google Cloud. As <a href="https://www.linkedin.com/posts/aagupta_this-is-what-a-senior-ai-pm-at-googles-github-activity-7393760007781044226-VCtC?utm_source=share&amp;utm_medium=member_desktop&amp;rcm=ACoAAAzQP8YBI2lrRJEA0M_HPnaolvhtYqRS4s8">highlighted</a> by <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Aakash Gupta&quot;,&quot;id&quot;:4429439,&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%2F3813c698-29ba-4ae3-b8ea-81a60e8b4878_400x400.jpeg&quot;,&quot;uuid&quot;:&quot;7c1c6efc-9b73-4edd-ab91-c9f9d4c83aa8&quot;}" data-component-name="MentionToDOM"></span>, Shubham made 484 GitHub contributions last year alone. That&#8217;s <strong>more than one a day</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_!PZnG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e557f8b-c78c-460c-9918-35302b8b36f6_1258x1238.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PZnG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e557f8b-c78c-460c-9918-35302b8b36f6_1258x1238.png 424w, https://substackcdn.com/image/fetch/$s_!PZnG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e557f8b-c78c-460c-9918-35302b8b36f6_1258x1238.png 848w, https://substackcdn.com/image/fetch/$s_!PZnG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e557f8b-c78c-460c-9918-35302b8b36f6_1258x1238.png 1272w, https://substackcdn.com/image/fetch/$s_!PZnG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e557f8b-c78c-460c-9918-35302b8b36f6_1258x1238.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PZnG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e557f8b-c78c-460c-9918-35302b8b36f6_1258x1238.png" width="1258" height="1238" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7e557f8b-c78c-460c-9918-35302b8b36f6_1258x1238.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1238,&quot;width&quot;:1258,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:463138,&quot;alt&quot;:&quot;Screenshot of Shubham Saboo's GitHub profile, displaying his bio as an AI PM at Google Cloud and a dense contribution graph showing 464 contributions in the last year.&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/182460342?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e557f8b-c78c-460c-9918-35302b8b36f6_1258x1238.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of Shubham Saboo's GitHub profile, displaying his bio as an AI PM at Google Cloud and a dense contribution graph showing 464 contributions in the last year." title="Screenshot of Shubham Saboo's GitHub profile, displaying his bio as an AI PM at Google Cloud and a dense contribution graph showing 464 contributions in the last year." srcset="https://substackcdn.com/image/fetch/$s_!PZnG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e557f8b-c78c-460c-9918-35302b8b36f6_1258x1238.png 424w, https://substackcdn.com/image/fetch/$s_!PZnG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e557f8b-c78c-460c-9918-35302b8b36f6_1258x1238.png 848w, https://substackcdn.com/image/fetch/$s_!PZnG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e557f8b-c78c-460c-9918-35302b8b36f6_1258x1238.png 1272w, https://substackcdn.com/image/fetch/$s_!PZnG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e557f8b-c78c-460c-9918-35302b8b36f6_1258x1238.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><a href="https://github.com/Shubhamsaboo">Shubham Saboo's GitHub profile</a> demonstrates that modern product managers are active builders</figcaption></figure></div><p>New-age product leaders don&#8217;t just write documents. They ship prototypes, frameworks, and perspectives. As Gupta says:</p><blockquote><p><strong>GitHub speaks louder than titles.</strong></p></blockquote><p>This is the new standard. To break into AI or simply grow in your career, you need proof of work.</p><p>You might have already played with vibe coding. You described an app to an AI, and it wrote the code. That feels magical, but <strong>something is missing</strong>. That code is trapped in a chat window. To move from a fleeting experiment to a shareable product, you need a home for your work. <strong>You need GitHub</strong>.</p><p>This might sound intimidating if you have never downloaded a code editor. But we will strip away the complexity. By the end of this guide, you will take a raw idea, generate it with AI, and <strong>publish it to a live URL</strong> that anyone on the web can see. You won&#8217;t just learn a tool; you will claim ownership of your creations.</p><p>So, let&#8217;s build!</p><div><hr></div><h2>The use case: an &#8220;LLM explainer&#8221; website</h2><p>Let&#8217;s start with the destination. Before we write a single line of code, click this link to see exactly what we are going to build: <strong><a href="https://adamfaik.github.io/llm-explainer/">https://adamfaik.github.io/llm-explainer/</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_!QWUb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf95657a-8feb-4529-b4b7-b10d57c232c2_1938x1470.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QWUb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf95657a-8feb-4529-b4b7-b10d57c232c2_1938x1470.png 424w, https://substackcdn.com/image/fetch/$s_!QWUb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf95657a-8feb-4529-b4b7-b10d57c232c2_1938x1470.png 848w, https://substackcdn.com/image/fetch/$s_!QWUb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf95657a-8feb-4529-b4b7-b10d57c232c2_1938x1470.png 1272w, https://substackcdn.com/image/fetch/$s_!QWUb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf95657a-8feb-4529-b4b7-b10d57c232c2_1938x1470.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QWUb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf95657a-8feb-4529-b4b7-b10d57c232c2_1938x1470.png" width="1456" height="1104" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/df95657a-8feb-4529-b4b7-b10d57c232c2_1938x1470.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1104,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:314855,&quot;alt&quot;:&quot;Screenshot of the \&quot;Inside the AI's Brain\&quot; website showing the interactive Tokenization section where users can type text to see how an AI breaks it down into tokens.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/182460342?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf95657a-8feb-4529-b4b7-b10d57c232c2_1938x1470.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of the &quot;Inside the AI's Brain&quot; website showing the interactive Tokenization section where users can type text to see how an AI breaks it down into tokens." title="Screenshot of the &quot;Inside the AI's Brain&quot; website showing the interactive Tokenization section where users can type text to see how an AI breaks it down into tokens." srcset="https://substackcdn.com/image/fetch/$s_!QWUb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf95657a-8feb-4529-b4b7-b10d57c232c2_1938x1470.png 424w, https://substackcdn.com/image/fetch/$s_!QWUb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf95657a-8feb-4529-b4b7-b10d57c232c2_1938x1470.png 848w, https://substackcdn.com/image/fetch/$s_!QWUb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf95657a-8feb-4529-b4b7-b10d57c232c2_1938x1470.png 1272w, https://substackcdn.com/image/fetch/$s_!QWUb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf95657a-8feb-4529-b4b7-b10d57c232c2_1938x1470.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The goal: Instead of static slides, we will build this interactive website to visualize how LLMs generates text</figcaption></figure></div><p>This is not a static document. It&#8217;s not a video recording. It&#8217;s an <strong>interactive website</strong> that explains how Large Language Models work. I built this to <strong>explain the concepts</strong>. Instead of writing a long memo or recording a loom video to explain &#8220;Tokens&#8221; or &#8220;Embeddings&#8221; to a stakeholder, I created this <strong>living experience</strong>.</p><p>The application breaks down the black box of LLMs into four interactive steps. It starts with <strong>Tokenization</strong>, where the user can type their own text and see how the machine chops it into numbers. It moves to <strong>Embeddings</strong>, visualizing words on a 2D map where &#8220;King&#8221; and &#8220;Queen&#8221; live near each other. It demonstrates <strong>Attention</strong>, showing how an AI connects words like &#8220;animal&#8221; and &#8220;it&#8221; across a sentence. And finally, it lets you play with <strong>Prediction</strong>, using a &#8220;Temperature&#8221; slider to see how the AI decides which word comes next.</p><p>I didn&#8217;t need to know complex mathematics or JavaScript to build this. I simply asked Gemini to &#8220;build a website to explain how LLMs work with interactive examples.&#8221; The best part? The entire process, from the first prompt to the live URL, took <strong>less than 15 minutes</strong>. Personally, I now prefer creating an interactive website to explain complex ideas rather than building yet another slide deck.</p><p>This project is our <strong>excuse to learn GitHub</strong>. We are taking a generated artifact and giving it a permanent home on the web. Here is exactly how. Each step builds on the last, but if you already have your tools installed, feel free to jump straight to step 3.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ag-h!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd966eb4-35bd-49ff-821b-3adf4aa4536e_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ag-h!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd966eb4-35bd-49ff-821b-3adf4aa4536e_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!ag-h!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd966eb4-35bd-49ff-821b-3adf4aa4536e_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!ag-h!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd966eb4-35bd-49ff-821b-3adf4aa4536e_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!ag-h!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd966eb4-35bd-49ff-821b-3adf4aa4536e_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ag-h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd966eb4-35bd-49ff-821b-3adf4aa4536e_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bd966eb4-35bd-49ff-821b-3adf4aa4536e_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;:6762283,&quot;alt&quot;:&quot;A flowchart titled \&quot;A Beginner's Guide to GitHub Flow\&quot; illustrating the five steps: Set Up Environment, Translate Jargon, Run the Vibe Loop, Publish to Web, and Iterate Safely.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/182460342?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd966eb4-35bd-49ff-821b-3adf4aa4536e_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A flowchart titled &quot;A Beginner's Guide to GitHub Flow&quot; illustrating the five steps: Set Up Environment, Translate Jargon, Run the Vibe Loop, Publish to Web, and Iterate Safely." title="A flowchart titled &quot;A Beginner's Guide to GitHub Flow&quot; illustrating the five steps: Set Up Environment, Translate Jargon, Run the Vibe Loop, Publish to Web, and Iterate Safely." srcset="https://substackcdn.com/image/fetch/$s_!ag-h!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd966eb4-35bd-49ff-821b-3adf4aa4536e_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!ag-h!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd966eb4-35bd-49ff-821b-3adf4aa4536e_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!ag-h!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd966eb4-35bd-49ff-821b-3adf4aa4536e_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!ag-h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd966eb4-35bd-49ff-821b-3adf4aa4536e_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Five steps that will take you from a blank screen to a live, iterated product</figcaption></figure></div><ol><li><p><strong><a href="https://www.theaithinker.com/i/182460342/step-set-up-your-environment">Step 1: Set up your environment</a>.</strong> We will install the &#8220;trinity&#8221; of tools: <strong>VS Code</strong> (your editor), <strong>GitHub Desktop</strong> (your sync tool), and your <strong>GitHub account</strong> (your identity). We will do this without touching the command line.</p></li><li><p><strong><a href="https://www.theaithinker.com/i/182460342/step-translate-the-jargon">Step 2: Translate the jargon</a>.</strong> We will <strong>demystify</strong> the scary terms. You will learn why a &#8220;repo&#8221; is just a folder, a &#8220;commit&#8221; is just a save point, and a &#8220;branch&#8221; is just a safe space to experiment.</p></li><li><p><strong><a href="https://www.theaithinker.com/i/182460342/step-run-the-vibe-loop">Step 3: Run the vibe loop</a>.</strong> We will take the raw code generated by the AI and move it into your local project. You will learn the <strong>core workflow</strong> of creating files, saving changes, and preparing them for the cloud.</p></li><li><p><strong><a href="https://www.theaithinker.com/i/182460342/step-publish-to-the-web">Step 4: Publish to the web</a>.</strong> We will turn your local code into a live, shareable URL using GitHub Pages. This is the magic moment where <strong>your project becomes accessible</strong> to the world.</p></li><li><p><strong><a href="https://www.theaithinker.com/i/182460342/step-iterate-safely">Step 5: Iterate safely</a>.</strong> We will learn how to update your live website without breaking it. You will use &#8220;branches&#8221; to <strong>test new features safely</strong> before merging them into the main product.</p></li></ol><p>Ready?</p><div><hr></div><h2>The method: your AI team</h2><p>Before we start installing tools, I want to be honest about how I actually work. I didn&#8217;t learn this by memorizing documentation. I learned it by <strong>treating AI as my co-worker</strong>. Even before I started using advanced coding agents like Cursor or GitHub Copilot, I developed a simple workflow using standard chat windows.</p><p>When I started, I opened Gemini and wrote a prompt like this:</p><blockquote><p>I would like to build an HTML website about [Topic] and publish it with GitHub Pages. I am a beginner. Can you give me a plan? We will do the steps one by one.</p></blockquote><p>The magic happens in the execution. <strong>I follow the first step</strong>. If it works, I ask for the next. If I see an error or a weird button, I don&#8217;t panic. I simply <strong>take a screenshot</strong>, paste it into the chat, and ask, &#8220;Is this right?&#8221; or &#8220;I see this error.&#8221; Gemini analyzes the image and <strong>helps me debug</strong>. It feels like having a developer looking over my shoulder.</p><p>I use Gemini for the <strong>bulk of my work</strong>. Gemini creates the plan, writes the initial code, and explains things simply. It has a superpower: <strong>GitHub integration</strong>. You can connect Gemini to your GitHub account:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!P2eO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7690f6-e652-41a4-9bdd-5b7adccf3cd7_2990x1438.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!P2eO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7690f6-e652-41a4-9bdd-5b7adccf3cd7_2990x1438.png 424w, https://substackcdn.com/image/fetch/$s_!P2eO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7690f6-e652-41a4-9bdd-5b7adccf3cd7_2990x1438.png 848w, https://substackcdn.com/image/fetch/$s_!P2eO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7690f6-e652-41a4-9bdd-5b7adccf3cd7_2990x1438.png 1272w, https://substackcdn.com/image/fetch/$s_!P2eO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7690f6-e652-41a4-9bdd-5b7adccf3cd7_2990x1438.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!P2eO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7690f6-e652-41a4-9bdd-5b7adccf3cd7_2990x1438.png" width="1456" height="700" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7b7690f6-e652-41a4-9bdd-5b7adccf3cd7_2990x1438.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:700,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:258978,&quot;alt&quot;:&quot;Screenshot of the Connected Apps menu in Gemini showing the GitHub extension toggled to the \&quot;On\&quot; position.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/182460342?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7690f6-e652-41a4-9bdd-5b7adccf3cd7_2990x1438.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of the Connected Apps menu in Gemini showing the GitHub extension toggled to the &quot;On&quot; position." title="Screenshot of the Connected Apps menu in Gemini showing the GitHub extension toggled to the &quot;On&quot; position." srcset="https://substackcdn.com/image/fetch/$s_!P2eO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7690f6-e652-41a4-9bdd-5b7adccf3cd7_2990x1438.png 424w, https://substackcdn.com/image/fetch/$s_!P2eO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7690f6-e652-41a4-9bdd-5b7adccf3cd7_2990x1438.png 848w, https://substackcdn.com/image/fetch/$s_!P2eO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7690f6-e652-41a4-9bdd-5b7adccf3cd7_2990x1438.png 1272w, https://substackcdn.com/image/fetch/$s_!P2eO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b7690f6-e652-41a4-9bdd-5b7adccf3cd7_2990x1438.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Enable the GitHub extension in Gemini's settings to give your AI teammate access to your code</figcaption></figure></div><p>Then <strong>&#8220;attach&#8221; your project repository</strong> to the chat, just like you would attach a PDF:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cZP7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a2971a3-cc8a-4ce5-844b-68079f7fbe91_2990x1438.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cZP7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a2971a3-cc8a-4ce5-844b-68079f7fbe91_2990x1438.png 424w, https://substackcdn.com/image/fetch/$s_!cZP7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a2971a3-cc8a-4ce5-844b-68079f7fbe91_2990x1438.png 848w, https://substackcdn.com/image/fetch/$s_!cZP7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a2971a3-cc8a-4ce5-844b-68079f7fbe91_2990x1438.png 1272w, https://substackcdn.com/image/fetch/$s_!cZP7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a2971a3-cc8a-4ce5-844b-68079f7fbe91_2990x1438.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cZP7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a2971a3-cc8a-4ce5-844b-68079f7fbe91_2990x1438.png" width="1456" height="700" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8a2971a3-cc8a-4ce5-844b-68079f7fbe91_2990x1438.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:700,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:183015,&quot;alt&quot;:&quot;Screenshot of the Gemini chat input menu showing the \&quot;Import code\&quot; option highlighted in the upload list.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/182460342?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a2971a3-cc8a-4ce5-844b-68079f7fbe91_2990x1438.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of the Gemini chat input menu showing the &quot;Import code&quot; option highlighted in the upload list." title="Screenshot of the Gemini chat input menu showing the &quot;Import code&quot; option highlighted in the upload list." srcset="https://substackcdn.com/image/fetch/$s_!cZP7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a2971a3-cc8a-4ce5-844b-68079f7fbe91_2990x1438.png 424w, https://substackcdn.com/image/fetch/$s_!cZP7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a2971a3-cc8a-4ce5-844b-68079f7fbe91_2990x1438.png 848w, https://substackcdn.com/image/fetch/$s_!cZP7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a2971a3-cc8a-4ce5-844b-68079f7fbe91_2990x1438.png 1272w, https://substackcdn.com/image/fetch/$s_!cZP7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a2971a3-cc8a-4ce5-844b-68079f7fbe91_2990x1438.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Once connected, you can attach a repository to your prompt just like you would attach a PDF</figcaption></figure></div><p>This is incredible for <strong>getting feedback</strong> on your whole project or <strong>fixing a bug</strong> that involves multiple files.</p><p>Sometimes, code gets tricky. If Gemini starts struggling (suggesting the same failed fix twice or going in circles), <strong>I switch to Claude</strong>. I treat Claude like a senior developer. I paste the code (or the GitHub repo link) and the context and say, &#8220;The junior developer is stuck. Can you fix this logic?&#8221; Claude is exceptional at solving <strong>complex logic problems</strong>.</p><p><strong>I work with them as a team.</strong> I don&#8217;t code alone; I manage this small team of coding LLMs. Now, let&#8217;s get your environment ready so you can do the same.</p><div><hr></div><h2>Step 1: Set up your environment</h2><p>Before we click any buttons, we need to understand the tools. If you just want to install them and skip the theory, scroll down to <strong>&#8220;Your action plan.&#8221;</strong></p><h3>The Tools</h3><p><strong>1. Git vs. GitHub: the engine and the garage</strong> These two names sound similar, which causes endless confusion. Let&#8217;s clear it up with a little history.</p><ul><li><p><strong>Git is the engine.</strong></p><ul><li><p><strong>Who and when:</strong> Created in <strong>2005</strong> by <strong><a href="https://en.wikipedia.org/wiki/Linus_Torvalds">Linus Torvalds</a></strong>, the legendary creator of Linux. He needed a tool to manage the massive Linux project, so he built Git in a weekend.</p></li><li><p><strong>What it is:</strong> Git is open-source software that lives locally on your computer. It&#8217;s a version control system. Think of it as a time machine that tracks every single change you make to a file.</p></li><li><p><strong>Ownership:</strong> Open source, it belongs to no one and everyone.</p></li></ul></li><li><p><strong>GitHub is the garage:</strong></p><ul><li><p><strong>Who and when:</strong> Founded in <strong>2008</strong> as a startup. In <strong>2018</strong>, it was acquired by <strong>Microsoft</strong>.</p></li><li><p><strong>What it is:</strong> GitHub is a for-profit service (SaaS) that lives in the cloud. It&#8217;s a website where you upload your Git files. It adds a visual interface and social features, allowing teams to collaborate.</p></li><li><p><strong>Ownership:</strong> Owned by Microsoft.</p></li></ul></li></ul><p><strong>Git</strong> is like the <strong>MP3 format</strong> (the technology). <strong>GitHub</strong> is like <strong>Spotify</strong> (the platform that uses the technology to let you share and stream music). You can use Git without GitHub, but nobody really does.</p><p><strong>2. Why GitHub? </strong>There are other &#8220;garages&#8221; like <a href="https://about.gitlab.com/">GitLab</a> or <a href="https://bitbucket.org/">Bitbucket</a>. They are great platforms, similar to how Vimeo is a great video platform. But we choose GitHub because it&#8217;s YouTube. It&#8217;s where <strong>the entire open-source world lives</strong>. If you want to use the latest AI tools or see how others are building, you need to be on GitHub.</p><p><strong>3. Why VS Code? </strong>You might have heard of new AI-native editors like <a href="https://cursor.com/">Cursor</a>, <a href="https://windsurf.com/">Windsurf</a>, or <a href="https://antigravity.google/">Antigravity</a>. These are amazing tools that integrate AI directly into the interface. So why are we installing Visual Studio Code (VS Code)? Two reasons:</p><ul><li><p><strong>VS Code is the absolute reference.</strong> It&#8217;s the most popular editor in the world. Most of the new AI editors (like Cursor) are actually built on top of VS Code. If you learn VS Code, you already know how to use the others.</p></li><li><p>To truly understand vibe coding, it helps to <strong>start with the standard environment</strong>. It&#8217;s like learning to drive on a standard car before buying a Tesla with full self-driving.</p></li></ul><p><strong>4. The terminal vs. GitHub Desktop. </strong>Usually, to use Git, developers use a <strong>terminal</strong> (or command line). This is a text-only interface where you type commands like <code>git push origin master</code>. It feels like hacking into a mainframe in a 90s movie. It&#8217;s powerful, but it&#8217;s unforgiving. If you make a typo, it fails.</p><p>So, <strong>GitHub Desktop</strong> is the tool that saves us from the matrix. It gives you buttons. Instead of typing a code to save your work, you click a button that says &#8220;Commit.&#8221; It handles the translation for you.</p><p>While we will use GitHub Desktop to make life easy, don&#8217;t be afraid of the Terminal. It&#8217;s just a chat window where you <strong>talk to your computer using text commands</strong>. If you ever need to run a command in the future, you can <strong>open a terminal directly inside VS Code</strong> and paste the command. It&#8217;s not magic; it&#8217;s just instructions.</p><h3>Your action plan</h3><p>We are going to install the &#8220;trinity&#8221; of development. And we will do this without opening a terminal.</p><p><strong>1. Create a GitHub account. </strong>Go to <a href="https://github.com/">github.com</a> and sign up. It&#8217;s free. Tip: Choose a professional username. This profile will likely end up on your resume.</p><p><strong>2. Install VS Code. </strong>Download and install it from <a href="https://code.visualstudio.com/">code.visualstudio.com</a>. Note: When you open it, don&#8217;t be overwhelmed by the buttons. We only need one or two of them.</p><p><strong>3. Install GitHub Desktop. </strong>Download and install it from <a href="https://github.com/apps/desktop">desktop.github.com</a>. Once installed, open GitHub Desktop and sign in with the account you created in Step 1.</p><p>Once you have these three installed and logged in, you are technically ready to code. Let&#8217;s put it to use.</p><div><hr></div><h3>Step 2: Translate the jargon</h3><p>The hardest part of learning GitHub isn&#8217;t the technology; it&#8217;s the vocabulary. As a product manager or designer, you already know the concepts, you just <strong>call them by different names</strong> in Jira, Figma, or Google Docs. Let&#8217;s translate.</p><p><strong>1. Repository (Repo)</strong></p><ul><li><p><strong>Definition:</strong> A central location for data storage.</p></li><li><p><strong>Translation:</strong> A <strong>project folder</strong>.</p></li><li><p><strong>Concept:</strong> It&#8217;s simply a folder that contains all the files for one specific product. In our use case, <code>llm-explainer</code> is the repo. It holds the HTML, the images, and the history.</p></li></ul><p><strong>2. Commit</strong></p><ul><li><p><strong>Definition:</strong> An operation which sends the latest changes of the source code to the repository.</p></li><li><p><strong>Translation:</strong> A <strong>save point</strong> (with a sticky note).</p></li><li><p><strong>Concept:</strong> In Google Docs, saving happens automatically. In Git, saving is intentional. You take a snapshot of your work and attach a message explaining what you changed (e.g., &#8220;Added the logo&#8221;). This creates a timeline you can scroll back through.</p></li></ul><p><strong>3. Push</strong></p><ul><li><p><strong>Definition:</strong> Uploading local repository content to a remote repository.</p></li><li><p><strong>Translation:</strong> <strong>Sync / upload</strong>.</p></li><li><p><strong>Concept:</strong> When you &#8220;Commit,&#8221; you are only saving on your laptop. If your laptop explodes, the work is gone. &#8220;Pushing&#8221; sends those saved commits up to the cloud (GitHub.com). It makes the work safe and shareable.</p></li></ul><p><strong>4. Branch</strong></p><ul><li><p><strong>Definition:</strong> A parallel version of a repository.</p></li><li><p><strong>Translation:</strong> A <strong>Sandbox / draft copy</strong>.</p></li><li><p><strong>Concept:</strong> This is the most powerful feature. Imagine you want to redesign the homepage, but you don&#8217;t want to break the current live website. You create a &#8220;Branch.&#8221; It creates a safe, parallel universe. You can break everything in the branch, and the main user experience remains perfect.</p></li></ul><p><strong>5. Merge</strong></p><ul><li><p><strong>Definition:</strong> Integrating changes from one branch to another.</p></li><li><p><strong>Translation:</strong> <strong>Approval / ship it</strong>.</p></li><li><p><strong>Concept:</strong> You finished your experiment in the Branch. It works. You &#8220;Merge&#8221; it into the main codebase. This is the moment the &#8220;Draft&#8221; becomes the &#8220;Final Version.&#8221;</p></li></ul><p>To check if you are fluent, here is a message a developer might send you on Slack, and what they actually mean.</p><p>The developer says:</p><blockquote><p>I set up the <strong>repo</strong>. I&#8217;m working on a <strong>branch</strong> to try out that new feature. I just <strong>committed</strong> the fix and <strong>pushed</strong> it. If it looks good, we can <strong>merge</strong> into main.</p></blockquote><p>The translation:</p><blockquote><p>I set up the <strong>Project Folder</strong>. I&#8217;m working in a <strong>Sandbox</strong> to try out that new feature safely. I just <strong>Saved</strong> the fix and <strong>Synced</strong> it to the cloud. If it looks good, we can <strong>Ship</strong> it to the final product.</p></blockquote><p>Now that we speak the language, let&#8217;s run the loop.</p><div><hr></div><h2>Step 3: Run the vibe loop</h2><p>Now we combine the tools. We are going to create the empty project, ask the AI for the code, and save it to the cloud.</p><h3>1. Create the repository in GitHub Desktop</h3><p>First, we need a folder on your computer that GitHub is watching.</p><ul><li><p><strong>Open GitHub Desktop.</strong></p></li><li><p><strong>Action:</strong> Click the button <strong>&#8220;Create a New Repository on your hard drive...&#8221;</strong> (or go to File &#8594; New Repository).</p></li><li><p><strong>Fill in the details:</strong></p><ul><li><p><strong>Name:</strong> <code>llm-explainer</code> (No spaces, use hyphens).</p></li><li><p><strong>Description:</strong> &#8220;An interactive visual guide to understanding how LLMs work, developed by Gemini.&#8221;</p></li><li><p><strong>Local path:</strong> Choose where you want it to live (e.g., your Documents folder).</p></li></ul></li><li><p><strong>Click:</strong> &#8220;Create Repository.&#8221;</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_!U37w!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e75b608-464f-48b1-b8fd-9cae29affcb9_2144x1544.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!U37w!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e75b608-464f-48b1-b8fd-9cae29affcb9_2144x1544.png 424w, https://substackcdn.com/image/fetch/$s_!U37w!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e75b608-464f-48b1-b8fd-9cae29affcb9_2144x1544.png 848w, https://substackcdn.com/image/fetch/$s_!U37w!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e75b608-464f-48b1-b8fd-9cae29affcb9_2144x1544.png 1272w, https://substackcdn.com/image/fetch/$s_!U37w!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e75b608-464f-48b1-b8fd-9cae29affcb9_2144x1544.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!U37w!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e75b608-464f-48b1-b8fd-9cae29affcb9_2144x1544.png" width="1456" height="1049" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9e75b608-464f-48b1-b8fd-9cae29affcb9_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;:650859,&quot;alt&quot;:&quot;GitHub Desktop \&quot;Create a New Repository\&quot; window showing the name \&quot;llm-explainer\&quot; being typed and the local path 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/182460342?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e75b608-464f-48b1-b8fd-9cae29affcb9_2144x1544.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="GitHub Desktop &quot;Create a New Repository&quot; window showing the name &quot;llm-explainer&quot; being typed and the local path selected." title="GitHub Desktop &quot;Create a New Repository&quot; window showing the name &quot;llm-explainer&quot; being typed and the local path selected." srcset="https://substackcdn.com/image/fetch/$s_!U37w!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e75b608-464f-48b1-b8fd-9cae29affcb9_2144x1544.png 424w, https://substackcdn.com/image/fetch/$s_!U37w!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e75b608-464f-48b1-b8fd-9cae29affcb9_2144x1544.png 848w, https://substackcdn.com/image/fetch/$s_!U37w!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e75b608-464f-48b1-b8fd-9cae29affcb9_2144x1544.png 1272w, https://substackcdn.com/image/fetch/$s_!U37w!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e75b608-464f-48b1-b8fd-9cae29affcb9_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Name your project folder and choose where it lives on your computer</figcaption></figure></div><p>Right now, this is just an empty folder on your laptop. To verify this, click the button in GitHub Desktop that says &#8220;Show in Finder&#8221; (Mac) or &#8220;Show in Explorer&#8221; (Windows). You will see a normal folder. It&#8217;s not magic.</p><h3>2. Generate the code on an LLM tool</h3><p>Now, let&#8217;s get the code.</p><ul><li><p><strong>Open your LLM of choice.</strong> I use Gemini.</p></li><li><p><strong>Copy and paste this prompt. </strong>If you are on Gemini: activate the &#8220;Canvas&#8221; tool.</p></li></ul><blockquote><p>Create a single HTML file that explains how LLMs work using interactive examples. It should have 4 sections: Tokenization, Embeddings, Attention, and Prediction. Make it colorful, modern, and interactive. Use standard HTML, CSS, and JS inside the single file.</p></blockquote><p>The LLM will generate the 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_!qidI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e80c3c9-e568-48ee-8729-b0c7671fa066_2990x1426.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qidI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e80c3c9-e568-48ee-8729-b0c7671fa066_2990x1426.png 424w, https://substackcdn.com/image/fetch/$s_!qidI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e80c3c9-e568-48ee-8729-b0c7671fa066_2990x1426.png 848w, https://substackcdn.com/image/fetch/$s_!qidI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e80c3c9-e568-48ee-8729-b0c7671fa066_2990x1426.png 1272w, https://substackcdn.com/image/fetch/$s_!qidI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e80c3c9-e568-48ee-8729-b0c7671fa066_2990x1426.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qidI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e80c3c9-e568-48ee-8729-b0c7671fa066_2990x1426.png" width="1456" height="694" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7e80c3c9-e568-48ee-8729-b0c7671fa066_2990x1426.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:694,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:512397,&quot;alt&quot;:&quot;Gemini chat interface showing the prompt on the left and the generated code appearing in the Canvas view 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/182460342?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e80c3c9-e568-48ee-8729-b0c7671fa066_2990x1426.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Gemini chat interface showing the prompt on the left and the generated code appearing in the Canvas view on the right." title="Gemini chat interface showing the prompt on the left and the generated code appearing in the Canvas view on the right." srcset="https://substackcdn.com/image/fetch/$s_!qidI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e80c3c9-e568-48ee-8729-b0c7671fa066_2990x1426.png 424w, https://substackcdn.com/image/fetch/$s_!qidI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e80c3c9-e568-48ee-8729-b0c7671fa066_2990x1426.png 848w, https://substackcdn.com/image/fetch/$s_!qidI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e80c3c9-e568-48ee-8729-b0c7671fa066_2990x1426.png 1272w, https://substackcdn.com/image/fetch/$s_!qidI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e80c3c9-e568-48ee-8729-b0c7671fa066_2990x1426.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Ask Gemini to generate the HTML structure for the interactive explainer</figcaption></figure></div><ul><li><p><strong>Click the Share &#8594; Copy contents button</strong> in the Canvas.</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_!xeCO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1153718c-8566-4d48-9166-f9333caf45c8_2990x1426.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xeCO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1153718c-8566-4d48-9166-f9333caf45c8_2990x1426.png 424w, https://substackcdn.com/image/fetch/$s_!xeCO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1153718c-8566-4d48-9166-f9333caf45c8_2990x1426.png 848w, https://substackcdn.com/image/fetch/$s_!xeCO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1153718c-8566-4d48-9166-f9333caf45c8_2990x1426.png 1272w, https://substackcdn.com/image/fetch/$s_!xeCO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1153718c-8566-4d48-9166-f9333caf45c8_2990x1426.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xeCO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1153718c-8566-4d48-9166-f9333caf45c8_2990x1426.png" width="1456" height="694" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1153718c-8566-4d48-9166-f9333caf45c8_2990x1426.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:694,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:476205,&quot;alt&quot;:&quot;Gemini Canvas view with the \&quot;Copy contents\&quot; option highlighted in the top right drop-down 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/182460342?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1153718c-8566-4d48-9166-f9333caf45c8_2990x1426.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Gemini Canvas view with the &quot;Copy contents&quot; option highlighted in the top right drop-down menu." title="Gemini Canvas view with the &quot;Copy contents&quot; option highlighted in the top right drop-down menu." srcset="https://substackcdn.com/image/fetch/$s_!xeCO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1153718c-8566-4d48-9166-f9333caf45c8_2990x1426.png 424w, https://substackcdn.com/image/fetch/$s_!xeCO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1153718c-8566-4d48-9166-f9333caf45c8_2990x1426.png 848w, https://substackcdn.com/image/fetch/$s_!xeCO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1153718c-8566-4d48-9166-f9333caf45c8_2990x1426.png 1272w, https://substackcdn.com/image/fetch/$s_!xeCO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1153718c-8566-4d48-9166-f9333caf45c8_2990x1426.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">One click to copy the generated code to your clipboard</figcaption></figure></div><h3>3. Inject the code into VS Code</h3><p>We need to put that code into the repository.</p><ul><li><p><strong>Go back to GitHub Desktop.</strong></p></li><li><p><strong>Action:</strong> Click the button <strong>&#8220;Open in Visual Studio Code.&#8221;</strong></p><ul><li><p>Why this is cool: It opens your specific project folder directly in the editor.</p></li></ul></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_!XULs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5be2665d-cdd7-4d64-b640-04840d01c61c_2144x1544.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XULs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5be2665d-cdd7-4d64-b640-04840d01c61c_2144x1544.png 424w, https://substackcdn.com/image/fetch/$s_!XULs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5be2665d-cdd7-4d64-b640-04840d01c61c_2144x1544.png 848w, https://substackcdn.com/image/fetch/$s_!XULs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5be2665d-cdd7-4d64-b640-04840d01c61c_2144x1544.png 1272w, https://substackcdn.com/image/fetch/$s_!XULs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5be2665d-cdd7-4d64-b640-04840d01c61c_2144x1544.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XULs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5be2665d-cdd7-4d64-b640-04840d01c61c_2144x1544.png" width="1456" height="1049" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5be2665d-cdd7-4d64-b640-04840d01c61c_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;:591577,&quot;alt&quot;:&quot;GitHub Desktop interface with a red box highlighting the \&quot;Open in Visual Studio Code\&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/182460342?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5be2665d-cdd7-4d64-b640-04840d01c61c_2144x1544.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="GitHub Desktop interface with a red box highlighting the &quot;Open in Visual Studio Code&quot; button." title="GitHub Desktop interface with a red box highlighting the &quot;Open in Visual Studio Code&quot; button." srcset="https://substackcdn.com/image/fetch/$s_!XULs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5be2665d-cdd7-4d64-b640-04840d01c61c_2144x1544.png 424w, https://substackcdn.com/image/fetch/$s_!XULs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5be2665d-cdd7-4d64-b640-04840d01c61c_2144x1544.png 848w, https://substackcdn.com/image/fetch/$s_!XULs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5be2665d-cdd7-4d64-b640-04840d01c61c_2144x1544.png 1272w, https://substackcdn.com/image/fetch/$s_!XULs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5be2665d-cdd7-4d64-b640-04840d01c61c_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Click &#8220;Open in Visual Studio Code&#8221; to launch your editor directly from the app</figcaption></figure></div><ul><li><p><strong>In VS Code:</strong></p><ul><li><p>Look at the sidebar on the left. It&#8217;s empty.</p></li><li><p>Right-click in the empty space and select <strong>New File </strong>(or click on the tiny file creation icon that appears only when you hover over it).</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_!Jfwr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91319737-5c30-4f7b-9e1b-a32ff38eef4f_3248x1932.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Jfwr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91319737-5c30-4f7b-9e1b-a32ff38eef4f_3248x1932.png 424w, https://substackcdn.com/image/fetch/$s_!Jfwr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91319737-5c30-4f7b-9e1b-a32ff38eef4f_3248x1932.png 848w, https://substackcdn.com/image/fetch/$s_!Jfwr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91319737-5c30-4f7b-9e1b-a32ff38eef4f_3248x1932.png 1272w, https://substackcdn.com/image/fetch/$s_!Jfwr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91319737-5c30-4f7b-9e1b-a32ff38eef4f_3248x1932.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Jfwr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91319737-5c30-4f7b-9e1b-a32ff38eef4f_3248x1932.png" width="1456" height="866" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/91319737-5c30-4f7b-9e1b-a32ff38eef4f_3248x1932.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:866,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:807418,&quot;alt&quot;:&quot;Visual Studio Code interface with a red box highlighting the \&quot;New File\&quot; icon in the file explorer sidebar.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/182460342?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91319737-5c30-4f7b-9e1b-a32ff38eef4f_3248x1932.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Visual Studio Code interface with a red box highlighting the &quot;New File&quot; icon in the file explorer sidebar." title="Visual Studio Code interface with a red box highlighting the &quot;New File&quot; icon in the file explorer sidebar." srcset="https://substackcdn.com/image/fetch/$s_!Jfwr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91319737-5c30-4f7b-9e1b-a32ff38eef4f_3248x1932.png 424w, https://substackcdn.com/image/fetch/$s_!Jfwr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91319737-5c30-4f7b-9e1b-a32ff38eef4f_3248x1932.png 848w, https://substackcdn.com/image/fetch/$s_!Jfwr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91319737-5c30-4f7b-9e1b-a32ff38eef4f_3248x1932.png 1272w, https://substackcdn.com/image/fetch/$s_!Jfwr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91319737-5c30-4f7b-9e1b-a32ff38eef4f_3248x1932.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">In VS Code, click the &#8220;New File&#8221; icon and name it <code>index.html</code></figcaption></figure></div><ul><li><p>Name the file: <code>index.html</code> (must be exact).</p></li><li><p><strong>Paste</strong> the code you copied from the LLM.</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_!yK_g!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffffdad06-f4e4-438c-8052-379b5c41213c_3248x1932.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yK_g!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffffdad06-f4e4-438c-8052-379b5c41213c_3248x1932.png 424w, https://substackcdn.com/image/fetch/$s_!yK_g!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffffdad06-f4e4-438c-8052-379b5c41213c_3248x1932.png 848w, https://substackcdn.com/image/fetch/$s_!yK_g!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffffdad06-f4e4-438c-8052-379b5c41213c_3248x1932.png 1272w, https://substackcdn.com/image/fetch/$s_!yK_g!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffffdad06-f4e4-438c-8052-379b5c41213c_3248x1932.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yK_g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffffdad06-f4e4-438c-8052-379b5c41213c_3248x1932.png" width="1456" height="866" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fffdad06-f4e4-438c-8052-379b5c41213c_3248x1932.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:866,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1155561,&quot;alt&quot;:&quot;VS Code editor displaying the pasted HTML code, with a red box framing the code content.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/182460342?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffffdad06-f4e4-438c-8052-379b5c41213c_3248x1932.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="VS Code editor displaying the pasted HTML code, with a red box framing the code content." title="VS Code editor displaying the pasted HTML code, with a red box framing the code content." srcset="https://substackcdn.com/image/fetch/$s_!yK_g!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffffdad06-f4e4-438c-8052-379b5c41213c_3248x1932.png 424w, https://substackcdn.com/image/fetch/$s_!yK_g!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffffdad06-f4e4-438c-8052-379b5c41213c_3248x1932.png 848w, https://substackcdn.com/image/fetch/$s_!yK_g!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffffdad06-f4e4-438c-8052-379b5c41213c_3248x1932.png 1272w, https://substackcdn.com/image/fetch/$s_!yK_g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffffdad06-f4e4-438c-8052-379b5c41213c_3248x1932.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Paste the AI-generated code into the file and hit save</figcaption></figure></div><ul><li><p><strong>Save</strong> the file (<code>Cmd+S</code> or <code>Ctrl+S</code>).</p></li></ul></li></ul><h3>4. Commit on GitHub Desktop</h3><p>Now, watch the magic.</p><ul><li><p><strong>Switch back to GitHub Desktop.</strong></p></li><li><p><strong>Observation:</strong> You will see your <code>index.html</code> file listed on the left with a green <code>+</code> icon. GitHub has detected a change!</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_!kqOt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6dfb2d5a-6cf8-42fe-9fab-58e2ee033246_2144x1544.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kqOt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6dfb2d5a-6cf8-42fe-9fab-58e2ee033246_2144x1544.png 424w, https://substackcdn.com/image/fetch/$s_!kqOt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6dfb2d5a-6cf8-42fe-9fab-58e2ee033246_2144x1544.png 848w, https://substackcdn.com/image/fetch/$s_!kqOt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6dfb2d5a-6cf8-42fe-9fab-58e2ee033246_2144x1544.png 1272w, https://substackcdn.com/image/fetch/$s_!kqOt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6dfb2d5a-6cf8-42fe-9fab-58e2ee033246_2144x1544.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kqOt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6dfb2d5a-6cf8-42fe-9fab-58e2ee033246_2144x1544.png" width="1456" height="1049" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6dfb2d5a-6cf8-42fe-9fab-58e2ee033246_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;:661670,&quot;alt&quot;:&quot;GitHub Desktop showing the new index.html file detected and the blue \&quot;Commit to main\&quot; button at the bottom 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/182460342?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6dfb2d5a-6cf8-42fe-9fab-58e2ee033246_2144x1544.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="GitHub Desktop showing the new index.html file detected and the blue &quot;Commit to main&quot; button at the bottom left." title="GitHub Desktop showing the new index.html file detected and the blue &quot;Commit to main&quot; button at the bottom left." srcset="https://substackcdn.com/image/fetch/$s_!kqOt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6dfb2d5a-6cf8-42fe-9fab-58e2ee033246_2144x1544.png 424w, https://substackcdn.com/image/fetch/$s_!kqOt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6dfb2d5a-6cf8-42fe-9fab-58e2ee033246_2144x1544.png 848w, https://substackcdn.com/image/fetch/$s_!kqOt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6dfb2d5a-6cf8-42fe-9fab-58e2ee033246_2144x1544.png 1272w, https://substackcdn.com/image/fetch/$s_!kqOt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6dfb2d5a-6cf8-42fe-9fab-58e2ee033246_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">See your changes (green lines), type a summary, and click &#8220;Commit 1 file to main&#8221;</figcaption></figure></div><ul><li><p><strong>The Action:</strong></p><ul><li><p>Go to the bottom left box.</p></li><li><p>Type: &#8220;Create index.html&#8221;.</p></li><li><p>Click the blue button: <strong>Commit 1 file to main</strong>.</p></li></ul></li></ul><p>Congratulations. You have just taken a snapshot of your code locally.</p><h3>5. Push on GitHub Desktop</h3><p>Right now, your code is safe on your laptop. Let&#8217;s send it to the cloud.</p><ul><li><p><strong>Action:</strong> Click the big blue button that appears: <strong>Publish Repository</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_!pRqa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dd1c94b-80dd-4c17-b59f-0f4e019b115b_2144x1544.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pRqa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dd1c94b-80dd-4c17-b59f-0f4e019b115b_2144x1544.png 424w, https://substackcdn.com/image/fetch/$s_!pRqa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dd1c94b-80dd-4c17-b59f-0f4e019b115b_2144x1544.png 848w, https://substackcdn.com/image/fetch/$s_!pRqa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dd1c94b-80dd-4c17-b59f-0f4e019b115b_2144x1544.png 1272w, https://substackcdn.com/image/fetch/$s_!pRqa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dd1c94b-80dd-4c17-b59f-0f4e019b115b_2144x1544.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pRqa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dd1c94b-80dd-4c17-b59f-0f4e019b115b_2144x1544.png" width="1456" height="1049" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1dd1c94b-80dd-4c17-b59f-0f4e019b115b_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;:591383,&quot;alt&quot;:&quot;GitHub Desktop screen with a red box highlighting the \&quot;Publish repository\&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/182460342?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dd1c94b-80dd-4c17-b59f-0f4e019b115b_2144x1544.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="GitHub Desktop screen with a red box highlighting the &quot;Publish repository&quot; button." title="GitHub Desktop screen with a red box highlighting the &quot;Publish repository&quot; button." srcset="https://substackcdn.com/image/fetch/$s_!pRqa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dd1c94b-80dd-4c17-b59f-0f4e019b115b_2144x1544.png 424w, https://substackcdn.com/image/fetch/$s_!pRqa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dd1c94b-80dd-4c17-b59f-0f4e019b115b_2144x1544.png 848w, https://substackcdn.com/image/fetch/$s_!pRqa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dd1c94b-80dd-4c17-b59f-0f4e019b115b_2144x1544.png 1272w, https://substackcdn.com/image/fetch/$s_!pRqa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dd1c94b-80dd-4c17-b59f-0f4e019b115b_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Your code is saved locally; click &#8220;Publish repository&#8221; to send it to the cloud</figcaption></figure></div><ul><li><p><strong>Check:</strong> Uncheck &#8220;Keep this code private&#8221; if you want to share it easily (or keep it private if you prefer). Click <strong>Publish</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_!mXAv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F332e8b81-076d-4851-9ac6-40fbd4d360b0_2144x1544.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mXAv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F332e8b81-076d-4851-9ac6-40fbd4d360b0_2144x1544.png 424w, https://substackcdn.com/image/fetch/$s_!mXAv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F332e8b81-076d-4851-9ac6-40fbd4d360b0_2144x1544.png 848w, https://substackcdn.com/image/fetch/$s_!mXAv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F332e8b81-076d-4851-9ac6-40fbd4d360b0_2144x1544.png 1272w, https://substackcdn.com/image/fetch/$s_!mXAv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F332e8b81-076d-4851-9ac6-40fbd4d360b0_2144x1544.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mXAv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F332e8b81-076d-4851-9ac6-40fbd4d360b0_2144x1544.png" width="1456" height="1049" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/332e8b81-076d-4851-9ac6-40fbd4d360b0_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;:571874,&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/182460342?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F332e8b81-076d-4851-9ac6-40fbd4d360b0_2144x1544.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_!mXAv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F332e8b81-076d-4851-9ac6-40fbd4d360b0_2144x1544.png 424w, https://substackcdn.com/image/fetch/$s_!mXAv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F332e8b81-076d-4851-9ac6-40fbd4d360b0_2144x1544.png 848w, https://substackcdn.com/image/fetch/$s_!mXAv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F332e8b81-076d-4851-9ac6-40fbd4d360b0_2144x1544.png 1272w, https://substackcdn.com/image/fetch/$s_!mXAv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F332e8b81-076d-4851-9ac6-40fbd4d360b0_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Uncheck &#8220;Keep this code private&#8221; so you can share the website link later</figcaption></figure></div><h3>6. Check what happened</h3><p>Before we move on, let&#8217;s stop and verify what actually happened. This is where the mental model clicks.</p><ul><li><p><strong>Check your computer: the local side.</strong></p><ul><li><p>Open your computer&#8217;s file manager (Finder on Mac / Explorer on Windows).</p></li><li><p>Go to your Documents folder and find the llm-explainer folder.</p></li><li><p><strong>Look:</strong> Inside, you will see <code>index.html</code>. This is a real file. You can open it with Chrome, you can email it, you can delete it. It exists physically on your machine.</p></li></ul></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_!TyV-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1008778c-8450-4724-871d-3a960d30db22_1838x1088.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TyV-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1008778c-8450-4724-871d-3a960d30db22_1838x1088.png 424w, https://substackcdn.com/image/fetch/$s_!TyV-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1008778c-8450-4724-871d-3a960d30db22_1838x1088.png 848w, https://substackcdn.com/image/fetch/$s_!TyV-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1008778c-8450-4724-871d-3a960d30db22_1838x1088.png 1272w, https://substackcdn.com/image/fetch/$s_!TyV-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1008778c-8450-4724-871d-3a960d30db22_1838x1088.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TyV-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1008778c-8450-4724-871d-3a960d30db22_1838x1088.png" width="1456" height="862" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1008778c-8450-4724-871d-3a960d30db22_1838x1088.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:862,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:534300,&quot;alt&quot;:&quot;MacOS Finder window showing the \&quot;llm-explainer\&quot; folder containing the \&quot;index.html\&quot; 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/182460342?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1008778c-8450-4724-871d-3a960d30db22_1838x1088.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="MacOS Finder window showing the &quot;llm-explainer&quot; folder containing the &quot;index.html&quot; file." title="MacOS Finder window showing the &quot;llm-explainer&quot; folder containing the &quot;index.html&quot; file." srcset="https://substackcdn.com/image/fetch/$s_!TyV-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1008778c-8450-4724-871d-3a960d30db22_1838x1088.png 424w, https://substackcdn.com/image/fetch/$s_!TyV-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1008778c-8450-4724-871d-3a960d30db22_1838x1088.png 848w, https://substackcdn.com/image/fetch/$s_!TyV-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1008778c-8450-4724-871d-3a960d30db22_1838x1088.png 1272w, https://substackcdn.com/image/fetch/$s_!TyV-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1008778c-8450-4724-871d-3a960d30db22_1838x1088.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Reality check: The file exists on your actual hard drive, just like a Word doc</figcaption></figure></div><ul><li><p><strong>Check the Internet: the cloud side.</strong></p><ul><li><p>Go back to GitHub Desktop.</p></li><li><p>Click the button <strong>&#8220;View on GitHub.&#8221;</strong></p></li><li><p><strong>Look:</strong> This opens a website. You will see <code>llm-explainer</code> and inside it, <code>index.html</code>.</p></li></ul></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_!p9VP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc81d559b-f162-451a-9981-81c22d338911_3012x1472.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!p9VP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc81d559b-f162-451a-9981-81c22d338911_3012x1472.png 424w, https://substackcdn.com/image/fetch/$s_!p9VP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc81d559b-f162-451a-9981-81c22d338911_3012x1472.png 848w, https://substackcdn.com/image/fetch/$s_!p9VP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc81d559b-f162-451a-9981-81c22d338911_3012x1472.png 1272w, https://substackcdn.com/image/fetch/$s_!p9VP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc81d559b-f162-451a-9981-81c22d338911_3012x1472.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!p9VP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc81d559b-f162-451a-9981-81c22d338911_3012x1472.png" width="1456" height="712" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c81d559b-f162-451a-9981-81c22d338911_3012x1472.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:712,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:380353,&quot;alt&quot;:&quot;Screenshot of the llm-explainer repository page on GitHub.com showing the index.html file listed in the file structure.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/182460342?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc81d559b-f162-451a-9981-81c22d338911_3012x1472.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of the llm-explainer repository page on GitHub.com showing the index.html file listed in the file structure." title="Screenshot of the llm-explainer repository page on GitHub.com showing the index.html file listed in the file structure." srcset="https://substackcdn.com/image/fetch/$s_!p9VP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc81d559b-f162-451a-9981-81c22d338911_3012x1472.png 424w, https://substackcdn.com/image/fetch/$s_!p9VP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc81d559b-f162-451a-9981-81c22d338911_3012x1472.png 848w, https://substackcdn.com/image/fetch/$s_!p9VP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc81d559b-f162-451a-9981-81c22d338911_3012x1472.png 1272w, https://substackcdn.com/image/fetch/$s_!p9VP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc81d559b-f162-451a-9981-81c22d338911_3012x1472.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Cloud check: Your repository is now live on GitHub.com, mirroring exactly what is on your computer</figcaption></figure></div><p>Think of this exactly like <strong>Google Drive</strong>. You put a file in a folder on your computer, and it magically appeared on the website. The only difference is that with GitHub, you had to click &#8220;Commit&#8221; and &#8220;Push&#8221; to confirm you wanted to sync it.</p><p>You have now successfully moved code from an AI chat window, into a local file on your hard drive, and up to the GitHub cloud servers. You are an AI builder, ready to publish to the web.</p><div><hr></div><h2>Step 4: Publish to the web</h2><p>Right now, your code is safely stored on GitHub.com. But if you send the link to a friend, they will just see a list of files. They won&#8217;t see the app. We need to turn those files into a live website.</p><p>We will use a feature called <strong>GitHub Pages</strong>. It&#8217;s free hosting, built right into GitHub.</p><ul><li><p><strong>Open the repository:</strong></p><ul><li><p>Go to <strong>GitHub Desktop</strong>.</p></li><li><p>Click the button <strong>&#8220;View on GitHub.&#8221;</strong></p></li><li><p>This opens your browser to your project page on GitHub.com.</p></li></ul></li><li><p><strong>Go to settings:</strong></p><ul><li><p>Look at the top menu bar of your repository (Code, Issues, Pull requests...).</p></li><li><p>Click on <strong>Settings</strong> (the gear icon on the far right).</p></li><li><p>On the left-hand sidebar, scroll down until you see <strong>Pages</strong>. Click it.</p></li></ul></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_!8kJT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51245309-79f5-4545-a496-d0e0038575ae_3012x1472.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8kJT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51245309-79f5-4545-a496-d0e0038575ae_3012x1472.png 424w, https://substackcdn.com/image/fetch/$s_!8kJT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51245309-79f5-4545-a496-d0e0038575ae_3012x1472.png 848w, https://substackcdn.com/image/fetch/$s_!8kJT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51245309-79f5-4545-a496-d0e0038575ae_3012x1472.png 1272w, https://substackcdn.com/image/fetch/$s_!8kJT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51245309-79f5-4545-a496-d0e0038575ae_3012x1472.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8kJT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51245309-79f5-4545-a496-d0e0038575ae_3012x1472.png" width="1456" height="712" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/51245309-79f5-4545-a496-d0e0038575ae_3012x1472.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:712,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:412781,&quot;alt&quot;:&quot;GitHub repository settings screen showing the \&quot;Pages\&quot; tab selected and the Build and deployment source set to the \&quot;main\&quot; branch.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/182460342?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51245309-79f5-4545-a496-d0e0038575ae_3012x1472.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="GitHub repository settings screen showing the &quot;Pages&quot; tab selected and the Build and deployment source set to the &quot;main&quot; branch." title="GitHub repository settings screen showing the &quot;Pages&quot; tab selected and the Build and deployment source set to the &quot;main&quot; branch." srcset="https://substackcdn.com/image/fetch/$s_!8kJT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51245309-79f5-4545-a496-d0e0038575ae_3012x1472.png 424w, https://substackcdn.com/image/fetch/$s_!8kJT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51245309-79f5-4545-a496-d0e0038575ae_3012x1472.png 848w, https://substackcdn.com/image/fetch/$s_!8kJT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51245309-79f5-4545-a496-d0e0038575ae_3012x1472.png 1272w, https://substackcdn.com/image/fetch/$s_!8kJT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51245309-79f5-4545-a496-d0e0038575ae_3012x1472.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Navigate to Settings &gt; Pages and select &#8220;main&#8221; as your branch to deploy the site</figcaption></figure></div><ul><li><p><strong>Go live:</strong></p><ul><li><p>Under the <strong>&#8220;Build and deployment&#8221;</strong> section, look for <strong>Branch</strong>.</p></li><li><p>Click the dropdown menu that says <code>None</code>.</p></li><li><p>Select <strong>main</strong>.</p></li><li><p>Click <strong>Save</strong>.</p></li></ul></li><li><p><strong>Wait:</strong></p><ul><li><p>Nothing happens instantly. Look at the top of the Pages screen. You will see a yellow bar or a message saying &#8220;GitHub Pages is currently being built...&#8221;</p></li><li><p><strong>Wait 60 seconds.</strong> Refresh the page.</p></li><li><p>The bar will turn <strong>Green</strong>.</p></li></ul></li><li><p><strong>Test the link:</strong></p><ul><li><p>GitHub will give you a URL that looks like this:<br>https://your-username.github.io/llm-explainer/</p></li><li><p><strong>Click it.</strong></p></li></ul></li></ul><p>Congratulations! <strong>Your AI-generated code is now a live website on the public internet.</strong> You can send this link to anyone, your team, your friends, or your LinkedIn network. You didn&#8217;t just write a spec; you shipped something.</p><div><hr></div><h2>Step 5: Iterate safely</h2><p>You have a live website. It works perfectly. Now, you want to add a new feature, like a <strong>&#8220;Dark Mode&#8221; button</strong>. You are afraid that if you paste new code from the AI, you might break the whole site. The screen will go white, and you won&#8217;t know how to fix it.</p><p><strong>The Solution: You need a Branch. </strong>Think of a Branch as a &#8220;Safe Mode&#8221; or a <strong>parallel universe</strong>. You can do anything you want in this universe (delete files, break code, make a mess) and <strong>your main website (the main branch) stays untouched</strong>.</p><ul><li><p><strong>Create the branch, your safe space:</strong></p><ul><li><p><strong>Go to GitHub Desktop.</strong></p></li><li><p>Look at the top where it says <strong>&#8220;Current Branch: main&#8221;</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_!jmcz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30b052cd-0321-43e2-b433-6cb74b53c351_2144x1544.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jmcz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30b052cd-0321-43e2-b433-6cb74b53c351_2144x1544.png 424w, https://substackcdn.com/image/fetch/$s_!jmcz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30b052cd-0321-43e2-b433-6cb74b53c351_2144x1544.png 848w, https://substackcdn.com/image/fetch/$s_!jmcz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30b052cd-0321-43e2-b433-6cb74b53c351_2144x1544.png 1272w, https://substackcdn.com/image/fetch/$s_!jmcz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30b052cd-0321-43e2-b433-6cb74b53c351_2144x1544.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jmcz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30b052cd-0321-43e2-b433-6cb74b53c351_2144x1544.png" width="1456" height="1049" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/30b052cd-0321-43e2-b433-6cb74b53c351_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;:554485,&quot;alt&quot;:&quot;GitHub Desktop header highlighting the \&quot;Current Branch\&quot; dropdown showing \&quot;main\&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/182460342?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30b052cd-0321-43e2-b433-6cb74b53c351_2144x1544.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="GitHub Desktop header highlighting the &quot;Current Branch&quot; dropdown showing &quot;main&quot;." title="GitHub Desktop header highlighting the &quot;Current Branch&quot; dropdown showing &quot;main&quot;." srcset="https://substackcdn.com/image/fetch/$s_!jmcz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30b052cd-0321-43e2-b433-6cb74b53c351_2144x1544.png 424w, https://substackcdn.com/image/fetch/$s_!jmcz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30b052cd-0321-43e2-b433-6cb74b53c351_2144x1544.png 848w, https://substackcdn.com/image/fetch/$s_!jmcz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30b052cd-0321-43e2-b433-6cb74b53c351_2144x1544.png 1272w, https://substackcdn.com/image/fetch/$s_!jmcz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30b052cd-0321-43e2-b433-6cb74b53c351_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Start by identifying your current branch (usually &#8220;main&#8221;) in the top header</figcaption></figure></div><ul><li><p>Click it and select <strong>New Branch</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_!5wzX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e400d3d-14f1-4264-b2e3-74db3119febb_2144x1544.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5wzX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e400d3d-14f1-4264-b2e3-74db3119febb_2144x1544.png 424w, https://substackcdn.com/image/fetch/$s_!5wzX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e400d3d-14f1-4264-b2e3-74db3119febb_2144x1544.png 848w, https://substackcdn.com/image/fetch/$s_!5wzX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e400d3d-14f1-4264-b2e3-74db3119febb_2144x1544.png 1272w, https://substackcdn.com/image/fetch/$s_!5wzX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e400d3d-14f1-4264-b2e3-74db3119febb_2144x1544.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5wzX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e400d3d-14f1-4264-b2e3-74db3119febb_2144x1544.png" width="1456" height="1049" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2e400d3d-14f1-4264-b2e3-74db3119febb_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;:499522,&quot;alt&quot;:&quot;GitHub Desktop branch dropdown menu with the \&quot;New Branch\&quot; button 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/182460342?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e400d3d-14f1-4264-b2e3-74db3119febb_2144x1544.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="GitHub Desktop branch dropdown menu with the &quot;New Branch&quot; button highlighted." title="GitHub Desktop branch dropdown menu with the &quot;New Branch&quot; button highlighted." srcset="https://substackcdn.com/image/fetch/$s_!5wzX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e400d3d-14f1-4264-b2e3-74db3119febb_2144x1544.png 424w, https://substackcdn.com/image/fetch/$s_!5wzX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e400d3d-14f1-4264-b2e3-74db3119febb_2144x1544.png 848w, https://substackcdn.com/image/fetch/$s_!5wzX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e400d3d-14f1-4264-b2e3-74db3119febb_2144x1544.png 1272w, https://substackcdn.com/image/fetch/$s_!5wzX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e400d3d-14f1-4264-b2e3-74db3119febb_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Click the branch menu and select &#8220;New Branch&#8221; to create your safe experiment zone</figcaption></figure></div></li><li><p><strong>Name it:</strong> <code>experiment-dark-mode</code> (or whatever feature you are building).</p></li><li><p>Click <strong>Create Branch</strong>. Note: Nothing changes on your screen, but you are now in the parallel universe.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UwBH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b62e9d0-18a9-42da-b478-6d129b2d271f_2144x1544.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UwBH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b62e9d0-18a9-42da-b478-6d129b2d271f_2144x1544.png 424w, https://substackcdn.com/image/fetch/$s_!UwBH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b62e9d0-18a9-42da-b478-6d129b2d271f_2144x1544.png 848w, https://substackcdn.com/image/fetch/$s_!UwBH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b62e9d0-18a9-42da-b478-6d129b2d271f_2144x1544.png 1272w, https://substackcdn.com/image/fetch/$s_!UwBH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b62e9d0-18a9-42da-b478-6d129b2d271f_2144x1544.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UwBH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b62e9d0-18a9-42da-b478-6d129b2d271f_2144x1544.png" width="1456" height="1049" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9b62e9d0-18a9-42da-b478-6d129b2d271f_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;:538774,&quot;alt&quot;:&quot;\&quot;Create a Branch\&quot; popup window with the name \&quot;experiment-dark-mode\&quot; 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/182460342?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b62e9d0-18a9-42da-b478-6d129b2d271f_2144x1544.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="&quot;Create a Branch&quot; popup window with the name &quot;experiment-dark-mode&quot; entered." title="&quot;Create a Branch&quot; popup window with the name &quot;experiment-dark-mode&quot; entered." srcset="https://substackcdn.com/image/fetch/$s_!UwBH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b62e9d0-18a9-42da-b478-6d129b2d271f_2144x1544.png 424w, https://substackcdn.com/image/fetch/$s_!UwBH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b62e9d0-18a9-42da-b478-6d129b2d271f_2144x1544.png 848w, https://substackcdn.com/image/fetch/$s_!UwBH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b62e9d0-18a9-42da-b478-6d129b2d271f_2144x1544.png 1272w, https://substackcdn.com/image/fetch/$s_!UwBH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b62e9d0-18a9-42da-b478-6d129b2d271f_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Give your branch a descriptive name like <code>experiment-dark-mode</code> and click &#8220;Create Branch&#8221;</figcaption></figure></div></li></ul></li><li><p><strong>Update the code with the LLM tool:</strong></p><ul><li><p>Go to your same LLM conversation.</p></li><li><p><strong>Prompt:</strong> &#8220;Refine the previous code. Add a &#8216;Dark Mode&#8217; toggle button in the top right corner. Keep everything else the same.&#8221;</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_!14Wn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4775218-0ac3-4d8c-9b36-6bdd15209ec2_2990x1426.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!14Wn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4775218-0ac3-4d8c-9b36-6bdd15209ec2_2990x1426.png 424w, https://substackcdn.com/image/fetch/$s_!14Wn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4775218-0ac3-4d8c-9b36-6bdd15209ec2_2990x1426.png 848w, https://substackcdn.com/image/fetch/$s_!14Wn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4775218-0ac3-4d8c-9b36-6bdd15209ec2_2990x1426.png 1272w, https://substackcdn.com/image/fetch/$s_!14Wn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4775218-0ac3-4d8c-9b36-6bdd15209ec2_2990x1426.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!14Wn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4775218-0ac3-4d8c-9b36-6bdd15209ec2_2990x1426.png" width="1456" height="694" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f4775218-0ac3-4d8c-9b36-6bdd15209ec2_2990x1426.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:694,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:410639,&quot;alt&quot;:&quot;Gemini chat interface showing the prompt to add a \&quot;Dark Mode\&quot; toggle and the resulting code generation.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/182460342?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4775218-0ac3-4d8c-9b36-6bdd15209ec2_2990x1426.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Gemini chat interface showing the prompt to add a &quot;Dark Mode&quot; toggle and the resulting code generation." title="Gemini chat interface showing the prompt to add a &quot;Dark Mode&quot; toggle and the resulting code generation." srcset="https://substackcdn.com/image/fetch/$s_!14Wn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4775218-0ac3-4d8c-9b36-6bdd15209ec2_2990x1426.png 424w, https://substackcdn.com/image/fetch/$s_!14Wn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4775218-0ac3-4d8c-9b36-6bdd15209ec2_2990x1426.png 848w, https://substackcdn.com/image/fetch/$s_!14Wn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4775218-0ac3-4d8c-9b36-6bdd15209ec2_2990x1426.png 1272w, https://substackcdn.com/image/fetch/$s_!14Wn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4775218-0ac3-4d8c-9b36-6bdd15209ec2_2990x1426.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Ask Gemini to refine the code by adding a specific feature, like a Dark Mode toggle</figcaption></figure></div><ul><li><p><strong>Copy</strong> the new code.</p></li><li><p>Go to <strong>VS Code</strong>, open <code>index.html</code>, select all, and <strong>Paste</strong> the new code.</p></li><li><p><strong>Save.</strong></p></li></ul></li><li><p><strong>Test the result with the local preview:</strong></p><ul><li><p>Open the <code>index.html</code> file in your browser from your computer folder.</p></li><li><p><strong>Test it:</strong> Does the Dark Mode work? Did the rest of the site break?</p><ul><li><p>If it&#8217;s broken: No problem. You are on a branch. Your live user users still see the old version. Share a screenshot with the LLM tool and ask it to correct it.</p></li><li><p>If it works: Great! Let&#8217;s ship it.</p></li></ul></li></ul></li><li><p><strong>Commit and push:</strong></p><ul><li><p>Go to GitHub Desktop.</p></li><li><p>You will see the changes.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2uvF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc87bdff-9dfe-40c6-954e-377fc7e2ea87_2144x1544.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2uvF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc87bdff-9dfe-40c6-954e-377fc7e2ea87_2144x1544.png 424w, https://substackcdn.com/image/fetch/$s_!2uvF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc87bdff-9dfe-40c6-954e-377fc7e2ea87_2144x1544.png 848w, https://substackcdn.com/image/fetch/$s_!2uvF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc87bdff-9dfe-40c6-954e-377fc7e2ea87_2144x1544.png 1272w, https://substackcdn.com/image/fetch/$s_!2uvF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc87bdff-9dfe-40c6-954e-377fc7e2ea87_2144x1544.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2uvF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc87bdff-9dfe-40c6-954e-377fc7e2ea87_2144x1544.png" width="1456" height="1049" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dc87bdff-9dfe-40c6-954e-377fc7e2ea87_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;:662504,&quot;alt&quot;:&quot;GitHub Desktop showing changes to index.html with green added lines for dark mode script, and the \&quot;Commit\&quot; button 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/182460342?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc87bdff-9dfe-40c6-954e-377fc7e2ea87_2144x1544.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="GitHub Desktop showing changes to index.html with green added lines for dark mode script, and the &quot;Commit&quot; button at the bottom." title="GitHub Desktop showing changes to index.html with green added lines for dark mode script, and the &quot;Commit&quot; button at the bottom." srcset="https://substackcdn.com/image/fetch/$s_!2uvF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc87bdff-9dfe-40c6-954e-377fc7e2ea87_2144x1544.png 424w, https://substackcdn.com/image/fetch/$s_!2uvF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc87bdff-9dfe-40c6-954e-377fc7e2ea87_2144x1544.png 848w, https://substackcdn.com/image/fetch/$s_!2uvF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc87bdff-9dfe-40c6-954e-377fc7e2ea87_2144x1544.png 1272w, https://substackcdn.com/image/fetch/$s_!2uvF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc87bdff-9dfe-40c6-954e-377fc7e2ea87_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Paste the new code, verify the green additions in GitHub Desktop, and commit to your experimental branch</figcaption></figure></div></li><li><p><strong>Summary:</strong> &#8220;Added dark mode toggle&#8221;.</p></li><li><p>Click <strong>Commit</strong>.</p></li><li><p>Click <strong>Publish Branch</strong>.</p></li></ul></li><li><p><strong>Create the pull request:</strong></p><ul><li><p>You could just merge it locally, but we are going to do it the pro way. This is how teams work.</p></li><li><p>After publishing, GitHub Desktop will show a button: <strong>&#8220;Create Pull Request&#8221;</strong>. Click it.</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_!0pHC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8052c4a-d0ca-42df-b47c-dccd2cc07c74_2144x1544.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0pHC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8052c4a-d0ca-42df-b47c-dccd2cc07c74_2144x1544.png 424w, https://substackcdn.com/image/fetch/$s_!0pHC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8052c4a-d0ca-42df-b47c-dccd2cc07c74_2144x1544.png 848w, https://substackcdn.com/image/fetch/$s_!0pHC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8052c4a-d0ca-42df-b47c-dccd2cc07c74_2144x1544.png 1272w, https://substackcdn.com/image/fetch/$s_!0pHC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8052c4a-d0ca-42df-b47c-dccd2cc07c74_2144x1544.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0pHC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8052c4a-d0ca-42df-b47c-dccd2cc07c74_2144x1544.png" width="1456" height="1049" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a8052c4a-d0ca-42df-b47c-dccd2cc07c74_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;:581299,&quot;alt&quot;:&quot;GitHub Desktop \&quot;Open a Pull Request\&quot; dialog showing a preview of the changes and the create 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/182460342?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8052c4a-d0ca-42df-b47c-dccd2cc07c74_2144x1544.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="GitHub Desktop &quot;Open a Pull Request&quot; dialog showing a preview of the changes and the create button." title="GitHub Desktop &quot;Open a Pull Request&quot; dialog showing a preview of the changes and the create button." srcset="https://substackcdn.com/image/fetch/$s_!0pHC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8052c4a-d0ca-42df-b47c-dccd2cc07c74_2144x1544.png 424w, https://substackcdn.com/image/fetch/$s_!0pHC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8052c4a-d0ca-42df-b47c-dccd2cc07c74_2144x1544.png 848w, https://substackcdn.com/image/fetch/$s_!0pHC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8052c4a-d0ca-42df-b47c-dccd2cc07c74_2144x1544.png 1272w, https://substackcdn.com/image/fetch/$s_!0pHC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8052c4a-d0ca-42df-b47c-dccd2cc07c74_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Click &#8220;Create Pull Request&#8221; to propose merging your experiment into the main product</figcaption></figure></div><ul><li><p>A browser window will open.</p></li></ul></li><li><p><strong>Look at the bottom:</strong> You will see red lines (what you removed) and green lines (what you added). This is called a <strong>Diff</strong>. It shows you exactly what changed.</p></li><li><p>Click the big green button: <strong>Create Pull Request</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_!nyDn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2094c6-62a4-438e-ba0c-38876f5ae7da_2990x1426.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nyDn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2094c6-62a4-438e-ba0c-38876f5ae7da_2990x1426.png 424w, https://substackcdn.com/image/fetch/$s_!nyDn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2094c6-62a4-438e-ba0c-38876f5ae7da_2990x1426.png 848w, https://substackcdn.com/image/fetch/$s_!nyDn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2094c6-62a4-438e-ba0c-38876f5ae7da_2990x1426.png 1272w, https://substackcdn.com/image/fetch/$s_!nyDn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2094c6-62a4-438e-ba0c-38876f5ae7da_2990x1426.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nyDn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2094c6-62a4-438e-ba0c-38876f5ae7da_2990x1426.png" width="1456" height="694" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2c2094c6-62a4-438e-ba0c-38876f5ae7da_2990x1426.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:694,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:325912,&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/182460342?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2094c6-62a4-438e-ba0c-38876f5ae7da_2990x1426.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_!nyDn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2094c6-62a4-438e-ba0c-38876f5ae7da_2990x1426.png 424w, https://substackcdn.com/image/fetch/$s_!nyDn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2094c6-62a4-438e-ba0c-38876f5ae7da_2990x1426.png 848w, https://substackcdn.com/image/fetch/$s_!nyDn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2094c6-62a4-438e-ba0c-38876f5ae7da_2990x1426.png 1272w, https://substackcdn.com/image/fetch/$s_!nyDn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2094c6-62a4-438e-ba0c-38876f5ae7da_2990x1426.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">On GitHub.com, confirm the details and click the green &#8220;Create pull request&#8221; button</figcaption></figure></div></li><li><p><strong>Merge the pull request:</strong></p><ul><li><p>You are now on a page that asks for approval. Since you are the boss, you approve yourself.</p></li><li><p>Click <strong>Merge Pull Request</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_!hg9d!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec43ce29-87c3-4ac2-861a-ea0e65d5ac7c_2990x1384.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hg9d!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec43ce29-87c3-4ac2-861a-ea0e65d5ac7c_2990x1384.png 424w, https://substackcdn.com/image/fetch/$s_!hg9d!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec43ce29-87c3-4ac2-861a-ea0e65d5ac7c_2990x1384.png 848w, https://substackcdn.com/image/fetch/$s_!hg9d!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec43ce29-87c3-4ac2-861a-ea0e65d5ac7c_2990x1384.png 1272w, https://substackcdn.com/image/fetch/$s_!hg9d!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec43ce29-87c3-4ac2-861a-ea0e65d5ac7c_2990x1384.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hg9d!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec43ce29-87c3-4ac2-861a-ea0e65d5ac7c_2990x1384.png" width="1456" height="674" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ec43ce29-87c3-4ac2-861a-ea0e65d5ac7c_2990x1384.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:674,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:357593,&quot;alt&quot;:&quot;GitHub.com Pull Request page showing the \&quot;Merge pull request\&quot; button highlighted in green.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/182460342?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec43ce29-87c3-4ac2-861a-ea0e65d5ac7c_2990x1384.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="GitHub.com Pull Request page showing the &quot;Merge pull request&quot; button highlighted in green." title="GitHub.com Pull Request page showing the &quot;Merge pull request&quot; button highlighted in green." srcset="https://substackcdn.com/image/fetch/$s_!hg9d!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec43ce29-87c3-4ac2-861a-ea0e65d5ac7c_2990x1384.png 424w, https://substackcdn.com/image/fetch/$s_!hg9d!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec43ce29-87c3-4ac2-861a-ea0e65d5ac7c_2990x1384.png 848w, https://substackcdn.com/image/fetch/$s_!hg9d!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec43ce29-87c3-4ac2-861a-ea0e65d5ac7c_2990x1384.png 1272w, https://substackcdn.com/image/fetch/$s_!hg9d!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec43ce29-87c3-4ac2-861a-ea0e65d5ac7c_2990x1384.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The final approval: Click &#8220;Merge pull request&#8221; to ship your feature to the live website</figcaption></figure></div><ul><li><p>Click <strong>Confirm Merge</strong>.</p></li></ul></li></ul><p><strong>The result:</strong> GitHub takes the code from your <code>experiment-dark-mode</code> universe and combines it into the <code>main</code> universe. Your live website updates.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xjdu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1d77860-d8fe-42b0-b87d-cbd0725c054a_1814x1460.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xjdu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1d77860-d8fe-42b0-b87d-cbd0725c054a_1814x1460.png 424w, https://substackcdn.com/image/fetch/$s_!xjdu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1d77860-d8fe-42b0-b87d-cbd0725c054a_1814x1460.png 848w, https://substackcdn.com/image/fetch/$s_!xjdu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1d77860-d8fe-42b0-b87d-cbd0725c054a_1814x1460.png 1272w, https://substackcdn.com/image/fetch/$s_!xjdu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1d77860-d8fe-42b0-b87d-cbd0725c054a_1814x1460.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xjdu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1d77860-d8fe-42b0-b87d-cbd0725c054a_1814x1460.png" width="1456" height="1172" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b1d77860-d8fe-42b0-b87d-cbd0725c054a_1814x1460.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1172,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:305770,&quot;alt&quot;:&quot;The final \&quot;LLM Explainer\&quot; website displaying the new dark mode style with a moon icon in the 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/182460342?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1d77860-d8fe-42b0-b87d-cbd0725c054a_1814x1460.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The final &quot;LLM Explainer&quot; website displaying the new dark mode style with a moon icon in the corner." title="The final &quot;LLM Explainer&quot; website displaying the new dark mode style with a moon icon in the corner." srcset="https://substackcdn.com/image/fetch/$s_!xjdu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1d77860-d8fe-42b0-b87d-cbd0725c054a_1814x1460.png 424w, https://substackcdn.com/image/fetch/$s_!xjdu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1d77860-d8fe-42b0-b87d-cbd0725c054a_1814x1460.png 848w, https://substackcdn.com/image/fetch/$s_!xjdu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1d77860-d8fe-42b0-b87d-cbd0725c054a_1814x1460.png 1272w, https://substackcdn.com/image/fetch/$s_!xjdu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1d77860-d8fe-42b0-b87d-cbd0725c054a_1814x1460.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Success! Your live website now features the Dark Mode toggle you built safely in a branch</figcaption></figure></div><p><strong>Cleanup:</strong> GitHub will ask if you want to <strong>Delete the branch</strong>. Say yes. You don&#8217;t need the experiment anymore; it&#8217;s now part of the 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_!qvwD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84f9fbc5-feb3-4c37-9393-d0ce3720fa2c_2990x1338.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qvwD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84f9fbc5-feb3-4c37-9393-d0ce3720fa2c_2990x1338.png 424w, https://substackcdn.com/image/fetch/$s_!qvwD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84f9fbc5-feb3-4c37-9393-d0ce3720fa2c_2990x1338.png 848w, https://substackcdn.com/image/fetch/$s_!qvwD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84f9fbc5-feb3-4c37-9393-d0ce3720fa2c_2990x1338.png 1272w, https://substackcdn.com/image/fetch/$s_!qvwD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84f9fbc5-feb3-4c37-9393-d0ce3720fa2c_2990x1338.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qvwD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84f9fbc5-feb3-4c37-9393-d0ce3720fa2c_2990x1338.png" width="1456" height="652" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/84f9fbc5-feb3-4c37-9393-d0ce3720fa2c_2990x1338.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:652,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:358342,&quot;alt&quot;:&quot;GitHub Pull Request page showing the purple \&quot;Merged\&quot; status and a red box highlighting the \&quot;Delete branch\&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/182460342?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84f9fbc5-feb3-4c37-9393-d0ce3720fa2c_2990x1338.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="GitHub Pull Request page showing the purple &quot;Merged&quot; status and a red box highlighting the &quot;Delete branch&quot; button." title="GitHub Pull Request page showing the purple &quot;Merged&quot; status and a red box highlighting the &quot;Delete branch&quot; button." srcset="https://substackcdn.com/image/fetch/$s_!qvwD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84f9fbc5-feb3-4c37-9393-d0ce3720fa2c_2990x1338.png 424w, https://substackcdn.com/image/fetch/$s_!qvwD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84f9fbc5-feb3-4c37-9393-d0ce3720fa2c_2990x1338.png 848w, https://substackcdn.com/image/fetch/$s_!qvwD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84f9fbc5-feb3-4c37-9393-d0ce3720fa2c_2990x1338.png 1272w, https://substackcdn.com/image/fetch/$s_!qvwD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84f9fbc5-feb3-4c37-9393-d0ce3720fa2c_2990x1338.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Final cleanup: Click &#8220;Delete branch&#8221; to keep your project tidy</figcaption></figure></div><p>This is the ultimate freedom of software development: the ability to <strong>break things in safety</strong>, knowing your main product is never at risk.</p><div><hr></div><p>If you have followed these steps, take a moment to look at what you have accomplished.</p><p>You started with a blank screen. You used an <strong>LLM tool</strong> to generate code. You used <strong>VS Code</strong> to edit it. You used <strong>GitHub Desktop</strong> to manage it. You used <strong>GitHub Pages</strong> to broadcast it to the world. And you did it all without writing a single line of complex code or typing a cryptic command in a terminal.</p><p>This isn&#8217;t just about learning a new tool. It&#8217;s about <strong>removing the friction</strong> between your ideas and reality.</p><ul><li><p><strong>Next time you have a product idea:</strong> Don&#8217;t just write a PRD. Build a prototype.</p></li><li><p><strong>Next time you need to explain a concept:</strong> Don&#8217;t make a slide deck. Build an interactive explainer.</p></li><li><p><strong>Next time you talk to engineers:</strong> Don&#8217;t just describe the feature. Send them a GitHub link.</p></li></ul><p>Remember, you are not coding alone. You have a <strong>junior developer</strong> (e.g., Gemini) to write the code and a <strong>senior architect</strong> (Claude) to fix the logic. You now have the <strong>infrastructure</strong> (GitHub) to ship it.</p><p>The barrier to entry has never been lower. The only limit now is your imagination. So, <strong>go build something</strong>. And when you do, drop the link in the comments. I&#8217;d love to see what you build.</p>]]></content:encoded></item><item><title><![CDATA[How to use AI tools with discernment]]></title><description><![CDATA[Thinking is a human process that cannot be delegated. Always write to build your logic first. Once the hard work is done, use AI to challenge your thoughts, translate ideas, and accelerate execution.]]></description><link>https://www.theaithinker.com/p/how-to-use-ai-tools-with-discernment</link><guid isPermaLink="false">https://www.theaithinker.com/p/how-to-use-ai-tools-with-discernment</guid><dc:creator><![CDATA[Adam Faik]]></dc:creator><pubDate>Mon, 29 Dec 2025 12:03:05 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/693dfe58-2424-416c-9200-536021b4501c_1024x731.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>There is a mandate sweeping through every company right now: <strong>&#8220;Be AI-first.&#8221;</strong></p><p>I have championed this myself. To me, being AI-first means ruthlessly eliminating friction in individual productivity. But as the months passed, I felt a specific anxiety growing. I realized that AI-first was becoming a trap. It was encouraging us to skip the most painful, inefficient, and essential part of our work: the actual thinking.</p><p>I kept coming back to this diagram (which comes from a resource I will share at the 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_!_hwI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8b8dd80-2965-45d5-9700-407fe1b8571c_2432x1760.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_hwI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8b8dd80-2965-45d5-9700-407fe1b8571c_2432x1760.png 424w, https://substackcdn.com/image/fetch/$s_!_hwI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8b8dd80-2965-45d5-9700-407fe1b8571c_2432x1760.png 848w, https://substackcdn.com/image/fetch/$s_!_hwI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8b8dd80-2965-45d5-9700-407fe1b8571c_2432x1760.png 1272w, https://substackcdn.com/image/fetch/$s_!_hwI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8b8dd80-2965-45d5-9700-407fe1b8571c_2432x1760.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_hwI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8b8dd80-2965-45d5-9700-407fe1b8571c_2432x1760.png" width="1456" height="1054" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d8b8dd80-2965-45d5-9700-407fe1b8571c_2432x1760.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1054,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2836564,&quot;alt&quot;:&quot;A hand-drawn diagram illustrating two distinct processes: the Reader&#8217;s path (Readers &#10132; Text &#10132; World) and the Writer&#8217;s path (Write &#10132; Think &#10132; About &#10132; World), highlighting that writing is a tool for thinking, not just output.&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/182177348?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8b8dd80-2965-45d5-9700-407fe1b8571c_2432x1760.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A hand-drawn diagram illustrating two distinct processes: the Reader&#8217;s path (Readers &#10132; Text &#10132; World) and the Writer&#8217;s path (Write &#10132; Think &#10132; About &#10132; World), highlighting that writing is a tool for thinking, not just output." title="A hand-drawn diagram illustrating two distinct processes: the Reader&#8217;s path (Readers &#10132; Text &#10132; World) and the Writer&#8217;s path (Write &#10132; Think &#10132; About &#10132; World), highlighting that writing is a tool for thinking, not just output." srcset="https://substackcdn.com/image/fetch/$s_!_hwI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8b8dd80-2965-45d5-9700-407fe1b8571c_2432x1760.png 424w, https://substackcdn.com/image/fetch/$s_!_hwI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8b8dd80-2965-45d5-9700-407fe1b8571c_2432x1760.png 848w, https://substackcdn.com/image/fetch/$s_!_hwI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8b8dd80-2965-45d5-9700-407fe1b8571c_2432x1760.png 1272w, https://substackcdn.com/image/fetch/$s_!_hwI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8b8dd80-2965-45d5-9700-407fe1b8571c_2432x1760.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The cognitive loop: Writing is how experts think; text is how readers understand</figcaption></figure></div><p>It captures the reality for those of us operating at a sophisticated level, whether you are a product manager, designer, or engineer. We are experts in the problems we solve and the products we build. To navigate that complexity, we must use the writing process to help us think. Only once that deep thinking is done do we switch modes to structure, communicate, and create impact for our readers.</p><p>I wanted to formalize a framework for this. But instead of writing a dry manifesto filled with +20 lessons or lists of pros and cons, I decided to tell a short story.</p><p>Here it is.</p><div><hr></div><h2>1.</h2><p>Alex is a product manager. He loves the job for the problem-solving: taking a messy reality and carving out a clean solution. But sometimes, like today, it just feels hard.</p><p>He stares at the cursor. It blinks for ten minutes, mocking him. On his second monitor, a spreadsheet with ten thousand rows of user feedback blurs into a wall of grey. He rubs his temples. The data is there, but the insight is buried under weeks of manual tagging.</p><p>He sits at his desk in the heart of Paris. Inside, the office buzzes with the sound of deadlines. StreamFlow is a white-label streaming audio company for radios, and right now, the silence of the blinking cursor feels louder than the music.</p><p>A notification pings on his screen. It is a company-wide memo from the CEO. The subject line is simple: &#8220;The new baseline: our AI-first future.&#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_!kIvg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88b1661e-c808-4694-a2b6-57dff2621dc5_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kIvg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88b1661e-c808-4694-a2b6-57dff2621dc5_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!kIvg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88b1661e-c808-4694-a2b6-57dff2621dc5_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!kIvg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88b1661e-c808-4694-a2b6-57dff2621dc5_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!kIvg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88b1661e-c808-4694-a2b6-57dff2621dc5_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kIvg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88b1661e-c808-4694-a2b6-57dff2621dc5_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/88b1661e-c808-4694-a2b6-57dff2621dc5_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;:6887132,&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/182177348?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88b1661e-c808-4694-a2b6-57dff2621dc5_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_!kIvg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88b1661e-c808-4694-a2b6-57dff2621dc5_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!kIvg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88b1661e-c808-4694-a2b6-57dff2621dc5_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!kIvg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88b1661e-c808-4694-a2b6-57dff2621dc5_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!kIvg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88b1661e-c808-4694-a2b6-57dff2621dc5_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>He opens the message. It is direct. The CEO writes that the industry is changing fast. He explains that other companies, like Shopify, are already making AI a mandatory skill. He wants StreamFlow to lead, not follow.</p><p>&#8220;Reflexive AI usage is now a baseline expectation,&#8221; the email reads. &#8220;We need multipliers. Before asking for more headcount, you must demonstrate why you cannot do the work with AI. If you are not climbing, you are sliding.&#8221;</p><p>A glance across the aisle confirms the stakes. Ben, the junior PM, is already typing furiously, a faint, satisfied smile on his face. Is Ben climbing? Is Alex already sliding?</p><p>Leaning back, he reads the words again. Around him, his colleagues read silently, absorbing the shift.</p><p>A surge of electricity hits him. It feels like relief.</p><p>For years, product management feels like heavy lifting. It means endless documentation, slow discovery phases, and fighting for resources. Now, the CEO hands him a jetpack. The memo gives him permission to stop walking and start flying. He imagines a workflow without friction.</p><p>To Alex, being AI-first means treating AI as his primary thinking partner and operational engine. It means his default instinct for any task, whether strategic analysis, requirement writing, or data querying, is to first ask, &#8220;How can Gemini start this for me?&#8221; rather than opening a blank document.</p><h2>2.</h2><p>Elena, the VP of product, walks over to Alex&#8217;s desk. She looks focused and energetic.</p><p>She leans against the edge of his desk.</p><p>&#8220;Project SonicGraph. It&#8217;s a mess, Alex.&#8221; She sighs. &#8220;Fifty million songs and zero metadata. Clients are churning because they can&#8217;t distinguish a ballad from a banger. I need a miracle, and I need the rollout plan by Friday.&#8221;</p><p>Alex nods. The mission is to build an intelligent layer that listens to the raw audio and generates rich, descriptive tags (mood, tempo, energy) at a scale no human team could touch. In the old world, this is a six-week work. It requires user interviews, data sampling, and tedious alignment meetings.</p><p>But this is the new world.</p><p>Alex looks at the empty document on his screen. He does not feel the crushing weight of fifty million songs. He opens a new tab. He navigates to Gemini. The cursor blinks, waiting for his command. It feels like a magic wand, heavy with potential.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bD9K!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1ff8457-a695-4b6a-9391-7c7b863b4c5f_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bD9K!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1ff8457-a695-4b6a-9391-7c7b863b4c5f_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!bD9K!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1ff8457-a695-4b6a-9391-7c7b863b4c5f_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!bD9K!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1ff8457-a695-4b6a-9391-7c7b863b4c5f_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!bD9K!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1ff8457-a695-4b6a-9391-7c7b863b4c5f_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bD9K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1ff8457-a695-4b6a-9391-7c7b863b4c5f_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a1ff8457-a695-4b6a-9391-7c7b863b4c5f_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;:6463984,&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/182177348?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1ff8457-a695-4b6a-9391-7c7b863b4c5f_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_!bD9K!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1ff8457-a695-4b6a-9391-7c7b863b4c5f_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!bD9K!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1ff8457-a695-4b6a-9391-7c7b863b4c5f_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!bD9K!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1ff8457-a695-4b6a-9391-7c7b863b4c5f_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!bD9K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1ff8457-a695-4b6a-9391-7c7b863b4c5f_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>&#8220;Time to multiply,&#8221; he whispers.</p><p>He cracks his knuckles. He is ready to prompt.</p><h2>3.</h2><p>&#8220;Act as a chief product officer,&#8221; he types. He types the invocation carefully, using the words he knew the machine loved: &#8220;scalable,&#8221; &#8220;high-velocity,&#8221; &#8220;AI-powered.&#8221; He wasn&#8217;t asking a question; he was entering a cheat code. &#8220;Define the product strategy for project SonicGraph. Prioritize high-velocity metadata ingestion using LLMs. Include success metrics, risk assessment, and a technical rollout plan.&#8221;</p><p>He hits Enter.</p><p>The magic is instant. The response doesn&#8217;t just appear; it assembles itself. Perfectly indented bullet points, bolded headers like &#8220;strategic Imperatives,&#8221; and a confident summary at the end. It wore the costume of competence so perfectly that Alex doesn&#8217;t notice the mannequin underneath.</p><p>Alex feels a rush of intellectual vanity. He looks at the words &#8220;high-velocity ingestion&#8221; and nods, as if he had thought of them himself. The gap between prompting the idea and having the idea vanished. Usually, drafting a strategy is painful. It requires staring at a blank wall, wrestling with doubts, and forcing his brain to connect dot to dot. It is high-friction work.</p><p>But this? This is effortless. It is the digital equivalent of fast thinking, that automatic, intuitive mode where the brain jumps to conclusions without the pain of deep analysis. He feels no cognitive strain. He tells himself this is exactly what the CEO demanded. This is the AI-first mindset. He isn&#8217;t cutting corners; he is being a multiplier.</p><p>He leans forward. He wants more.</p><p>&#8220;Generate a detailed PRD based on this strategy,&#8221; he commands. &#8220;Include user stories and acceptance criteria.&#8221;</p><p>The document appears. It has tables. It has &#8220;must-haves&#8221; and &#8220;nice-to-haves.&#8221; It looks exactly like the work of a Senior PM, but it takes thirty seconds.</p><p>&#8220;Now, visualize the architecture,&#8221; Alex types. &#8220;Create a sequence diagram for the metadata ingestion pipeline.&#8221;</p><p>Alex nods in satisfaction. The diagram is a dense thicket of boxes and arrows. It looks impressively technical, unassailable. It is a shield. Who dares ask about user interviews when faced with a diagram of &#8220;asynchronous metadata latency checks&#8221;?</p><p>He feels invincible. He looks at his screen and sees artifacts that usually take weeks to produce. He has a 10-page PRD. He has a technical diagram. He has a strategy.</p><p>He opens a slide deck. He copies and pastes the AI&#8217;s output into the slides. He adds confident titles. He adds the sequence diagram to slide five.</p><p>He scrolls through the output. It is dense with the kind of complexity that commands respect in meetings. He hasn&#8217;t spoken to a single user. He is moving at the speed of making, bypassing the slow, messy friction of the old world. He is doing exactly what the CEO asked: he is multiplying his output without multiplying his headcount.</p><p>He looks at the clock. It is 11:00 AM. He has finished the job.</p><h2>4.</h2><p>It is Friday morning. Alex walks into the discovery review ritual.</p><p>The room is full. Elena, the VP of product, sits at the head of the table. To her left is Marcus, the staff engineer. He is quiet, sharp, and known for suffering no fools. The lead data scientist joins via video link.</p><p>Alex connects his laptop. He projects the SonicGraph deck.</p><p>He stands up and waves his hands at the screen.</p><p>&#8220;We are going to leverage high-velocity LLMs,&#8221; Alex says. &#8220;We will ingest fifty million songs. We will generate rich metadata at scale. We will solve the discovery problem.&#8221;</p><p>He clicks through the slides. They are beautiful. The sequence diagram filled the screen. It was a masterpiece of complexity: arrows looping back on themselves, database cylinders stacked like pancakes. To Alex, it looked like architecture. To Marcus, it looked like spaghetti code dressed up in a suit.</p><p>&#8220;As you can see,&#8221; Alex says, pointing to the data he did not verify, &#8220;our strategy focuses on Lyrical Sentiment analysis to drive user engagement.&#8221;</p><p>He smiles. He waits for applause. He expects them to be impressed by the speed of the output.</p><p>&#8220;Alex,&#8221; Marcus says. His voice is low, barely cutting through the hum of the projector. &#8220;Slide four. You prioritize &#8216;Lyrical Sentiment&#8217; tags over &#8216;Instrumental Complexity&#8217;.&#8221;</p><p>Alex doesn&#8217;t flinch. He doubles down. He points to the impressive graph on the screen.</p><p>&#8220;Absolutely,&#8221; Alex says, his voice projecting confidence. &#8220;It&#8217;s about engagement. The industry is pivoting to narrative-based discovery. If we want to reduce churn, we need to give users an emotional hook. Lyrics are that hook.&#8221;</p><p>He sounds like a visionary. He sounds like the TechCrunch articles the AI was trained on.</p><p>Marcus leans back, crossing his arms. &#8220;That&#8217;s a fascinating theory for a B2C app,&#8221; he says. &#8220;But eighty percent of our B2B clients are instrumental lo-fi radios for coffee shops. They don&#8217;t have lyrics. They have beats.&#8221;</p><p>Marcus pauses, his eyes locking onto Alex.</p><p>&#8220;Our churn data shows they leave because they can&#8217;t distinguish between &#8216;Upbeat&#8217; and &#8216;Melancholic&#8217; tempos. They are begging for key analysis, and you are giving them poetry.&#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_!ztzV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93bedb15-2d3f-4646-be20-7b110727643b_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ztzV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93bedb15-2d3f-4646-be20-7b110727643b_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!ztzV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93bedb15-2d3f-4646-be20-7b110727643b_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!ztzV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93bedb15-2d3f-4646-be20-7b110727643b_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!ztzV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93bedb15-2d3f-4646-be20-7b110727643b_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ztzV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93bedb15-2d3f-4646-be20-7b110727643b_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/93bedb15-2d3f-4646-be20-7b110727643b_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;:6847398,&quot;alt&quot;:&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/182177348?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93bedb15-2d3f-4646-be20-7b110727643b_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!ztzV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93bedb15-2d3f-4646-be20-7b110727643b_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!ztzV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93bedb15-2d3f-4646-be20-7b110727643b_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!ztzV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93bedb15-2d3f-4646-be20-7b110727643b_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!ztzV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93bedb15-2d3f-4646-be20-7b110727643b_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Alex didn&#8217;t back down. He believed the AI&#8217;s logic. &#8220;That&#8217;s the old model, Marcus,&#8221; he countered, echoing the report he&#8217;d just generated. &#8220;The market is saturated. The data shows we need a strategic pivot to capture high-intent users through narrative. We aren&#8217;t serving background noise anymore; we are selling a story.&#8221;</p><p>Elena raised a hand, cutting him off mid-sentence.</p><p>&#8220;Alex, hold on,&#8221; she said. Her voice wasn&#8217;t angry, but it was final.</p><p>Alex closed his mouth. The silence in the room felt heavy.</p><p>She leaned forward. &#8220;Forget the LLMs for a second. Picture Hans. He runs a caf&#233; in Berlin. It&#8217;s 7:00 AM, he&#8217;s out of oat milk, and the wifi is spotty. He needs a vibe, not a poem. Explain to me, without using the word &#8216;sentiment,&#8217; how your lyrical tag helps him pour coffee faster.&#8221;</p><p>The room goes dead silent.</p><p>Alex stares at the slide. He desperately scans the bullet points the AI wrote. He looks for the user journey. He looks for the workflow. His fingers twitch under the table. He has a frantic urge to open a new Gemini tab and type: &#8220;Explain how a Berlin barista uses lyrical tags for coffee workflow.&#8221;</p><p>He looked down at his beautiful, AI-generated script: &#8220;synergistic tonal shifts,&#8221; &#8220;narrative-driven discovery,&#8221; &#8220;high-velocity ingestion.&#8221; They were just sounds. In the face of a real user problem, they evaporated.</p><p>The VP closes her laptop. The sharp click echoed in the quiet room.</p><p>&#8220;This is plausible,&#8221; she says, her voice cold. &#8220;But it is not true. You have generated a lot of text, but you have not made a single decision.&#8221;</p><p>She stood up. She looked at the blank screen, then back at Alex.</p><p>&#8220;You have until Monday,&#8221; she said. &#8220;Come back with a strategy, not a simulation. And Alex? Leave the generator alone. Bring me your brain.&#8221;</p><p>The meeting ends.</p><p>Alex stands alone in the room. He feels cold. He remembers Warren Buffett&#8217;s famous warning: &#8220;Only when the tide goes out do you discover who&#8217;s been swimming naked.&#8221;</p><h2>5.</h2><p>Alex returns to his desk. He sits in silence. The shame burns hot in his chest. The urge to fix the mistake quickly is overwhelming. It is a physical itch. He reaches for his laptop. His fingers hover over the keys. He opens a new tab. He starts to type: &#8220;How to justify metadata strategy to skeptical...&#8221;</p><p>He stops. The cursor wasn&#8217;t just blinking; it was pulsating. It whispered, &#8220;I can fix this. Just ask me. I&#8217;ll make you smart again.&#8221; It offered the ultimate narcotic: the removal of uncertainty. Closing the laptop felt like slamming a door on a friend.</p><p>He slams the laptop shut. The screen goes black.</p><p>He breathes heavily. He feels the withdrawal. His brain is screaming for the dopamine hit of instant answers. It wants the autocomplete. It wants the machine to fill the silence.</p><p>He opens a drawer and digs out a black paper notebook. He finds a pen.</p><p>Paper has no backspace. When he wrote a bad sentence, it stayed there, staring at him in permanent ink. The friction of the pen against the page forced him to slow down. He couldn&#8217;t move faster than he could think. It was excruciating.</p><p>He decides to do the hard thing. He writes the title: &#8220;The SonicGraph strategy.&#8221;</p><p>He stares at the page. The paper stays white. The silence of the room begins to crush him. It is loud and accusing.</p><p>He writes a sentence: &#8220;We need to tag all songs to improve discovery.&#8221;</p><p>He looks at the ink. It is generic. It is weak. It is a &#8220;jumble of half-baked impulses.&#8221;</p><p>He rips the page out. The sound tears through the quiet office. He crumples it into a ball and throws it.</p><p>He tries again. He writes another sentence. &#8220;The goal is high velocity.&#8221;</p><p>No. That is the lie. He crosses it out so hard the pen tears the paper.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hwsq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbff27b25-ab2d-47ee-af6a-b1875ee4553b_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hwsq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbff27b25-ab2d-47ee-af6a-b1875ee4553b_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!hwsq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbff27b25-ab2d-47ee-af6a-b1875ee4553b_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!hwsq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbff27b25-ab2d-47ee-af6a-b1875ee4553b_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!hwsq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbff27b25-ab2d-47ee-af6a-b1875ee4553b_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hwsq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbff27b25-ab2d-47ee-af6a-b1875ee4553b_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bff27b25-ab2d-47ee-af6a-b1875ee4553b_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;:6446499,&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/182177348?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbff27b25-ab2d-47ee-af6a-b1875ee4553b_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_!hwsq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbff27b25-ab2d-47ee-af6a-b1875ee4553b_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!hwsq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbff27b25-ab2d-47ee-af6a-b1875ee4553b_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!hwsq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbff27b25-ab2d-47ee-af6a-b1875ee4553b_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!hwsq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbff27b25-ab2d-47ee-af6a-b1875ee4553b_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>He felt a physical tightness behind his eyes. It was the burn of working memory trying to hold three conflicting constraints, B2B clients, messy data, and zero budget, at the same time. He wanted to check Slack. He wanted to check the weather. Anything to drop the weight. But he held it.</p><p>He forces himself to think about Marcus&#8217;s question.</p><p>&#8220;Why do users actually leave?&#8221;</p><p>He writes the answer: &#8220;They leave when the radio plays a techno track in a jazz playlist.&#8221;</p><p>He stops. He taps the pen on the desk.</p><p>&#8220;The problem is not that we lack tags. The problem is that the existing tags are wrong.&#8221;</p><p>The AI strategy was &#8220;high velocity generation.&#8221; That was the trap. Speed amplifies mistakes. If the current tags are bad, generating 50 million more bad tags at light speed is not a solution. It is a disaster.</p><p>The strategy must change. It shouldn&#8217;t be &#8220;generation.&#8221; It must be &#8220;correction.&#8221;</p><p>He feels a click in his mind. This is the insight. The AI did not see it because the AI predicts the average of the internet. It does not know the specific pain of StreamFlow&#8217;s users.</p><p>But he needed to be sure. He couldn&#8217;t just prompt his way to the truth; he had to unearth it.</p><p>He opened Slack. He called the account manager for &#8220;Bean &amp; Brew.&#8221; He asked about their morning routine. He learned that the barista hates the &#8220;Skip&#8221; button because his hands are wet.</p><p>He opened the raw server logs. He didn&#8217;t ask the AI for a summary; he scrolled through thousands of rows of &#8216;Skipped_Track_Events&#8217; until his eyes watered. He saw the pattern: users didn&#8217;t skip bad songs; they skipped jarring transitions.</p><p>He walked over to the sales corner. He asked Sarah, the lead sales representative, why the last three deals fell through. &#8220;They don&#8217;t trust our tagging,&#8221; she said. &#8220;They think we guess.&#8221;</p><p>This was the raw material. This was the messy reality that didn&#8217;t exist in Gemini training data.</p><p>He returned to the notebook. He drew a box labeled &#8220;the tag filter.&#8221; Instead of the system creating tags, the system will sit between the database and the user, flagging errors. It wasn&#8217;t a creator; it was a bouncer.</p><p>He writes faster now. The ink flows. He maps out the logic.</p><ul><li><p>Insight: Users measure value by outcomes, not by how smart the model is.</p></li><li><p>Strategy: Trust is the product. We must prioritize precision over coverage.</p></li><li><p>Tactic: We will use the tech to flag conflicts, not to blindly overwrite them.</p></li></ul><p>He writes for two hours. He sweats. This is the cognitive gym. He is breaking down the muscle fibers of his brain to build them back stronger.</p><p>He looks at the notebook. It is messy. It has arrows and crossed-out lines. It is ugly.</p><p>But it is grounded. It comes from the hard work of thinking, not the probability of a model. The pages are filled with iterations of diagrams, sketched and re-sketched until he found the best way to represent the situation.</p><p>The feeling wasn&#8217;t the sugary rush of generating a thousand words in a second. It was the savory, slow-burn satisfaction of finding the one right word. He felt solid. He wasn&#8217;t relying on a hollow shell anymore; he had built a structural beam.</p><p>He is no longer hollow. He is solid.</p><h2>6.</h2><p>Alex thinks back to the CEO&#8217;s memo. It warned that &#8220;a lot of people give up after writing a prompt and not getting the ideal thing back immediately.&#8221; &#8220;Using AI well is a skill that needs to be learned,&#8221; the email had said. Alex realizes his mistake wasn&#8217;t using the AI tool; it was surrendering to it. He decides to try again. But this time, the dynamic is different.</p><p>Alex opens his laptop. The screen glows in the dim light of the office.</p><p>He opens Gemini. The cursor blinks. It looks the same as before, but the dynamic has changed. Yesterday, Alex surrendered the wheel. Today, he is in the driver&#8217;s seat, with the AI as his navigator.</p><p>He types. He does not ask the AI to think for him. He feeds it the logic from his notebook to check his blind spots.</p><p>&#8220;Context: You are a data analyst. Constraint: Do not generate new ideas yet. Input: The logic from my notebook below. Task: Identify assumptions in this logic regarding data latency that I might have missed.&#8221;</p><p>He hits Enter. He waits.</p><p>Now, he uses the AI as a sparring partner.</p><p>&#8220;Act as a skeptical staff engineer,&#8221; he prompts. &#8220;Find three flaws in this logic. Tear it apart.&#8221;</p><p>The AI argues that flagging conflicts might increase user friction. Alex shakes his head. &#8220;Incorrect,&#8221; he types back. &#8220;Backend flagging is invisible to the user. Re-evaluate based on backend-only implementation.&#8221; The AI apologized and corrected its model. Alex smiled. He is co-constructing the solution. He does not blindly accept the critique; he engages with it. He refines his argument. He fixes the holes. He is using the tool to sharpen his blade, not to fight the battle for him.</p><p>Then, he uses the AI as a <strong>translator</strong>.</p><p>&#8220;Convert this narrative into a technical PRD,&#8221; he prompts. &#8220;Maintain the logic exactly as written, but format it for the engineering team.&#8221;</p><p>The document appears. It is perfect. The formatting is fast and cheap. The logic is slow and valuable. The combination is powerful.</p><p>But Alex needs one more thing. He needs to win back Marcus, the staff engineer. He needs proof, not just words.</p><p>Alex is not a coder. In the old world, he would have to wait days for a data analyst to pull the numbers. But the boundaries of his role have blurred. Range has become an edge.</p><p>He types a new command. It is a spell he could never cast before.</p><p>&#8220;Write a Python script to query the StreamFlow API. Scan the top 1,000 songs tagged &#8216;jazz&#8217;. Identify how many have a BPM higher than 140 and contain the tag &#8216;Techno&#8217;.&#8221;</p><p>The AI writes the code. Alex copies it.</p><p>Alex runs the code. Red text flashes. <code>0 conflicts found</code>.</p><p>Alex frowns. That isn&#8217;t right. He knows the data is messy. He looks closely at the new code. He spots the lazy fix: inside the error handler, the AI added a <code>break</code> command. It stopped the entire script at the first sign of trouble.</p><p>He types back, correcting the logic, not just the syntax: &#8220;You used <code>break</code>, which stops the scan. Use <code>continue</code> to skip only the bad record.&#8221;</p><p>The AI apologizes and rewrites the loop. Alex nods. He isn&#8217;t just commanding; he is supervising. He copies the new code and runs it again.</p><p>The screen wasn&#8217;t pretty. No gradients, no drop shadows. Just a black terminal window with white text scrolling fast. It was the ugliest thing he had produced all week, and it was the only thing that was true.</p><p>Result: 142 conflicts found.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qK0C!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cd04073-9d6d-4bc6-bf49-9b859c045c40_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qK0C!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cd04073-9d6d-4bc6-bf49-9b859c045c40_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!qK0C!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cd04073-9d6d-4bc6-bf49-9b859c045c40_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!qK0C!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cd04073-9d6d-4bc6-bf49-9b859c045c40_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!qK0C!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cd04073-9d6d-4bc6-bf49-9b859c045c40_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qK0C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cd04073-9d6d-4bc6-bf49-9b859c045c40_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4cd04073-9d6d-4bc6-bf49-9b859c045c40_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;:6676680,&quot;alt&quot;:&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/182177348?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cd04073-9d6d-4bc6-bf49-9b859c045c40_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!qK0C!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cd04073-9d6d-4bc6-bf49-9b859c045c40_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!qK0C!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cd04073-9d6d-4bc6-bf49-9b859c045c40_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!qK0C!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cd04073-9d6d-4bc6-bf49-9b859c045c40_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!qK0C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cd04073-9d6d-4bc6-bf49-9b859c045c40_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Alex smiles. He has the data. But Elena needs to see the concept, not just the problem.</p><p>He types one last command: &#8220;Build a simple HTML/JS interface for the &#8216;conflict queue&#8217;. Show the &#8216;jazz&#8217; track with the &#8216;techno&#8217; beat. Add a &#8216;reject tag&#8217; button. When clicked, it shouldn&#8217;t just delete the tag; it must log the rejection as a negative training example to update the classification heuristic.&#8221;</p><p>He runs the code. A window pops up. It is a working prototype. He clicks the button. The bad tag vanishes. It isn&#8217;t a slide deck promise anymore; it is a tangible product.</p><p>He feels the sheer weight of 50 million rows of data. It was too heavy for a human brain to lift, but with the Python script and the prototype as his hydraulic lift, he moves it with a flick of his finger. He isn&#8217;t pretending to be strong anymore. He is piloting a machine that made him strong.</p><p>He prints the report. He picks up his notebook. He is ready for the review.</p><h2>7.</h2><p>The following Monday, the team gathers for the SonicGraph alignment meeting.</p><p>Elena sits at the head of the table, waiting. To her left, Marcus sits with his arms crossed. They expect another slide deck. They expect more bluster.</p><p>Alex walks in. He connects his laptop.</p><p>He doesn&#8217;t project a slide deck. The screen shows a raw, ugly web interface. It has no logo, no branding, just a list of songs and a button that says REJECT TAG.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hjIG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff98d237-df17-4a50-a017-d047149cfb0f_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hjIG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff98d237-df17-4a50-a017-d047149cfb0f_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!hjIG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff98d237-df17-4a50-a017-d047149cfb0f_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!hjIG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff98d237-df17-4a50-a017-d047149cfb0f_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!hjIG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff98d237-df17-4a50-a017-d047149cfb0f_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hjIG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff98d237-df17-4a50-a017-d047149cfb0f_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ff98d237-df17-4a50-a017-d047149cfb0f_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;:6682236,&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/182177348?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff98d237-df17-4a50-a017-d047149cfb0f_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_!hjIG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff98d237-df17-4a50-a017-d047149cfb0f_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!hjIG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff98d237-df17-4a50-a017-d047149cfb0f_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!hjIG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff98d237-df17-4a50-a017-d047149cfb0f_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!hjIG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff98d237-df17-4a50-a017-d047149cfb0f_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>&#8220;I built a prototype,&#8221; Alex says.</p><p>He clicks the first item: a smooth jazz track labeled &#8220;techno.&#8221; He hits the button. The bad tag vanishes instantly.</p><p>&#8220;When I click reject,&#8221; Alex explains, &#8220;it doesn&#8217;t just fix this one song. It feeds a negative example back to the model. We aren&#8217;t trying to manually tag 50 million songs. We are building a feedback loop to fix the filter that tags them.&#8221;</p><p>Marcus leans forward. He stops spinning his pen. &#8220;You built this?&#8221;</p><p>&#8220;I built the interface to verify the logic,&#8221; Alex says. &#8220;Because we can&#8217;t just generate tags. We have to verify them. This tool is the strategy.&#8221;</p><p>He hands out the six-page narrative document. &#8220;This explains the &#8216;why.&#8217; The prototype shows the &#8216;how.&#8217; But the core is simple: Trust is the product.&#8221;</p><p>Marcus reads the document. He sees the change immediately. The generic buzzwords are gone. Instead, he finds a logical argument about trust vs. coverage.</p><p>Alex pointed to the graph on page four. &#8220;We are currently optimizing for coverage (tagging everything). This destroys trust. We need to optimize for precision (tagging only what we know is true).&#8221;</p><p>&#8220;Page three,&#8221; Marcus says, looking up. &#8220;You argue that we should flag conflicts rather than overwrite them. You claim 15% of our &#8216;jazz&#8217; tracks are mislabeled.&#8221;</p><p>&#8220;About fifteen percent?&#8221; Marcus asked.</p><p>&#8220;Fourteen point two percent,&#8221; Alex corrected. He didn&#8217;t offer a rounded-up guess. He offered a calculated fact. &#8220;I ran the script against the full dataset this morning.&#8221;</p><p>Marcus looked at Alex, then at the code snippet stapled to the back. The look of suspicion vanished, replaced by the look an engineer gives a partner who finally understands the problem.</p><p>&#8220;This is real,&#8221; Marcus says. &#8220;We can build this.&#8221;</p><p>The tension in the room vanishes. The team is not just moving fast; they are moving together. The alignment is solid because the thinking was solid.</p><h2>8.</h2><p>That evening, Alex sits at his desk. He looks at the AI-first memo from the CEO that started it all. He realizes that even the leadership might be lost in the hype, confusing motion with progress. True AI-first requires discernment, not just a blind reflex. You have to use the tool constantly at first to build intuition, but only so you can learn exactly when to ignore it and think for yourself.</p><p>He opens a new document. He writes a note to himself, a spell-book for the modern age.</p><ul><li><p><strong>Rule 1: Write to think.</strong> Never prompt until you think, and to think you have to write. Text is the interface of the mind. If you cannot write the argument yourself, you do not understand the problem. The AI can polish your logic, but it cannot invent it.</p></li><li><p><strong>Rule 2: Delegate execution, not responsibility. </strong>Treat AI as a colleague. Delegate tasks for speed and quality, but never the full workflow. Just like managing a team, you can transfer the execution, but you can never transfer the responsibility. Supervision is essential.</p></li><li><p><strong>Rule 3: Extend capabilities, don&#8217;t replace effort.</strong> Use AI to extend your capabilities, not as a replacement for your hard work. Write the code. Analyze the data. Use it to widen your range, not to narrow your responsibility.</p></li></ul><p>Alex closes his laptop.</p><p>He is still an AI-first product manager. He uses Gemini every day. He moves faster than ever. He understands the real work now. He refuses to delegate the thinking; instead, he uses the time saved to go deeper and slower. Once the core thinking is solid, he shifts gears, using Gemini to move at light speed: translating ideas for different audiences, building prototypes, and rigorously challenging his own assumptions.</p><div><hr></div><p>The core lesson of Alex&#8217;s journey is simple: write to think, then prompt AI to execute.</p><p>Here are three resources to use AI tools with discernment:</p><ul><li><p><strong><a href="https://youtu.be/vtIzMaLkCaM?si=CZYILcV7X8Bek2J8">Larry McEnerney, The Craft of Writing Effectivel</a>y. </strong>This training session is the source of the diagram in the introduction. Larry McEnerney explains that experts use writing to think through complexity. But raw thinking confuses readers. You must write to solidify your logic first. According to me, this is where the AI framework fits: never use AI for thinking. Write to build your logic, then use AI to translate it.</p></li><li><p><strong><a href="https://paulgraham.com/writes.html">Paul Graham, Writes and Write-Nots</a></strong>. Graham argues that writing is hard because it is thinking. Because AI can now do the writing, fewer people will learn the skill. Graham warns of a future divided into &#8220;writes and write-nots.&#8221; If you give up writing, you give up thinking. Writing is now a deliberate choice to remain capable.</p></li><li><p><strong><a href="https://www.linkedin.com/posts/hnshah_what-ai-really-did-to-product-teams-activity-7404558043230875648-SVcY?utm_source=share&amp;utm_medium=member_desktop&amp;rcm=ACoAAAzQP8YBI2lrRJEA0M_HPnaolvhtYqRS4s8">Hiten Shah, What AI Really Did to Product Teams</a>. </strong>AI increases the speed of making, but not the clarity of thinking. Shah explains that prototypes now arrive before the problem is clear. This shifts the burden to human judgment. As Shah notes, &#8220;ideas are abundant,&#8221; but &#8220;judgment is scarce&#8221;. To win, you must prioritize clarity over speed.</p></li></ul><p>I&#8217;m curious to know how you are navigating this shift. When was the last time you forced yourself to write before opening an AI tool? Did the friction feel like a waste of time, or did it change your final output?</p>]]></content:encoded></item><item><title><![CDATA[How to create top-tier slides with NotebookLM]]></title><description><![CDATA[NotebookLM&#8217;s slide feature is powerful, but it requires the right workflow. By using context control, empty templates, and clear instructions, you can save massive time on high-stakes presentations.]]></description><link>https://www.theaithinker.com/p/how-to-create-top-tier-slides-with</link><guid isPermaLink="false">https://www.theaithinker.com/p/how-to-create-top-tier-slides-with</guid><dc:creator><![CDATA[Adam Faik]]></dc:creator><pubDate>Mon, 22 Dec 2025 12:03:10 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/71b97be0-3c4e-41a6-8743-32e4001419c3_1024x731.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;e7e34b95-d1e1-49be-a3f7-10ee6201aeb5&quot;,&quot;duration&quot;:null}"></div><div><hr></div><p>When Google released the <strong>Slide Deck</strong> feature for NotebookLM, I was the first in line.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!s9te!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F832a4593-6536-4d9a-853c-cc96e4ac1680_3002x1484.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!s9te!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F832a4593-6536-4d9a-853c-cc96e4ac1680_3002x1484.png 424w, https://substackcdn.com/image/fetch/$s_!s9te!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F832a4593-6536-4d9a-853c-cc96e4ac1680_3002x1484.png 848w, https://substackcdn.com/image/fetch/$s_!s9te!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F832a4593-6536-4d9a-853c-cc96e4ac1680_3002x1484.png 1272w, https://substackcdn.com/image/fetch/$s_!s9te!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F832a4593-6536-4d9a-853c-cc96e4ac1680_3002x1484.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!s9te!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F832a4593-6536-4d9a-853c-cc96e4ac1680_3002x1484.png" width="1456" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/832a4593-6536-4d9a-853c-cc96e4ac1680_3002x1484.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:580236,&quot;alt&quot;:&quot;Screenshot of the Google NotebookLM interface showing a list of eight sources on the left and the \&quot;Slide Deck\&quot; button highlighted 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;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/182238903?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F832a4593-6536-4d9a-853c-cc96e4ac1680_3002x1484.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of the Google NotebookLM interface showing a list of eight sources on the left and the &quot;Slide Deck&quot; button highlighted in the Studio panel on the right." title="Screenshot of the Google NotebookLM interface showing a list of eight sources on the left and the &quot;Slide Deck&quot; button highlighted in the Studio panel on the right." srcset="https://substackcdn.com/image/fetch/$s_!s9te!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F832a4593-6536-4d9a-853c-cc96e4ac1680_3002x1484.png 424w, https://substackcdn.com/image/fetch/$s_!s9te!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F832a4593-6536-4d9a-853c-cc96e4ac1680_3002x1484.png 848w, https://substackcdn.com/image/fetch/$s_!s9te!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F832a4593-6536-4d9a-853c-cc96e4ac1680_3002x1484.png 1272w, https://substackcdn.com/image/fetch/$s_!s9te!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F832a4593-6536-4d9a-853c-cc96e4ac1680_3002x1484.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The initial experiment where I uploaded a mix of raw sources and hit the "Slide Deck" button without any curation</figcaption></figure></div><p>This was my first attempt. I uploaded a set of resources found on the Internet on context engineering and asked for a summary deck.</p><p>After the 15-minute processing time, the result genuinely surprised me. <strong>Visually, it was flawless</strong>: it looked like a deck delivered by a top-tier strategy consultancy.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qqZU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826897b7-c952-4078-8356-e246bac460d5_3002x1484.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qqZU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826897b7-c952-4078-8356-e246bac460d5_3002x1484.png 424w, https://substackcdn.com/image/fetch/$s_!qqZU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826897b7-c952-4078-8356-e246bac460d5_3002x1484.png 848w, https://substackcdn.com/image/fetch/$s_!qqZU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826897b7-c952-4078-8356-e246bac460d5_3002x1484.png 1272w, https://substackcdn.com/image/fetch/$s_!qqZU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826897b7-c952-4078-8356-e246bac460d5_3002x1484.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qqZU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826897b7-c952-4078-8356-e246bac460d5_3002x1484.png" width="1456" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/826897b7-c952-4078-8356-e246bac460d5_3002x1484.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1427582,&quot;alt&quot;:&quot;Screenshot of the NotebookLM interface displaying the generated slide deck in the right panel, showing specific slides with diagrams and text about context engineering.&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/182238903?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826897b7-c952-4078-8356-e246bac460d5_3002x1484.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of the NotebookLM interface displaying the generated slide deck in the right panel, showing specific slides with diagrams and text about context engineering." title="Screenshot of the NotebookLM interface displaying the generated slide deck in the right panel, showing specific slides with diagrams and text about context engineering." srcset="https://substackcdn.com/image/fetch/$s_!qqZU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826897b7-c952-4078-8356-e246bac460d5_3002x1484.png 424w, https://substackcdn.com/image/fetch/$s_!qqZU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826897b7-c952-4078-8356-e246bac460d5_3002x1484.png 848w, https://substackcdn.com/image/fetch/$s_!qqZU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826897b7-c952-4078-8356-e246bac460d5_3002x1484.png 1272w, https://substackcdn.com/image/fetch/$s_!qqZU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826897b7-c952-4078-8356-e246bac460d5_3002x1484.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The initial output looked professional but contained logical contradictions because I failed to curate the input sources</figcaption></figure></div><p>But as soon as I actually read the content, <strong>the illusion shattered</strong>:</p><div class="file-embed-wrapper" data-component-name="FileToDOM"><div class="file-embed-container-reader"><div class="file-embed-container-top"><image class="file-embed-thumbnail-default" src="https://substackcdn.com/image/fetch/$s_!0Cy0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2Fattachment_icon.svg"></image><div class="file-embed-details"><div class="file-embed-details-h1">Context Engineering And Agent Architecture</div><div class="file-embed-details-h2">12.8MB &#8729; PDF file</div></div><a class="file-embed-button wide" href="https://www.theaithinker.com/api/v1/file/bd3de3da-f2b6-4179-9069-c9d06b1aa1fb.pdf"><span class="file-embed-button-text">Download</span></a></div><a class="file-embed-button narrow" href="https://www.theaithinker.com/api/v1/file/bd3de3da-f2b6-4179-9069-c9d06b1aa1fb.pdf"><span class="file-embed-button-text">Download</span></a></div></div><p>You see? Slide 4 strongly advised against multi-agent architectures, calling them &#8220;very fragile&#8221;. By Slide 11? It was recommending them as an advanced solution. It was a <strong>incoherent deck</strong>: polished on the surface, but logically broken underneath.</p><p>Worse, <strong>the iteration loop was punishing</strong>. To fix that one contradiction, I had to trigger a full regeneration, waiting another 15 minutes only to watch the AI rewrite the entire deck and potentially break the parts it actually got right. So, it wasn&#8217;t the magic button I hoped for.</p><p>Oh, by the way, if you are reading this and thinking &#8220;What is NotebookLM?&#8221;, I don&#8217;t want to say your life is sad, but you are missing out on one of the most powerful AI tools. It&#8217;s essentially a <strong>brain where you upload documents</strong> (PDFs, Google Docs, audios, websites, etc.) and it becomes an <strong>instant expert on them</strong>. If you need to catch up, go watch <a href="https://youtu.be/uKPBIKF5FUI?si=6F7nOed8mZ3t_Il7">this video on YouTube</a>: it&#8217;s 17 minutes that might <strong>change the way you learn</strong>. Don&#8217;t skip it.</p><p>Let&#8217;s get back to the story. Recently, I had to produce a C-level strategy brief in a very <strong>short amount of time</strong>. I didn't have four hours to spend moving squares and circles around in Google Slides, so I decided to <strong>give the tool a second chance</strong>. </p><p>I ended up spending about 4 hours on that deck. That might sound like a lot, but it&#8217;s still significantly <strong>faster than starting from scratch</strong>. More importantly, those 4 hours were spent cracking the code. I discovered a specific workflow that actually works: how to <strong>limit hallucinations</strong>, how to <strong>apply a design template</strong>, and most critically a trick to <strong>iterate on specific slides</strong> without regenerating the whole deck.</p><p>The lesson was clear:</p><blockquote><p><strong>If you control the sources, you control the output.</strong></p></blockquote><p>By the end of this article, you will be able to generate a deck like this one below:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IVp0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47801a18-d5dc-437b-9bc1-b56d53adf725_2950x1484.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IVp0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47801a18-d5dc-437b-9bc1-b56d53adf725_2950x1484.png 424w, https://substackcdn.com/image/fetch/$s_!IVp0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47801a18-d5dc-437b-9bc1-b56d53adf725_2950x1484.png 848w, https://substackcdn.com/image/fetch/$s_!IVp0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47801a18-d5dc-437b-9bc1-b56d53adf725_2950x1484.png 1272w, https://substackcdn.com/image/fetch/$s_!IVp0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47801a18-d5dc-437b-9bc1-b56d53adf725_2950x1484.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IVp0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47801a18-d5dc-437b-9bc1-b56d53adf725_2950x1484.png" width="1456" height="732" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/47801a18-d5dc-437b-9bc1-b56d53adf725_2950x1484.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:732,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2948957,&quot;alt&quot;:&quot;A grid view of six professional presentation slides titled \&quot;The Full Stack Builder Model,\&quot; featuring LinkedIn branding, clean typography, and diagrams explaining the strategy.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/182238903?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47801a18-d5dc-437b-9bc1-b56d53adf725_2950x1484.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A grid view of six professional presentation slides titled &quot;The Full Stack Builder Model,&quot; featuring LinkedIn branding, clean typography, and diagrams explaining the strategy." title="A grid view of six professional presentation slides titled &quot;The Full Stack Builder Model,&quot; featuring LinkedIn branding, clean typography, and diagrams explaining the strategy." srcset="https://substackcdn.com/image/fetch/$s_!IVp0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47801a18-d5dc-437b-9bc1-b56d53adf725_2950x1484.png 424w, https://substackcdn.com/image/fetch/$s_!IVp0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47801a18-d5dc-437b-9bc1-b56d53adf725_2950x1484.png 848w, https://substackcdn.com/image/fetch/$s_!IVp0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47801a18-d5dc-437b-9bc1-b56d53adf725_2950x1484.png 1272w, https://substackcdn.com/image/fetch/$s_!IVp0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47801a18-d5dc-437b-9bc1-b56d53adf725_2950x1484.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The final result: a cohesive, logically sound "Full Stack Builder" strategy deck generated in minutes using the curated workflow</figcaption></figure></div><p>And here is the entire PDF:</p><div class="file-embed-wrapper" data-component-name="FileToDOM"><div class="file-embed-container-reader"><div class="file-embed-container-top"><image class="file-embed-thumbnail-default" src="https://substackcdn.com/image/fetch/$s_!0Cy0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2Fattachment_icon.svg"></image><div class="file-embed-details"><div class="file-embed-details-h1">Full Stack Builder Velocity</div><div class="file-embed-details-h2">9.88MB &#8729; PDF file</div></div><a class="file-embed-button wide" href="https://www.theaithinker.com/api/v1/file/bdc0243f-646e-44ee-bbc5-76cf3215f69b.pdf"><span class="file-embed-button-text">Download</span></a></div><a class="file-embed-button narrow" href="https://www.theaithinker.com/api/v1/file/bdc0243f-646e-44ee-bbc5-76cf3215f69b.pdf"><span class="file-embed-button-text">Download</span></a></div></div><p>This article breaks down the exact <strong>5-step process</strong> I used to build it, so you can <strong>save time</strong> and go straight to the result.</p><p>Let&#8217;s dive in!</p><div><hr></div><h2>Use case: the AI builder program at LinkedIn</h2><p>Before we jump into the steps, let&#8217;s set the stage. Since I cannot share my company&#8217;s confidential strategy, I&#8217;m going to use a <strong>real-world, high-stakes example that is public</strong>.</p><p><strong>Imagine this scenario:</strong> You are an <strong>AI enabler at LinkedIn</strong>. Your mission is to convince the C-suite to shift the entire product organization toward a <strong>full stack builder model</strong>. You need to <strong>present a roadmap</strong> that explains how AI will allow single individuals to take products <strong>from idea to launch</strong>, collapsing the traditional silos of product management, design, and engineering.</p><p>I chose this specific case because I recently watched an interview on <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Lenny's Newsletter&quot;,&quot;id&quot;:10845,&quot;type&quot;:&quot;pub&quot;,&quot;url&quot;:&quot;https://open.substack.com/pub/lenny&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/441213db-4824-4e48-9d28-a3a18952cbfc_592x592.png&quot;,&quot;uuid&quot;:&quot;8177e5c8-63a2-4109-ae97-f75982a0b4e4&quot;}" data-component-name="MentionToDOM"></span> podcast with Tomer Cohen, LinkedIn&#8217;s CPO. He detailed exactly how they are scrapping their traditional associate product manager program in favor of an AI-native builder program.</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:180042347,&quot;url&quot;:&quot;https://www.lennysnewsletter.com/p/why-linkedin-is-replacing-pms&quot;,&quot;publication_id&quot;:10845,&quot;publication_name&quot;:&quot;Lenny's Newsletter&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!8MSN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F441213db-4824-4e48-9d28-a3a18952cbfc_592x592.png&quot;,&quot;title&quot;:&quot;Why LinkedIn is turning PMs into AI-powered \&quot;full stack builders&#8221; | Tomer Cohen (LinkedIn CPO)&quot;,&quot;truncated_body_text&quot;:&quot;Tomer Cohen is the longtime chief product officer at LinkedIn, where he&#8217;s pioneering the Full Stack Builder program, a radical new approach to product development that fully embraces what AI makes possible. Under his leadership, LinkedIn has scrapped its traditional Associate Product Manager program and replaced it with an Associate Product Builder program that teaches coding, design, and PM skills together. He&#8217;s also introduced a formal &#8220;Full Stack Builder&#8221; title and career ladder, enabling anyone from any function to take products from idea to launch. In this conversation, Tomer explains why product development has become too complex at most companies and how LinkedIn is building an AI-powered product team that can move faster, adapt more quickly, and do more with less.&quot;,&quot;date&quot;:&quot;2025-12-04T13:32:07.889Z&quot;,&quot;like_count&quot;:71,&quot;comment_count&quot;:2,&quot;bylines&quot;:[{&quot;id&quot;:1849774,&quot;name&quot;:&quot;Lenny Rachitsky&quot;,&quot;handle&quot;:&quot;lenny&quot;,&quot;previous_name&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;bio&quot;:&quot;Writing &#8226; Angel investing &#8226; Advising&quot;,&quot;profile_set_up_at&quot;:&quot;2021-05-01T23:55:21.518Z&quot;,&quot;reader_installed_at&quot;:&quot;2021-12-15T18:09:25.096Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:247600,&quot;user_id&quot;:1849774,&quot;publication_id&quot;:10845,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:10845,&quot;name&quot;:&quot;Lenny's Newsletter&quot;,&quot;subdomain&quot;:&quot;lenny&quot;,&quot;custom_domain&quot;:&quot;www.lennysnewsletter.com&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Deeply researched product, growth, and career advice&#8212;newsletter, podcast, community, and living library&quot;,&quot;logo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/441213db-4824-4e48-9d28-a3a18952cbfc_592x592.png&quot;,&quot;author_id&quot;:1849774,&quot;primary_user_id&quot;:1849774,&quot;theme_var_background_pop&quot;:&quot;#f47c55&quot;,&quot;created_at&quot;:&quot;2019-06-01T15:35:37.885Z&quot;,&quot;email_from_name&quot;:&quot;Lenny's Newsletter&quot;,&quot;copyright&quot;:null,&quot;founding_plan_name&quot;:&quot;Insider 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;twitter_screen_name&quot;:&quot;lennysan&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:10000,&quot;status&quot;:{&quot;bestsellerTier&quot;:10000,&quot;subscriberTier&quot;:10,&quot;leaderboard&quot;:null,&quot;vip&quot;:false,&quot;badge&quot;:{&quot;type&quot;:&quot;bestseller&quot;,&quot;tier&quot;:10000},&quot;paidPublicationIds&quot;:[3525780,35345,1256656,1243269,16907,2217127,218501,313411,46510,1548028,1163860,1435249,260347],&quot;subscriber&quot;:null}}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;podcast&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://www.lennysnewsletter.com/p/why-linkedin-is-replacing-pms?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_!8MSN!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F441213db-4824-4e48-9d28-a3a18952cbfc_592x592.png" loading="lazy"><span class="embedded-post-publication-name">Lenny's Newsletter</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title-icon"><svg width="19" height="19" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
  <path d="M3 18V12C3 9.61305 3.94821 7.32387 5.63604 5.63604C7.32387 3.94821 9.61305 3 12 3C14.3869 3 16.6761 3.94821 18.364 5.63604C20.0518 7.32387 21 9.61305 21 12V18" stroke-linecap="round" stroke-linejoin="round"></path>
  <path d="M21 19C21 19.5304 20.7893 20.0391 20.4142 20.4142C20.0391 20.7893 19.5304 21 19 21H18C17.4696 21 16.9609 20.7893 16.5858 20.4142C16.2107 20.0391 16 19.5304 16 19V16C16 15.4696 16.2107 14.9609 16.5858 14.5858C16.9609 14.2107 17.4696 14 18 14H21V19ZM3 19C3 19.5304 3.21071 20.0391 3.58579 20.4142C3.96086 20.7893 4.46957 21 5 21H6C6.53043 21 7.03914 20.7893 7.41421 20.4142C7.78929 20.0391 8 19.5304 8 19V16C8 15.4696 7.78929 14.9609 7.41421 14.5858C7.03914 14.2107 6.53043 14 6 14H3V19Z" stroke-linecap="round" stroke-linejoin="round"></path>
</svg></div><div class="embedded-post-title">Why LinkedIn is turning PMs into AI-powered "full stack builders&#8221; | Tomer Cohen (LinkedIn CPO)</div></div><div class="embedded-post-body">Tomer Cohen is the longtime chief product officer at LinkedIn, where he&#8217;s pioneering the Full Stack Builder program, a radical new approach to product development that fully embraces what AI makes possible. Under his leadership, LinkedIn has scrapped its traditional Associate Product Manager program and replaced it with an Associate Product Builder program that teaches coding, design, and PM skills together. He&#8217;s also introduced a formal &#8220;Full Stack Builder&#8221; title and career ladder, enabling anyone from any function to take products from idea to launch. In this conversation, Tomer explains why product development has become too complex at most companies and how LinkedIn is building an AI-powered product team that can move faster, adapt more quickly, and do more with less&#8230;</div><div class="embedded-post-cta-wrapper"><div class="embedded-post-cta-icon"><svg width="32" height="32" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
  <path classname="inner-triangle" d="M10 8L16 12L10 16V8Z" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg></div><span class="embedded-post-cta">Listen now</span></div><div class="embedded-post-meta">5 months ago &#183; 71 likes &#183; 2 comments &#183; Lenny Rachitsky</div></a></div><p>The content is dense and strategic:</p><ul><li><p><strong>The why:</strong> 70% of skills needed for jobs will change by 2030.</p></li><li><p><strong>The how:</strong> A 3-pillar strategy involving platform re-architecture, custom AI agents, and culture change.</p></li><li><p><strong>The what:</strong> Moving from a 6-month feature cycle to rapid, AI-assisted iteration.</p></li></ul><p>Since <strong>this information is public</strong>, it&#8217;s the perfect sandbox. We are going to take that 1-hour audio transcript and turn it into the C-level pitch deck below using NotebookLM.</p><div><hr></div><h2>Overview: a 5-step workflow</h2><p>Here are the 5 steps to transform a raw transcript into a strategic presentation:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!anPZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17649be6-a4bf-4c05-9122-dfa21a1c3d8a_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!anPZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17649be6-a4bf-4c05-9122-dfa21a1c3d8a_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!anPZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17649be6-a4bf-4c05-9122-dfa21a1c3d8a_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!anPZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17649be6-a4bf-4c05-9122-dfa21a1c3d8a_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!anPZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17649be6-a4bf-4c05-9122-dfa21a1c3d8a_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!anPZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17649be6-a4bf-4c05-9122-dfa21a1c3d8a_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/17649be6-a4bf-4c05-9122-dfa21a1c3d8a_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;:6621649,&quot;alt&quot;:&quot;A flowchart diagram titled \&quot;NotebookLM Presentation Process\&quot; showing five sequential steps: Prepare Content, Set Up Template, Customize Instructions, Iterate on Result, and Refine with 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/182238903?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17649be6-a4bf-4c05-9122-dfa21a1c3d8a_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A flowchart diagram titled &quot;NotebookLM Presentation Process&quot; showing five sequential steps: Prepare Content, Set Up Template, Customize Instructions, Iterate on Result, and Refine with Feedback." title="A flowchart diagram titled &quot;NotebookLM Presentation Process&quot; showing five sequential steps: Prepare Content, Set Up Template, Customize Instructions, Iterate on Result, and Refine with Feedback." srcset="https://substackcdn.com/image/fetch/$s_!anPZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17649be6-a4bf-4c05-9122-dfa21a1c3d8a_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!anPZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17649be6-a4bf-4c05-9122-dfa21a1c3d8a_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!anPZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17649be6-a4bf-4c05-9122-dfa21a1c3d8a_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!anPZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17649be6-a4bf-4c05-9122-dfa21a1c3d8a_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The path from raw content to the final freeze and patch refinement</figcaption></figure></div><ol><li><p><strong><a href="https://www.theaithinker.com/i/182238903/step-prepare-the-content">Prepare the content</a>:</strong> Clean your raw source material (transcripts, notes, PDFs) into a structured document with clear headers and bullet points. I use Cursor to generate a markdown file, but you can do this in a Google Doc; the goal is to remove noise so NotebookLM focuses purely on the signal.</p></li><li><p><strong><a href="https://www.theaithinker.com/i/182238903/step-set-up-the-template">Set up the template</a>:</strong> Upload a clean, empty presentation file to NotebookLM as a source. This acts as a container for the design.</p></li><li><p><strong><a href="https://www.theaithinker.com/i/182238903/step-customize-the-instructions">Customize the instructions</a>:</strong> Use the &#8220;Customize&#8221; feature in the Slide Deck tool to input a master prompt that explicitly maps your content source to your design source. This prevents NotebookLM from guessing and forces it to follow your specific narrative structure.</p></li><li><p><strong><a href="https://www.theaithinker.com/i/182238903/step-iterate-on-the-result">Iterate on the result</a>:</strong> Run the generation process multiple times, as the AI&#8217;s non-deterministic nature means the second attempt often yields better layouts than the first. Treat the first output as a draft and reroll the dice to improve the visual structure.</p></li><li><p><strong><a href="https://www.theaithinker.com/i/182238903/step-refine-with-feedback">Refine with feedback</a>:</strong> Download the best draft as a PDF and re-upload it as a new source to freeze the structure. Then, run a targeted prompt to fix specific slides without regenerating, and potentially breaking, the rest of the deck.</p></li></ol><p><strong>Note:</strong> NotebookLM is impressive, but it is not the right tool for every situation. At the end of this article, discussion includes the specific challenges I faced and when to avoid using this workflow.</p><div><hr></div><h2>Step 1: Prepare the content</h2><p>The most common mistake people make with NotebookLM is treating it like a storage dump. In the past, I would just download random PDFs from Confluence, upload them all, add websites and YouTube video as sources, and hope for the best.</p><p>This does not work.</p><p>Too much irrelevant data confuses the model; too little data forces it to hallucinate. To get professional results, you must practice <strong>context engineering</strong>: creating a dedicated, clean dataset specifically for this task.</p><p><strong>The goal:</strong> A single document (or a tight set of documents) that contains only the truth you want to present: nothing more, nothing less.</p><p><strong>The workflow: </strong>For the LinkedIn strategy use case, I didn&#8217;t just paste the YouTube URL into NotebookLM (which often captures the intro fluff). I wanted control.</p><ul><li><p><strong>Get the raw text:</strong> I went to <a href="https://youtu.be/R-zCfLQD_84?si=IK6L3XQ_S7w8c03Z">the video</a>, opened the transcript, and copied the text into a markdown (<code>.md</code>) file.</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_!6ayf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda23bbb3-87e8-4b2c-be60-a58f5de23cd2_2982x1480.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6ayf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda23bbb3-87e8-4b2c-be60-a58f5de23cd2_2982x1480.png 424w, https://substackcdn.com/image/fetch/$s_!6ayf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda23bbb3-87e8-4b2c-be60-a58f5de23cd2_2982x1480.png 848w, https://substackcdn.com/image/fetch/$s_!6ayf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda23bbb3-87e8-4b2c-be60-a58f5de23cd2_2982x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!6ayf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda23bbb3-87e8-4b2c-be60-a58f5de23cd2_2982x1480.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6ayf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda23bbb3-87e8-4b2c-be60-a58f5de23cd2_2982x1480.png" width="1456" height="723" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/da23bbb3-87e8-4b2c-be60-a58f5de23cd2_2982x1480.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:723,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1721108,&quot;alt&quot;:&quot;Screenshot of a YouTube video page for Lenny's Podcast with the \&quot;Show transcript\&quot; button highlighted in red below the video description.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/182238903?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda23bbb3-87e8-4b2c-be60-a58f5de23cd2_2982x1480.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of a YouTube video page for Lenny's Podcast with the &quot;Show transcript&quot; button highlighted in red below the video description." title="Screenshot of a YouTube video page for Lenny's Podcast with the &quot;Show transcript&quot; button highlighted in red below the video description." srcset="https://substackcdn.com/image/fetch/$s_!6ayf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda23bbb3-87e8-4b2c-be60-a58f5de23cd2_2982x1480.png 424w, https://substackcdn.com/image/fetch/$s_!6ayf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda23bbb3-87e8-4b2c-be60-a58f5de23cd2_2982x1480.png 848w, https://substackcdn.com/image/fetch/$s_!6ayf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda23bbb3-87e8-4b2c-be60-a58f5de23cd2_2982x1480.png 1272w, https://substackcdn.com/image/fetch/$s_!6ayf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda23bbb3-87e8-4b2c-be60-a58f5de23cd2_2982x1480.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Accessing the raw transcript directly from the YouTube video interface to get the source material</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_!LEUs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F954fb6cc-37fa-4bb7-b9b3-bc8f3250d6e5_3002x1484.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LEUs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F954fb6cc-37fa-4bb7-b9b3-bc8f3250d6e5_3002x1484.png 424w, https://substackcdn.com/image/fetch/$s_!LEUs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F954fb6cc-37fa-4bb7-b9b3-bc8f3250d6e5_3002x1484.png 848w, https://substackcdn.com/image/fetch/$s_!LEUs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F954fb6cc-37fa-4bb7-b9b3-bc8f3250d6e5_3002x1484.png 1272w, https://substackcdn.com/image/fetch/$s_!LEUs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F954fb6cc-37fa-4bb7-b9b3-bc8f3250d6e5_3002x1484.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LEUs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F954fb6cc-37fa-4bb7-b9b3-bc8f3250d6e5_3002x1484.png" width="1456" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/954fb6cc-37fa-4bb7-b9b3-bc8f3250d6e5_3002x1484.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1269959,&quot;alt&quot;:&quot;Screenshot of the YouTube interface showing the transcript panel on the right with a specific block of text 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/182238903?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F954fb6cc-37fa-4bb7-b9b3-bc8f3250d6e5_3002x1484.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of the YouTube interface showing the transcript panel on the right with a specific block of text highlighted in a red box." title="Screenshot of the YouTube interface showing the transcript panel on the right with a specific block of text highlighted in a red box." srcset="https://substackcdn.com/image/fetch/$s_!LEUs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F954fb6cc-37fa-4bb7-b9b3-bc8f3250d6e5_3002x1484.png 424w, https://substackcdn.com/image/fetch/$s_!LEUs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F954fb6cc-37fa-4bb7-b9b3-bc8f3250d6e5_3002x1484.png 848w, https://substackcdn.com/image/fetch/$s_!LEUs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F954fb6cc-37fa-4bb7-b9b3-bc8f3250d6e5_3002x1484.png 1272w, https://substackcdn.com/image/fetch/$s_!LEUs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F954fb6cc-37fa-4bb7-b9b3-bc8f3250d6e5_3002x1484.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Copying the relevant text from the transcript side panel to serve as the raw data source</figcaption></figure></div><ul><li><p><strong>Refine with AI:</strong> I used Cursor to paste this transcript into an <code>.md</code> file.<br>Note: I use Cursor because its Atlassian MCP integration allows me to crawl my company&#8217;s Confluence pages in real-life scenarios, which is a massive time-saver. But for this example, you can use Google Doc. The tool matters less than the principle.</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_!Ft16!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0e34125-da3e-41ba-9d1f-d7f38ca0b356_3248x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ft16!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0e34125-da3e-41ba-9d1f-d7f38ca0b356_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!Ft16!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0e34125-da3e-41ba-9d1f-d7f38ca0b356_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!Ft16!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0e34125-da3e-41ba-9d1f-d7f38ca0b356_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!Ft16!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0e34125-da3e-41ba-9d1f-d7f38ca0b356_3248x1964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ft16!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0e34125-da3e-41ba-9d1f-d7f38ca0b356_3248x1964.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a0e34125-da3e-41ba-9d1f-d7f38ca0b356_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;:1299557,&quot;alt&quot;:&quot;Screenshot of the Cursor code editor displaying a file named video_transcript.md containing the unformatted text pasted from the video transcript.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/182238903?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0e34125-da3e-41ba-9d1f-d7f38ca0b356_3248x1964.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of the Cursor code editor displaying a file named video_transcript.md containing the unformatted text pasted from the video transcript." title="Screenshot of the Cursor code editor displaying a file named video_transcript.md containing the unformatted text pasted from the video transcript." srcset="https://substackcdn.com/image/fetch/$s_!Ft16!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0e34125-da3e-41ba-9d1f-d7f38ca0b356_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!Ft16!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0e34125-da3e-41ba-9d1f-d7f38ca0b356_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!Ft16!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0e34125-da3e-41ba-9d1f-d7f38ca0b356_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!Ft16!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0e34125-da3e-41ba-9d1f-d7f38ca0b356_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The raw transcript text pasted into a clean Markdown file within the Cursor editor</figcaption></figure></div><ul><li><p><strong>Run the prompt:</strong> I asked Cursor to act as a strategist and convert the raw transcript into a structured brief.</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_!9kvy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea04638c-05b9-4e3f-b671-cc7cbd939c09_3248x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9kvy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea04638c-05b9-4e3f-b671-cc7cbd939c09_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!9kvy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea04638c-05b9-4e3f-b671-cc7cbd939c09_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!9kvy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea04638c-05b9-4e3f-b671-cc7cbd939c09_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!9kvy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea04638c-05b9-4e3f-b671-cc7cbd939c09_3248x1964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9kvy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea04638c-05b9-4e3f-b671-cc7cbd939c09_3248x1964.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ea04638c-05b9-4e3f-b671-cc7cbd939c09_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;:1313020,&quot;alt&quot;:&quot;Screenshot of the Cursor chat panel showing a detailed prompt asking the AI to act as a Senior Product Strategist and convert the transcript into a C-Level brief.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/182238903?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea04638c-05b9-4e3f-b671-cc7cbd939c09_3248x1964.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of the Cursor chat panel showing a detailed prompt asking the AI to act as a Senior Product Strategist and convert the transcript into a C-Level brief." title="Screenshot of the Cursor chat panel showing a detailed prompt asking the AI to act as a Senior Product Strategist and convert the transcript into a C-Level brief." srcset="https://substackcdn.com/image/fetch/$s_!9kvy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea04638c-05b9-4e3f-b671-cc7cbd939c09_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!9kvy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea04638c-05b9-4e3f-b671-cc7cbd939c09_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!9kvy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea04638c-05b9-4e3f-b671-cc7cbd939c09_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!9kvy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fea04638c-05b9-4e3f-b671-cc7cbd939c09_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Running the strategist prompt in Cursor to transform the messy transcript into a structured brief</figcaption></figure></div><p>Here is the exact prompt I used:</p><pre><code><code>Act as a Senior Product Strategist. I have the transcript of a video about "LinkedIn AI Strategy" in `video_transcript.md`.

Please analyze the transcript and generate a new file named `LinkedIn_AI_Strategy_Brief.md`.

Your goal is to convert this raw spoken content into a professional C-Level Strategic Brief that I can use as the source for a presentation.

Instructions:
1. Filter the Noise: Remove conversational filler, repetition, and YouTuber/speaker fluff. Extract only the high-value insights, frameworks, and data.
2. Tone: Professional, persuasive, and executive-ready.
3. Format: Clean Markdown with clear H1/H2 headers, bullet points, and bold text for emphasis.

Structure the content as follows:
* Executive Summary: A 3-sentence hook explaining the opportunity.
* The Strategic Shift: Why we need to adopt this AI strategy on LinkedIn now (The "Problem" or "Opportunity" space).
* Core Pillars: The main components or tactics of the strategy explained clearly.
* Implementation Plan: A high-level roadmap or "Next Steps" derived from the content.
* Expected Outcomes: The ROI, metrics, or benefits of executing this strategy.

Please generate the `LinkedIn_AI_Strategy_Brief.md` file now.</code></code></pre><p>And here is 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_!ixyb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e9661bd-1d1b-4923-978e-5703dc43d299_3248x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ixyb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e9661bd-1d1b-4923-978e-5703dc43d299_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!ixyb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e9661bd-1d1b-4923-978e-5703dc43d299_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!ixyb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e9661bd-1d1b-4923-978e-5703dc43d299_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!ixyb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e9661bd-1d1b-4923-978e-5703dc43d299_3248x1964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ixyb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e9661bd-1d1b-4923-978e-5703dc43d299_3248x1964.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7e9661bd-1d1b-4923-978e-5703dc43d299_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;:1241509,&quot;alt&quot;:&quot;Screenshot of the Cursor editor showing the newly generated LinkedIn_AI_Strategy_Brief.md file with clear headers and bullet points alongside the AI chat summary.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/182238903?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e9661bd-1d1b-4923-978e-5703dc43d299_3248x1964.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of the Cursor editor showing the newly generated LinkedIn_AI_Strategy_Brief.md file with clear headers and bullet points alongside the AI chat summary." title="Screenshot of the Cursor editor showing the newly generated LinkedIn_AI_Strategy_Brief.md file with clear headers and bullet points alongside the AI chat summary." srcset="https://substackcdn.com/image/fetch/$s_!ixyb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e9661bd-1d1b-4923-978e-5703dc43d299_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!ixyb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e9661bd-1d1b-4923-978e-5703dc43d299_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!ixyb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e9661bd-1d1b-4923-978e-5703dc43d299_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!ixyb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e9661bd-1d1b-4923-978e-5703dc43d299_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The output: a clean, structured Markdown strategy brief ready to be uploaded to NotebookLM</figcaption></figure></div><p><strong>The human layer is crucial:</strong> Do not trust the output blindly. Even with a good prompt, AI can miss the point. I read the generated markdown file line-by-line. In my real-world projects, this is where I cross-reference with Confluence to ensure facts aren&#8217;t outdated. I ruthlessly deleted any paragraph that wasn&#8217;t relevant to the specific story I wanted to tell.</p><p><strong>Why this matters:</strong></p><ul><li><p><strong>Too much context:</strong> The model gets confused and prioritizes the wrong points.</p></li><li><p><strong>Too little context:</strong> The model fills in the blanks with hallucinations.</p></li><li><p><strong>Curated context:</strong> The model acts as a designer, not a writer. It focuses on visualizing your facts rather than inventing them.</p></li></ul><p>In my real-world project, this preparation phase was actually the part that took the most time, because once the foundation is solid, the rest is just execution.</p><div><hr></div><h2>Step 2: Set up the template</h2><p>Now that we have our strategy brief, we need a container for it.</p><p>I went to NotebookLM, created a new notebook, and uploaded two specific files:</p><ol><li><p><strong>The brain</strong>, the content we just created in Step 1: <code>LinkedIn_AI_Strategy_Brief.md</code></p></li><li><p><strong>The body</strong>, the design skeleton: I found this <a href="https://business.linkedin.com/content/dam/me/business/en-us/amp/marketing-solutions/images/lms-conversation-ads/pdf/linkedin-conversation-ads-templates.pdf">LinkedIn branding template</a> on the Internet.</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_!UlCp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0776afe8-08d4-4f22-a315-7ef0ef49e8a8_3002x1484.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UlCp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0776afe8-08d4-4f22-a315-7ef0ef49e8a8_3002x1484.png 424w, https://substackcdn.com/image/fetch/$s_!UlCp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0776afe8-08d4-4f22-a315-7ef0ef49e8a8_3002x1484.png 848w, https://substackcdn.com/image/fetch/$s_!UlCp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0776afe8-08d4-4f22-a315-7ef0ef49e8a8_3002x1484.png 1272w, https://substackcdn.com/image/fetch/$s_!UlCp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0776afe8-08d4-4f22-a315-7ef0ef49e8a8_3002x1484.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UlCp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0776afe8-08d4-4f22-a315-7ef0ef49e8a8_3002x1484.png" width="1456" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0776afe8-08d4-4f22-a315-7ef0ef49e8a8_3002x1484.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:531292,&quot;alt&quot;:&quot;Screenshot of the NotebookLM interface with the Sources panel on the left highlighting two uploaded files: LinkedIn_AI_Strategy_Brief.md and linkedin-conversation-ads-templates.pdf&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/182238903?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0776afe8-08d4-4f22-a315-7ef0ef49e8a8_3002x1484.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of the NotebookLM interface with the Sources panel on the left highlighting two uploaded files: LinkedIn_AI_Strategy_Brief.md and linkedin-conversation-ads-templates.pdf" title="Screenshot of the NotebookLM interface with the Sources panel on the left highlighting two uploaded files: LinkedIn_AI_Strategy_Brief.md and linkedin-conversation-ads-templates.pdf" srcset="https://substackcdn.com/image/fetch/$s_!UlCp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0776afe8-08d4-4f22-a315-7ef0ef49e8a8_3002x1484.png 424w, https://substackcdn.com/image/fetch/$s_!UlCp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0776afe8-08d4-4f22-a315-7ef0ef49e8a8_3002x1484.png 848w, https://substackcdn.com/image/fetch/$s_!UlCp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0776afe8-08d4-4f22-a315-7ef0ef49e8a8_3002x1484.png 1272w, https://substackcdn.com/image/fetch/$s_!UlCp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0776afe8-08d4-4f22-a315-7ef0ef49e8a8_3002x1484.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Uploading the two critical components to NotebookLM: the content source and the empty design template</figcaption></figure></div><p><strong>Why the template must be empty:</strong> This is a critical detail. If you upload a previous version of a deck to use as a template, the AI gets confused. It struggles to distinguish between layout rules and old text, and you risk it hallucinating. By using a <strong>clean, empty template</strong>, like the one I used for this LinkedIn example, you ensure the model focuses 100% on your new content and 0% on legacy noise.</p><div><hr></div><h2>Step 3: Customize the instructions</h2><p>Click the <strong>customize</strong> (pen icon) 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_!CiDv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff272a6c1-36ef-4132-8242-7cff0acd0d15_3002x1484.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CiDv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff272a6c1-36ef-4132-8242-7cff0acd0d15_3002x1484.png 424w, https://substackcdn.com/image/fetch/$s_!CiDv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff272a6c1-36ef-4132-8242-7cff0acd0d15_3002x1484.png 848w, https://substackcdn.com/image/fetch/$s_!CiDv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff272a6c1-36ef-4132-8242-7cff0acd0d15_3002x1484.png 1272w, https://substackcdn.com/image/fetch/$s_!CiDv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff272a6c1-36ef-4132-8242-7cff0acd0d15_3002x1484.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CiDv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff272a6c1-36ef-4132-8242-7cff0acd0d15_3002x1484.png" width="1456" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f272a6c1-36ef-4132-8242-7cff0acd0d15_3002x1484.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:531037,&quot;alt&quot;:&quot;Screenshot of the NotebookLM Studio panel focusing on the \&quot;Slide Deck\&quot; tile, with a red square highlighting the small pencil/edit 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/182238903?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff272a6c1-36ef-4132-8242-7cff0acd0d15_3002x1484.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of the NotebookLM Studio panel focusing on the &quot;Slide Deck&quot; tile, with a red square highlighting the small pencil/edit icon in the top right corner." title="Screenshot of the NotebookLM Studio panel focusing on the &quot;Slide Deck&quot; tile, with a red square highlighting the small pencil/edit icon in the top right corner." srcset="https://substackcdn.com/image/fetch/$s_!CiDv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff272a6c1-36ef-4132-8242-7cff0acd0d15_3002x1484.png 424w, https://substackcdn.com/image/fetch/$s_!CiDv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff272a6c1-36ef-4132-8242-7cff0acd0d15_3002x1484.png 848w, https://substackcdn.com/image/fetch/$s_!CiDv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff272a6c1-36ef-4132-8242-7cff0acd0d15_3002x1484.png 1272w, https://substackcdn.com/image/fetch/$s_!CiDv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff272a6c1-36ef-4132-8242-7cff0acd0d15_3002x1484.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Clicking the "customize" (pen icon) button on the Slide Deck tool instead of just hitting "create" to open the instructions panel</figcaption></figure></div><p>This opens a dialogue box where you can inject a master prompt.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LouD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2884573f-542f-4e45-b342-089afbd513d0_3002x1484.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LouD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2884573f-542f-4e45-b342-089afbd513d0_3002x1484.png 424w, https://substackcdn.com/image/fetch/$s_!LouD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2884573f-542f-4e45-b342-089afbd513d0_3002x1484.png 848w, https://substackcdn.com/image/fetch/$s_!LouD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2884573f-542f-4e45-b342-089afbd513d0_3002x1484.png 1272w, https://substackcdn.com/image/fetch/$s_!LouD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2884573f-542f-4e45-b342-089afbd513d0_3002x1484.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LouD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2884573f-542f-4e45-b342-089afbd513d0_3002x1484.png" width="1456" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2884573f-542f-4e45-b342-089afbd513d0_3002x1484.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:444133,&quot;alt&quot;:&quot;Screenshot of the \&quot;Customize Slide Deck\&quot; modal window in NotebookLM, showing the \&quot;Detailed Deck\&quot; option selected and a detailed prompt pasted into the text input 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/182238903?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2884573f-542f-4e45-b342-089afbd513d0_3002x1484.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of the &quot;Customize Slide Deck&quot; modal window in NotebookLM, showing the &quot;Detailed Deck&quot; option selected and a detailed prompt pasted into the text input field." title="Screenshot of the &quot;Customize Slide Deck&quot; modal window in NotebookLM, showing the &quot;Detailed Deck&quot; option selected and a detailed prompt pasted into the text input field." srcset="https://substackcdn.com/image/fetch/$s_!LouD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2884573f-542f-4e45-b342-089afbd513d0_3002x1484.png 424w, https://substackcdn.com/image/fetch/$s_!LouD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2884573f-542f-4e45-b342-089afbd513d0_3002x1484.png 848w, https://substackcdn.com/image/fetch/$s_!LouD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2884573f-542f-4e45-b342-089afbd513d0_3002x1484.png 1272w, https://substackcdn.com/image/fetch/$s_!LouD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2884573f-542f-4e45-b342-089afbd513d0_3002x1484.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Pasting the master prompt into the instructions box to explicitly map the content source to the design template</figcaption></figure></div><p>Think of this prompt as your director&#8217;s note. This is where you <strong>control the output</strong>. You can dictate the <strong>visual style</strong> (e.g., &#8220;create a split-screen comparison&#8221;), enforce <strong>negative constraints</strong> (e.g., &#8220;do not mention X&#8221;), and inject <strong>strategic nuance</strong> that might not be explicit in the source text.</p><p><strong>The master prompt template:</strong> Here is the exact structure I developed to force the model to respect my logic. You can copy-paste this for your own projects:</p><pre><code><code>Sources:
- Use "[Name of your uploaded Template]" for the design of the slides
- Use "[Name of your Source File]" for the structure of the presentation

Audience:
- The presentation is for [Target Audience] about [Project Name].

Goals:
- Explain the current status of [Project Name] and the next steps.
- Ask for [Specific Resource Ask].

Structure:
- [Topic 1]: [Detail]
- [Topic 2]: [Detail]
- [Topic 3]: [Detail]

Requirements:
- Stick to this plan and don't add other things.
- Add an agenda slide before moving on to the topics.
- Use infographics or diagrams to present the roadmap; make the presentation visual.

Key Messages (Nuance and Strategy):
- [Concept A]: [Your specific definition or constraint].
- [Concept B]: [Your specific definition or constraint].</code></code></pre><p><strong>Why this prompt works:</strong></p><ul><li><p><strong>Source segregation:</strong> You explicitly tell the AI which file is for Design and which is for Content.</p></li><li><p><strong>Constraint enforcement:</strong> Phrases like &#8220;stick to this plan&#8221; and &#8220;don&#8217;t add other things&#8221; significantly reduce NotebookLM&#8217;s approximations.</p></li><li><p><strong>Nuance injection:</strong> The &#8220;key messages&#8221; section prevents generic summaries by forcing the AI to include your specific strategic angles (e.g., &#8220;cost reduction means X, not Y&#8221;).</p></li></ul><p><strong>The use case example: </strong>For the LinkedIn strategy deck, here is the actual prompt I used to turn the C-Level brief into a first presentation:</p><pre><code><code>Sources:
- Use "linkedin-conversation-ads-templates.pdf" for the design of the slides
- Use "LinkedIn_AI_Strategy_Brief.md" for the structure of the presentation

Audience:
- The presentation is for the C-level (CPO, CTO, CEO) about the "Full Stack Builder" transformation strategy.

Goals:
- Explain the shift to the "Full Stack Builder Model" to solve the "Speed vs. Complexity" problem.
- Ask for approval on the 4-Phase Implementation Roadmap and resources for Platform Re-architecture.

Structure:
- The Problem: The "Specialization Tax" and "Process Bloat" that is slowing us down (Current State).
- The Vision: The "Full Stack Builder Model" (collapsing the stack so one person can go from idea to launch).
- Pillar 1 (Platform): Re-architecting our infrastructure so AI can reason over our code (The foundational investment).
- Pillar 2 (Tools): The suite of Custom Agents we are building (Trust, Growth, Research, Analyst).
- Pillar 3 (Culture): The Change Management Playbook (Performance reviews, Pod structure, Navy SEALs model).
- The Roadmap: Phase 1 (Foundation) through Phase 4 (Continuous Evolution) with timelines.
- Expected Outcomes: Quantitative wins (Hours saved, 50% auto-resolved builds) and Qualitative wins (Career mobility, Resilience).

Requirements:
- Stick to this plan and don't add other things.
- Add an agenda slide before moving on to the topics.
- Use infographics or diagrams to present the "4-Phase Roadmap" and the "3 Core Pillars"; make the presentation visual.
- Include a visualization of the **Agent Ecosystem** (Trust Agent, Growth Agent, Coding Agent) showing how they support the human builder.

Key Messages (Nuance and Strategy):
- Customization is Non-Negotiable: Emphasize that off-the-shelf tools (Cursor, Devon) fail on our legacy codebase without heavy customization. We need to build our own context-aware layers.
- Culture is the Bottleneck: Explicitly state that "Tools alone don't drive adoption." We need to change how we do performance reviews to reward "Full Stack" behaviors.
- The "Trust Agent" Role: Highlight the Trust Agent specifically as a way to mitigate risk (identifying security vulnerabilities/harm vectors) that human reviewers might miss.
- Metric for Success: The ultimate KPI is not just speed, but: *(Experiment Volume &#215; Quality) &#247; Time to Launch*.
- The Macro Threat: Use the stat that "70% of skills required will change by 2030." We are doing this to avoid obsolescence, not just to save money.
- Human Judgment: Clarify that AI takes over data gathering and coding, but Human Builders focus on Vision, Empathy, and Judgment.
- Immediate Next Step: We are not starting from zero; we are moving to "Phase 1: Foundation" to identify golden examples and clean our data corpus.
</code></code></pre><p>Once you hit submit, go get a coffee. The generation process takes about 15 minutes. It is not instant, but it is thorough.</p><div><hr></div><h2>Step 4: Iterate on the result</h2><p>The first result is rarely the final result. In the LinkedIn use case, the first draft was good, but it missed some things I explicitly asked for in the requirements.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!il0r!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d46a451-a914-4d59-8936-dc889bc7fa4a_3002x1484.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!il0r!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d46a451-a914-4d59-8936-dc889bc7fa4a_3002x1484.png 424w, https://substackcdn.com/image/fetch/$s_!il0r!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d46a451-a914-4d59-8936-dc889bc7fa4a_3002x1484.png 848w, https://substackcdn.com/image/fetch/$s_!il0r!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d46a451-a914-4d59-8936-dc889bc7fa4a_3002x1484.png 1272w, https://substackcdn.com/image/fetch/$s_!il0r!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d46a451-a914-4d59-8936-dc889bc7fa4a_3002x1484.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!il0r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d46a451-a914-4d59-8936-dc889bc7fa4a_3002x1484.png" width="1456" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1d46a451-a914-4d59-8936-dc889bc7fa4a_3002x1484.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1319482,&quot;alt&quot;:&quot;Screenshot of the NotebookLM interface showing the generated \&quot;Full Stack Velocity\&quot; slide deck in the right panel, displaying the first three slides.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/182238903?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d46a451-a914-4d59-8936-dc889bc7fa4a_3002x1484.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of the NotebookLM interface showing the generated &quot;Full Stack Velocity&quot; slide deck in the right panel, displaying the first three slides." title="Screenshot of the NotebookLM interface showing the generated &quot;Full Stack Velocity&quot; slide deck in the right panel, displaying the first three slides." srcset="https://substackcdn.com/image/fetch/$s_!il0r!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d46a451-a914-4d59-8936-dc889bc7fa4a_3002x1484.png 424w, https://substackcdn.com/image/fetch/$s_!il0r!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d46a451-a914-4d59-8936-dc889bc7fa4a_3002x1484.png 848w, https://substackcdn.com/image/fetch/$s_!il0r!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d46a451-a914-4d59-8936-dc889bc7fa4a_3002x1484.png 1272w, https://substackcdn.com/image/fetch/$s_!il0r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d46a451-a914-4d59-8936-dc889bc7fa4a_3002x1484.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The generated draft appearing in the Studio panel, which must be reviewed carefully for logical gaps before iterating</figcaption></figure></div><p><strong>Strategy: review, refine, reroll</strong></p><ol><li><p><strong>Review:</strong> Look at where it failed. Did it ignore a specific constraint? Did it hallucinate a deadline? (e.g., Did it actually include the &#8220;Orchestration Layer&#8221; vision?)</p></li><li><p><strong>Refine:</strong> If the model missed a key instruction, go back to your master prompt (Step 3). Tweak it by <strong>bolding</strong> the missed requirement or moving it to the very top of the list. LLMs pay the most attention to the beginning and end of a prompt.</p></li><li><p><strong>Reroll:</strong> Sometimes, you don&#8217;t even need to change the prompt. You just need to run the generation again.</p></li></ol><p><strong>Rule of thumb:</strong> Never accept the first draft as the final truth. I always run the generation at least twice to compare how the AI interprets the prompt differently. Yes, this means investing another 15 minutes, but it usually yields a significantly better layout.</p><p>Albert Einstein famously said, &#8220;Insanity is doing the same thing over and over and expecting different results.&#8221;</p><p>With LLMs, that&#8217;s not quite right: <strong>re-running the exact same prompt is not insanity</strong>; it is a valid strategy. These models are probabilistic, not deterministic. Rolling the dice a second time often solves a layout issue or a logic gap that the first attempt missed, simply because the model took a different statistical path.</p><div><hr></div><h2>Step 5: Refine with feedback</h2><p>At this stage, you likely have a deck that is 80% perfect and 20% frustrating. Maybe Slide 4 misses a nuance, or Slide 10 has a generic visual.</p><p>The rookie mistake is to ask the AI to &#8220;fix Slide 10&#8221; without giving it the context of the rest of the deck. If you do this, the AI might regenerate the whole thing and accidentally break Slide 4 while fixing Slide 10.</p><p>To solve this, we use a freeze and patch technique:</p><ul><li><p><strong>Action:</strong> Download the best iteration from Step 4 as a PDF.</p></li><li><p><strong>Re-upload:</strong> Add this new PDF back into NotebookLM as a specific source.</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_!qhPM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccddfb76-3a54-4110-bbc3-40b8510b7b08_3002x1484.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qhPM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccddfb76-3a54-4110-bbc3-40b8510b7b08_3002x1484.png 424w, https://substackcdn.com/image/fetch/$s_!qhPM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccddfb76-3a54-4110-bbc3-40b8510b7b08_3002x1484.png 848w, https://substackcdn.com/image/fetch/$s_!qhPM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccddfb76-3a54-4110-bbc3-40b8510b7b08_3002x1484.png 1272w, https://substackcdn.com/image/fetch/$s_!qhPM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccddfb76-3a54-4110-bbc3-40b8510b7b08_3002x1484.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qhPM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccddfb76-3a54-4110-bbc3-40b8510b7b08_3002x1484.png" width="1456" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ccddfb76-3a54-4110-bbc3-40b8510b7b08_3002x1484.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1316197,&quot;alt&quot;:&quot;Screenshot of the NotebookLM interface showing the file Full_Stack_Velocity.pdf being added to the source list with a loading spinner&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/182238903?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccddfb76-3a54-4110-bbc3-40b8510b7b08_3002x1484.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Screenshot of the NotebookLM interface showing the file Full_Stack_Velocity.pdf being added to the source list with a loading spinner" title="Screenshot of the NotebookLM interface showing the file Full_Stack_Velocity.pdf being added to the source list with a loading spinner" srcset="https://substackcdn.com/image/fetch/$s_!qhPM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccddfb76-3a54-4110-bbc3-40b8510b7b08_3002x1484.png 424w, https://substackcdn.com/image/fetch/$s_!qhPM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccddfb76-3a54-4110-bbc3-40b8510b7b08_3002x1484.png 848w, https://substackcdn.com/image/fetch/$s_!qhPM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccddfb76-3a54-4110-bbc3-40b8510b7b08_3002x1484.png 1272w, https://substackcdn.com/image/fetch/$s_!qhPM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccddfb76-3a54-4110-bbc3-40b8510b7b08_3002x1484.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Uploading the generated PDF back into the project to serve as a fixed anchor for the next iteration</figcaption></figure></div><ul><li><p><strong>Run the prompt:</strong> Run a refinement prompt that anchors the AI to the PDF you just uploaded.</p></li></ul><p><strong>The refinement prompt template: </strong>By referencing the generated PDF and using the phrase &#8220;keep exactly the same,&#8221; you prevent the AI from re-rolling the dice on the slides you are already happy with.</p><pre><code><code>Sources:
- Use "[Name of your Design Template]" for the design of the slides
- Use "[The PDF you just generated/downloaded]" as the document to improve
- Use "[Original Markdown/Content Source]" for the content reference

Audience:
- The presentation is for [Target Audience] about [Project Name].

Goals:
- Explain the current status of [Project Name] and the next steps.
- Ask for [Specific Resource Ask].

Structure and Content:
- Keep exactly the same as "[The PDF you just generated/downloaded]"
- Exception in [Slide X]: Be more precise about [Topic A].
- Explain the difference between [Concept A] and [Concept B].</code></code></pre><p><strong>Why this prompt works:</strong></p><ul><li><p><strong>Targeted surgery:</strong> You focus all the model&#8217;s thinking power on just one specific slide rather than diluting its attention across the whole deck.</p></li><li><p><strong>Version control:</strong> You can address specific stakeholder feedback (&#8221;My colleague didn&#8217;t understand the orchestration layer&#8221;) without risking the layout of the rest of the presentation.</p></li></ul><p><strong>The use case example: </strong>For the LinkedIn deck, my draft was good, but it lacked punch. I needed to sharpen the argument against buying off-the-shelf tools and clarify the KPI formula.</p><p>Here is the exact prompt I used to perform that surgical edit:</p><pre><code><code>Sources:
- Use "linkedin-conversation-ads-templates.pdf" for the design of the slides
- Use "Full_Stack_Velocity.pdf" as the document to improve
- Use "LinkedIn_AI_Strategy_Brief.md" for the content reference

Audience:
- The presentation is for the C-level (CPO, CTO) about the Full Stack Builder Strategy.

Goals:
- Explain the current status of the Full Stack Builder model and the next steps.
- Ask for resources for Platform Re-architecture.

Structure and Content:
- Keep exactly the same as "Full_Stack_Velocity.pdf" for most slides.
- Exception in Slide 8 (Tools): Be more precise about the "Trust Agent" and "Growth Agent." Add a comparison: Explain the difference between "Off-the-shelf Copilots" (which lack context and hallucinate) and "Our Custom Agents" (which are trained on our data and processes). This is the key argument for building vs. buying.
- Exception in Slide 10 (Roadmap): In Phase 2, expand on the "Orchestration Layer." Explain the ambition: we are building a system where agents can hand off tasks to each other (e.g., Research Agent passing data to the Coding Agent) without human pasting.
- Exception in Slide 11 (KPIs): Clarify the KPI formula. Explicitly state that "Quality" is included in the numerator to ensure we don't just ship "garbage faster." Label this as our "Velocity vs. Quality Balance" metric.</code></code></pre><p>And it worked. The next result took my feedback into account without changing the rest of the presentation too much:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RGr-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6cd7ce1-fbd6-49e0-9143-f828c52d14ab_3002x1484.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RGr-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6cd7ce1-fbd6-49e0-9143-f828c52d14ab_3002x1484.png 424w, https://substackcdn.com/image/fetch/$s_!RGr-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6cd7ce1-fbd6-49e0-9143-f828c52d14ab_3002x1484.png 848w, https://substackcdn.com/image/fetch/$s_!RGr-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6cd7ce1-fbd6-49e0-9143-f828c52d14ab_3002x1484.png 1272w, https://substackcdn.com/image/fetch/$s_!RGr-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6cd7ce1-fbd6-49e0-9143-f828c52d14ab_3002x1484.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RGr-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6cd7ce1-fbd6-49e0-9143-f828c52d14ab_3002x1484.png" width="1456" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a6cd7ce1-fbd6-49e0-9143-f828c52d14ab_3002x1484.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3038755,&quot;alt&quot;:&quot;Split-screen view in NotebookLM showing the uploaded PDF source open on the left and the matching slide deck output on the right, confirming the layouts are visually consistent.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/182238903?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6cd7ce1-fbd6-49e0-9143-f828c52d14ab_3002x1484.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Split-screen view in NotebookLM showing the uploaded PDF source open on the left and the matching slide deck output on the right, confirming the layouts are visually consistent." title="Split-screen view in NotebookLM showing the uploaded PDF source open on the left and the matching slide deck output on the right, confirming the layouts are visually consistent." srcset="https://substackcdn.com/image/fetch/$s_!RGr-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6cd7ce1-fbd6-49e0-9143-f828c52d14ab_3002x1484.png 424w, https://substackcdn.com/image/fetch/$s_!RGr-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6cd7ce1-fbd6-49e0-9143-f828c52d14ab_3002x1484.png 848w, https://substackcdn.com/image/fetch/$s_!RGr-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6cd7ce1-fbd6-49e0-9143-f828c52d14ab_3002x1484.png 1272w, https://substackcdn.com/image/fetch/$s_!RGr-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6cd7ce1-fbd6-49e0-9143-f828c52d14ab_3002x1484.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">On the left is the frozen PDF source, and on the right is the new iteration; notice how the layout remains identical</figcaption></figure></div><p>That&#8217;s how I obtained the PDF that I shared at the beginning of the article!</p><div><hr></div><h2>When (and when not) to use this workflow</h2><p>Before you go all-in on this tool for slides, you need to understand its limits. NotebookLM is not a replacement for Google Slides; it is a different beast entirely.</p><p><strong>&#9989; When to use NotebookLM for slides:</strong></p><ul><li><p><strong>Vision and strategy:</strong> It excels at presenting concepts, north star visions, and ambitious ideas. The AI in NotebookLM is tuned for storytelling and high creativity.</p></li><li><p><strong>Visual impact:</strong> If you need infographics, diagrams, or layouts that break the standard &#8220;title + 3 bullets&#8221; mold, this is a strong choice.</p></li><li><p><strong>PDF deliverables:</strong> Use this only if the final output is meant to be read (like a pre-read brief) or presented as a static deck.</p></li></ul><p><strong>&#10060; When NOT to use NotebookLM for slides:</strong></p><ul><li><p><strong>Rigid reporting:</strong> Do not use this for quarterly financial reports or data-heavy reviews where precision is non-negotiable. The high creativity dial leads to hallucinations that take too long to fact-check.</p></li><li><p><strong>Collaborative work:</strong> If you need a Google Slides deck that your team can edit later, stop. NotebookLM generates static images (PDFs), not editable text boxes. You cannot fix a typo without regenerating the slide.</p></li><li><p><strong>Simple text decks:</strong> If you just need to convey simple updates, this workflow is overkill. Stick to a memo.</p></li></ul><p><strong>&#9888;&#65039; Warnings:</strong></p><ol><li><p><strong>The pixel prediction effect.</strong> NotebookLM generates slides by predicting pixels, not by drawing vectors. It is closer to Nano Banana than to Google Slides. A slide might look beautiful from a distance, but if you zoom in, you might see artifacts, text that looks slightly melted or pixels that don&#8217;t align perfectly. It creates an image of a slide, not a slide build.</p></li><li><p><strong>The golden rule: read every line.</strong> Because the creativity is dialed up, you must read every single word. The tool will happily invent a strategic pillar that sounds plausible but doesn&#8217;t exist. It generates surprises: sometimes they are brilliant, sometimes they are completely wrong. <strong>You cannot skip the review phase.</strong></p></li></ol><div><hr></div><p><strong>Your turn! </strong>The next time you face a high-stakes presentation, do not open Google Slides. Do not start moving squares and circles around a blank slide. Open a markdown file. Take your strategy document, strip it down to the raw truth, and let NotebookLM handle the pixels. You might just save yourself 4 hours of formatting work.</p>]]></content:encoded></item><item><title><![CDATA[How to convert massive raw data into an AI graph]]></title><description><![CDATA[A hands-on experiment transforming the 4GB Yelp dataset into structured intelligence with Neo4j. We cover everything from batch ingestion and configuration hacks to building AI-powered recommendation.]]></description><link>https://www.theaithinker.com/p/how-to-convert-massive-raw-data-into</link><guid isPermaLink="false">https://www.theaithinker.com/p/how-to-convert-massive-raw-data-into</guid><dc:creator><![CDATA[Adam Faik]]></dc:creator><pubDate>Mon, 15 Dec 2025 12:03:18 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/cc2bff5c-89c8-4110-b3f8-161a2f8e612f_1024x731.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;7e343a2e-ba55-44ad-8dc7-142780584479&quot;,&quot;duration&quot;:null}"></div><p><em>Many thanks to my professor at Sorbonne University, <a href="https://www.linkedin.com/in/ansoumana-cisse-86160227/">Ansoumana Ciss&#233;</a>, for his excellent course and for suggesting this very project.</em></p><div><hr></div><p>We need to talk about the Excel view of the world. As product managers, we are trained to <strong>think in tables</strong>. We have a <strong>Users</strong> table. We have a <strong>Orders</strong> table. If we want to know what a user bought, we mentally draw a line between Row 4 in one sheet and Row 12 in another. We treat products, customers, and data as <strong>isolated islands, sitting in rigid, square cells</strong>.</p><p>But that is not how the world works. And it is certainly not how advanced companies structure their data. Years ago, I saw <a href="https://www.slideshare.net/slideshow/polyglot-persistence-netflix-cde-meetup-90955706/90955706#87">this slide</a> from Netflix explaining their data architecture that changed how I see data. When they visualize their ecosystem, it doesn&#8217;t look like a spreadsheet. It looks like a constellation. It&#8217;s a <strong>spectacular</strong>, <strong>messy</strong>, <strong>interconnected</strong> <strong>galaxy</strong> where an <strong>Asset</strong> is linked to a <strong>Movie</strong>, which is linked to a <strong>Display Set</strong>, which is linked to a <strong>User</strong> who watched it on a Tuesday.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!n9Lv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad120233-52e8-4c72-8c27-7e9d0a05ead1_844x614.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!n9Lv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad120233-52e8-4c72-8c27-7e9d0a05ead1_844x614.png 424w, https://substackcdn.com/image/fetch/$s_!n9Lv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad120233-52e8-4c72-8c27-7e9d0a05ead1_844x614.png 848w, https://substackcdn.com/image/fetch/$s_!n9Lv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad120233-52e8-4c72-8c27-7e9d0a05ead1_844x614.png 1272w, https://substackcdn.com/image/fetch/$s_!n9Lv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad120233-52e8-4c72-8c27-7e9d0a05ead1_844x614.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!n9Lv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad120233-52e8-4c72-8c27-7e9d0a05ead1_844x614.png" width="844" height="614" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ad120233-52e8-4c72-8c27-7e9d0a05ead1_844x614.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:614,&quot;width&quot;:844,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:770061,&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://adamfaik.substack.com/i/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad120233-52e8-4c72-8c27-7e9d0a05ead1_844x614.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_!n9Lv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad120233-52e8-4c72-8c27-7e9d0a05ead1_844x614.png 424w, https://substackcdn.com/image/fetch/$s_!n9Lv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad120233-52e8-4c72-8c27-7e9d0a05ead1_844x614.png 848w, https://substackcdn.com/image/fetch/$s_!n9Lv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad120233-52e8-4c72-8c27-7e9d0a05ead1_844x614.png 1272w, https://substackcdn.com/image/fetch/$s_!n9Lv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad120233-52e8-4c72-8c27-7e9d0a05ead1_844x614.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Netflix&#8217;s digital asset management graph model (<a href="https://www.slideshare.net/slideshow/polyglot-persistence-netflix-cde-meetup-90955706/90955706#87">source</a>)</figcaption></figure></div><p>They don&#8217;t just store data; they store <strong>relationships</strong>.</p><p>This highlighted a disconnect in how many of us build AI-powered products today. We want AI to be <strong>associative</strong>, to <strong>connect the dots like a human brain</strong>, but we store those dots in separate, rigid boxes.</p><p>To understand this architectural shift better, especially as I work on AI initiatives, I wanted to gain first-hand experience. I realized that the best way to understand why a graph might be better than a standard SQL table for AI was to move beyond theory and actually use the technology. So I decided to conduct an experiment using the <strong><a href="https://business.yelp.com/data/resources/open-dataset/">Yelp Open Dataset</a></strong>, a massive collection of over 4GB of <strong>Businesses</strong>, <strong>Users</strong>, <strong>Reviews</strong>, <strong>Tips</strong>, and <strong>Check-ins</strong>. My goal was to ingest this data into <strong><a href="https://neo4j.com/">Neo4j</a></strong> and see if I could build working graph databases on my laptop.</p><p>This article documents the complete end-to-end experiment. From the theoretical basics to the nitty-gritty of execution, here is the path we will take to turn 4GB of raw JSON into a living, thinking graph:</p><ul><li><p><strong><a href="https://www.theaithinker.com/i/180890588/the-fundamentals-what-is-neoj">What is Neo4j?</a></strong> Understanding why we need to move beyond thinking in tables.</p></li><li><p><strong><a href="https://www.theaithinker.com/i/180890588/the-setup-local-vs-cloud">The setup</a>:</strong> Configuring a local instance and preparing the environment.</p></li><li><p><strong><a href="https://www.theaithinker.com/i/180890588/the-data-from-json-to-graph">Data integration</a>:</strong> Strategies for ingesting millions of records without crashing the system.</p></li><li><p><strong><a href="https://www.theaithinker.com/i/180890588/the-sanity-check-first-contact-with-the-graph">The sanity check</a>:</strong> Verifying the plumbing and relationships before running complex queries.</p></li><li><p><strong><a href="https://www.theaithinker.com/i/180890588/the-analysis-queries-to-play-with-the-graph">The analysis</a>: </strong>Stress-testing the graph with 10 queries, moving from simple statistics to complex pattern discovery.</p></li><li><p><strong><a href="https://www.theaithinker.com/i/180890588/the-feature-building-recommendation-prototypes">The recommendation engine</a>:</strong> Prototyping content-based, collaborative, and hybrid algorithms.</p></li><li><p><strong><a href="https://www.theaithinker.com/i/180890588/the-advanced-analytics-unlocking-gds">Going further</a>:</strong> Using Graph Data Science (GDS) to uncover hidden social structures.</p></li><li><p><strong><a href="https://www.theaithinker.com/i/180890588/the-reality-challenges-and-lessons">The reality</a>:</strong> The actual technical hurdles, from memory walls to config hacks, encountered along the way.</p></li><li><p><strong><a href="https://www.theaithinker.com/i/180890588/the-verdict-is-neoj-worth-the-hype">The verdict</a>:</strong> Is Neo4j worth the hype?</p></li></ul><p>Ready to explore what happens when we finally <strong>connect the data</strong>?</p><div><hr></div><h2>The fundamentals: what is Neo4j?</h2><p>When you dig into how companies like LinkedIn map your &#8220;2nd degree connections&#8221; or how Amazon determines &#8220;frequently bought together&#8221; items, you keep hitting the same concept: the graph database. And in that world, <strong><a href="https://neo4j.com/">Neo4j</a></strong> is the heavyweight champion.</p><p>Founded in the 2000s by <a href="https://www.linkedin.com/in/emileifrem/">Emil Eifrem</a>, who actually coined the term &#8220;graph database,&#8221; Neo4j is to graphs what Google is to search. It is the market leader, but it is certainly not the only player in town. Here are three key alternatives worth knowing:</p><ul><li><p><strong><a href="https://aws.amazon.com/neptune/">Amazon Neptune</a>:</strong> A managed graph service that integrates with other AWS tools.</p></li><li><p><strong><a href="https://arango.ai/">ArangoDB</a>:</strong> A multi-model database that handles graphs, documents (JSON), and key-values all in one place.</p></li><li><p><strong><a href="https://www.tigergraph.com/">TigerGraph</a>:</strong> Known for its focus on massive parallel processing, often used for heavy analytics on huge datasets.</p></li></ul><p>So why focus on Neo4j? For a product manager or anyone starting their journey, Neo4j is the standard. It has the largest community, the most <a href="https://neo4j.com/docs/">documentation</a>, and it feels the most approachable for beginners. More importantly, it is currently leading the charge in the <strong>intersection of graphs and generative AI</strong>.</p><p>We know that LLMs have a flaw: <strong>they hallucinate</strong>. They don&#8217;t know facts; they predict the next likely word. To fix this, the industry is moving toward <strong><a href="https://neo4j.com/use-cases/knowledge-graph/">GraphRAG</a></strong>. Instead of feeding an LLM a flat text document, you feed it a knowledge graph, a structured map of true relationships. Neo4j has effectively evolved into the <strong>memory layer for AI</strong>, allowing models to think by hopping from concept to concept, just like a human brain, rather than scanning millions of rows of text.</p><p>To understand why a graph architecture is different, you don&#8217;t need to read code. You just need to understand the difference between a <strong>join</strong> and a <strong>pointer</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_!70xZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e1d4001-5793-4bf7-87d4-813301264300_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!70xZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e1d4001-5793-4bf7-87d4-813301264300_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!70xZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e1d4001-5793-4bf7-87d4-813301264300_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!70xZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e1d4001-5793-4bf7-87d4-813301264300_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!70xZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e1d4001-5793-4bf7-87d4-813301264300_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!70xZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e1d4001-5793-4bf7-87d4-813301264300_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7e1d4001-5793-4bf7-87d4-813301264300_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;:6107305,&quot;alt&quot;:&quot;Diagram comparing slow table lookups in relational databases against fast, direct connections in graph databases.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e1d4001-5793-4bf7-87d4-813301264300_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Diagram comparing slow table lookups in relational databases against fast, direct connections in graph databases." title="Diagram comparing slow table lookups in relational databases against fast, direct connections in graph databases." srcset="https://substackcdn.com/image/fetch/$s_!70xZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e1d4001-5793-4bf7-87d4-813301264300_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!70xZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e1d4001-5793-4bf7-87d4-813301264300_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!70xZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e1d4001-5793-4bf7-87d4-813301264300_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!70xZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e1d4001-5793-4bf7-87d4-813301264300_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Relational joins vs. graph pointers</figcaption></figure></div><ul><li><p><strong>The relational model, the spreadsheet way:</strong> Imagine you want to find &#8220;friends of friends&#8221; in a standard SQL database (like MySQL or Postgres). Data lives in separate tables. To connect a User to their Friends, the database has to perform a JOIN. It takes the user&#8217;s ID, goes to an index (like the back of a textbook), looks up the location of the friend, and then jumps to that table. It does this for every single connection. As your data grows, these hops get <strong>exponentially expensive</strong>. It&#8217;s like trying to trace a family tree, but for every relative, you have to drive back to the city archives to find their address.</p></li><li><p><strong>The graph model, the Neo4j way:</strong> In a graph, there are no tables. There are only <strong>nodes</strong> (the nouns) and <strong>relationships</strong> (the verbs). <strong>Alice</strong> is a Node. <strong>Bob</strong> is a Node. The connection <code>[:IS_FRIENDS_WITH]</code> is a physical pointer connecting them in memory. To find &#8220;friends of friends,&#8221; the database doesn&#8217;t look up an index. It simply <strong>&#8220;walks&#8221;</strong> from Alice to Bob to Charlie. It&#8217;s <strong>instantaneous</strong>. In engineering terms, this is called <strong>index-free adjacency</strong>.</p></li></ul><p>For the AI use cases we care about (recommendation, personalization, and context) relationships are not just metadata; they are <strong>the most valuable part of the dataset</strong>.</p><p>The real payoff of this pointer architecture is <strong>scalability</strong>. In the SQL world, you inevitably hit the <em>O(n)</em> problem: as your tables grow, your indexes grow, and join operations get progressively slower because the database has to scan more data. You effectively pay a <strong>performance tax for every new row you add</strong>. Neo4j avoids this tax completely. Because it follows direct memory pointers, traversing a relationship takes the <strong>same amount of time</strong> whether your database has a thousand nodes or a billion. The performance depends only on the <strong>specific subgraph</strong> you are exploring, not the total volume of data stored.</p><p>That is enough theory. Let&#8217;s move to the practice.</p><div><hr></div><h2>The setup: local vs. cloud</h2><p>Before starting the project, I had to make an infrastructure decision: where does this graph live? In the Neo4j ecosystem, there are two main paths:</p><ul><li><p>The first is <strong><a href="https://neo4j.com/product/auradb/">Neo4j AuraDB</a></strong>, a fully managed cloud service. This is the <strong>happy path</strong>: it handles backups, updates, and scaling for you. For a company building a production product, this is the obvious choice.</p></li><li><p>The second path is <strong><a href="https://neo4j.com/download/">Neo4j Desktop</a></strong>, a local application you install on your machine. This is the <strong>hacker path</strong>. It gives you total control over the database configuration, lets you manipulate memory settings, and runs entirely offline.</p></li></ul><p>For this project, I made a trade-off: While the cloud is easier, the free tier has strict limits on graph size. Since I planned to ingest the massive Yelp dataset (over 10 million nodes and relationships), running this in the cloud would likely require a paid tier. I chose <strong><a href="https://neo4j.com/download/">Neo4j Desktop</a></strong> to <strong>avoid costs</strong> and, more importantly, to force myself to <strong>manage the hardware constraints</strong> directly.</p><p>If you want to follow along with this project, I recommend <strong>starting locally</strong> so you don&#8217;t hit cloud limits with the large Yelp dataset.</p><p>There are four main steps to getting your local environment ready:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6v1O!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7fe4af4-62a2-4c7b-b21b-3588061d8747_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6v1O!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7fe4af4-62a2-4c7b-b21b-3588061d8747_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!6v1O!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7fe4af4-62a2-4c7b-b21b-3588061d8747_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!6v1O!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7fe4af4-62a2-4c7b-b21b-3588061d8747_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!6v1O!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7fe4af4-62a2-4c7b-b21b-3588061d8747_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6v1O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7fe4af4-62a2-4c7b-b21b-3588061d8747_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c7fe4af4-62a2-4c7b-b21b-3588061d8747_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;:5833538,&quot;alt&quot;:&quot;An infographic illustrating the four-step process of setting up Neo4j Desktop: 1. Download the tool from the Neo4j center; 2. Create a local instance by naming it and setting a password; 3. Install the required APOC and GDS plugins; 4. Start the engine, showing the transition from initializing to active status.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7fe4af4-62a2-4c7b-b21b-3588061d8747_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="An infographic illustrating the four-step process of setting up Neo4j Desktop: 1. Download the tool from the Neo4j center; 2. Create a local instance by naming it and setting a password; 3. Install the required APOC and GDS plugins; 4. Start the engine, showing the transition from initializing to active status." title="An infographic illustrating the four-step process of setting up Neo4j Desktop: 1. Download the tool from the Neo4j center; 2. Create a local instance by naming it and setting a password; 3. Install the required APOC and GDS plugins; 4. Start the engine, showing the transition from initializing to active status." srcset="https://substackcdn.com/image/fetch/$s_!6v1O!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7fe4af4-62a2-4c7b-b21b-3588061d8747_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!6v1O!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7fe4af4-62a2-4c7b-b21b-3588061d8747_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!6v1O!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7fe4af4-62a2-4c7b-b21b-3588061d8747_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!6v1O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7fe4af4-62a2-4c7b-b21b-3588061d8747_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Steps required to get your local Neo4j environment up and running</figcaption></figure></div><ul><li><p><strong>Step 1: Download the tool.</strong> Go to the <a href="https://neo4j.com/download/">Neo4j Download Center</a> and download Neo4j Desktop. It&#8217;s free for personal use.</p></li><li><p><strong>Step 2: Create a local instance.</strong> Once you open the app, you need to create a new instance. Click on <strong>Create instance</strong>. You will be asked to name your instance (I called mine &#8220;YelpProject&#8221;) and define a password. <strong>Important:</strong> Write this password down. You cannot recover it easily, and you will need it every time you connect.</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_!oJsV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F330ef3da-1b8e-4d1f-ab08-755943384dd1_3248x1962.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oJsV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F330ef3da-1b8e-4d1f-ab08-755943384dd1_3248x1962.png 424w, https://substackcdn.com/image/fetch/$s_!oJsV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F330ef3da-1b8e-4d1f-ab08-755943384dd1_3248x1962.png 848w, https://substackcdn.com/image/fetch/$s_!oJsV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F330ef3da-1b8e-4d1f-ab08-755943384dd1_3248x1962.png 1272w, https://substackcdn.com/image/fetch/$s_!oJsV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F330ef3da-1b8e-4d1f-ab08-755943384dd1_3248x1962.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oJsV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F330ef3da-1b8e-4d1f-ab08-755943384dd1_3248x1962.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/330ef3da-1b8e-4d1f-ab08-755943384dd1_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;:613872,&quot;alt&quot;:&quot;The \&quot;Create Instance\&quot; modal in Neo4j Desktop showing fields for Instance Name, Version, and 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/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F330ef3da-1b8e-4d1f-ab08-755943384dd1_3248x1962.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The &quot;Create Instance&quot; modal in Neo4j Desktop showing fields for Instance Name, Version, and Password." title="The &quot;Create Instance&quot; modal in Neo4j Desktop showing fields for Instance Name, Version, and Password." srcset="https://substackcdn.com/image/fetch/$s_!oJsV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F330ef3da-1b8e-4d1f-ab08-755943384dd1_3248x1962.png 424w, https://substackcdn.com/image/fetch/$s_!oJsV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F330ef3da-1b8e-4d1f-ab08-755943384dd1_3248x1962.png 848w, https://substackcdn.com/image/fetch/$s_!oJsV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F330ef3da-1b8e-4d1f-ab08-755943384dd1_3248x1962.png 1272w, https://substackcdn.com/image/fetch/$s_!oJsV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F330ef3da-1b8e-4d1f-ab08-755943384dd1_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Creating a new local Neo4j instance is as simple as naming it and setting a password</figcaption></figure></div><ul><li><p><strong>Step 3: Install the plugins.</strong> We need to install two critical plugins: think of these as the Excel macros of the graph world:</p><ul><li><p><strong>APOC (Awesome Procedures on Cypher):</strong> A utility library that lets us import complex JSON files.</p></li><li><p><strong>GDS (Graph Data Science):</strong> The powerhouse library containing the AI algorithms like PageRank.</p></li></ul><p>Click on your new instance (don&#8217;t start it yet), go to the <strong>Plugins</strong> tab on the right, and click <strong>Install</strong> for both APOC and Graph Data Science Library.</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_!Qoql!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdbc4ffc-7de3-482b-bedb-67fc09c4fa1a_3248x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Qoql!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdbc4ffc-7de3-482b-bedb-67fc09c4fa1a_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!Qoql!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdbc4ffc-7de3-482b-bedb-67fc09c4fa1a_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!Qoql!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdbc4ffc-7de3-482b-bedb-67fc09c4fa1a_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!Qoql!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdbc4ffc-7de3-482b-bedb-67fc09c4fa1a_3248x1964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Qoql!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdbc4ffc-7de3-482b-bedb-67fc09c4fa1a_3248x1964.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fdbc4ffc-7de3-482b-bedb-67fc09c4fa1a_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;:1027839,&quot;alt&quot;:&quot;The Neo4j Desktop interface showing the Plugins tab with green &#8220;Installed&#8221; checkmarks next to APOC and Graph Data Science&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdbc4ffc-7de3-482b-bedb-67fc09c4fa1a_3248x1964.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Neo4j Desktop interface showing the Plugins tab with green &#8220;Installed&#8221; checkmarks next to APOC and Graph Data Science" title="The Neo4j Desktop interface showing the Plugins tab with green &#8220;Installed&#8221; checkmarks next to APOC and Graph Data Science" srcset="https://substackcdn.com/image/fetch/$s_!Qoql!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdbc4ffc-7de3-482b-bedb-67fc09c4fa1a_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!Qoql!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdbc4ffc-7de3-482b-bedb-67fc09c4fa1a_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!Qoql!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdbc4ffc-7de3-482b-bedb-67fc09c4fa1a_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!Qoql!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdbc4ffc-7de3-482b-bedb-67fc09c4fa1a_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The &#8220;Plugins&#8221; tab showing APOC and GDS installed</figcaption></figure></div><ul><li><p><strong>Step 4: Start the engine. </strong>Click Start. It might take a few seconds to initialize the graph engine. Once the status turns green, the empty graph brain is ready to learn.</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_!fQRQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff93a4eab-a0c3-4811-b2d9-2b0b793a104f_3248x1962.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fQRQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff93a4eab-a0c3-4811-b2d9-2b0b793a104f_3248x1962.png 424w, https://substackcdn.com/image/fetch/$s_!fQRQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff93a4eab-a0c3-4811-b2d9-2b0b793a104f_3248x1962.png 848w, https://substackcdn.com/image/fetch/$s_!fQRQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff93a4eab-a0c3-4811-b2d9-2b0b793a104f_3248x1962.png 1272w, https://substackcdn.com/image/fetch/$s_!fQRQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff93a4eab-a0c3-4811-b2d9-2b0b793a104f_3248x1962.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fQRQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff93a4eab-a0c3-4811-b2d9-2b0b793a104f_3248x1962.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f93a4eab-a0c3-4811-b2d9-2b0b793a104f_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;:429787,&quot;alt&quot;:&quot;Neo4j Desktop interface showing the \&quot;YelpProject\&quot; instance with a green \&quot;Running\&quot; status indicator.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff93a4eab-a0c3-4811-b2d9-2b0b793a104f_3248x1962.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Neo4j Desktop interface showing the &quot;YelpProject&quot; instance with a green &quot;Running&quot; status indicator." title="Neo4j Desktop interface showing the &quot;YelpProject&quot; instance with a green &quot;Running&quot; status indicator." srcset="https://substackcdn.com/image/fetch/$s_!fQRQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff93a4eab-a0c3-4811-b2d9-2b0b793a104f_3248x1962.png 424w, https://substackcdn.com/image/fetch/$s_!fQRQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff93a4eab-a0c3-4811-b2d9-2b0b793a104f_3248x1962.png 848w, https://substackcdn.com/image/fetch/$s_!fQRQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff93a4eab-a0c3-4811-b2d9-2b0b793a104f_3248x1962.png 1272w, https://substackcdn.com/image/fetch/$s_!fQRQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff93a4eab-a0c3-4811-b2d9-2b0b793a104f_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Once the instance status shows &#8220;Running,&#8221; the database is active and ready for data ingestion.</figcaption></figure></div><p>The infrastructure is built. Now, we need a dataset worthy of it!</p><div><hr></div><h2>The data: from JSON to graph</h2><p>For this experiment, I didn&#8217;t want to play with a toy dataset of 50 rows. I wanted real-world chaos. I chose the <strong><a href="https://business.yelp.com/data/resources/open-dataset/">Yelp Open Dataset</a></strong>, a massive 4GB+ collection of user-generated content.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JqnE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38bd1244-78c0-426e-b066-22f4c2a4fa7e_2980x1400.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JqnE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38bd1244-78c0-426e-b066-22f4c2a4fa7e_2980x1400.png 424w, https://substackcdn.com/image/fetch/$s_!JqnE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38bd1244-78c0-426e-b066-22f4c2a4fa7e_2980x1400.png 848w, https://substackcdn.com/image/fetch/$s_!JqnE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38bd1244-78c0-426e-b066-22f4c2a4fa7e_2980x1400.png 1272w, https://substackcdn.com/image/fetch/$s_!JqnE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38bd1244-78c0-426e-b066-22f4c2a4fa7e_2980x1400.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JqnE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38bd1244-78c0-426e-b066-22f4c2a4fa7e_2980x1400.png" width="1456" height="684" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/38bd1244-78c0-426e-b066-22f4c2a4fa7e_2980x1400.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:684,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:354844,&quot;alt&quot;:&quot;Yelp Open Dataset landing page displaying metrics like 6.9 million reviews and 150,346 businesses.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38bd1244-78c0-426e-b066-22f4c2a4fa7e_2980x1400.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Yelp Open Dataset landing page displaying metrics like 6.9 million reviews and 150,346 businesses." title="Yelp Open Dataset landing page displaying metrics like 6.9 million reviews and 150,346 businesses." srcset="https://substackcdn.com/image/fetch/$s_!JqnE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38bd1244-78c0-426e-b066-22f4c2a4fa7e_2980x1400.png 424w, https://substackcdn.com/image/fetch/$s_!JqnE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38bd1244-78c0-426e-b066-22f4c2a4fa7e_2980x1400.png 848w, https://substackcdn.com/image/fetch/$s_!JqnE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38bd1244-78c0-426e-b066-22f4c2a4fa7e_2980x1400.png 1272w, https://substackcdn.com/image/fetch/$s_!JqnE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38bd1244-78c0-426e-b066-22f4c2a4fa7e_2980x1400.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The <a href="https://business.yelp.com/data/resources/open-dataset/">Yelp Open Dataset</a> offers a massive, real-world sandbox (4GB+) for testing graph algorithms</figcaption></figure></div><p>Functionally, Yelp is simple: <strong>Users</strong> write <strong>Reviews</strong> for <strong>Businesses</strong>. But structurally, it is rich with context. It includes <strong>Tips</strong> (short timestamps), <strong>Check-ins</strong> (traffic signals), and <strong>Categories</strong> (taxonomies).</p><p>If this were a SQL project, I would be worrying about foreign keys and join tables. In Neo4j, I just had to visualize the sentence:</p><blockquote><p>A <strong>User</strong> WROTE a <strong>Review</strong> about a <strong>Business</strong>.</p></blockquote><p>That sentence became my schema: </p><blockquote><p><code>(User)-[:WROTE]-&gt;(Review)-[:REVIEWS]-&gt;(Business)</code></p></blockquote><p>To make this schema a reality, we use <strong><a href="https://en.wikipedia.org/wiki/Cypher_(query_language)">Cypher</a></strong>, Neo4j&#8217;s query language. Invented in 2011 by Andr&#233;s Taylor, an engineer at Neo4j, Cypher was designed to solve a specific pain point: <strong>SQL is terrible at describing connections</strong>. In SQL, if you want to find &#8220;friends of friends,&#8221; you have to write complex <code>JOIN</code> statements that are hard to read and slow to run.</p><p>Cypher is different because it is <strong>declarative</strong> and <strong>visual</strong>. It was inspired by <strong><a href="https://en.wikipedia.org/wiki/ASCII_art">ASCII art</a></strong>, the way engineers used to draw diagrams in code comments.</p><p>The basic rules of Cypher are:</p><ul><li><p><strong>Nodes are circles:</strong> <code>(u:User)</code> looks like a circle.</p></li><li><p><strong>Relationships are Arrows:</strong> <code>-[:WROTE]-&gt;</code> looks like an arrow.</p></li><li><p><strong>Properties are JSON-like:</strong> <code>{name: &#8220;Ed&#8221;}</code> adds detail.</p></li></ul><p>So, instead of writing 10 lines of SQL Joins, you just draw the pattern you want to match: <code>(User)-[:WROTE]-&gt;(Review)</code></p><p>As a product manager, you don&#8217;t need to be a syntax expert to use Cypher; you just need to be <strong>a logic expert</strong>. Because the code looks like the whiteboard diagram, the gap between product requirement and database query disappears.</p><p>For my part, I didn&#8217;t even write the code from scratch. <strong>I prompted Gemini</strong>: &#8220;Here is the JSON structure of the Yelp dataset. Write me a Cypher import script to create nodes and relationships.&#8221; I was genuinely surprised by how effective Gemini was at writing this specific language. Even though Cypher is less common than SQL, <strong>Gemini generated scripts</strong> that work. This bridge allows anyone to <strong>focus on the logic</strong> of the graph without getting stuck on syntax errors. By the way, if you want to get up to speed quickly, just ask Gemini for a &#8220;<strong>Cypher cheat sheet</strong>,&#8221; it is the perfect primer to help you read and verify the scripts before you run them.</p><p>Let&#8217;s get back to our use case. When you unzip the Yelp Open Dataset, you aren&#8217;t just greeted by data. You get a <strong>PDF documentation file</strong> explaining the structure. Inside, you will find several massive JSON files. We don&#8217;t need everything. We need to focus on the three files that form the core of the Yelp experience:</p><ul><li><p><code>yelp_academic_dataset_business.json</code><strong>:</strong> This lists the places. It contains the <code>business_id</code>, <code>name</code> (e.g., &#8220;Garaje&#8221;), <code>city</code>, and crucially, <code>categories</code>. In the raw JSON, categories appear as a string list like <em>&#8220;Mexican, Burgers, Gastropubs&#8221;</em>. In our graph, we won&#8217;t just store this as text; we will split them into separate <strong>Category</strong> nodes so we can find connections between different restaurants.</p></li><li><p><code>yelp_academic_dataset_user.json</code><strong>:</strong> This lists the people. It contains the <code>user_id</code>, <code>name</code>, and their social network stats.</p></li><li><p><code>yelp_academic_dataset_review.json</code><strong>:</strong> This is the connector. It bridges the gap, containing a <code>user_id</code> (who wrote it), a <code>business_id</code> (who it is about), the <code>stars</code>, and the <code>text</code>.</p></li></ul><p>We have the raw JSON files, but how do we structure them? The beauty of graph modeling is that <strong>the schema often mirrors plain English</strong>. To define the connections, I simply visualized the core interaction of the platform:</p><blockquote><p>A <strong>User</strong> WROTE a <strong>Review</strong> about a <strong>Business</strong> that is IN_CATEGORY a <strong>Category</strong>.</p></blockquote><p>That simple sentence became my schema. Instead of tables, we define <strong>Nodes</strong> (the nouns) and <strong>Relationships</strong> (the verbs).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!d3wh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb59e5478-5f0e-4407-98c0-4a8bf5ee71bc_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!d3wh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb59e5478-5f0e-4407-98c0-4a8bf5ee71bc_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!d3wh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb59e5478-5f0e-4407-98c0-4a8bf5ee71bc_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!d3wh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb59e5478-5f0e-4407-98c0-4a8bf5ee71bc_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!d3wh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb59e5478-5f0e-4407-98c0-4a8bf5ee71bc_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!d3wh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb59e5478-5f0e-4407-98c0-4a8bf5ee71bc_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b59e5478-5f0e-4407-98c0-4a8bf5ee71bc_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;:5771314,&quot;alt&quot;:&quot;A hand-drawn schema diagram showing four circular nodes. A &#8216;User&#8217; node connects via a &#8216;WROTE&#8217; arrow to a &#8216;Review&#8217; node. The &#8216;Review&#8217; node connects via a &#8216;REVIEWS&#8217; arrow to a &#8216;Business&#8217; node. The &#8216;Business&#8217; node connects via an &#8216;IN_CATEGORY&#8217; arrow to a &#8216;Category&#8217; node. Key properties like IDs and names are listed in callout boxes next to each node.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb59e5478-5f0e-4407-98c0-4a8bf5ee71bc_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A hand-drawn schema diagram showing four circular nodes. A &#8216;User&#8217; node connects via a &#8216;WROTE&#8217; arrow to a &#8216;Review&#8217; node. The &#8216;Review&#8217; node connects via a &#8216;REVIEWS&#8217; arrow to a &#8216;Business&#8217; node. The &#8216;Business&#8217; node connects via an &#8216;IN_CATEGORY&#8217; arrow to a &#8216;Category&#8217; node. Key properties like IDs and names are listed in callout boxes next to each node." title="A hand-drawn schema diagram showing four circular nodes. A &#8216;User&#8217; node connects via a &#8216;WROTE&#8217; arrow to a &#8216;Review&#8217; node. The &#8216;Review&#8217; node connects via a &#8216;REVIEWS&#8217; arrow to a &#8216;Business&#8217; node. The &#8216;Business&#8217; node connects via an &#8216;IN_CATEGORY&#8217; arrow to a &#8216;Category&#8217; node. Key properties like IDs and names are listed in callout boxes next to each node." srcset="https://substackcdn.com/image/fetch/$s_!d3wh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb59e5478-5f0e-4407-98c0-4a8bf5ee71bc_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!d3wh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb59e5478-5f0e-4407-98c0-4a8bf5ee71bc_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!d3wh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb59e5478-5f0e-4407-98c0-4a8bf5ee71bc_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!d3wh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb59e5478-5f0e-4407-98c0-4a8bf5ee71bc_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The target schema: Mapping data into four nodes (User, Review, Business, Category) linked by action-oriented relationships</figcaption></figure></div><p>With this blueprint in mind, we can move to the practical steps.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0n71!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b9c51bc-f246-48ea-b2ec-d8e0bc148e7e_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0n71!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b9c51bc-f246-48ea-b2ec-d8e0bc148e7e_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!0n71!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b9c51bc-f246-48ea-b2ec-d8e0bc148e7e_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!0n71!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b9c51bc-f246-48ea-b2ec-d8e0bc148e7e_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!0n71!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b9c51bc-f246-48ea-b2ec-d8e0bc148e7e_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0n71!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b9c51bc-f246-48ea-b2ec-d8e0bc148e7e_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4b9c51bc-f246-48ea-b2ec-d8e0bc148e7e_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;:6271462,&quot;alt&quot;:&quot;An infographic illustrating the four stages of importing data into Neo4j: 1. Downloading the Yelp dataset; 2. Placing files in the secure import folder; 3. Setting up unique constraints; 4. Using APOC batch processing to load data without memory errors.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b9c51bc-f246-48ea-b2ec-d8e0bc148e7e_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="An infographic illustrating the four stages of importing data into Neo4j: 1. Downloading the Yelp dataset; 2. Placing files in the secure import folder; 3. Setting up unique constraints; 4. Using APOC batch processing to load data without memory errors." title="An infographic illustrating the four stages of importing data into Neo4j: 1. Downloading the Yelp dataset; 2. Placing files in the secure import folder; 3. Setting up unique constraints; 4. Using APOC batch processing to load data without memory errors." srcset="https://substackcdn.com/image/fetch/$s_!0n71!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b9c51bc-f246-48ea-b2ec-d8e0bc148e7e_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!0n71!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b9c51bc-f246-48ea-b2ec-d8e0bc148e7e_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!0n71!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b9c51bc-f246-48ea-b2ec-d8e0bc148e7e_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!0n71!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b9c51bc-f246-48ea-b2ec-d8e0bc148e7e_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Steps required for the data ingestion process</figcaption></figure></div><ul><li><p><strong>Step 1: Get the data.</strong> Download the JSON version of the <a href="https://business.yelp.com/data/resources/open-dataset/">Yelp Open Dataset</a>. Unzip it. You will see huge files like <code>yelp_academic_dataset_review.json</code>.</p></li><li><p><strong>Step 2: The &#8220;import&#8221; folder. </strong>Neo4j Desktop has a strict security feature: it can only read files from a specific folder.</p><ul><li><p>Hover over your Project name in Neo4j Desktop.</p></li><li><p>Click the <strong>three dots (...)</strong> &#8594; <strong>Open</strong> &#8594; <strong>Instance folder</strong>.</p></li><li><p>Drag your JSON files into this folder.</p></li></ul></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_!5yuU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa16ddb92-8dd5-4acb-bc1c-27340ea71b62_3248x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5yuU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa16ddb92-8dd5-4acb-bc1c-27340ea71b62_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!5yuU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa16ddb92-8dd5-4acb-bc1c-27340ea71b62_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!5yuU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa16ddb92-8dd5-4acb-bc1c-27340ea71b62_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!5yuU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa16ddb92-8dd5-4acb-bc1c-27340ea71b62_3248x1964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5yuU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa16ddb92-8dd5-4acb-bc1c-27340ea71b62_3248x1964.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a16ddb92-8dd5-4acb-bc1c-27340ea71b62_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;:744470,&quot;alt&quot;:&quot;Neo4j Desktop interface showing the dropdown menu with the \&quot;Open Instance folder\&quot; 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/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa16ddb92-8dd5-4acb-bc1c-27340ea71b62_3248x1964.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Neo4j Desktop interface showing the dropdown menu with the &quot;Open Instance folder&quot; option selected." title="Neo4j Desktop interface showing the dropdown menu with the &quot;Open Instance folder&quot; option selected." srcset="https://substackcdn.com/image/fetch/$s_!5yuU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa16ddb92-8dd5-4acb-bc1c-27340ea71b62_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!5yuU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa16ddb92-8dd5-4acb-bc1c-27340ea71b62_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!5yuU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa16ddb92-8dd5-4acb-bc1c-27340ea71b62_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!5yuU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa16ddb92-8dd5-4acb-bc1c-27340ea71b62_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">You must open the specific &#8220;Instance folder&#8221; via the database menu to add files</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_!6wo7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a3f93a9-4709-46e6-8d3f-2e240537fea5_2064x1096.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6wo7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a3f93a9-4709-46e6-8d3f-2e240537fea5_2064x1096.png 424w, https://substackcdn.com/image/fetch/$s_!6wo7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a3f93a9-4709-46e6-8d3f-2e240537fea5_2064x1096.png 848w, https://substackcdn.com/image/fetch/$s_!6wo7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a3f93a9-4709-46e6-8d3f-2e240537fea5_2064x1096.png 1272w, https://substackcdn.com/image/fetch/$s_!6wo7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a3f93a9-4709-46e6-8d3f-2e240537fea5_2064x1096.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6wo7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a3f93a9-4709-46e6-8d3f-2e240537fea5_2064x1096.png" width="1456" height="773" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3a3f93a9-4709-46e6-8d3f-2e240537fea5_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;:595011,&quot;alt&quot;:&quot;File explorer window showing the Neo4j import directory populated with the yelp_academic_dataset JSON 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/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a3f93a9-4709-46e6-8d3f-2e240537fea5_2064x1096.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="File explorer window showing the Neo4j import directory populated with the yelp_academic_dataset JSON files." title="File explorer window showing the Neo4j import directory populated with the yelp_academic_dataset JSON files." srcset="https://substackcdn.com/image/fetch/$s_!6wo7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a3f93a9-4709-46e6-8d3f-2e240537fea5_2064x1096.png 424w, https://substackcdn.com/image/fetch/$s_!6wo7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a3f93a9-4709-46e6-8d3f-2e240537fea5_2064x1096.png 848w, https://substackcdn.com/image/fetch/$s_!6wo7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a3f93a9-4709-46e6-8d3f-2e240537fea5_2064x1096.png 1272w, https://substackcdn.com/image/fetch/$s_!6wo7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a3f93a9-4709-46e6-8d3f-2e240537fea5_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Drag and drop your unzipped Yelp JSON files directly into the <code>import</code> directory within that folder</figcaption></figure></div><ul><li><p><strong>Step 3: The constraints. </strong>Before we load data, we must tell the database what makes a node unique. If we don&#8217;t, Neo4j will scan the entire database every time we add a user to check if they already exist. This is slow. Run this Cypher code in the query bar to create unique constraints: think of these as the bouncers at the door checking IDs.</p></li></ul><pre><code><code>CREATE CONSTRAINT FOR (b:Business) REQUIRE b.id IS UNIQUE;
CREATE CONSTRAINT FOR (u:User) REQUIRE u.id IS UNIQUE;
CREATE CONSTRAINT FOR (r:Review) REQUIRE r.id IS UNIQUE;
CREATE CONSTRAINT FOR (c:Category) REQUIRE c.name IS UNIQUE;</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oeG7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed93c97d-996f-44ef-be7a-f0d80e848eff_3248x1962.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oeG7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed93c97d-996f-44ef-be7a-f0d80e848eff_3248x1962.png 424w, https://substackcdn.com/image/fetch/$s_!oeG7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed93c97d-996f-44ef-be7a-f0d80e848eff_3248x1962.png 848w, https://substackcdn.com/image/fetch/$s_!oeG7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed93c97d-996f-44ef-be7a-f0d80e848eff_3248x1962.png 1272w, https://substackcdn.com/image/fetch/$s_!oeG7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed93c97d-996f-44ef-be7a-f0d80e848eff_3248x1962.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oeG7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed93c97d-996f-44ef-be7a-f0d80e848eff_3248x1962.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ed93c97d-996f-44ef-be7a-f0d80e848eff_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;:753765,&quot;alt&quot;:&quot;Neo4j Desktop query interface displaying four green success messages confirming the creation of unique constraints for Business, User, Review, and Category nodes.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed93c97d-996f-44ef-be7a-f0d80e848eff_3248x1962.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Neo4j Desktop query interface displaying four green success messages confirming the creation of unique constraints for Business, User, Review, and Category nodes." title="Neo4j Desktop query interface displaying four green success messages confirming the creation of unique constraints for Business, User, Review, and Category nodes." srcset="https://substackcdn.com/image/fetch/$s_!oeG7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed93c97d-996f-44ef-be7a-f0d80e848eff_3248x1962.png 424w, https://substackcdn.com/image/fetch/$s_!oeG7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed93c97d-996f-44ef-be7a-f0d80e848eff_3248x1962.png 848w, https://substackcdn.com/image/fetch/$s_!oeG7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed93c97d-996f-44ef-be7a-f0d80e848eff_3248x1962.png 1272w, https://substackcdn.com/image/fetch/$s_!oeG7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed93c97d-996f-44ef-be7a-f0d80e848eff_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Defining unique constraints is the critical step that ensures data integrity and speeds up the import process</figcaption></figure></div><ul><li><p><strong>Step 4: The batch import. </strong>This was my first big hurdle. If you try to load 4GB JSON files in one go, your RAM will overflow, and Neo4j will crash. The solution is to use the <strong>APOC</strong> plugin we installed earlier. Specifically, we use a function called <code>apoc.periodic.iterate</code>. Think of this as a factory conveyor belt: instead of dumping the whole truckload of data onto the floor at once, it processes the data in small batches (e.g., 10,000 records at a time). This keeps the memory usage low and stable. We need to import the data in a specific order: first the <strong>nouns</strong> (Businesses, Users), and then the <strong>verbs</strong> (Reviews) that connect them.</p></li></ul><p>Time to load. We will run these scripts <strong>one by one</strong>. When you execute them, you won&#8217;t see a live counter, just a loading spinner. Be patient. When it finishes, you will see a <strong>result table</strong> confirming the number of batches processed. Once you see the <strong>green checkmark</strong>, you are safe to move to the next step.</p><p><strong>1. Importing Businesses (and Categories).</strong> First, we create the places. The Yelp dataset hides categories (like &#8220;Mexican&#8221; or &#8220;Bar&#8221;) inside the Business file as a comma-separated string. We need to split that string and create distinct Category nodes on the fly.</p><pre><code>CALL apoc.periodic.iterate(
  &#8220;CALL apoc.load.json(&#8217;file:///yelp_academic_dataset_business.json&#8217;) YIELD value RETURN value&#8221;,
  &#8220;MERGE (b:Business {id: value.business_id})
   SET b.name = value.name,
       b.address = value.address,
       b.city = value.city,
       b.state = value.state,
       b.stars = value.stars,
       b.review_count = value.review_count,
       b.is_open = value.is_open
   WITH b, value
   WHERE value.categories IS NOT NULL
   UNWIND split(value.categories, &#8216;, &#8216;) AS catName
   MERGE (c:Category {name: catName})
   MERGE (b)-[:IN_CATEGORY]-&gt;(c)&#8221;,
  {batchSize: 10000, parallel: false}
);</code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!V2LA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F958c415a-deb2-4008-99ff-9fbf03e7c44e_3248x1962.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!V2LA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F958c415a-deb2-4008-99ff-9fbf03e7c44e_3248x1962.png 424w, https://substackcdn.com/image/fetch/$s_!V2LA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F958c415a-deb2-4008-99ff-9fbf03e7c44e_3248x1962.png 848w, https://substackcdn.com/image/fetch/$s_!V2LA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F958c415a-deb2-4008-99ff-9fbf03e7c44e_3248x1962.png 1272w, https://substackcdn.com/image/fetch/$s_!V2LA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F958c415a-deb2-4008-99ff-9fbf03e7c44e_3248x1962.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!V2LA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F958c415a-deb2-4008-99ff-9fbf03e7c44e_3248x1962.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/958c415a-deb2-4008-99ff-9fbf03e7c44e_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;:731489,&quot;alt&quot;:&quot;Neo4j query interface showing the successful execution of the Business import script, with the result summary table indicating 150,346 committed operations.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F958c415a-deb2-4008-99ff-9fbf03e7c44e_3248x1962.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Neo4j query interface showing the successful execution of the Business import script, with the result summary table indicating 150,346 committed operations." title="Neo4j query interface showing the successful execution of the Business import script, with the result summary table indicating 150,346 committed operations." srcset="https://substackcdn.com/image/fetch/$s_!V2LA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F958c415a-deb2-4008-99ff-9fbf03e7c44e_3248x1962.png 424w, https://substackcdn.com/image/fetch/$s_!V2LA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F958c415a-deb2-4008-99ff-9fbf03e7c44e_3248x1962.png 848w, https://substackcdn.com/image/fetch/$s_!V2LA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F958c415a-deb2-4008-99ff-9fbf03e7c44e_3248x1962.png 1272w, https://substackcdn.com/image/fetch/$s_!V2LA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F958c415a-deb2-4008-99ff-9fbf03e7c44e_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Importing 150,000+ businesses and unwinding their categories into connected nodes took about 17 seconds</figcaption></figure></div><p><strong>2. Importing Users:</strong> Next, we import the people. This is a larger file (nearly 2 million users), so the batching strategy is critical here. We map the user_id and their name.</p><pre><code>CALL apoc.periodic.iterate(
  &#8220;CALL apoc.load.json(&#8217;file:///yelp_academic_dataset_user.json&#8217;) YIELD value RETURN value&#8221;,
  &#8220;MERGE (u:User {id: value.user_id})
   SET u.name = value.name,
       u.review_count = value.review_count,
       u.yelping_since = value.yelping_since,
       u.average_stars = value.average_stars&#8221;,
  {batchSize: 10000, parallel: true}
);</code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Yi8X!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F735a6274-7323-4b37-a8b9-b498aa4b0339_3248x1962.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Yi8X!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F735a6274-7323-4b37-a8b9-b498aa4b0339_3248x1962.png 424w, https://substackcdn.com/image/fetch/$s_!Yi8X!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F735a6274-7323-4b37-a8b9-b498aa4b0339_3248x1962.png 848w, https://substackcdn.com/image/fetch/$s_!Yi8X!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F735a6274-7323-4b37-a8b9-b498aa4b0339_3248x1962.png 1272w, https://substackcdn.com/image/fetch/$s_!Yi8X!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F735a6274-7323-4b37-a8b9-b498aa4b0339_3248x1962.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Yi8X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F735a6274-7323-4b37-a8b9-b498aa4b0339_3248x1962.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/735a6274-7323-4b37-a8b9-b498aa4b0339_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;:792133,&quot;alt&quot;:&quot;Neo4j query results showing the User import script completed in 33 seconds, creating 1,987,897 user nodes.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F735a6274-7323-4b37-a8b9-b498aa4b0339_3248x1962.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Neo4j query results showing the User import script completed in 33 seconds, creating 1,987,897 user nodes." title="Neo4j query results showing the User import script completed in 33 seconds, creating 1,987,897 user nodes." srcset="https://substackcdn.com/image/fetch/$s_!Yi8X!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F735a6274-7323-4b37-a8b9-b498aa4b0339_3248x1962.png 424w, https://substackcdn.com/image/fetch/$s_!Yi8X!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F735a6274-7323-4b37-a8b9-b498aa4b0339_3248x1962.png 848w, https://substackcdn.com/image/fetch/$s_!Yi8X!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F735a6274-7323-4b37-a8b9-b498aa4b0339_3248x1962.png 1272w, https://substackcdn.com/image/fetch/$s_!Yi8X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F735a6274-7323-4b37-a8b9-b498aa4b0339_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Successfully processing nearly 2 million User profiles using a batch size of 10,000 to manage memory</figcaption></figure></div><p><strong>3. Importing Reviews (the connector). </strong>This is the heavy lifting. The Review file contains nearly 7 million records. For every single review, the database has to:</p><ul><li><p>Find the User (who wrote it).</p></li><li><p>Find the Business (being reviewed).</p></li><li><p>Create the Review node.</p></li><li><p>Draw the arrows: (User)-[:WROTE]-&gt;(Review)-[:REVIEWS]-&gt;(Business).</p></li></ul><pre><code>CALL apoc.periodic.iterate(
  &#8220;CALL apoc.load.json(&#8217;file:///yelp_academic_dataset_review.json&#8217;) YIELD value RETURN value&#8221;,
  &#8220;MATCH (u:User {id: value.user_id})
   MATCH (b:Business {id: value.business_id})
   MERGE (r:Review {id: value.review_id})
   SET r.stars = value.stars,
       r.date = value.date,
       r.text = value.text,
       r.useful = value.useful,
       r.funny = value.funny,
       r.cool = value.cool
   MERGE (u)-[:WROTE]-&gt;(r)
   MERGE (r)-[:REVIEWS]-&gt;(b)&#8221;,
  {batchSize: 5000, parallel: false}
);</code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZbWZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa04f4223-600d-437c-86fb-3d3d36cd09ad_3248x1962.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZbWZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa04f4223-600d-437c-86fb-3d3d36cd09ad_3248x1962.png 424w, https://substackcdn.com/image/fetch/$s_!ZbWZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa04f4223-600d-437c-86fb-3d3d36cd09ad_3248x1962.png 848w, https://substackcdn.com/image/fetch/$s_!ZbWZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa04f4223-600d-437c-86fb-3d3d36cd09ad_3248x1962.png 1272w, https://substackcdn.com/image/fetch/$s_!ZbWZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa04f4223-600d-437c-86fb-3d3d36cd09ad_3248x1962.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZbWZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa04f4223-600d-437c-86fb-3d3d36cd09ad_3248x1962.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a04f4223-600d-437c-86fb-3d3d36cd09ad_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;:682275,&quot;alt&quot;:&quot;Neo4j result window showing the massive Review import completion with 6,990,280 committed operations.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa04f4223-600d-437c-86fb-3d3d36cd09ad_3248x1962.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Neo4j result window showing the massive Review import completion with 6,990,280 committed operations." title="Neo4j result window showing the massive Review import completion with 6,990,280 committed operations." srcset="https://substackcdn.com/image/fetch/$s_!ZbWZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa04f4223-600d-437c-86fb-3d3d36cd09ad_3248x1962.png 424w, https://substackcdn.com/image/fetch/$s_!ZbWZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa04f4223-600d-437c-86fb-3d3d36cd09ad_3248x1962.png 848w, https://substackcdn.com/image/fetch/$s_!ZbWZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa04f4223-600d-437c-86fb-3d3d36cd09ad_3248x1962.png 1272w, https://substackcdn.com/image/fetch/$s_!ZbWZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa04f4223-600d-437c-86fb-3d3d36cd09ad_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The final and largest step: ingesting 6.9 million reviews and linking them to users and businesses took about 8 minutes</figcaption></figure></div><ul><li><p><strong>Step 5: Verify the graph. </strong>Once the loading bars finish, you need to verify the connections. Run a simple query to visualize the schema.</p></li></ul><pre><code><code>CALL apoc.meta.stats() YIELD labels, relTypesCount</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ImAi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5803408-bd7c-45a1-ae26-c3f6cc74053b_3248x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ImAi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5803408-bd7c-45a1-ae26-c3f6cc74053b_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!ImAi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5803408-bd7c-45a1-ae26-c3f6cc74053b_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!ImAi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5803408-bd7c-45a1-ae26-c3f6cc74053b_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!ImAi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5803408-bd7c-45a1-ae26-c3f6cc74053b_3248x1964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ImAi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5803408-bd7c-45a1-ae26-c3f6cc74053b_3248x1964.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f5803408-bd7c-45a1-ae26-c3f6cc74053b_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;:872549,&quot;alt&quot;:&quot;A result table in Neo4j showing counts of Nodes (User, Review, Business, Category) and Relationships (WROTE, REVIEWS, IN_CATEGORY), confirming the data ingestion was successful.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5803408-bd7c-45a1-ae26-c3f6cc74053b_3248x1964.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A result table in Neo4j showing counts of Nodes (User, Review, Business, Category) and Relationships (WROTE, REVIEWS, IN_CATEGORY), confirming the data ingestion was successful." title="A result table in Neo4j showing counts of Nodes (User, Review, Business, Category) and Relationships (WROTE, REVIEWS, IN_CATEGORY), confirming the data ingestion was successful." srcset="https://substackcdn.com/image/fetch/$s_!ImAi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5803408-bd7c-45a1-ae26-c3f6cc74053b_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!ImAi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5803408-bd7c-45a1-ae26-c3f6cc74053b_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!ImAi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5803408-bd7c-45a1-ae26-c3f6cc74053b_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!ImAi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5803408-bd7c-45a1-ae26-c3f6cc74053b_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The moment of truth: verifying that 6.9 million Reviews are correctly connected to Users and Businesses.</figcaption></figure></div><p><strong>Mission accomplished. </strong>If you see green checkmarks across the board, you have successfully built a professional-grade graph database on your laptop. We now have roughly 150,000 Businesses, 1.98 million Users, and 6.99 million Reviews living in our system. <strong>Note:</strong> We will discuss the specific ingestion challenges I faced in a dedicated section.</p><p>Now that the data is loaded, let&#8217;s verify that the connections actually work!</p><div><hr></div><h2>The sanity check: first contact with the graph</h2><p>Before running complex queries or trying to build a recommendation engine, I needed a &#8220;hello world&#8221; moment. Let&#8217;s verify that the schema wasn&#8217;t just a drawing on a whiteboard, but a reality in the database.</p><p><strong>Verification 1: The unbroken chain unit test. </strong>My first goal was to confirm that the data loaded correctly and that the relationships actually connected across the entire schema. I wanted to find one single, continuous path starting from a <strong>User</strong> and ending at a <strong>Category</strong>.</p><p>Run this query in Neo4j. Switch to the <strong>graph view</strong> so you see the connected circles.</p><pre><code><code>MATCH path = (u:User)-[:WROTE]-&gt;(r:Review)-[:REVIEWS]-&gt;(b:Business)-[:IN_CATEGORY]-&gt;(c:Category)</code>
<code>RETURN path</code>
<code>LIMIT 1;</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XRxF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa60c2d9-f36f-40e7-b429-d8a9475013ad_3248x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XRxF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa60c2d9-f36f-40e7-b429-d8a9475013ad_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!XRxF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa60c2d9-f36f-40e7-b429-d8a9475013ad_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!XRxF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa60c2d9-f36f-40e7-b429-d8a9475013ad_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!XRxF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa60c2d9-f36f-40e7-b429-d8a9475013ad_3248x1964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XRxF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa60c2d9-f36f-40e7-b429-d8a9475013ad_3248x1964.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aa60c2d9-f36f-40e7-b429-d8a9475013ad_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;:1055194,&quot;alt&quot;:&quot;Neo4j graph visualization showing four connected nodes: a User node connected to a Review node, connected to a Business node, connected to a Category node, confirming the direction and existence of relationships.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa60c2d9-f36f-40e7-b429-d8a9475013ad_3248x1964.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Neo4j graph visualization showing four connected nodes: a User node connected to a Review node, connected to a Business node, connected to a Category node, confirming the direction and existence of relationships." title="Neo4j graph visualization showing four connected nodes: a User node connected to a Review node, connected to a Business node, connected to a Category node, confirming the direction and existence of relationships." srcset="https://substackcdn.com/image/fetch/$s_!XRxF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa60c2d9-f36f-40e7-b429-d8a9475013ad_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!XRxF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa60c2d9-f36f-40e7-b429-d8a9475013ad_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!XRxF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa60c2d9-f36f-40e7-b429-d8a9475013ad_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!XRxF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa60c2d9-f36f-40e7-b429-d8a9475013ad_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A single &#8220;Unbroken Chain&#8221; verifying the data model. This path connects User &#8220;Erin&#8221; to a Review, which connects to the Business &#8220;Abby Rappop&#8230;,&#8221; finally landing on the Category &#8220;Doctors&#8221;</figcaption></figure></div><p>This single chain perfectly mirrors the target schema we designed earlier. It visually confirms that the theoretical model (<strong>User</strong> connecting to <strong>Review</strong>, <strong>Review</strong> to <strong>Business</strong>, and <strong>Business</strong> to <strong>Category</strong>) is now a functional reality in the graph.</p><p>Don&#8217;t just look at the shapes: <strong>interact with them</strong>. Click on any node (like a <strong>Business</strong> or <strong>User</strong>) or even a relationship arrow (like <strong>WROTE</strong>) in the graph visualization. The side panel will slide open. It reveals the actual data stored inside. This is the <strong>opportunity to verify</strong> that properties like address, stars, and city were correctly parsed from the JSON files and attached to the right entities.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KGLX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F046eef1d-2a39-4ded-b6dd-d665b9a1605c_3248x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KGLX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F046eef1d-2a39-4ded-b6dd-d665b9a1605c_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!KGLX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F046eef1d-2a39-4ded-b6dd-d665b9a1605c_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!KGLX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F046eef1d-2a39-4ded-b6dd-d665b9a1605c_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!KGLX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F046eef1d-2a39-4ded-b6dd-d665b9a1605c_3248x1964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KGLX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F046eef1d-2a39-4ded-b6dd-d665b9a1605c_3248x1964.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/046eef1d-2a39-4ded-b6dd-d665b9a1605c_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;:1112833,&quot;alt&quot;:&quot;Neo4j interface showing the properties panel for a specific Business node. The panel lists attributes such as name, address, and review count, confirming the data was ingested correctly.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F046eef1d-2a39-4ded-b6dd-d665b9a1605c_3248x1964.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Neo4j interface showing the properties panel for a specific Business node. The panel lists attributes such as name, address, and review count, confirming the data was ingested correctly." title="Neo4j interface showing the properties panel for a specific Business node. The panel lists attributes such as name, address, and review count, confirming the data was ingested correctly." srcset="https://substackcdn.com/image/fetch/$s_!KGLX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F046eef1d-2a39-4ded-b6dd-d665b9a1605c_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!KGLX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F046eef1d-2a39-4ded-b6dd-d665b9a1605c_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!KGLX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F046eef1d-2a39-4ded-b6dd-d665b9a1605c_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!KGLX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F046eef1d-2a39-4ded-b6dd-d665b9a1605c_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">By clicking on the Business node in the path, I confirmed that all properties, like Address, Stars, and City, were correctly parsed from the JSON and stored in the node</figcaption></figure></div><p><strong>Verification 2: The visual cluster. </strong>Once I knew the basic path existed, I wanted to see the network in action. I ran a broader query to visualize a cluster of <strong>Users</strong>, their <strong>Reviews</strong>, and the <strong>Businesses</strong> they talked about.</p><pre><code><code>MATCH (u:User)-[:WROTE]-&gt;(r:Review)-[:REVIEWS]-&gt;(b:Business)
WITH u, r, b
LIMIT 50
RETURN u, r, b</code></code></pre><p>This query returns a small subgraph that lets you verify the density of connections. You should see clear chains flowing from User to Review to Business.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cx6K!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0da59f5c-505c-4d75-b997-12b9861d15cc_3248x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cx6K!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0da59f5c-505c-4d75-b997-12b9861d15cc_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!cx6K!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0da59f5c-505c-4d75-b997-12b9861d15cc_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!cx6K!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0da59f5c-505c-4d75-b997-12b9861d15cc_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!cx6K!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0da59f5c-505c-4d75-b997-12b9861d15cc_3248x1964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cx6K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0da59f5c-505c-4d75-b997-12b9861d15cc_3248x1964.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0da59f5c-505c-4d75-b997-12b9861d15cc_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;:1013035,&quot;alt&quot;:&quot;Neo4j graph visualization showing a cloud of connected nodes. Green User nodes are linked to purple Review nodes, which connect to orange Business nodes, illustrating the relational structure of the 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/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0da59f5c-505c-4d75-b997-12b9861d15cc_3248x1964.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Neo4j graph visualization showing a cloud of connected nodes. Green User nodes are linked to purple Review nodes, which connect to orange Business nodes, illustrating the relational structure of the data." title="Neo4j graph visualization showing a cloud of connected nodes. Green User nodes are linked to purple Review nodes, which connect to orange Business nodes, illustrating the relational structure of the data." srcset="https://substackcdn.com/image/fetch/$s_!cx6K!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0da59f5c-505c-4d75-b997-12b9861d15cc_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!cx6K!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0da59f5c-505c-4d75-b997-12b9861d15cc_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!cx6K!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0da59f5c-505c-4d75-b997-12b9861d15cc_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!cx6K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0da59f5c-505c-4d75-b997-12b9861d15cc_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Visualizing the local network: A cluster of 50 connected nodes showing the flow from <strong>Users</strong> to <strong>Reviews</strong> to <strong>Businesses</strong></figcaption></figure></div><p>A helpful tip when exploring this view is to double-click on any <strong>Business</strong> circle. This expands the node to reveal other users who have reviewed that same location, instantly showing you the &#8220;community&#8221; around a specific 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_!HRAF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F383202a2-7302-4d7c-9cff-6247fb9e4c72_3248x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HRAF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F383202a2-7302-4d7c-9cff-6247fb9e4c72_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!HRAF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F383202a2-7302-4d7c-9cff-6247fb9e4c72_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!HRAF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F383202a2-7302-4d7c-9cff-6247fb9e4c72_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!HRAF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F383202a2-7302-4d7c-9cff-6247fb9e4c72_3248x1964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HRAF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F383202a2-7302-4d7c-9cff-6247fb9e4c72_3248x1964.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/383202a2-7302-4d7c-9cff-6247fb9e4c72_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;:1177934,&quot;alt&quot;:&quot;Neo4j graph visualization showing a dense starburst pattern. A central orange Business node is surrounded by numerous purple Review nodes and green User nodes, demonstrating the high connectivity and community surrounding a popular business.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F383202a2-7302-4d7c-9cff-6247fb9e4c72_3248x1964.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Neo4j graph visualization showing a dense starburst pattern. A central orange Business node is surrounded by numerous purple Review nodes and green User nodes, demonstrating the high connectivity and community surrounding a popular business." title="Neo4j graph visualization showing a dense starburst pattern. A central orange Business node is surrounded by numerous purple Review nodes and green User nodes, demonstrating the high connectivity and community surrounding a popular business." srcset="https://substackcdn.com/image/fetch/$s_!HRAF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F383202a2-7302-4d7c-9cff-6247fb9e4c72_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!HRAF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F383202a2-7302-4d7c-9cff-6247fb9e4c72_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!HRAF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F383202a2-7302-4d7c-9cff-6247fb9e4c72_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!HRAF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F383202a2-7302-4d7c-9cff-6247fb9e4c72_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Double-clicking a Business node instantly reveals the surrounding community of users who reviewed it</figcaption></figure></div><p>With the structure verified and the plumbing confirmed, we are ready to leave the engineering phase behind. Now, let&#8217;s stress-test our new graph with 10 queries, moving from simple statistics to <strong>complex pattern discovery</strong>.</p><div><hr></div><h2>The analysis: 10 queries to play with the graph</h2><p>Now, imagine you have the entire Yelp ecosystem, 10 million nodes of chaos, living on your laptop. The data isn&#8217;t just stored in rows anymore; it is <strong>connected</strong>. This is where the fun begins. In a SQL database, exploring this level of depth usually means writing complex, painful <code>JOIN</code> queries. In Neo4j, it feels more like <strong>interviewing your data</strong>.</p><p>And the best part? I didn&#8217;t write these queries from scratch. I treated Gemini as a junior data engineer. I simply asked plain English questions like &#8220;How do I find the most active users?&#8221; or &#8220;Show me the review trends over time,&#8221; and it generated the Cypher code for me.</p><p>Here are the 10 queries we used to explore the richness of the graph.</p><p><strong>1. What are the top 10 most common business categories? </strong>This is a simple aggregation to see what dominates the dataset.</p><pre><code><code>MATCH (c:Category)&lt;-[:IN_CATEGORY]-(b:Business)
RETURN c.name AS category, count(b) AS business_count
ORDER BY business_count DESC
LIMIT 10;</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_Rma!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22cd46f9-ff69-49d8-baf5-12bca389618a_3248x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_Rma!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22cd46f9-ff69-49d8-baf5-12bca389618a_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!_Rma!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22cd46f9-ff69-49d8-baf5-12bca389618a_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!_Rma!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22cd46f9-ff69-49d8-baf5-12bca389618a_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!_Rma!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22cd46f9-ff69-49d8-baf5-12bca389618a_3248x1964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_Rma!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22cd46f9-ff69-49d8-baf5-12bca389618a_3248x1964.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/22cd46f9-ff69-49d8-baf5-12bca389618a_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;:958160,&quot;alt&quot;:&quot;Neo4j query result table listing the top 10 most common business categories, led by \&quot;Restaurants\&quot; (52,268) and \&quot;Food\&quot; (27,781).&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22cd46f9-ff69-49d8-baf5-12bca389618a_3248x1964.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Neo4j query result table listing the top 10 most common business categories, led by &quot;Restaurants&quot; (52,268) and &quot;Food&quot; (27,781)." title="Neo4j query result table listing the top 10 most common business categories, led by &quot;Restaurants&quot; (52,268) and &quot;Food&quot; (27,781)." srcset="https://substackcdn.com/image/fetch/$s_!_Rma!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22cd46f9-ff69-49d8-baf5-12bca389618a_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!_Rma!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22cd46f9-ff69-49d8-baf5-12bca389618a_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!_Rma!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22cd46f9-ff69-49d8-baf5-12bca389618a_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!_Rma!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22cd46f9-ff69-49d8-baf5-12bca389618a_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A simple aggregation reveals the dominant categories in the Yelp dataset, with &#8220;Restaurants&#8221; taking the top spot by a wide margin</figcaption></figure></div><p><strong>2. Who are the super users? </strong>Finding the 10 users who have written the most reviews.</p><pre><code><code>MATCH (u:User)-[:WROTE]-&gt;(r:Review)
RETURN u.name AS user_name, count(r) AS review_count
ORDER BY review_count DESC
LIMIT 10;</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!b9Rq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d6d05f9-fbb2-4fea-9c68-d86ecb1091bc_3248x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!b9Rq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d6d05f9-fbb2-4fea-9c68-d86ecb1091bc_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!b9Rq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d6d05f9-fbb2-4fea-9c68-d86ecb1091bc_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!b9Rq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d6d05f9-fbb2-4fea-9c68-d86ecb1091bc_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!b9Rq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d6d05f9-fbb2-4fea-9c68-d86ecb1091bc_3248x1964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!b9Rq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d6d05f9-fbb2-4fea-9c68-d86ecb1091bc_3248x1964.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6d6d05f9-fbb2-4fea-9c68-d86ecb1091bc_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;:999053,&quot;alt&quot;:&quot;Neo4j result table displaying the top 10 active users ranked by review count, with the top user \&quot;John\&quot; having written over 67,000 reviews.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d6d05f9-fbb2-4fea-9c68-d86ecb1091bc_3248x1964.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Neo4j result table displaying the top 10 active users ranked by review count, with the top user &quot;John&quot; having written over 67,000 reviews." title="Neo4j result table displaying the top 10 active users ranked by review count, with the top user &quot;John&quot; having written over 67,000 reviews." srcset="https://substackcdn.com/image/fetch/$s_!b9Rq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d6d05f9-fbb2-4fea-9c68-d86ecb1091bc_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!b9Rq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d6d05f9-fbb2-4fea-9c68-d86ecb1091bc_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!b9Rq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d6d05f9-fbb2-4fea-9c68-d86ecb1091bc_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!b9Rq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d6d05f9-fbb2-4fea-9c68-d86ecb1091bc_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Identifying the super users: the individuals who have contributed the highest volume of reviews to the platform</figcaption></figure></div><p><strong>3. The cream of the crop.</strong> Finding the 10 best-rated businesses, but filtering for those with at least 100 reviews to ensure reliability.</p><pre><code><code>MATCH (b:Business)
WHERE b.review_count &gt; 100
RETURN b.name AS business_name, b.stars AS average_rating, b.review_count
ORDER BY average_rating DESC
LIMIT 10;</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uhik!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73af65ab-6b94-4b8d-88d2-a1aa45c4e57f_3248x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uhik!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73af65ab-6b94-4b8d-88d2-a1aa45c4e57f_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!uhik!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73af65ab-6b94-4b8d-88d2-a1aa45c4e57f_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!uhik!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73af65ab-6b94-4b8d-88d2-a1aa45c4e57f_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!uhik!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73af65ab-6b94-4b8d-88d2-a1aa45c4e57f_3248x1964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uhik!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73af65ab-6b94-4b8d-88d2-a1aa45c4e57f_3248x1964.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/73af65ab-6b94-4b8d-88d2-a1aa45c4e57f_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;:1015525,&quot;alt&quot;:&quot;Neo4j query results showing the top 10 highest-rated businesses with over 100 reviews, featuring places like \&quot;ParadICE Hawaiian Shave Ice\&quot; and \&quot;Daves Dogs\&quot; with perfect 5.0 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/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73af65ab-6b94-4b8d-88d2-a1aa45c4e57f_3248x1964.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Neo4j query results showing the top 10 highest-rated businesses with over 100 reviews, featuring places like &quot;ParadICE Hawaiian Shave Ice&quot; and &quot;Daves Dogs&quot; with perfect 5.0 scores." title="Neo4j query results showing the top 10 highest-rated businesses with over 100 reviews, featuring places like &quot;ParadICE Hawaiian Shave Ice&quot; and &quot;Daves Dogs&quot; with perfect 5.0 scores." srcset="https://substackcdn.com/image/fetch/$s_!uhik!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73af65ab-6b94-4b8d-88d2-a1aa45c4e57f_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!uhik!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73af65ab-6b94-4b8d-88d2-a1aa45c4e57f_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!uhik!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73af65ab-6b94-4b8d-88d2-a1aa45c4e57f_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!uhik!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73af65ab-6b94-4b8d-88d2-a1aa45c4e57f_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Filtering for quality and reliability: Finding the cream of the crop businesses that maintain a perfect 5-star rating across hundreds of reviews</figcaption></figure></div><p><strong>4. How has the volume of reviews evolved over time? </strong>A temporal analysis to see the platform&#8217;s growth year over year.</p><pre><code><code>MATCH (r:Review)
RETURN toInteger(left(r.date, 4)) AS year, count(r) AS review_count
ORDER BY year;</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XjJO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0977a039-24cc-48f7-9682-b4b4a35b2c51_3248x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XjJO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0977a039-24cc-48f7-9682-b4b4a35b2c51_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!XjJO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0977a039-24cc-48f7-9682-b4b4a35b2c51_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!XjJO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0977a039-24cc-48f7-9682-b4b4a35b2c51_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!XjJO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0977a039-24cc-48f7-9682-b4b4a35b2c51_3248x1964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XjJO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0977a039-24cc-48f7-9682-b4b4a35b2c51_3248x1964.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0977a039-24cc-48f7-9682-b4b4a35b2c51_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;:991363,&quot;alt&quot;:&quot;Neo4j query results displaying a year-over-year breakdown of review counts, starting with 854 reviews in 2005 and growing to over 500,000 by 2014.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0977a039-24cc-48f7-9682-b4b4a35b2c51_3248x1964.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Neo4j query results displaying a year-over-year breakdown of review counts, starting with 854 reviews in 2005 and growing to over 500,000 by 2014." title="Neo4j query results displaying a year-over-year breakdown of review counts, starting with 854 reviews in 2005 and growing to over 500,000 by 2014." srcset="https://substackcdn.com/image/fetch/$s_!XjJO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0977a039-24cc-48f7-9682-b4b4a35b2c51_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!XjJO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0977a039-24cc-48f7-9682-b4b4a35b2c51_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!XjJO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0977a039-24cc-48f7-9682-b4b4a35b2c51_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!XjJO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0977a039-24cc-48f7-9682-b4b4a35b2c51_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A temporal analysis showing the platform&#8217;s explosive growth, with review volume doubling nearly every year in the early days</figcaption></figure></div><p><strong>5. The toughest critics. </strong>Instead of looking for popularity, let&#8217;s look for the users who are hardest to please. These are experienced users (&gt;50 reviews) with the lowest average ratings.</p><pre><code><code>MATCH (u:User)
WHERE u.review_count &gt; 50 
RETURN u.name AS user_name, u.average_stars AS avg_rating, u.review_count
ORDER BY avg_rating ASC
LIMIT 10;</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UVZD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4470f2dc-c27f-4c89-a6aa-f600aaa92c31_3248x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UVZD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4470f2dc-c27f-4c89-a6aa-f600aaa92c31_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!UVZD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4470f2dc-c27f-4c89-a6aa-f600aaa92c31_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!UVZD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4470f2dc-c27f-4c89-a6aa-f600aaa92c31_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!UVZD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4470f2dc-c27f-4c89-a6aa-f600aaa92c31_3248x1964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UVZD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4470f2dc-c27f-4c89-a6aa-f600aaa92c31_3248x1964.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4470f2dc-c27f-4c89-a6aa-f600aaa92c31_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;:1004742,&quot;alt&quot;:&quot;Neo4j result table sorting users by ascending \&quot;Average Stars,\&quot; revealing active users who almost exclusively write negative reviews.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4470f2dc-c27f-4c89-a6aa-f600aaa92c31_3248x1964.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Neo4j result table sorting users by ascending &quot;Average Stars,&quot; revealing active users who almost exclusively write negative reviews." title="Neo4j result table sorting users by ascending &quot;Average Stars,&quot; revealing active users who almost exclusively write negative reviews." srcset="https://substackcdn.com/image/fetch/$s_!UVZD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4470f2dc-c27f-4c89-a6aa-f600aaa92c31_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!UVZD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4470f2dc-c27f-4c89-a6aa-f600aaa92c31_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!UVZD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4470f2dc-c27f-4c89-a6aa-f600aaa92c31_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!UVZD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4470f2dc-c27f-4c89-a6aa-f600aaa92c31_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Identifying the platform&#8217;s toughest critics: Experienced users (&gt;50 reviews) who maintain incredibly low average ratings, some as low as 1.01 stars</figcaption></figure></div><p><strong>6. The novelists: longest reviews. </strong>Who writes the longest essays? This query calculates the character count of reviews to find the most detailed contributors.</p><pre><code><code>MATCH (r:Review) 
RETURN substring(r.text, 0, 50) + &#8220;...&#8221; AS preview, size(r.text) AS length 
ORDER BY length DESC 
LIMIT 5;</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AwGH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41d2c8dc-5688-4f6a-800b-de946ce718d2_3248x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AwGH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41d2c8dc-5688-4f6a-800b-de946ce718d2_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!AwGH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41d2c8dc-5688-4f6a-800b-de946ce718d2_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!AwGH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41d2c8dc-5688-4f6a-800b-de946ce718d2_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!AwGH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41d2c8dc-5688-4f6a-800b-de946ce718d2_3248x1964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AwGH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41d2c8dc-5688-4f6a-800b-de946ce718d2_3248x1964.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/41d2c8dc-5688-4f6a-800b-de946ce718d2_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;:1031292,&quot;alt&quot;:&quot;Neo4j result table displaying review snippets and their length, with the top results showing reviews capped at exactly 5,000 characters.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41d2c8dc-5688-4f6a-800b-de946ce718d2_3248x1964.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Neo4j result table displaying review snippets and their length, with the top results showing reviews capped at exactly 5,000 characters." title="Neo4j result table displaying review snippets and their length, with the top results showing reviews capped at exactly 5,000 characters." srcset="https://substackcdn.com/image/fetch/$s_!AwGH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41d2c8dc-5688-4f6a-800b-de946ce718d2_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!AwGH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41d2c8dc-5688-4f6a-800b-de946ce718d2_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!AwGH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41d2c8dc-5688-4f6a-800b-de946ce718d2_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!AwGH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41d2c8dc-5688-4f6a-800b-de946ce718d2_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Finding the novelists: A query sorting reviews by character count reveals users hitting the 5,000-character limit with their feedback</figcaption></figure></div><p><strong>7. The category explorers.</strong> Most users stick to one lane (e.g., only reviewing restaurants). This query finds the users with the most diverse tastes, reviewing the widest variety of unique categories.</p><pre><code><code>MATCH (u:User)-[:WROTE]-&gt;(:Review)-[:REVIEWS]-&gt;(:Business)-[:IN_CATEGORY]-&gt;(c:Category) 
RETURN u.name, count(distinct c) AS diverse_tastes 
ORDER BY diverse_tastes DESC 
LIMIT 10;</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MEyl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa6113c-0dcd-496a-b96d-43579f20f6fc_3248x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MEyl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa6113c-0dcd-496a-b96d-43579f20f6fc_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!MEyl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa6113c-0dcd-496a-b96d-43579f20f6fc_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!MEyl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa6113c-0dcd-496a-b96d-43579f20f6fc_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!MEyl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa6113c-0dcd-496a-b96d-43579f20f6fc_3248x1964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MEyl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa6113c-0dcd-496a-b96d-43579f20f6fc_3248x1964.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1fa6113c-0dcd-496a-b96d-43579f20f6fc_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;:991135,&quot;alt&quot;:&quot;Neo4j query results listing users ranked by the count of distinct categories they have reviewed, showing top users with highly eclectic habits.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa6113c-0dcd-496a-b96d-43579f20f6fc_3248x1964.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Neo4j query results listing users ranked by the count of distinct categories they have reviewed, showing top users with highly eclectic habits." title="Neo4j query results listing users ranked by the count of distinct categories they have reviewed, showing top users with highly eclectic habits." srcset="https://substackcdn.com/image/fetch/$s_!MEyl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa6113c-0dcd-496a-b96d-43579f20f6fc_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!MEyl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa6113c-0dcd-496a-b96d-43579f20f6fc_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!MEyl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa6113c-0dcd-496a-b96d-43579f20f6fc_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!MEyl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fa6113c-0dcd-496a-b96d-43579f20f6fc_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Uncovering category explorers: Users with the most diverse tastes, traversing over 1,100 distinct business categories in their review history</figcaption></figure></div><p><strong>8. The local experts. </strong>This looks for users who have hyper-local knowledge, those who have reviewed the most businesses within a single city.</p><pre><code><code>MATCH (u:User)-[:WROTE]-&gt;(:Review)-[:REVIEWS]-&gt;(b:Business) 
RETURN u.name, b.city, count(b) AS local_reviews 
ORDER BY local_reviews DESC 
LIMIT 10;</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7Fhv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa2e128a-2146-430f-8e90-9e2f5431f4a7_3248x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7Fhv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa2e128a-2146-430f-8e90-9e2f5431f4a7_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!7Fhv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa2e128a-2146-430f-8e90-9e2f5431f4a7_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!7Fhv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa2e128a-2146-430f-8e90-9e2f5431f4a7_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!7Fhv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa2e128a-2146-430f-8e90-9e2f5431f4a7_3248x1964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7Fhv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa2e128a-2146-430f-8e90-9e2f5431f4a7_3248x1964.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fa2e128a-2146-430f-8e90-9e2f5431f4a7_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;:1034663,&quot;alt&quot;:&quot;Neo4j result table grouping users by city and review count, identifying \&quot;Michael\&quot; and \&quot;John\&quot; as dominant contributors in the Philadelphia 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/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa2e128a-2146-430f-8e90-9e2f5431f4a7_3248x1964.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Neo4j result table grouping users by city and review count, identifying &quot;Michael&quot; and &quot;John&quot; as dominant contributors in the Philadelphia area." title="Neo4j result table grouping users by city and review count, identifying &quot;Michael&quot; and &quot;John&quot; as dominant contributors in the Philadelphia area." srcset="https://substackcdn.com/image/fetch/$s_!7Fhv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa2e128a-2146-430f-8e90-9e2f5431f4a7_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!7Fhv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa2e128a-2146-430f-8e90-9e2f5431f4a7_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!7Fhv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa2e128a-2146-430f-8e90-9e2f5431f4a7_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!7Fhv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa2e128a-2146-430f-8e90-9e2f5431f4a7_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Spotting local experts: Users who demonstrate hyper-local knowledge by contributing thousands of reviews within a single city, like Philadelphia.</figcaption></figure></div><p><strong>9. Finding hidden gems.</strong> We often look for the most popular spots, but what about the underdogs? This query finds businesses with high ratings (4.5+) but a low review count (10-50).</p><pre><code><code>MATCH (b:Business)
WHERE b.stars &gt;= 4.5 AND b.review_count &gt; 10 AND b.review_count &lt; 50
RETURN b.name, b.stars, b.review_count
ORDER BY b.review_count ASC
LIMIT 10;</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!i_pY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86556c50-6f24-47c7-b8a1-187208e1e2e8_3248x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!i_pY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86556c50-6f24-47c7-b8a1-187208e1e2e8_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!i_pY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86556c50-6f24-47c7-b8a1-187208e1e2e8_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!i_pY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86556c50-6f24-47c7-b8a1-187208e1e2e8_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!i_pY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86556c50-6f24-47c7-b8a1-187208e1e2e8_3248x1964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!i_pY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86556c50-6f24-47c7-b8a1-187208e1e2e8_3248x1964.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/86556c50-6f24-47c7-b8a1-187208e1e2e8_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;:1003778,&quot;alt&quot;:&quot;Neo4j query results listing businesses like \&quot;Arch Engraving\&quot; with 4.5 stars and exactly 11 reviews, representing excellent but under-the-radar spots.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86556c50-6f24-47c7-b8a1-187208e1e2e8_3248x1964.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Neo4j query results listing businesses like &quot;Arch Engraving&quot; with 4.5 stars and exactly 11 reviews, representing excellent but under-the-radar spots." title="Neo4j query results listing businesses like &quot;Arch Engraving&quot; with 4.5 stars and exactly 11 reviews, representing excellent but under-the-radar spots." srcset="https://substackcdn.com/image/fetch/$s_!i_pY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86556c50-6f24-47c7-b8a1-187208e1e2e8_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!i_pY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86556c50-6f24-47c7-b8a1-187208e1e2e8_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!i_pY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86556c50-6f24-47c7-b8a1-187208e1e2e8_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!i_pY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86556c50-6f24-47c7-b8a1-187208e1e2e8_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Discovering hidden gems: Businesses that maintain high quality (4.5+ stars) but haven&#8217;t yet been flooded with reviews (low count)</figcaption></figure></div><p><strong>10. The elite hangouts. </strong>Instead of following the crowd, where do the power users go? This query filters for users with over 1,000 reviews and maps their most frequent spots. This is a great way to find places that are expert approved.</p><pre><code><code>MATCH (u:User)-[:WROTE]-&gt;(:Review)-[:REVIEWS]-&gt;(b:Business)
WHERE u.review_count &gt; 1000
RETURN b.name, b.city, count(u) AS vip_visits
ORDER BY vip_visits DESC
LIMIT 10;</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gCEO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa0ec8ee-373e-43d3-b509-357c3a81fe8d_3248x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gCEO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa0ec8ee-373e-43d3-b509-357c3a81fe8d_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!gCEO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa0ec8ee-373e-43d3-b509-357c3a81fe8d_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!gCEO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa0ec8ee-373e-43d3-b509-357c3a81fe8d_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!gCEO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa0ec8ee-373e-43d3-b509-357c3a81fe8d_3248x1964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gCEO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa0ec8ee-373e-43d3-b509-357c3a81fe8d_3248x1964.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aa0ec8ee-373e-43d3-b509-357c3a81fe8d_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;:1051233,&quot;alt&quot;:&quot;Neo4j query result showing businesses ranked by the number of visits from \&quot;Elite\&quot; users (review count > 1000), with Philadelphia and New Orleans venues topping the list.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa0ec8ee-373e-43d3-b509-357c3a81fe8d_3248x1964.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Neo4j query result showing businesses ranked by the number of visits from &quot;Elite&quot; users (review count > 1000), with Philadelphia and New Orleans venues topping the list." title="Neo4j query result showing businesses ranked by the number of visits from &quot;Elite&quot; users (review count > 1000), with Philadelphia and New Orleans venues topping the list." srcset="https://substackcdn.com/image/fetch/$s_!gCEO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa0ec8ee-373e-43d3-b509-357c3a81fe8d_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!gCEO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa0ec8ee-373e-43d3-b509-357c3a81fe8d_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!gCEO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa0ec8ee-373e-43d3-b509-357c3a81fe8d_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!gCEO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa0ec8ee-373e-43d3-b509-357c3a81fe8d_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Mapping elite hangouts: Filtering for users with 1,000+ reviews reveals exactly where the platform&#8217;s elites actually eat</figcaption></figure></div><p>Warm-up is over. If you are a SQL veteran, you might be looking at these queries and thinking, &#8220;I could have done most of this with a few joins.&#8221; And you wouldn&#8217;t be wrong. But we didn&#8217;t load 10 million nodes just to do simple aggregation. Now, let&#8217;s get serious. It is time to stop querying the past and start <strong>predicting the future</strong>. Let&#8217;s <strong>bring actual algorithms into the game</strong>.</p><div><hr></div><h2>The feature: building recommendation prototypes</h2><p>We have ingested the data and explored the patterns. Now, it is time to switch hats from data analyst to <strong>product builder</strong>. My goal wasn&#8217;t to build a production-grade engine overnight, but to prototype three different ways to answer a simple user problem: <strong>&#8220;Where should I eat tonight?&#8221;</strong></p><p>To do this, I asked Gemini to design three distinct algorithms. But before we look at the code, we need to agree on the strategy. In the world of recommender systems, there are <strong>three main schools of thought</strong>. Here is the logic we are choosing between:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wVpC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F156b169b-cdf1-40b3-bcb3-68e472285011_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wVpC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F156b169b-cdf1-40b3-bcb3-68e472285011_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!wVpC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F156b169b-cdf1-40b3-bcb3-68e472285011_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!wVpC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F156b169b-cdf1-40b3-bcb3-68e472285011_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!wVpC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F156b169b-cdf1-40b3-bcb3-68e472285011_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wVpC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F156b169b-cdf1-40b3-bcb3-68e472285011_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/156b169b-cdf1-40b3-bcb3-68e472285011_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;:6598613,&quot;alt&quot;:&quot;An infographic comparing three recommendation methods. Column 1 depicts Content-Based Filtering as a \&quot;Librarian\&quot; matching tags. Column 2 shows Collaborative Filtering as a \&quot;Friend\&quot; finding taste twins. Column 3 illustrates Hybrid Filtering as an \&quot;Expert\&quot; mixing social proof with specific preferences.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F156b169b-cdf1-40b3-bcb3-68e472285011_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="An infographic comparing three recommendation methods. Column 1 depicts Content-Based Filtering as a &quot;Librarian&quot; matching tags. Column 2 shows Collaborative Filtering as a &quot;Friend&quot; finding taste twins. Column 3 illustrates Hybrid Filtering as an &quot;Expert&quot; mixing social proof with specific preferences." title="An infographic comparing three recommendation methods. Column 1 depicts Content-Based Filtering as a &quot;Librarian&quot; matching tags. Column 2 shows Collaborative Filtering as a &quot;Friend&quot; finding taste twins. Column 3 illustrates Hybrid Filtering as an &quot;Expert&quot; mixing social proof with specific preferences." srcset="https://substackcdn.com/image/fetch/$s_!wVpC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F156b169b-cdf1-40b3-bcb3-68e472285011_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!wVpC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F156b169b-cdf1-40b3-bcb3-68e472285011_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!wVpC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F156b169b-cdf1-40b3-bcb3-68e472285011_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!wVpC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F156b169b-cdf1-40b3-bcb3-68e472285011_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Visualizing the three logic models: the librarian matches attributes, the friend matches people, and the expert combines both for the best results</figcaption></figure></div><ol><li><p><strong>Content-based filtering, the librarian.</strong> This approach relies on <strong>attributes</strong>. It looks at the metadata of what you liked (e.g., &#8220;Mexican,&#8221; &#8220;Cheap,&#8221; &#8220;Downtown&#8221;) and finds other items with the exact same tags. It&#8217;s like a librarian saying, &#8220;Oh, you enjoyed this mystery novel set in Victorian London? Here is another mystery novel set in Victorian London.&#8221; <strong>The trade-off:</strong> It is safe and highly explainable, but it creates a <strong>filter bubble</strong>. You will never discover a great sushi place if you only keep asking for more tacos.</p></li><li><p><strong>Collaborative filtering, the friend. </strong>This approach relies on <strong>behavior</strong>. It ignores the tags and looks at the people. It finds users who are taste twins (people who liked the same things you did) and recommends what they liked that you haven&#8217;t seen yet. It&#8217;s like a friend saying, &#8220;Hey, we usually love the same restaurants, and I just went to this crazy new Korean BBQ spot. You have to try it.&#8221; <strong>The trade-off:</strong> It creates <strong>Serendipity</strong> (finding things you wouldn&#8217;t naturally search for), but it suffers from the cold start problem. If you don&#8217;t have enough data to find a twin, the system fails.</p></li><li><p><strong>Hybrid filtering, the expert.</strong> This combines both. It uses collaborative filtering to find popular, high-quality spots approved by your peers, but filters them through content-based logic to ensure they actually match your specific preferences. It&#8217;s like a local expert saying, &#8220;People with your taste profile absolutely love this place, AND it happens to serve the specific type of spicy food you&#8217;re looking for right now.&#8221; <strong>The trade-off:</strong> This is the gold standard, balancing relevance with discovery, but it is the most complex to build.</p></li></ol><p>Now that we have the strategy, let&#8217;s start with the simplest approach: the Librarian.</p><h3>Prototype 1: Content-based filtering, the Jaccard index</h3><p><strong>The concept:</strong> Imagine a user is looking at the page for &#8220;Tsevi&#8217;s Pub And Grill.&#8221; They scroll down to the <strong>&#8220;You might also like&#8221; section</strong> of Yelp. Our goal is to fill that section with businesses that are <strong>structurally similar</strong>: places that have the exact same DNA (Categories) as the original spot.</p><p><strong>The logic:</strong> Gemini suggested using the <strong><a href="https://en.wikipedia.org/wiki/Jaccard_index">Jaccard Index</a></strong>. For a product manager, think of this as a <strong>&#8220;Venn Diagram Score.&#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_!5eXj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0853edd5-a8ff-4307-891e-e05edd6528da_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5eXj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0853edd5-a8ff-4307-891e-e05edd6528da_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!5eXj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0853edd5-a8ff-4307-891e-e05edd6528da_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!5eXj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0853edd5-a8ff-4307-891e-e05edd6528da_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!5eXj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0853edd5-a8ff-4307-891e-e05edd6528da_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5eXj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0853edd5-a8ff-4307-891e-e05edd6528da_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0853edd5-a8ff-4307-891e-e05edd6528da_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;:6046906,&quot;alt&quot;:&quot;A diagram explaining the Jaccard Index. The top section shows two Venn diagrams: one with full overlap (Score 1.0) and one with no overlap (Score 0.0). The middle section illustrates a \&quot;Dive Bar\&quot; with few tags versus a \&quot;Resort\&quot; with many tags. The bottom section presents the formula: Ratio of Shared Tags = (Shared Tags) / (Total Unique Tags), highlighting how it ensures fair comparison.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0853edd5-a8ff-4307-891e-e05edd6528da_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A diagram explaining the Jaccard Index. The top section shows two Venn diagrams: one with full overlap (Score 1.0) and one with no overlap (Score 0.0). The middle section illustrates a &quot;Dive Bar&quot; with few tags versus a &quot;Resort&quot; with many tags. The bottom section presents the formula: Ratio of Shared Tags = (Shared Tags) / (Total Unique Tags), highlighting how it ensures fair comparison." title="A diagram explaining the Jaccard Index. The top section shows two Venn diagrams: one with full overlap (Score 1.0) and one with no overlap (Score 0.0). The middle section illustrates a &quot;Dive Bar&quot; with few tags versus a &quot;Resort&quot; with many tags. The bottom section presents the formula: Ratio of Shared Tags = (Shared Tags) / (Total Unique Tags), highlighting how it ensures fair comparison." srcset="https://substackcdn.com/image/fetch/$s_!5eXj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0853edd5-a8ff-4307-891e-e05edd6528da_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!5eXj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0853edd5-a8ff-4307-891e-e05edd6528da_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!5eXj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0853edd5-a8ff-4307-891e-e05edd6528da_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!5eXj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0853edd5-a8ff-4307-891e-e05edd6528da_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The Jaccard index explained</figcaption></figure></div><ul><li><p>If two restaurants have identical categories (100% overlap), the score is <strong>1.0</strong>.</p></li><li><p>If they share nothing (0% overlap), the score is <strong>0.0</strong>.</p></li><li><p>Why not just count shared tags? Because a place with 50 tags would match everything. Jaccard is smarter: it measures the ratio of shared tags, ensuring a fair comparison between a simple dive bar and a complex resort.</p></li></ul><p><strong>The query:</strong> We are calling the <strong>Graph Data Science (GDS)</strong> library directly in the query (<code>gds.similarity.jaccard</code>). This function handles the heavy math for us. Note that we are running this analysis specifically for <strong>one target business</strong> (&#8220;Tsevi&#8217;s Pub And Grill&#8221;) to find its direct siblings, rather than calculating similarities for the entire database at once.</p><pre><code><code>// 1. Find the target business and its categories
MATCH (b1:Business {name: &#8220;Tsevi&#8217;s Pub And Grill&#8221;})-[:IN_CATEGORY]-&gt;(c:Category)
WITH b1, collect(id(c)) AS b1_category_ids

// 2. Compare it against every other business
MATCH (b2:Business)-[:IN_CATEGORY]-&gt;(c2:Category) WHERE b1 &lt;&gt; b2
WITH b1, b1_category_ids, b2, collect(id(c2)) AS b2_category_ids

// 3. Calculate Jaccard Similarity and return top 10
RETURN b2.name AS recommendation, 
       gds.similarity.jaccard(b1_category_ids, b2_category_ids) AS jaccardSimilarity
ORDER BY jaccardSimilarity DESC LIMIT 10;</code></code></pre><p><strong>The result:</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_!S8Qd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb299925e-f512-499a-a62d-0bbd5ae5e52e_3248x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!S8Qd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb299925e-f512-499a-a62d-0bbd5ae5e52e_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!S8Qd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb299925e-f512-499a-a62d-0bbd5ae5e52e_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!S8Qd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb299925e-f512-499a-a62d-0bbd5ae5e52e_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!S8Qd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb299925e-f512-499a-a62d-0bbd5ae5e52e_3248x1964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!S8Qd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb299925e-f512-499a-a62d-0bbd5ae5e52e_3248x1964.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b299925e-f512-499a-a62d-0bbd5ae5e52e_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;:1043010,&quot;alt&quot;:&quot;Neo4j query results showing recommendations for &#8220;Tsevi&#8217;s Pub,&#8221; with &#8220;Dulany&#8217;s Grille and Pub&#8221; and &#8220;Village Pub&#8221; receiving high similarity scores of 0.857.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb299925e-f512-499a-a62d-0bbd5ae5e52e_3248x1964.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Neo4j query results showing recommendations for &#8220;Tsevi&#8217;s Pub,&#8221; with &#8220;Dulany&#8217;s Grille and Pub&#8221; and &#8220;Village Pub&#8221; receiving high similarity scores of 0.857." title="Neo4j query results showing recommendations for &#8220;Tsevi&#8217;s Pub,&#8221; with &#8220;Dulany&#8217;s Grille and Pub&#8221; and &#8220;Village Pub&#8221; receiving high similarity scores of 0.857." srcset="https://substackcdn.com/image/fetch/$s_!S8Qd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb299925e-f512-499a-a62d-0bbd5ae5e52e_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!S8Qd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb299925e-f512-499a-a62d-0bbd5ae5e52e_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!S8Qd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb299925e-f512-499a-a62d-0bbd5ae5e52e_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!S8Qd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb299925e-f512-499a-a62d-0bbd5ae5e52e_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The Jaccard Index identifies &#8220;Dulany&#8217;s Grille and Pub&#8221; as the top match</figcaption></figure></div><ul><li><p><strong>Score:</strong> The top result, &#8220;Dulany&#8217;s Grille and Pub,&#8221; has a score of <strong>0.857</strong>. This means their category lists are nearly identical.</p></li><li><p><strong>Speed:</strong> The query ran in <strong>756 ms</strong>. This is important: it&#8217;s under a second, meaning it&#8217;s fast enough to load on a webpage in real-time without making the user wait.</p></li></ul><p><strong>The verdict:</strong></p><ul><li><p><strong>The good:</strong> The math holds up. It is highly explainable: &#8220;We recommended this because you clearly like Pubs.&#8221; It is safe and logical.</p></li><li><p><strong>The bad:</strong> It creates a bubble. I liked a Pub, so the algorithm gave me 10 more Pubs. It lacks the element of surprise or discovery. If I wanted a burger, I might also want a milkshake, but this algorithm only knows how to give me more burgers.</p></li></ul><h3>Prototype 2: Collaborative filtering, KNN &amp; cosine similarity</h3><p><strong>The concept:</strong> This is the &#8220;friend&#8221; model. Instead of looking at what you liked (Pubs, Tacos), we look at who you are like. We find your taste twins, users who have rated the same places similarly to you, and recommend the hidden gems they love that you haven&#8217;t discovered yet.</p><p><strong>The logic:</strong> We use <strong><a href="https://en.wikipedia.org/wiki/K-nearest_neighbors_algorithm">K-Nearest Neighbors</a> (KNN)</strong> with <strong><a href="https://en.wikipedia.org/wiki/Cosine_similarity">cosine similarity</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_!SYte!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66f8dcd8-b4e8-4d82-9e53-ffd811ea4f93_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SYte!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66f8dcd8-b4e8-4d82-9e53-ffd811ea4f93_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!SYte!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66f8dcd8-b4e8-4d82-9e53-ffd811ea4f93_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!SYte!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66f8dcd8-b4e8-4d82-9e53-ffd811ea4f93_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!SYte!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66f8dcd8-b4e8-4d82-9e53-ffd811ea4f93_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SYte!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66f8dcd8-b4e8-4d82-9e53-ffd811ea4f93_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/66f8dcd8-b4e8-4d82-9e53-ffd811ea4f93_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;:6093213,&quot;alt&quot;:&quot;A three-step diagram explaining K-Nearest Neighbors (KNN). Step 1 shows tastes as directional lines (vectors) where a small angle equals similar taste. Step 2 shows a \&quot;starburst\&quot; of vectors, identifying a cluster of neighbors (your tribe) pointing in the same direction. Step 3 shows a recommendation path: if your neighbor likes a new star-rated item, the algorithm suggests you will too.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66f8dcd8-b4e8-4d82-9e53-ffd811ea4f93_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A three-step diagram explaining K-Nearest Neighbors (KNN). Step 1 shows tastes as directional lines (vectors) where a small angle equals similar taste. Step 2 shows a &quot;starburst&quot; of vectors, identifying a cluster of neighbors (your tribe) pointing in the same direction. Step 3 shows a recommendation path: if your neighbor likes a new star-rated item, the algorithm suggests you will too." title="A three-step diagram explaining K-Nearest Neighbors (KNN). Step 1 shows tastes as directional lines (vectors) where a small angle equals similar taste. Step 2 shows a &quot;starburst&quot; of vectors, identifying a cluster of neighbors (your tribe) pointing in the same direction. Step 3 shows a recommendation path: if your neighbor likes a new star-rated item, the algorithm suggests you will too." srcset="https://substackcdn.com/image/fetch/$s_!SYte!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66f8dcd8-b4e8-4d82-9e53-ffd811ea4f93_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!SYte!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66f8dcd8-b4e8-4d82-9e53-ffd811ea4f93_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!SYte!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66f8dcd8-b4e8-4d82-9e53-ffd811ea4f93_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!SYte!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66f8dcd8-b4e8-4d82-9e53-ffd811ea4f93_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The KNN algorithm visualizes user tastes as vectors, identifying taste twins with the smallest angular distance to your own preferences</figcaption></figure></div><ul><li><p>Imagine every user&#8217;s taste is a line on a graph.</p></li><li><p>If <strong>User A</strong> and <strong>User B</strong> both love the same 5 restaurants, their lines point in the same direction (small angle = high similarity).</p></li><li><p>If they hate each other&#8217;s favorite spots, their lines point away from each other.</p></li><li><p>The algorithm finds the users with the smallest angles to you (your neighbors) and asks: &#8220;What did they rate 5-stars that you haven&#8217;t seen?&#8221;</p></li></ul><p><strong>The challenge, the memory wall:</strong> When I first tried running this on all 2 million users, my laptop crashed. The graph was too dense for a local machine. <strong>The fix:</strong> I applied a <strong>power user filter</strong>. I refactored the graph to only include users and businesses with <strong>&gt;50 reviews</strong>. This drastically reduced the noise and improved the signal quality.</p><p><strong>The process:</strong> Before running the recommendation, we need to prep the data in three steps:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!97N7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c3ed8a7-9fd2-42ee-9bd8-02ed690a5796_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!97N7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c3ed8a7-9fd2-42ee-9bd8-02ed690a5796_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!97N7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c3ed8a7-9fd2-42ee-9bd8-02ed690a5796_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!97N7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c3ed8a7-9fd2-42ee-9bd8-02ed690a5796_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!97N7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c3ed8a7-9fd2-42ee-9bd8-02ed690a5796_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!97N7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c3ed8a7-9fd2-42ee-9bd8-02ed690a5796_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9c3ed8a7-9fd2-42ee-9bd8-02ed690a5796_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;:6042157,&quot;alt&quot;:&quot;A flowchart detailing the 3-step recommendation preparation process. Step 1 (Simplify) shows collapsing the User->Review->Business path into a direct User->Rated->Business link. Step 2 (Calculate) shows the GDS algorithm processing these links to create SIMILAR_TO connections between Users. Step 3 (Recommend) shows the final path: You -> Similar_To -> Taste Twin -> Likes -> Suggested Business.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c3ed8a7-9fd2-42ee-9bd8-02ed690a5796_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A flowchart detailing the 3-step recommendation preparation process. Step 1 (Simplify) shows collapsing the User->Review->Business path into a direct User->Rated->Business link. Step 2 (Calculate) shows the GDS algorithm processing these links to create SIMILAR_TO connections between Users. Step 3 (Recommend) shows the final path: You -> Similar_To -> Taste Twin -> Likes -> Suggested Business." title="A flowchart detailing the 3-step recommendation preparation process. Step 1 (Simplify) shows collapsing the User->Review->Business path into a direct User->Rated->Business link. Step 2 (Calculate) shows the GDS algorithm processing these links to create SIMILAR_TO connections between Users. Step 3 (Recommend) shows the final path: You -> Similar_To -> Taste Twin -> Likes -> Suggested Business." srcset="https://substackcdn.com/image/fetch/$s_!97N7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c3ed8a7-9fd2-42ee-9bd8-02ed690a5796_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!97N7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c3ed8a7-9fd2-42ee-9bd8-02ed690a5796_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!97N7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c3ed8a7-9fd2-42ee-9bd8-02ed690a5796_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!97N7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c3ed8a7-9fd2-42ee-9bd8-02ed690a5796_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Prepping the data involves simplifying the graph structure, calculating similarity scores with GDS, and querying the new relationships for recommendations</figcaption></figure></div><ol><li><p><strong>Simplify:</strong> Create direct <code>RATED</code> relationships to skip the intermediate <strong>Review</strong> node.</p></li><li><p><strong>Calculate:</strong> Run the GDS algorithm to write <code>SIMILAR_TO</code> relationships between users.</p></li><li><p><strong>Recommend:</strong> Query these new relationships to find the suggestions.</p></li></ol><p><strong>Step 1: Simplify the graph, create </strong><code>RATED</code><strong> relationships. </strong>We flatten the path <code>(User)-&gt;(Review)-&gt;(Business)</code> into a direct <code>(User)-[RATED]-&gt;(Business)</code> link to make the algorithm faster.</p><pre><code><code>// Flatten the path (User)-&gt;(Review)-&gt;(Business) into (User)-[RATED]-&gt;(Business)
CALL apoc.periodic.iterate(
    &#8220;MATCH (u:User)-[:WROTE]-&gt;(r:Review)-[:REVIEWS]-&gt;(b:Business) RETURN u, b, r.stars as stars&#8221;,
    &#8220;MERGE (u)-[rated:RATED {stars: stars}]-&gt;(b)&#8221;,
    {batchSize: 20000, parallel: false}
)</code></code></pre><p><strong>Step 2: The magic, GDS node similarity. </strong>We project the filtered graph into memory and run the algorithm to write a new <code>SIMILAR_TO</code> relationship between users who share tastes.</p><pre><code><code>// Project filtered graph (Users and Businesses with &gt;50 reviews)
CALL gds.graph.project.cypher(
    &#8216;yelp-filtered-graph&#8217;,
    &#8216;MATCH (n) WHERE (n:User AND n.review_count &gt; 50) OR (n:Business AND n.review_count &gt; 50) RETURN id(n) AS id&#8217;,
    &#8216;MATCH (u:User)-[r:RATED]-&gt;(b:Business) WHERE u.review_count &gt; 50 AND b.review_count &gt; 50 RETURN id(u) AS source, id(b) AS target, r.stars as weight&#8217;
);

// Run KNN to find top 10 &#8220;Taste Twins&#8221; for every user
CALL gds.nodeSimilarity.write(
      &#8216;yelp-filtered-graph&#8217;,
    { topK: 10, similarityMetric: &#8216;Cosine&#8217;, writeRelationshipType: &#8216;SIMILAR_TO&#8217;, writeProperty: &#8216;score&#8217; }
) YIELD nodesCompared, relationshipsWritten;</code></code></pre><p><strong>Step 3: The recommendation query. </strong>Now that we know who my twins are, we simply ask: &#8220;What did my twins like that I haven&#8217;t seen?&#8221; Here, we are generating recommendations for <strong>one specific power user</strong> (identified by their ID), leveraging the pre-calculated relationships to find their unique matches.</p><pre><code><code>MATCH (u1:User {id: &#8216;ShKjMaDTPfKDuwzL5WIfgA&#8217;}) // Using a real &#8220;Power User&#8221; ID
MATCH (u1)-[:SIMILAR_TO]-(u2:User) // Find my twins
MATCH (u2)-[r:RATED]-&gt;(rec:Business) // What did they rate?
WHERE r.stars &gt; 3.5 AND NOT (u1)-[:RATED]-&gt;(rec) // Filter for quality and newness
WITH rec, count(DISTINCT u2) AS recommending_neighbors
RETURN rec.name, recommending_neighbors
ORDER BY recommending_neighbors DESC LIMIT 10;
</code></code></pre><p><strong>The result:</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_!RGZx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72a8d31d-7840-4a47-9b65-0290142e48f1_3248x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RGZx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72a8d31d-7840-4a47-9b65-0290142e48f1_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!RGZx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72a8d31d-7840-4a47-9b65-0290142e48f1_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!RGZx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72a8d31d-7840-4a47-9b65-0290142e48f1_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!RGZx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72a8d31d-7840-4a47-9b65-0290142e48f1_3248x1964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RGZx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72a8d31d-7840-4a47-9b65-0290142e48f1_3248x1964.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/72a8d31d-7840-4a47-9b65-0290142e48f1_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;:1086309,&quot;alt&quot;:&quot;Neo4j query results showing diverse recommendations like &#8220;India Kabab &amp; Curry&#8221; and &#8220;Thai Lotus,&#8221; ranked by the number of similar users (neighbors) who liked 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/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72a8d31d-7840-4a47-9b65-0290142e48f1_3248x1964.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Neo4j query results showing diverse recommendations like &#8220;India Kabab &amp; Curry&#8221; and &#8220;Thai Lotus,&#8221; ranked by the number of similar users (neighbors) who liked them." title="Neo4j query results showing diverse recommendations like &#8220;India Kabab &amp; Curry&#8221; and &#8220;Thai Lotus,&#8221; ranked by the number of similar users (neighbors) who liked them." srcset="https://substackcdn.com/image/fetch/$s_!RGZx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72a8d31d-7840-4a47-9b65-0290142e48f1_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!RGZx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72a8d31d-7840-4a47-9b65-0290142e48f1_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!RGZx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72a8d31d-7840-4a47-9b65-0290142e48f1_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!RGZx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72a8d31d-7840-4a47-9b65-0290142e48f1_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Collaborative filtering surfaces diverse results like &#8220;Best in the West Nugget Rib Cook-Off,&#8221; recommended by 9 distinct &#8220;taste twins&#8221;</figcaption></figure></div><ul><li><p><strong>Diversity:</strong> The results are wonderfully <strong>eclectic</strong>: Ribs, Bagels, Indian Curry, and Thai food.</p></li><li><p><strong>The signal:</strong> The <code>recommending_neighbors</code> count is the key metric here. The top result was vetted by <strong>9 separate users</strong> with similar taste. That is a powerful endorsement that no keyword search could ever match.</p></li></ul><p><strong>The verdict:</strong></p><ul><li><p><strong>The good:</strong> serendipity. This user might never have searched for &#8220;Indian,&#8221; but because 7 of their twins loved it, the engine surfaced it. It breaks the filter bubble.</p></li><li><p><strong>The Bad:</strong> complexity and sparsity. This required significant data engineering (filtering, projecting, writing new relationships). Also, for users with few reviews, this method fails completely (the cold start problem).</p></li></ul><h3>Prototype 3: Hybrid filtering, the gold standard</h3><p><strong>The concept:</strong> This is the expert model. It combines the serendipity of discovering new places (collaborative) with the safety of knowing they match your specific preferences (content-based). <strong>The user experience:</strong> &#8220;Show me popular spots that people like me love, BUT make sure they serve the kind of food I actually eat.&#8221;</p><p><strong>The logic:</strong> Pure collaborative filtering can be risky. It might recommend a 5-star Sushi place to someone who hates raw fish just because their taste twins happened to like it. Hybrid filtering adds a <strong>safety layer</strong>:</p><ol><li><p><strong>Social signal (collaborative):</strong> First, find what similar users love.</p></li><li><p><strong>Content check (content-based):</strong> Then, verify that those places match the user&#8217;s known favorite categories (e.g., &#8220;Steakhouses,&#8221; &#8220;Seafood&#8221;). It essentially asks: &#8220;What do my taste twins love that ALSO fits my specific criteria?&#8221;</p></li></ol><p><strong>The query:</strong> This query doesn&#8217;t need a complex pre-calculation step like Prototype 2. It runs in real-time by chaining the logic: Get favorites &#8594; Find twins &#8594; Filter recommendations. We are anchoring this search to <strong>one specific user</strong> (&#8220;Ed&#8221;), filtering the global crowd wisdom through his unique personal constraints in real-time.</p><pre><code><code>// 1. Get the user&#8217;s favorite categories first
MATCH (u:User {name: &#8220;Ed&#8221;}) WITH u LIMIT 1
MATCH (u)-[:WROTE]-&gt;(:Review {stars: 5})-[:REVIEWS]-&gt;(:Business)-[:IN_CATEGORY]-&gt;(c:Category)
WITH u, collect(distinct c.name) AS EdFavorites

// 2. Find &#8220;Taste Twins&#8221; (Users who agreed with Ed on other places)
MATCH (u)-[:WROTE]-&gt;(:Review {stars:5})-[:REVIEWS]-&gt;(:Business)&lt;-[:REVIEWS]-(:Review {stars:5})&lt;-[:WROTE]-(peer:User)
WITH u, EdFavorites, peer LIMIT 100 

// 3. Recommend places from Twins that ALSO match Ed&#8217;s favorites
MATCH (peer)-[:WROTE]-&gt;(:Review {stars:5})-[:REVIEWS]-&gt;(rec:Business)-[:IN_CATEGORY]-&gt;(c:Category)
WHERE NOT (u)-[:WROTE]-&gt;(:Review)-[:REVIEWS]-&gt;(rec)
  AND c.name IN EdFavorites // &lt;--- The Hybrid Filter
RETURN rec.name AS SafeBet, count(peer) AS SocialProof, collect(distinct c.name) AS MatchedTags
ORDER BY SocialProof DESC
LIMIT 5;</code></code></pre><p><strong>The result:</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_!irdC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69f93342-88cb-42e6-939e-13de1b057870_3248x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!irdC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69f93342-88cb-42e6-939e-13de1b057870_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!irdC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69f93342-88cb-42e6-939e-13de1b057870_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!irdC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69f93342-88cb-42e6-939e-13de1b057870_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!irdC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69f93342-88cb-42e6-939e-13de1b057870_3248x1964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!irdC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69f93342-88cb-42e6-939e-13de1b057870_3248x1964.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/69f93342-88cb-42e6-939e-13de1b057870_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;:1058187,&quot;alt&quot;:&quot;Neo4j query results showing &#8220;Flamestone American Grill&#8221; as the top recommendation with a Social Proof score of 63, followed by &#8220;Clear Sky on Cleveland&#8221; with 54.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69f93342-88cb-42e6-939e-13de1b057870_3248x1964.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Neo4j query results showing &#8220;Flamestone American Grill&#8221; as the top recommendation with a Social Proof score of 63, followed by &#8220;Clear Sky on Cleveland&#8221; with 54." title="Neo4j query results showing &#8220;Flamestone American Grill&#8221; as the top recommendation with a Social Proof score of 63, followed by &#8220;Clear Sky on Cleveland&#8221; with 54." srcset="https://substackcdn.com/image/fetch/$s_!irdC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69f93342-88cb-42e6-939e-13de1b057870_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!irdC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69f93342-88cb-42e6-939e-13de1b057870_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!irdC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69f93342-88cb-42e6-939e-13de1b057870_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!irdC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69f93342-88cb-42e6-939e-13de1b057870_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The hybrid engine recommends &#8220;Flamestone American Grill&#8221; because it combines high social proof (63 peers) with specific category matches like &#8220;Steakhouses&#8221; and &#8220;Seafood&#8221;</figcaption></figure></div><ul><li><p><strong>Safe bet:</strong> It recommended &#8220;Flamestone American Grill&#8221; and &#8220;Clear Sky on Cleveland.&#8221;</p></li><li><p><strong>The balidation:</strong> Look at the <code>SocialProof</code> score of <strong>63</strong>. In the previous pure collaborative test (Prototype 2), we often saw recommendations with only 1 neighbor support. Here, by constraining the search to relevant categories, we found a much stronger signal: <strong>63 distinct peers</strong> validated this choice.</p></li></ul><p><strong>The verdict:</strong></p><ul><li><p><strong>The winner:</strong> This is the robust solution we were looking for.</p></li><li><p><strong>Why it wins:</strong> It solves the &#8220;Sparsity&#8221; problem. By focusing on the intersection of <strong>Popularity</strong> and <strong>Relevance</strong>, it avoids random noise. It doesn&#8217;t just say &#8220;People like this&#8221; (collaborative); it says &#8220;63 people like you love this, AND it serves the Steaks you love&#8221; (hybrid).</p></li></ul><p>We have successfully prototyped three distinct engines. But so far, we have only been looking at <strong>local patterns</strong>: finding the immediate neighbors of a single node. The true power of a graph database lies in understanding the <strong>global structure</strong>. Who controls the flow of information? Where are the isolated communities? To answer that, we need to stop querying individual nodes and start analyzing the entire network. It is time to unlock <strong>Graph Data Science (GDS)</strong>.</p><div><hr></div><h2>The advanced analytics: unlocking GDS</h2><p>We have mastered the art of the specific recommendation. Now, let&#8217;s <strong>zoom out to the macro level</strong>. Instead of asking &#8220;What should Ed eat?&#8221;, we are asking &#8220;What is the shape of this entire food scene?&#8221;</p><p>To do this, we use <strong>Graph Data Science (GDS)</strong>. Unlike standard queries that hop from node to node, GDS algorithms hold the <strong>entire graph structure in memory</strong> to calculate global metrics.</p><p>Here is the plan:</p><ul><li><p><strong>Step 1, the projection:</strong> We will create a streamlined, in-memory version of the graph optimized for heavy math.</p></li><li><p><strong>Use case 1, PageRank:</strong> We will calculate global influence to find the &#8220;Google&#8221; of the Yelp dataset.</p></li><li><p><strong>Use case 2, Louvain:</strong> We will detect hidden communities based on behavior rather than geography.</p></li></ul><p>Let&#8217;s start by building the projection.</p><h3>Step 1: The projection, connecting the dots</h3><p><strong>The concept:</strong> Graph algorithms are computationally expensive. Running them directly on the live database would be slow and could lock up the system. Instead, we use a <strong>graph projection</strong>. Think of this as loading a level in a video game. We take a specific snapshot of the data and load it into a high-performance, in-memory structure where the math can run at lightning speed without affecting the actual database storage.</p><p><strong>The logic:</strong> A common mistake here is to project just <strong>Users</strong> and <strong>Businesses</strong>. But remember the schema: <strong>Users</strong> don&#8217;t touch <strong>Businesses</strong> directly; they connect via <strong>Reviews</strong>. If we leave out the <strong>Reviews</strong>, we create a graph of disconnected islands. Influence cannot flow across a gap. Therefore, we must <strong>project the full bridge</strong>: User &#8594; Review &#8594; Business.</p><p><strong>The query:</strong></p><pre><code><code>// Create the in-memory graph projection
CALL gds.graph.project(
    &#8216;yelpGraph&#8217;,
    [&#8217;User&#8217;, &#8216;Business&#8217;, &#8216;Review&#8217;], 
    {
        WROTE: {orientation: &#8216;NATURAL&#8217;}, 
        REVIEWS: {orientation: &#8216;NATURAL&#8217;}
    }
);</code></code></pre><ul><li><p><strong>Name it:</strong> We call this in-memory graph <code>yelpGraph</code>.</p></li><li><p><strong>Load nodes:</strong> We fetch all <strong>User</strong>, <strong>Business</strong>, and <strong>Review</strong> nodes into memory.</p></li><li><p><strong>Load relationships:</strong> We load the <code>WROTE</code> and <code>REVIEWS</code> connections. We specify <code>orientation: &#8216;NATURAL&#8217;</code> to tell the engine to respect the direction of the arrows (<strong>User</strong> writes <strong>Review</strong>, <strong>Review</strong> reviews <strong>Business</strong>), ensuring the flow of influence moves the right way.</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_!edSK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F118c72e7-754e-4132-91e9-c6f18f751f80_3248x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!edSK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F118c72e7-754e-4132-91e9-c6f18f751f80_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!edSK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F118c72e7-754e-4132-91e9-c6f18f751f80_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!edSK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F118c72e7-754e-4132-91e9-c6f18f751f80_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!edSK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F118c72e7-754e-4132-91e9-c6f18f751f80_3248x1964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!edSK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F118c72e7-754e-4132-91e9-c6f18f751f80_3248x1964.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/118c72e7-754e-4132-91e9-c6f18f751f80_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;:1081145,&quot;alt&quot;:&quot;A screenshot of the Neo4j interface showing the result of the gds.graph.project query. The table confirms the graph name \&quot;yelpGraph\&quot; and a node count of 9,128,490, indicating successful data loading.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F118c72e7-754e-4132-91e9-c6f18f751f80_3248x1964.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A screenshot of the Neo4j interface showing the result of the gds.graph.project query. The table confirms the graph name &quot;yelpGraph&quot; and a node count of 9,128,490, indicating successful data loading." title="A screenshot of the Neo4j interface showing the result of the gds.graph.project query. The table confirms the graph name &quot;yelpGraph&quot; and a node count of 9,128,490, indicating successful data loading." srcset="https://substackcdn.com/image/fetch/$s_!edSK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F118c72e7-754e-4132-91e9-c6f18f751f80_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!edSK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F118c72e7-754e-4132-91e9-c6f18f751f80_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!edSK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F118c72e7-754e-4132-91e9-c6f18f751f80_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!edSK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F118c72e7-754e-4132-91e9-c6f18f751f80_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Verifying the brain is loaded: The result confirms that over 9 million nodes have been successfully projected into the high-speed in-memory graph</figcaption></figure></div><p><strong>Important note on cleanup:</strong> Because this projection lives entirely in RAM, it consumes memory (which we know is precious on a laptop). Once we are finished with our analysis, we must run CALL gds.graph.drop(&#8217;yelpGraph&#8217;) to wipe the slate clean and free up resources.</p><h3>Use case 1: PageRank, the influence score</h3><p><strong>The question: </strong>&#8220;Who are the true heavyweights in this network?&#8221; If I sort purely by average stars, the list is useless, it&#8217;s cluttered with dentists and random shops that have one single 5-star review. I want to find the institutions: <strong>the places that define the city&#8217;s food scene</strong>.</p><p><strong>The logic:</strong> We use <strong><a href="https://en.wikipedia.org/wiki/PageRank">PageRank</a></strong> (yes, the algorithm Google used to rank the entire 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_!tj4j!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7dd33c5-ba83-49da-a20a-13b9d9fe8ac4_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tj4j!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7dd33c5-ba83-49da-a20a-13b9d9fe8ac4_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!tj4j!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7dd33c5-ba83-49da-a20a-13b9d9fe8ac4_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!tj4j!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7dd33c5-ba83-49da-a20a-13b9d9fe8ac4_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!tj4j!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7dd33c5-ba83-49da-a20a-13b9d9fe8ac4_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tj4j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7dd33c5-ba83-49da-a20a-13b9d9fe8ac4_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f7dd33c5-ba83-49da-a20a-13b9d9fe8ac4_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;:5903204,&quot;alt&quot;:&quot;A comparison diagram. The left side shows \&quot;Standard Logic\&quot; where all user ratings count equally. The right side shows \&quot;PageRank Logic\&quot; where a review from a \&quot;King\&quot; (influential user) carries more weight, identifying a business as a \&quot;Local Legend.\&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/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7dd33c5-ba83-49da-a20a-13b9d9fe8ac4_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A comparison diagram. The left side shows &quot;Standard Logic&quot; where all user ratings count equally. The right side shows &quot;PageRank Logic&quot; where a review from a &quot;King&quot; (influential user) carries more weight, identifying a business as a &quot;Local Legend.&quot;" title="A comparison diagram. The left side shows &quot;Standard Logic&quot; where all user ratings count equally. The right side shows &quot;PageRank Logic&quot; where a review from a &quot;King&quot; (influential user) carries more weight, identifying a business as a &quot;Local Legend.&quot;" srcset="https://substackcdn.com/image/fetch/$s_!tj4j!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7dd33c5-ba83-49da-a20a-13b9d9fe8ac4_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!tj4j!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7dd33c5-ba83-49da-a20a-13b9d9fe8ac4_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!tj4j!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7dd33c5-ba83-49da-a20a-13b9d9fe8ac4_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!tj4j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7dd33c5-ba83-49da-a20a-13b9d9fe8ac4_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The PageRank difference: Unlike simple star ratings, it treats reviews from influential users as weighted votes</figcaption></figure></div><ul><li><p><strong>Standard logic:</strong> &#8220;This place has 5 stars, so it&#8217;s good.&#8221;</p></li><li><p><strong>PageRank logic:</strong> &#8220;This place has 4 stars, BUT it was reviewed by users who are themselves highly influential reviewers.&#8221; It measures influence flow. A business gains a high score not just by having more reviews, but by having reviews from important people. It separates the local legends from the one-hit wonders.</p></li></ul><p><strong>The query: </strong>We run the algorithm on our in-memory graph (&#8217;yelpGraph&#8217;). We stream the results back and filter them to show only <strong>Businesses</strong> (since PageRank calculates a score for <strong>Users</strong> and <strong>Reviews</strong> too, which we don&#8217;t need right now).</p><pre><code><code>CALL gds.pageRank.stream(&#8217;yelpGraph&#8217;)
YIELD nodeId, score
WITH gds.util.asNode(nodeId) AS node, score
// Filter to only show Businesses (we ignore Review/User node scores)
WHERE node:Business
RETURN node.name AS Business, 
       node.city AS City, 
       node.stars AS Stars, 
       score AS InfluenceScore
ORDER BY score DESC
LIMIT 10;</code></code></pre><p><strong>The result:</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_!Ohkh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9daae7b7-5086-4ac4-8e19-a433c793aced_3248x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ohkh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9daae7b7-5086-4ac4-8e19-a433c793aced_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!Ohkh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9daae7b7-5086-4ac4-8e19-a433c793aced_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!Ohkh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9daae7b7-5086-4ac4-8e19-a433c793aced_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!Ohkh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9daae7b7-5086-4ac4-8e19-a433c793aced_3248x1964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ohkh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9daae7b7-5086-4ac4-8e19-a433c793aced_3248x1964.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9daae7b7-5086-4ac4-8e19-a433c793aced_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;:1090299,&quot;alt&quot;:&quot;A table of Neo4j query results. The first row shows &#8220;Oceana Grill&#8221; in New Orleans with a PageRank score of 1341.56, far outpacing other entries.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9daae7b7-5086-4ac4-8e19-a433c793aced_3248x1964.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A table of Neo4j query results. The first row shows &#8220;Oceana Grill&#8221; in New Orleans with a PageRank score of 1341.56, far outpacing other entries." title="A table of Neo4j query results. The first row shows &#8220;Oceana Grill&#8221; in New Orleans with a PageRank score of 1341.56, far outpacing other entries." srcset="https://substackcdn.com/image/fetch/$s_!Ohkh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9daae7b7-5086-4ac4-8e19-a433c793aced_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!Ohkh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9daae7b7-5086-4ac4-8e19-a433c793aced_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!Ohkh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9daae7b7-5086-4ac4-8e19-a433c793aced_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!Ohkh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9daae7b7-5086-4ac4-8e19-a433c793aced_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The PageRank winner is &#8220;Oceana Grill&#8221; with a massive influence score of 1341, effectively acting as the &#8220;Google&#8221; of the Yelp dataset</figcaption></figure></div><ul><li><p><strong>Winner:</strong> &#8220;Oceana Grill&#8221; in New Orleans takes the crown with a score of 1341.56.</p></li><li><p><strong>Reality check:</strong> Notice the stars. Oceana Grill only has <strong>4.0 stars</strong>. If we sorted by rating, it would be buried on page 50. But PageRank reveals it is the single most central hub in the entire network.</p></li><li><p><strong>Trend:</strong> 4 out of the top 5 spots are in <strong>New Orleans</strong>. This tells us the NOLA food scene is the most interconnected community in this specific dataset: users there are highly active and cross-pollinate between these specific restaurants.</p></li></ul><h3>Use case 2: Louvain, finding hidden tribes</h3><p><strong>The question: </strong>&#8220;What are the hidden social circles?&#8221; Geography doesn&#8217;t always tell the whole story. Do people in Tampa also hang out in Clearwater? Do Philadelphia foodies travel to specific suburbs?</p><p><strong>The logic:</strong> We use the <strong><a href="https://en.wikipedia.org/wiki/Louvain_method">Louvain modularity algorithm</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_!p0dm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6226c81-b644-4512-8fed-25cf14ebf77b_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!p0dm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6226c81-b644-4512-8fed-25cf14ebf77b_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!p0dm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6226c81-b644-4512-8fed-25cf14ebf77b_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!p0dm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6226c81-b644-4512-8fed-25cf14ebf77b_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!p0dm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6226c81-b644-4512-8fed-25cf14ebf77b_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!p0dm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6226c81-b644-4512-8fed-25cf14ebf77b_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c6226c81-b644-4512-8fed-25cf14ebf77b_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;:6784162,&quot;alt&quot;:&quot;A comparison diagram. The left side shows \&quot;Standard Logic\&quot; grouping users by city grids. The right side shows \&quot;Louvain Logic\&quot; grouping users into \&quot;Foodie\&quot; and \&quot;Art\&quot; tribes based on the density of their interactions, ignoring geographic boundaries.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6226c81-b644-4512-8fed-25cf14ebf77b_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A comparison diagram. The left side shows &quot;Standard Logic&quot; grouping users by city grids. The right side shows &quot;Louvain Logic&quot; grouping users into &quot;Foodie&quot; and &quot;Art&quot; tribes based on the density of their interactions, ignoring geographic boundaries." title="A comparison diagram. The left side shows &quot;Standard Logic&quot; grouping users by city grids. The right side shows &quot;Louvain Logic&quot; grouping users into &quot;Foodie&quot; and &quot;Art&quot; tribes based on the density of their interactions, ignoring geographic boundaries." srcset="https://substackcdn.com/image/fetch/$s_!p0dm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6226c81-b644-4512-8fed-25cf14ebf77b_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!p0dm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6226c81-b644-4512-8fed-25cf14ebf77b_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!p0dm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6226c81-b644-4512-8fed-25cf14ebf77b_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!p0dm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6226c81-b644-4512-8fed-25cf14ebf77b_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">How Louvain works: Instead of grouping people by arbitrary city limits, it detects organic tribes based on shared behaviors and connections</figcaption></figure></div><ul><li><p><strong>Standard logic:</strong> Group people by &#8220;City&#8221; or &#8220;Zip Code.&#8221;</p></li><li><p><strong>Louvain logic:</strong> Group people by behavior. It detects clusters of nodes that are more densely connected to each other than to the rest of the network.</p><p>It finds tribes automatically. If a group of users exclusively reviews a specific set of businesses, they form a distinct community, regardless of what the map says.</p></li></ul><p><strong>The query:</strong> We run Louvain on our projected graph. It assigns a communityId to every node. We then group the results by this ID to see which cities fall into the same &#8220;social bucket.&#8221;</p><pre><code><code>// 1. Run Louvain to assign a &#8216;communityId&#8217; to each node
CALL gds.louvain.stream(&#8217;yelpGraph&#8217;)
YIELD nodeId, communityId
WITH gds.util.asNode(nodeId) AS node, communityId
WHERE node:Business

// 2. Group by Community to see what defines them
RETURN communityId, 
       count(node) AS Size, 
       collect(DISTINCT node.city)[0..3] AS TopCities, 
       avg(node.stars) AS AvgRating
ORDER BY Size DESC
LIMIT 5;</code></code></pre><p><strong>The result:</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_!EceC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96be3d73-1e4f-46ce-82f5-e0a87168a31d_3248x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EceC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96be3d73-1e4f-46ce-82f5-e0a87168a31d_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!EceC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96be3d73-1e4f-46ce-82f5-e0a87168a31d_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!EceC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96be3d73-1e4f-46ce-82f5-e0a87168a31d_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!EceC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96be3d73-1e4f-46ce-82f5-e0a87168a31d_3248x1964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EceC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96be3d73-1e4f-46ce-82f5-e0a87168a31d_3248x1964.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/96be3d73-1e4f-46ce-82f5-e0a87168a31d_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;:1114633,&quot;alt&quot;:&quot;Neo4j query results table. Row 1 (Community 959057) groups &#8220;Tampa Bay, Clearwater, Largo&#8221;. Row 2 (Community 177809) groups &#8220;Philadelphia, Wilmington, Bala Cynwyd&#8221;. Row 4 (Community 941635) groups &#8220;Green Lane, Paoli, Ardmore&#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/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96be3d73-1e4f-46ce-82f5-e0a87168a31d_3248x1964.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Neo4j query results table. Row 1 (Community 959057) groups &#8220;Tampa Bay, Clearwater, Largo&#8221;. Row 2 (Community 177809) groups &#8220;Philadelphia, Wilmington, Bala Cynwyd&#8221;. Row 4 (Community 941635) groups &#8220;Green Lane, Paoli, Ardmore&#8221;." title="Neo4j query results table. Row 1 (Community 959057) groups &#8220;Tampa Bay, Clearwater, Largo&#8221;. Row 2 (Community 177809) groups &#8220;Philadelphia, Wilmington, Bala Cynwyd&#8221;. Row 4 (Community 941635) groups &#8220;Green Lane, Paoli, Ardmore&#8221;." srcset="https://substackcdn.com/image/fetch/$s_!EceC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96be3d73-1e4f-46ce-82f5-e0a87168a31d_3248x1964.png 424w, https://substackcdn.com/image/fetch/$s_!EceC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96be3d73-1e4f-46ce-82f5-e0a87168a31d_3248x1964.png 848w, https://substackcdn.com/image/fetch/$s_!EceC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96be3d73-1e4f-46ce-82f5-e0a87168a31d_3248x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!EceC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96be3d73-1e4f-46ce-82f5-e0a87168a31d_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The Louvain algorithm uncovers social borders: it unifies Tampa Bay into one community (959057) but stratifies Philadelphia, separating the city center (177809) from its western suburbs (941635)</figcaption></figure></div><ul><li><p><strong>The &#8220;tampa unity&#8221;:</strong> Look at the top community (959057). It groups <strong>Tampa Bay</strong>, <strong>Clearwater</strong>, and <strong>Largo</strong> together. Unlike standard city boundaries, the social graph reveals that this is one massive, interconnected ecosystem. Users move freely across the bay to eat.</p></li><li><p><strong>The &#8220;philly stratification&#8221;:</strong> Contrast that with Philadelphia. The city center forms one tribe (177809: Philadelphia, Wilmington), while the &#8220;Main Line&#8221; suburbs form a completely separate tribe (941635: Paoli, Ardmore). Even though they are geographic neighbors, the algorithm detected a social wall: the &#8220;City&#8221; crowd and the &#8220;Suburban&#8221; crowd rarely cross paths.</p></li></ul><p>By moving from simple queries to global algorithms, we uncovered truths that a standard dashboard would miss:</p><ul><li><p><strong>Influence &gt; Rating:</strong> <strong>PageRank</strong> proved that a 4.0-star restaurant can be the most important node in the network if it acts as a hub for influential users.</p></li><li><p><strong>Behavior &gt; Geography:</strong> <strong>Louvain</strong> revealed that &#8220;Community&#8221; is defined by where people actually go, not where the city limits end. It showed us that Tampa and Clearwater are one big happy family, while Philadelphia and its suburbs are socially divorced.</p></li></ul><p><strong>Don&#8217;t forget to clean up</strong>. Before we move on, we need to <strong>free up your RAM</strong>. That yelpGraph projection is currently eating up gigabytes of memory. Run this command to drop the projection and release the resources:</p><pre><code><code>CALL gds.graph.drop(&#8217;yelpGraph&#8217;);</code></code></pre><p>We have built the schema, ingested the data, and run advanced AI algorithms. Looking at these results, it might seem like a seamless journey from idea to insight. It wasn&#8217;t. Behind every successful query was a trail of error messages, configuration battles, and memory crashes. Let&#8217;s talk about the reality of running this stack on a laptop.</p><div><hr></div><h2>The reality: challenges and lessons</h2><p>Building a graph-based AI on a laptop sounds cool, but let&#8217;s be honest: it wasn&#8217;t all smooth sailing. For every aha! moment, there were long stretches of <strong>staring at a loading bar</strong> or <strong>debugging a cryptic error</strong>.</p><p>My troubleshooting process was identical every time: I took a screenshot of the error, pasted it into Gemini, and let it <strong>guide me through the solution step-by-step</strong>. However, to save you the trouble of hitting them yourself, here are the actual technical roadblocks I faced so you know they exist.</p><p>Before I could even run a query, I hit two major technical blockers that aren&#8217;t usually mentioned in the quick start guides:</p><ul><li><p><strong>The permissions block (APOC errors):</strong> When I tried to load the Yelp JSON file, Neo4j immediately threw a security error. By default, Neo4j locks down the ability to read local files.</p><ul><li><p><strong>The fix:</strong> There is no switch for this in the UI. I had to manually create a specific configuration file named <code>apoc.conf</code> in the configuration folder and explicitly whitelist file imports.</p></li></ul></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_!tbkH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F354f0089-6d21-4761-99eb-2d99a61dd46c_3248x1962.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tbkH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F354f0089-6d21-4761-99eb-2d99a61dd46c_3248x1962.png 424w, https://substackcdn.com/image/fetch/$s_!tbkH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F354f0089-6d21-4761-99eb-2d99a61dd46c_3248x1962.png 848w, https://substackcdn.com/image/fetch/$s_!tbkH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F354f0089-6d21-4761-99eb-2d99a61dd46c_3248x1962.png 1272w, https://substackcdn.com/image/fetch/$s_!tbkH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F354f0089-6d21-4761-99eb-2d99a61dd46c_3248x1962.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tbkH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F354f0089-6d21-4761-99eb-2d99a61dd46c_3248x1962.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/354f0089-6d21-4761-99eb-2d99a61dd46c_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;:792208,&quot;alt&quot;:&quot;A screenshot of the Neo4j Desktop interface showing a failed Cypher query execution. The red error message explicitly states \&quot;Import from files not enabled\&quot; and instructs the user to set apoc.import.file.enabled=true in their apoc.conf, highlighting the default security restriction.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F354f0089-6d21-4761-99eb-2d99a61dd46c_3248x1962.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A screenshot of the Neo4j Desktop interface showing a failed Cypher query execution. The red error message explicitly states &quot;Import from files not enabled&quot; and instructs the user to set apoc.import.file.enabled=true in their apoc.conf, highlighting the default security restriction." title="A screenshot of the Neo4j Desktop interface showing a failed Cypher query execution. The red error message explicitly states &quot;Import from files not enabled&quot; and instructs the user to set apoc.import.file.enabled=true in their apoc.conf, highlighting the default security restriction." srcset="https://substackcdn.com/image/fetch/$s_!tbkH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F354f0089-6d21-4761-99eb-2d99a61dd46c_3248x1962.png 424w, https://substackcdn.com/image/fetch/$s_!tbkH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F354f0089-6d21-4761-99eb-2d99a61dd46c_3248x1962.png 848w, https://substackcdn.com/image/fetch/$s_!tbkH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F354f0089-6d21-4761-99eb-2d99a61dd46c_3248x1962.png 1272w, https://substackcdn.com/image/fetch/$s_!tbkH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F354f0089-6d21-4761-99eb-2d99a61dd46c_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 role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The initial attempt to ingest the Yelp dataset failed because Neo4j blocks local file imports by default for security</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_!qR-O!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eb0cfce-787e-4d5e-9f60-01dd40b7bfcc_3248x1932.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qR-O!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eb0cfce-787e-4d5e-9f60-01dd40b7bfcc_3248x1932.png 424w, https://substackcdn.com/image/fetch/$s_!qR-O!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eb0cfce-787e-4d5e-9f60-01dd40b7bfcc_3248x1932.png 848w, https://substackcdn.com/image/fetch/$s_!qR-O!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eb0cfce-787e-4d5e-9f60-01dd40b7bfcc_3248x1932.png 1272w, https://substackcdn.com/image/fetch/$s_!qR-O!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eb0cfce-787e-4d5e-9f60-01dd40b7bfcc_3248x1932.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qR-O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eb0cfce-787e-4d5e-9f60-01dd40b7bfcc_3248x1932.png" width="1456" height="866" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9eb0cfce-787e-4d5e-9f60-01dd40b7bfcc_3248x1932.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:866,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:690501,&quot;alt&quot;:&quot;A screenshot of Visual Studio Code showing the creation of a new file named apoc.conf, with code enabling file imports and configuration usage to bypass default security restrictions.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eb0cfce-787e-4d5e-9f60-01dd40b7bfcc_3248x1932.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A screenshot of Visual Studio Code showing the creation of a new file named apoc.conf, with code enabling file imports and configuration usage to bypass default security restrictions." title="A screenshot of Visual Studio Code showing the creation of a new file named apoc.conf, with code enabling file imports and configuration usage to bypass default security restrictions." srcset="https://substackcdn.com/image/fetch/$s_!qR-O!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eb0cfce-787e-4d5e-9f60-01dd40b7bfcc_3248x1932.png 424w, https://substackcdn.com/image/fetch/$s_!qR-O!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eb0cfce-787e-4d5e-9f60-01dd40b7bfcc_3248x1932.png 848w, https://substackcdn.com/image/fetch/$s_!qR-O!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eb0cfce-787e-4d5e-9f60-01dd40b7bfcc_3248x1932.png 1272w, https://substackcdn.com/image/fetch/$s_!qR-O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9eb0cfce-787e-4d5e-9f60-01dd40b7bfcc_3248x1932.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Resolving the procedure execution error by creating a new apoc.conf file and setting apoc.import.file.enabled=true to allow local data ingestion</figcaption></figure></div><ul><li><p><strong>The memory wall (heap size):</strong> Once the data started flowing, my laptop crashed. The default settings allocate a tiny amount of RAM, fine for a toy dataset, but fatal for 10 million nodes.</p><ul><li><p><strong>The fix:</strong> I had to dive into the <code>neo4j.conf</code> file and manually override the default memory allocation, bumping the heap size to 2GB to give the database enough breathing room to breathe.</p></li></ul></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_!5Pn2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91148e36-b509-4186-8173-ba6352f3cf3d_3248x1932.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5Pn2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91148e36-b509-4186-8173-ba6352f3cf3d_3248x1932.png 424w, https://substackcdn.com/image/fetch/$s_!5Pn2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91148e36-b509-4186-8173-ba6352f3cf3d_3248x1932.png 848w, https://substackcdn.com/image/fetch/$s_!5Pn2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91148e36-b509-4186-8173-ba6352f3cf3d_3248x1932.png 1272w, https://substackcdn.com/image/fetch/$s_!5Pn2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91148e36-b509-4186-8173-ba6352f3cf3d_3248x1932.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5Pn2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91148e36-b509-4186-8173-ba6352f3cf3d_3248x1932.png" width="1456" height="866" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/91148e36-b509-4186-8173-ba6352f3cf3d_3248x1932.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:866,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1285627,&quot;alt&quot;:&quot;A screenshot of the neo4j.conf file in a code editor, highlighting the line where the Java Heap Size is manually updated to 2G to handle the large Yelp dataset.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.theaithinker.com/i/180890588?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91148e36-b509-4186-8173-ba6352f3cf3d_3248x1932.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A screenshot of the neo4j.conf file in a code editor, highlighting the line where the Java Heap Size is manually updated to 2G to handle the large Yelp dataset." title="A screenshot of the neo4j.conf file in a code editor, highlighting the line where the Java Heap Size is manually updated to 2G to handle the large Yelp dataset." srcset="https://substackcdn.com/image/fetch/$s_!5Pn2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91148e36-b509-4186-8173-ba6352f3cf3d_3248x1932.png 424w, https://substackcdn.com/image/fetch/$s_!5Pn2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91148e36-b509-4186-8173-ba6352f3cf3d_3248x1932.png 848w, https://substackcdn.com/image/fetch/$s_!5Pn2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91148e36-b509-4186-8173-ba6352f3cf3d_3248x1932.png 1272w, https://substackcdn.com/image/fetch/$s_!5Pn2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91148e36-b509-4186-8173-ba6352f3cf3d_3248x1932.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Preventing &#8220;OutOfMemory&#8221; crashes by modifying neo4j.conf to increase server.memory.heap.max_size to 2G</figcaption></figure></div><p>Here are the two additional challenges:</p><ul><li><p><strong>The load crash, why batching matters.</strong> When I first tried to ingest the 7 million reviews, I naively tried to load the whole JSON file at once. The result? My laptop froze, and Neo4j crashed immediately. Loading a 4GB file in one go overwhelms the RAM. It&#8217;s like trying to swallow a whole watermelon.</p><ul><li><p><strong>The fix:</strong> I had to use a specific APOC tool called <code>apoc.periodic.iterate</code>. This works like a factory conveyor belt: it picks up 10,000 records, processes them, saves them, clears the memory, and then picks up the next 10,000. Batching isn&#8217;t optional for this dataset size; it&#8217;s mandatory.</p></li></ul></li><li><p><strong>The combinatorial explosion, the &#8220;Philadelphia&#8221; problem.</strong> During the collaborative filtering experiments, I tried to run a similarity check on all users who reviewed restaurants in Philadelphia. The query spun forever and then failed. I underestimated the density. A popular spot like &#8220;Reading Terminal Market&#8221; has thousands of reviews. If 5,000 people reviewed it, asking the database to compare every pair creates 5,000 x 4,999 = 25 million combinations instantly. That single calculation consumed all my RAM.</p><ul><li><p><strong>The fix:</strong> I had to flip the script from a global search to a <strong>personalized search</strong>. Instead of matching everyone against everyone (which requires a supercomputer), I picked one specific user and found their soulmates. This user-centric approach is how real-world engines actually scale.</p></li></ul></li></ul><p>After ingesting 10 million nodes, hacking config files, and restarting the server more times than I can count, the big question remains. <strong>Was it worth the headache?</strong></p><div><hr></div><h2>The verdict: is Neo4j worth the hype?</h2><p>To answer that, I have to point out something strange. In the current AI gold rush, everyone is deafeningly loud about vector databases and context windows, yet strangely silent about graphs. Neo4j feels like the industry&#8217;s best-kept secret, a tool that is incredibly powerful yet completely absent from the mainstream product conversation. There is no hype, but there absolutely should be!</p><p>So, after seeing the results, finding hidden communities, predicting user tastes with math, and mapping influence in milliseconds, my verdict is: <strong>Yes, but...</strong></p><ul><li><p><strong>Yes:</strong> For problems involving <strong>relationships</strong> (social networks, fraud detection, supply chains, recommendations), it is infinitely superior to SQL. It allows you to ask questions, like &#8220;find friends of friends who like Steakhouses,&#8221; that are computationally impossible in a standard database.</p></li><li><p><strong>But:</strong> It has a steeper learning curve. You need to be comfortable editing config files, managing memory, and thinking in graphs rather than tables.</p></li></ul><p>This project was just the &#8220;hello world&#8221; of graph analytics. Now that the data is structured, the real potential lies in connecting this brain to modern AI. Here is what I expect to explore next:</p><ul><li><p><strong><a href="https://neo4j.com/developer/genai-ecosystem/aura-agent/">GraphRAG (Retrieval-Augmented Generation)</a>:</strong> Currently, LLMs hallucinate because they lack factual grounding. By connecting an LLM (like GPT-4) to this Neo4j graph, I can force the AI to look up facts before answering. Instead of guessing a restaurant recommendation, it retrieves the exact relationships from the graph and summarizes them.</p></li><li><p><strong><a href="https://neo4j.com/developer/genai-ecosystem/vector-search/">Vector search and embeddings</a>:</strong> Neo4j now supports vector indexing. I want to explore hybrid search: combining the explicit precision of a graph query (e.g., &#8220;must be a pizza place&#8221;) with the semantic nuance of vector search (e.g., &#8220;has a cozy, romantic vibe&#8221;).</p></li><li><p><strong><a href="https://neo4j.com/labs/genai-ecosystem/llm-graph-builder/">Knowledge graph construction</a>:</strong> Instead of manually defining the schema, I want to use an LLM to read the raw text of the Yelp reviews and automatically extract new entities (like &#8220;specific dish names&#8221; or &#8220;vibe descriptors&#8221;) to populate the graph dynamically.</p></li></ul><p>We are entering the era of GraphRAG. The future of AI isn&#8217;t just about feeding text to an LLM; it&#8217;s about <strong>giving the LLM a brain of structured knowledge</strong>. By learning Neo4j today, you aren&#8217;t just learning a database. You are learning the architecture of the next generation of AI applications.</p><div><hr></div><p>Reading about graphs is one thing; seeing your own data come to life as a network is another. Pick a dataset, download <a href="https://neo4j.com/download/">Neo4j Desktop</a>, load your data, and just run <code>MATCH (n) RETURN n LIMIT 25</code>. What will you graph first?</p>]]></content:encoded></item><item><title><![CDATA[How to build an AI-powered app for user testing]]></title><description><![CDATA[Static mockups can't test AI behavior. Learn how to use Google AI Studio to build functional apps that let you validate AI features with users before writing a line of production code.]]></description><link>https://www.theaithinker.com/p/how-to-build-ai-powered-app-for-user</link><guid isPermaLink="false">https://www.theaithinker.com/p/how-to-build-ai-powered-app-for-user</guid><dc:creator><![CDATA[Adam Faik]]></dc:creator><pubDate>Mon, 01 Dec 2025 12:01:07 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/393b3f51-e2bb-4c5c-abd1-7f800dba58b3_1024x731.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This article could have been just three sentences long:</p><blockquote><p>Go to <a href="https://aistudio.google.com/u/1/apps">Google AI Studio</a>. Click the &#8220;I&#8217;m feeling lucky&#8221; button. Be amazed.</p></blockquote><p>In fact, if you stop reading right now, open a new tab, and go test it yourself, I won&#8217;t be offended. I&#8217;ll be jealous that you&#8217;re having more fun than I am writing this.</p><p>To prove I&#8217;m not exaggerating, here is what happened when I clicked that button today. The system randomly generated a prompt for a music theory app. I am not a musician. I barely know what a chord is.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!d8Y_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25ced2ae-c706-4db2-b86d-bd03e9584c11_3012x1486.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!d8Y_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25ced2ae-c706-4db2-b86d-bd03e9584c11_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!d8Y_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25ced2ae-c706-4db2-b86d-bd03e9584c11_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!d8Y_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25ced2ae-c706-4db2-b86d-bd03e9584c11_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!d8Y_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25ced2ae-c706-4db2-b86d-bd03e9584c11_3012x1486.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!d8Y_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25ced2ae-c706-4db2-b86d-bd03e9584c11_3012x1486.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/25ced2ae-c706-4db2-b86d-bd03e9584c11_3012x1486.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;:493985,&quot;alt&quot;:&quot;A screenshot of the Google AI Studio interface with red boxes highlighting the 'Build' menu option on the left and the 'I'm feeling lucky' button next to the prompt input field.&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://adamfaik.substack.com/i/179632953?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25ced2ae-c706-4db2-b86d-bd03e9584c11_3012x1486.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A screenshot of the Google AI Studio interface with red boxes highlighting the 'Build' menu option on the left and the 'I'm feeling lucky' button next to the prompt input field." title="A screenshot of the Google AI Studio interface with red boxes highlighting the 'Build' menu option on the left and the 'I'm feeling lucky' button next to the prompt input field." srcset="https://substackcdn.com/image/fetch/$s_!d8Y_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25ced2ae-c706-4db2-b86d-bd03e9584c11_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!d8Y_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25ced2ae-c706-4db2-b86d-bd03e9584c11_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!d8Y_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25ced2ae-c706-4db2-b86d-bd03e9584c11_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!d8Y_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25ced2ae-c706-4db2-b86d-bd03e9584c11_3012x1486.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The starting point in Google AI Studio, where I simply clicked on the &#8220;I&#8217;m feeling lucky&#8221; button to build a new app from scratch.</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_!Ui5r!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0e5cd1f-e5d0-490c-8d88-b96c97734c9a_3012x1486.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ui5r!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0e5cd1f-e5d0-490c-8d88-b96c97734c9a_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!Ui5r!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0e5cd1f-e5d0-490c-8d88-b96c97734c9a_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!Ui5r!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0e5cd1f-e5d0-490c-8d88-b96c97734c9a_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!Ui5r!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0e5cd1f-e5d0-490c-8d88-b96c97734c9a_3012x1486.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ui5r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0e5cd1f-e5d0-490c-8d88-b96c97734c9a_3012x1486.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e0e5cd1f-e5d0-490c-8d88-b96c97734c9a_3012x1486.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;:291262,&quot;alt&quot;:&quot;A screenshot showing the app generation process in Google AI Studio, where the prompt 'Build a music theory app' is active, a file list is populating on the left, and a central loading card reads 'Gemini intelligence in your app'.&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://adamfaik.substack.com/i/179632953?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0e5cd1f-e5d0-490c-8d88-b96c97734c9a_3012x1486.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A screenshot showing the app generation process in Google AI Studio, where the prompt 'Build a music theory app' is active, a file list is populating on the left, and a central loading card reads 'Gemini intelligence in your app'." title="A screenshot showing the app generation process in Google AI Studio, where the prompt 'Build a music theory app' is active, a file list is populating on the left, and a central loading card reads 'Gemini intelligence in your app'." srcset="https://substackcdn.com/image/fetch/$s_!Ui5r!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0e5cd1f-e5d0-490c-8d88-b96c97734c9a_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!Ui5r!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0e5cd1f-e5d0-490c-8d88-b96c97734c9a_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!Ui5r!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0e5cd1f-e5d0-490c-8d88-b96c97734c9a_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!Ui5r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0e5cd1f-e5d0-490c-8d88-b96c97734c9a_3012x1486.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Seconds later, Gemini is already processing the request, generating the necessary file structure and code for the music theory application in real-time.</figcaption></figure></div><p><strong>196 seconds later</strong>, this is what appeared:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9gpn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87a09e67-487a-42a0-9ca3-de327ab3e96c_3012x1486.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9gpn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87a09e67-487a-42a0-9ca3-de327ab3e96c_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!9gpn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87a09e67-487a-42a0-9ca3-de327ab3e96c_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!9gpn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87a09e67-487a-42a0-9ca3-de327ab3e96c_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!9gpn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87a09e67-487a-42a0-9ca3-de327ab3e96c_3012x1486.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9gpn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87a09e67-487a-42a0-9ca3-de327ab3e96c_3012x1486.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/87a09e67-487a-42a0-9ca3-de327ab3e96c_3012x1486.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;:368339,&quot;alt&quot;:&quot;A screenshot of the generated 'SonicTheory AI' application displaying a digital piano keyboard visualizer above a chat interface that introduces itself as a music theory assistant.&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://adamfaik.substack.com/i/179632953?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87a09e67-487a-42a0-9ca3-de327ab3e96c_3012x1486.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A screenshot of the generated 'SonicTheory AI' application displaying a digital piano keyboard visualizer above a chat interface that introduces itself as a music theory assistant." title="A screenshot of the generated 'SonicTheory AI' application displaying a digital piano keyboard visualizer above a chat interface that introduces itself as a music theory assistant." srcset="https://substackcdn.com/image/fetch/$s_!9gpn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87a09e67-487a-42a0-9ca3-de327ab3e96c_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!9gpn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87a09e67-487a-42a0-9ca3-de327ab3e96c_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!9gpn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87a09e67-487a-42a0-9ca3-de327ab3e96c_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!9gpn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87a09e67-487a-42a0-9ca3-de327ab3e96c_3012x1486.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The initial result appears just minutes later: a clean, functional &#8220;SonicTheory AI&#8221; app with a piano visualizer and a chat interface, ready for interaction.</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_!mIR9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1fb4aef-9a3f-4651-9630-de6080b7013c_3012x1486.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mIR9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1fb4aef-9a3f-4651-9630-de6080b7013c_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!mIR9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1fb4aef-9a3f-4651-9630-de6080b7013c_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!mIR9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1fb4aef-9a3f-4651-9630-de6080b7013c_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!mIR9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1fb4aef-9a3f-4651-9630-de6080b7013c_3012x1486.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mIR9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1fb4aef-9a3f-4651-9630-de6080b7013c_3012x1486.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b1fb4aef-9a3f-4651-9630-de6080b7013c_3012x1486.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;:415065,&quot;alt&quot;:&quot;A screenshot of the 'SonicTheory AI' app functioning, showing blue highlighted keys for the 'G Natural Minor Scale' on the piano visualizer and a detailed text explanation of the scale in the chat window.&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://adamfaik.substack.com/i/179632953?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1fb4aef-9a3f-4651-9630-de6080b7013c_3012x1486.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A screenshot of the 'SonicTheory AI' app functioning, showing blue highlighted keys for the 'G Natural Minor Scale' on the piano visualizer and a detailed text explanation of the scale in the chat window." title="A screenshot of the 'SonicTheory AI' app functioning, showing blue highlighted keys for the 'G Natural Minor Scale' on the piano visualizer and a detailed text explanation of the scale in the chat window." srcset="https://substackcdn.com/image/fetch/$s_!mIR9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1fb4aef-9a3f-4651-9630-de6080b7013c_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!mIR9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1fb4aef-9a3f-4651-9630-de6080b7013c_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!mIR9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1fb4aef-9a3f-4651-9630-de6080b7013c_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!mIR9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1fb4aef-9a3f-4651-9630-de6080b7013c_3012x1486.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The app in action, perfectly visualizing a &#8220;G Natural Minor Scale&#8221; on the piano keys and explaining the theory in the chat.</figcaption></figure></div><p>It didn&#8217;t just write code; it built a functional, interactive UI with a chat interface that understands context. <strong>It feels like magic.</strong></p><p>That is my daily source of inspiration for AI features. It&#8217;s <strong>free to prototype</strong>, <strong>free to test</strong>, and deployable to production in a <strong>few clicks</strong>. But before we get to the &#8220;how,&#8221; we need to talk about the &#8220;why.&#8221; Because right now, the product world is in a state of FOMO.</p><p>In this guide, we are going to move past the hype and walk through the entire journey of becoming a technical builder:</p><ul><li><p><strong><a href="https://adamfaik.substack.com/i/179632953/the-old-prototyping-tools-fail-for-ai">Why the old prototyping tools fail for AI</a>.</strong> Why Figma is useless for LLMs and how paid tools create credit anxiety.</p></li><li><p><strong><a href="https://adamfaik.substack.com/i/179632953/my-aha-moment-discovering-google-ai-studio">My &#8220;aha!&#8221; moment: Discovering Google AI Studio</a>. </strong>The distinction between Gemini (the car) and AI Studio (the factory).</p></li><li><p><strong><a href="https://adamfaik.substack.com/i/179632953/building-my-dream-app-in-one-afternoon">Building my dream app in one afternoon</a>.</strong> How I built, debugged, and deployed a real app for YouTube content discovery.</p></li><li><p><strong><a href="https://adamfaik.substack.com/i/179632953/but-i-work-on-a-mature-product">&#8220;But I work on a mature product...&#8221;</a></strong> The clone and mutate workflow for enterprise product managers.</p></li><li><p><strong><a href="https://adamfaik.substack.com/i/179632953/advanced-tips-for-the-pm-turned-builder">Advanced tips for the PM-turned-builder</a>.</strong> 6 expert tips including specific prompts, checkpoints, and GitHub integration.</p></li><li><p><strong><a href="https://adamfaik.substack.com/i/179632953/stop-debating-start-validating">Stop debating, start validating</a>.</strong> A simple framework to decide when to use Google AI Studio versus visual tools like Lovable.dev or v0.dev.</p></li></ul><p>Let&#8217;s start by diagnosing the root cause of the pressure we are all feeling.</p><div><hr></div><h2>The &#8220;AI everywhere&#8221; FOMO</h2><p>With the arrival of LLMs, everything suddenly felt magical. Naturally, there is now immense <strong>pressure to put AI features everywhere</strong>. It&#8217;s a B2C2B phenomenon: everyone uses ChatGPT personally, so C-levels, stakeholders, and even users expect to see that <strong>same magic inside every product they use</strong>.</p><p>But in this rush, we are losing our pragmatism. We aren&#8217;t asking &#8220;<strong>is this useful?</strong>&#8221; We&#8217;re asking &#8220;is this AI?&#8221;</p><p>To illustrate this, let&#8217;s look at a simple example.</p><p>Imagine you are on a Zillow-like real estate site looking for an apartment. Personally, I love good old-fashioned filters. I tick &#8220;2 bedrooms,&#8221; &#8220;Balcony,&#8221; and &#8220;Max $2000.&#8221; It takes me minutes to set up, I save the notification, and I&#8217;m done.</p><p>Now, imagine a Product Manager decides to replace those filters with a cutting-edge AI chatbot. Suddenly, I&#8217;m forced to discuss my housing needs with my screen. I have to type out paragraphs. The <strong>AI guesses my intent</strong>, gets it 50% wrong, and I have to correct it. What used to take 5 minutes now takes 30.</p><p>The experience is technically AI, but it is arguably a <strong>much worse product</strong>:</p><ul><li><p><strong>The old way:</strong> 3 clicks &#8594; Results found &#8594; <strong>Happy user (5 mins)</strong></p></li><li><p><strong>The AI trap:</strong> User types prompt &#8594; AI misunderstands &#8594; User corrects &#8594; <strong>Frustrated user (30 mins)</strong></p></li></ul><p>This brings us to the core dilemma for every PM today: How do we separate the AI traps from the <strong>truly transformative AI features</strong>? The only way isn&#8217;t theory: it&#8217;s experimentation. But the way we experiment is broken.</p><div><hr></div><h2>The old prototyping tools fail for AI</h2><p>If we agree that experimentation is the only way forward, the next question is: <strong>how do we experiment?</strong> For most Product Managers, our current toolkit is failing us.</p><p>The classic PM or designer workflow is to build a Figma mockup, show it to users, and gather feedback. This works perfectly for a new button or a checkout flow.</p><p>But for AI? It&#8217;s useless. <strong>You cannot mock up a conversation with an LLM</strong>. In Figma, you are writing a script of what you hope the AI will say. You are testing a simulation, not the technology itself. By the time you&#8217;ve spent two weeks perfecting the static UI, the underlying models have already changed.</p><p>Recently, a new wave of prompt-to-app tools like <a href="https://lovable.dev/">Lovable.dev</a> or <a href="https://v0.dev/">v0.dev</a> has emerged. These are incredible, but they introduce a new friction: <strong>Credit anxiety</strong>.</p><p>Because these tools are paid services, <strong>every experiment has a literal price tag</strong>. You hesitate to iterate. You worry about wasting your credits on a bad idea. Instead of exploring freely, you start budgeting your creativity. Plus, you often still need to bring your own LLM API keys and wire them up manually, which adds just enough technical friction to stop a PM in their tracks.</p><p>We need a sandbox that is <strong>powerful</strong>, <strong>native</strong>, and most importantly, <strong>free</strong> from the fear of wasting money on a bad idea.</p><div><hr></div><h2>My &#8220;aha!&#8221; moment: Discovering Google AI Studio</h2><p>I didn&#8217;t find the solution myself. I was actually staying late at work one night, drafting an email to legal and purchasing teams to ask for access to a paid prototyping tool.</p><p>A colleague from marketing stopped me. &#8220;Forget that,&#8221; he said. &#8220;Just use AI Studio.&#8221;</p><p>He sat me down and showed me a project he&#8217;d built in an hour: a tool that could take a live video of an object (like headphones), analyze it, and instantly generate a classified ad with a price estimate, title, and description for Leboncoin (the French equivalent of Craigslist).</p><p>It wasn&#8217;t just text. It was video, vision, and reasoning, all working together. And he hadn&#8217;t paid a cent.</p><p>That night, I realized I had been confusing two very different Google products. If you are a PM, you need to understand this distinction:</p><ul><li><p><strong>Gemini (<a href="https://gemini.google.com/">gemini.google.com</a>):</strong> This is the <strong>finished car</strong>. It&#8217;s the consumer chatbot you talk to. It&#8217;s polished, safe, and ready to drive.</p></li><li><p><strong>Google AI Studio (<a href="https://aistudio.google.com/">aistudio.google.com</a>):</strong> This is the <strong>car factory</strong>. It is the developer workbench where you can open the hood, swap the engine, and build your own vehicle.</p></li></ul><p>Here is the best part: <strong>Google AI Studio is free to use.</strong></p><p>Unlike other tools that meter your usage, AI Studio gives you a generous free tier to experiment with the Gemini API. This changes your psychology as a builder. You can run a prompt 50 times just to see what happens. <strong>You can try a crazy idea, fail, and try again</strong>, without worrying that you&#8217;re burning through a budget.</p><p>It turns prototyping from a cost center into a <strong>creative playground</strong>.</p><div><hr></div><h2>Building my dream app in one afternoon</h2><p>To prove that this isn&#8217;t just theory, I decided to build a real tool to solve a personal problem I have every evening: My YouTube homepage on desktop is a casino.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dSCW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdd5affa-acee-4749-86fa-fc631ca8740f_3012x1486.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dSCW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdd5affa-acee-4749-86fa-fc631ca8740f_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!dSCW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdd5affa-acee-4749-86fa-fc631ca8740f_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!dSCW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdd5affa-acee-4749-86fa-fc631ca8740f_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!dSCW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdd5affa-acee-4749-86fa-fc631ca8740f_3012x1486.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dSCW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdd5affa-acee-4749-86fa-fc631ca8740f_3012x1486.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cdd5affa-acee-4749-86fa-fc631ca8740f_3012x1486.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;:3528806,&quot;alt&quot;:&quot;A screenshot of a cluttered YouTube homepage in dark mode, showing a disjointed mix of content including an airline advertisement, a Tom and Jerry cartoon, and various tech and music videos.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://adamfaik.substack.com/i/179632953?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdd5affa-acee-4749-86fa-fc631ca8740f_3012x1486.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A screenshot of a cluttered YouTube homepage in dark mode, showing a disjointed mix of content including an airline advertisement, a Tom and Jerry cartoon, and various tech and music videos." title="A screenshot of a cluttered YouTube homepage in dark mode, showing a disjointed mix of content including an airline advertisement, a Tom and Jerry cartoon, and various tech and music videos." srcset="https://substackcdn.com/image/fetch/$s_!dSCW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdd5affa-acee-4749-86fa-fc631ca8740f_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!dSCW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdd5affa-acee-4749-86fa-fc631ca8740f_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!dSCW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdd5affa-acee-4749-86fa-fc631ca8740f_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!dSCW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdd5affa-acee-4749-86fa-fc631ca8740f_3012x1486.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">My actual YouTube homepage, a chaotic mix of ads, Tom &amp; Jerry cartoons, and random recommendations that leads to decision paralysis.</figcaption></figure></div><p>I love YouTube, but I hate my homepage. It is a chaotic mix of my kids&#8217; &#8220;Tom &amp; Jerry&#8221; clips, AI news, and tech reviews. It feels like a privacy intrusion and a casino designed to distract me. If I have 20 minutes to relax, I don&#8217;t want to spend 15 of them scrolling, only to end up doom-scrolling on Instagram because I couldn&#8217;t decide.</p><p>So, <strong>I wanted an anti-algorithm experience</strong>. A calm interface that asks me just two questions:</p><ol><li><p>How much time do you have?</p></li><li><p>What is your mood?</p></li></ol><p>And then, it gives me exactly <strong>one recommendation</strong>. No scrolling, no choices. Just a perfect moment.</p><p>Before I explain how I built it, go try it yourself here: <a href="https://adamfaik.github.io/youtube-moment/">YouTube Moment</a></p><p>Here is what the final result looks like:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SGNB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cd54eae-ebac-4eb8-bdb2-cce6e1c395d4_3012x1486.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SGNB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cd54eae-ebac-4eb8-bdb2-cce6e1c395d4_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!SGNB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cd54eae-ebac-4eb8-bdb2-cce6e1c395d4_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!SGNB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cd54eae-ebac-4eb8-bdb2-cce6e1c395d4_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!SGNB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cd54eae-ebac-4eb8-bdb2-cce6e1c395d4_3012x1486.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SGNB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cd54eae-ebac-4eb8-bdb2-cce6e1c395d4_3012x1486.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0cd54eae-ebac-4eb8-bdb2-cce6e1c395d4_3012x1486.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;:351994,&quot;alt&quot;:&quot;A screenshot of the 'Moment' app homepage featuring a circular time dial set to 20 minutes and a grid of mood buttons like 'Inspired' and 'Need a laugh'.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://adamfaik.substack.com/i/179632953?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cd54eae-ebac-4eb8-bdb2-cce6e1c395d4_3012x1486.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A screenshot of the 'Moment' app homepage featuring a circular time dial set to 20 minutes and a grid of mood buttons like 'Inspired' and 'Need a laugh'." title="A screenshot of the 'Moment' app homepage featuring a circular time dial set to 20 minutes and a grid of mood buttons like 'Inspired' and 'Need a laugh'." srcset="https://substackcdn.com/image/fetch/$s_!SGNB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cd54eae-ebac-4eb8-bdb2-cce6e1c395d4_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!SGNB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cd54eae-ebac-4eb8-bdb2-cce6e1c395d4_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!SGNB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cd54eae-ebac-4eb8-bdb2-cce6e1c395d4_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!SGNB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cd54eae-ebac-4eb8-bdb2-cce6e1c395d4_3012x1486.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The Moment home screen, where I replaced the chaotic YouTube feed with a simple time dial and mood selector.</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_!E0Oy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06a3f36e-233e-4216-b875-a73514537644_3012x1486.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!E0Oy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06a3f36e-233e-4216-b875-a73514537644_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!E0Oy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06a3f36e-233e-4216-b875-a73514537644_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!E0Oy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06a3f36e-233e-4216-b875-a73514537644_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!E0Oy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06a3f36e-233e-4216-b875-a73514537644_3012x1486.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!E0Oy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06a3f36e-233e-4216-b875-a73514537644_3012x1486.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/06a3f36e-233e-4216-b875-a73514537644_3012x1486.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;:1150272,&quot;alt&quot;:&quot;A screenshot of the 'Moment' result card displaying a YouTube video thumbnail, a Gemini-generated summary, and a red 'Watch on YouTube' 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://adamfaik.substack.com/i/179632953?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06a3f36e-233e-4216-b875-a73514537644_3012x1486.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A screenshot of the 'Moment' result card displaying a YouTube video thumbnail, a Gemini-generated summary, and a red 'Watch on YouTube' button." title="A screenshot of the 'Moment' result card displaying a YouTube video thumbnail, a Gemini-generated summary, and a red 'Watch on YouTube' button." srcset="https://substackcdn.com/image/fetch/$s_!E0Oy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06a3f36e-233e-4216-b875-a73514537644_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!E0Oy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06a3f36e-233e-4216-b875-a73514537644_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!E0Oy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06a3f36e-233e-4216-b875-a73514537644_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!E0Oy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06a3f36e-233e-4216-b875-a73514537644_3012x1486.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The result: a single, AI-curated video suggestion with a custom summary explaining why it fits the chosen mood.</figcaption></figure></div><p>I&#8217;ll be honest: I didn&#8217;t just sit down, type &#8220;architect this system,&#8221; and sip coffee while it finished. The process felt more like a <strong>creative fever dream</strong>. I don&#8217;t even remember every step, but I remember the <strong>two principles</strong> that made it work:</p><ul><li><p><strong>The &#8220;developer colleague&#8221; principle:</strong> I treated Gemini like a junior dev sitting next to Google AI Studio and me. I didn&#8217;t just ask for the result; I asked for a plan. &#8220;How can I display accurate YouTube data on the app?&#8221; The LLM recommended steps, and I followed them, keeping it informed of my progress.</p></li><li><p><strong>The visual debugging principle:</strong> When I hit a bug, I didn&#8217;t try to solve it alone. I took a screenshot or copy-pasted the error message from Google AI Studio and sent it to Gemini (my first line of defense) or Claude (when things got complex).</p></li></ul><p>Here are the steps in broad terms:</p><p><strong>Step 1: The hard choices: Narrowing the scope.</strong> My initial idea was way too ambitious. I wanted the app to be the ultimate cultural assistant: suggesting content from YouTube, Spotify, Netflix, and even showing movies at the nearest cinema. But the AI colleague (and reality) gave me a reality check: Integrating 10+ different APIs with reliable data in one afternoon was impossible. So, like any good PM, I made a ruthless cut. I killed 75% of the roadmap to focus on the one platform where I spent the most wasted time: YouTube.</p><p>After several attempts, here is the prompt that finally worked for my needs and that I submitted to Google AI Studio to get started:</p><blockquote><p><em>We&#8217;re all drowning in a sea of choice. We open YouTube and are hit with a wall of recommended content, feeling lost before we&#8217;ve even begun. We spend 20 minutes scrolling aimlessly through thumbnails, click on the wrong thing, and feel paralyzed by the sheer volume. We fall into a &#8220;related videos&#8221; black hole. Users don&#8217;t want to browse aimlessly. They want to be captivated, to learn, to laugh, or to simply feel a sense of peace. They want to feel that their precious free time was well-spent.</em></p><p><em>This app, let&#8217;s call it &#8220;Moment,&#8221; is the antidote to that paralysis. You open it, and there&#8217;s no endless, noisy feed. Just a calm, beautiful screen with a simple, elegant interface.</em></p><p><em>At the center is a tactile dial, reminiscent of a classic iPod, where you simply glide your thumb to set your available time: 5 minutes, 15 minutes, or 30 minutes. Below, a simple question: &#8220;What&#8217;s your mood?&#8221; You tap a tag: &#8220;Inspired,&#8221; &#8220;Nostalgic,&#8221; &#8220;Curious,&#8221; or &#8220;Need a laugh.&#8221;</em></p><p><em>And then, the magic happens. &#8220;Moment&#8221; instantly filters the infinite ocean of YouTube to find one hidden gem just for you. It doesn&#8217;t give you another list to scroll through. It presents you with a single, perfect suggestion.</em></p><ul><li><p><em>You tapped &#8220;15 minutes&#8221; and &#8220;Inspired&#8221;? It finds a powerful 14-minute TED talk you&#8217;ve never seen.</em></p></li><li><p><em>You chose &#8220;5 minutes&#8221; and &#8220;Need a laugh&#8221;? It pulls up a classic, viral sketch that perfectly fits your time.</em></p></li><li><p><em>You asked for &#8220;30 minutes&#8221; and &#8220;Nostalgic&#8221;? It finds a mini-documentary about a &#8216;90s video game or a retro music-video compilation.</em></p></li></ul><p><em>This is the ambition: a single, intelligent guide to the world of YouTube. It&#8217;s the end of &#8220;analysis paralysis&#8221; and the beginning of truly intentional, joyful consumption. Instead of falling down the recommended-content rabbit hole, you&#8217;re using YouTube to get exactly what you need, right when you need it.</em></p><p><em>When you click the suggestion, the app doesn&#8217;t try to trap you; it sends you directly to the video on YouTube to watch. It&#8217;s the one app you open when you want to make the most of your time, turning YouTube from a time-waster into a time-well-spent machine, every single time.</em></p></blockquote><p><strong>Step 2: The technical hurdle: Getting good data. </strong>This was the hardest part. Connecting the app to Gemini is easy; getting quality data from the web is very hard. My first attempts returned garbage: videos that were blocked, missing thumbnails, or just random noise. I had to spend serious time refining the logic. I asked the AI to architect a specific validation step to filter out the junk and ensure we only retrieved embeddable, high-quality videos. I had to use the YouTube API through a process I honestly couldn&#8217;t explain again. Gemini guided me step-by-step to create a YouTube API key in the same Google Cloud account as my Gemini project, keeping everything in one place.</p><p><strong>Step 3: The solution Google AI Studio invented. </strong>So, to solve quality issues, the AI proposed a smart architecture with two assistants:</p><ol><li><p><strong>The researcher:</strong> It uses the YouTube API to find a broad list of real, validated videos matching the time/mood.</p></li><li><p><strong>The curator:</strong> It passes that high-quality list to Gemini to pick the single best hidden gem and write a custom summary.</p></li></ol><p><strong>Step 4: From prototype to production.</strong> Once the fever dream subsided and I had a working app in Studio:</p><ol><li><p>I exported the code using the &#8220;Download app&#8221; button.</p></li><li><p>I used <strong>Cursor</strong> to stabilize and industrialize those tricky API connections.</p></li><li><p>I pushed the project to GitHub (check out the code <a href="https://github.com/adamfaik/youtube-moment">here</a>) and deployed the app via <strong>GitHub Actions</strong>.</p></li></ol><p>Now, <a href="https://adamfaik.github.io/youtube-moment/">YouTube Moment</a> is a live URL I use every night.</p><div><hr></div><h2>&#8220;But I work on a mature product...&#8221;</h2><p>I can hear the objection already: &#8220;This is cool for a hobby project, Adam. But I work on a 10-year-old SaaS platform with millions of users. I can&#8217;t just spin up a new app in an afternoon.&#8221;</p><p>You&#8217;re right. You can&#8217;t rebuild your core product. But you can clone it to test new ideas safely.</p><p>Google AI Studio has a feature that feels like a cheat code for enterprise PMs. You don&#8217;t need access to your company&#8217;s repo. You just need a screenshot.</p><ol><li><p><strong>Take a screenshot:</strong> Go to your existing product (e.g., your dashboard) and take a picture.</p></li><li><p><strong>Prompt:</strong> Upload it to AI Studio and ask it to clone the interface.</p></li><li><p><strong>Mutate:</strong> Once it recreates your UI, you prompt the change: &#8220;Now, add an AI agent in the sidebar.&#8221;</p></li></ol><p>Let&#8217;s stay within the YouTube theme, but this time, let&#8217;s pick an example from the content creator side. I wanted to see if an AI assistant would be useful inside the complex, data-heavy YouTube Studio dashboard.</p><p><strong>Step 1: The source.</strong> First, I simply took a screenshot of my actual YouTube Studio dashboard.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BLeu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff828b9a9-aeaf-4a27-b535-07c03541d0d4_3012x1486.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BLeu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff828b9a9-aeaf-4a27-b535-07c03541d0d4_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!BLeu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff828b9a9-aeaf-4a27-b535-07c03541d0d4_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!BLeu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff828b9a9-aeaf-4a27-b535-07c03541d0d4_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!BLeu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff828b9a9-aeaf-4a27-b535-07c03541d0d4_3012x1486.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BLeu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff828b9a9-aeaf-4a27-b535-07c03541d0d4_3012x1486.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f828b9a9-aeaf-4a27-b535-07c03541d0d4_3012x1486.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;:760799,&quot;alt&quot;:&quot;A screenshot of the actual YouTube Studio &#8216;Channel content&#8217; page showing a list of videos, visibility status, dates, and view counts in dark 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://adamfaik.substack.com/i/179632953?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff828b9a9-aeaf-4a27-b535-07c03541d0d4_3012x1486.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A screenshot of the actual YouTube Studio &#8216;Channel content&#8217; page showing a list of videos, visibility status, dates, and view counts in dark mode." title="A screenshot of the actual YouTube Studio &#8216;Channel content&#8217; page showing a list of videos, visibility status, dates, and view counts in dark mode." srcset="https://substackcdn.com/image/fetch/$s_!BLeu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff828b9a9-aeaf-4a27-b535-07c03541d0d4_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!BLeu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff828b9a9-aeaf-4a27-b535-07c03541d0d4_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!BLeu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff828b9a9-aeaf-4a27-b535-07c03541d0d4_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!BLeu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff828b9a9-aeaf-4a27-b535-07c03541d0d4_3012x1486.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The starting point: a screenshot of the real YouTube Studio dashboard, packed with metrics and video lists.</figcaption></figure></div><p><strong>Step 2: The clone.</strong> I uploaded that screenshot to AI Studio with a three-word prompt: &#8220;Clone this interface.&#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_!Wbzs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F018edf28-e2a7-46f8-8445-63f647a109fd_3012x1486.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Wbzs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F018edf28-e2a7-46f8-8445-63f647a109fd_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!Wbzs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F018edf28-e2a7-46f8-8445-63f647a109fd_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!Wbzs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F018edf28-e2a7-46f8-8445-63f647a109fd_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!Wbzs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F018edf28-e2a7-46f8-8445-63f647a109fd_3012x1486.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Wbzs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F018edf28-e2a7-46f8-8445-63f647a109fd_3012x1486.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/018edf28-e2a7-46f8-8445-63f647a109fd_3012x1486.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;:511082,&quot;alt&quot;:&quot;A screenshot of the Google AI Studio &#8216;Build&#8217; screen showing the uploaded screenshot file and the prompt &#8216;Clone this interface&#8217; ready to be submitted.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://adamfaik.substack.com/i/179632953?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F018edf28-e2a7-46f8-8445-63f647a109fd_3012x1486.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A screenshot of the Google AI Studio &#8216;Build&#8217; screen showing the uploaded screenshot file and the prompt &#8216;Clone this interface&#8217; ready to be submitted." title="A screenshot of the Google AI Studio &#8216;Build&#8217; screen showing the uploaded screenshot file and the prompt &#8216;Clone this interface&#8217; ready to be submitted." srcset="https://substackcdn.com/image/fetch/$s_!Wbzs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F018edf28-e2a7-46f8-8445-63f647a109fd_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!Wbzs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F018edf28-e2a7-46f8-8445-63f647a109fd_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!Wbzs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F018edf28-e2a7-46f8-8445-63f647a109fd_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!Wbzs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F018edf28-e2a7-46f8-8445-63f647a109fd_3012x1486.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Uploading the screenshot to Google AI Studio to kick off the cloning process.</figcaption></figure></div><p>Seconds later, AI Studio generated a functional HTML/React replica. It wasn&#8217;t a picture; it was working 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_!f1B5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33922790-b2dd-4292-83fc-fb319eba1452_3012x1486.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!f1B5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33922790-b2dd-4292-83fc-fb319eba1452_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!f1B5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33922790-b2dd-4292-83fc-fb319eba1452_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!f1B5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33922790-b2dd-4292-83fc-fb319eba1452_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!f1B5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33922790-b2dd-4292-83fc-fb319eba1452_3012x1486.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!f1B5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33922790-b2dd-4292-83fc-fb319eba1452_3012x1486.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/33922790-b2dd-4292-83fc-fb319eba1452_3012x1486.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;:786564,&quot;alt&quot;:&quot;A screenshot of the generated clone in Google AI Studio, looking nearly identical to the original YouTube Studio dashboard, with code files visible in the left sidebar.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://adamfaik.substack.com/i/179632953?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33922790-b2dd-4292-83fc-fb319eba1452_3012x1486.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A screenshot of the generated clone in Google AI Studio, looking nearly identical to the original YouTube Studio dashboard, with code files visible in the left sidebar." title="A screenshot of the generated clone in Google AI Studio, looking nearly identical to the original YouTube Studio dashboard, with code files visible in the left sidebar." srcset="https://substackcdn.com/image/fetch/$s_!f1B5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33922790-b2dd-4292-83fc-fb319eba1452_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!f1B5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33922790-b2dd-4292-83fc-fb319eba1452_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!f1B5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33922790-b2dd-4292-83fc-fb319eba1452_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!f1B5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F33922790-b2dd-4292-83fc-fb319eba1452_3012x1486.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The result: a pixel-perfect, fully coded replica of the dashboard running inside the browser.</figcaption></figure></div><p><strong>Step 3: The mutation: Adding the AI.</strong> I didn&#8217;t need to bug an engineer. I just typed: &#8220;Add an AI agent to assist content creators.&#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_!wGWL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cba42bf-bdc0-4f82-ad27-e0c4268a0acc_3012x1486.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wGWL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cba42bf-bdc0-4f82-ad27-e0c4268a0acc_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!wGWL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cba42bf-bdc0-4f82-ad27-e0c4268a0acc_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!wGWL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cba42bf-bdc0-4f82-ad27-e0c4268a0acc_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!wGWL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cba42bf-bdc0-4f82-ad27-e0c4268a0acc_3012x1486.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wGWL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cba42bf-bdc0-4f82-ad27-e0c4268a0acc_3012x1486.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8cba42bf-bdc0-4f82-ad27-e0c4268a0acc_3012x1486.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;:732188,&quot;alt&quot;:&quot;A screenshot focusing on the prompt input box where the user has typed &#8216;Add an AI agent to assist content creators&#8217;.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://adamfaik.substack.com/i/179632953?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cba42bf-bdc0-4f82-ad27-e0c4268a0acc_3012x1486.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A screenshot focusing on the prompt input box where the user has typed &#8216;Add an AI agent to assist content creators&#8217;." title="A screenshot focusing on the prompt input box where the user has typed &#8216;Add an AI agent to assist content creators&#8217;." srcset="https://substackcdn.com/image/fetch/$s_!wGWL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cba42bf-bdc0-4f82-ad27-e0c4268a0acc_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!wGWL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cba42bf-bdc0-4f82-ad27-e0c4268a0acc_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!wGWL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cba42bf-bdc0-4f82-ad27-e0c4268a0acc_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!wGWL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cba42bf-bdc0-4f82-ad27-e0c4268a0acc_3012x1486.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Prompting the tool to inject a new feature into the existing UI.</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_!jLMQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37572dd3-3cab-4703-8180-b2df1237bfe8_3012x1486.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jLMQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37572dd3-3cab-4703-8180-b2df1237bfe8_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!jLMQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37572dd3-3cab-4703-8180-b2df1237bfe8_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!jLMQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37572dd3-3cab-4703-8180-b2df1237bfe8_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!jLMQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37572dd3-3cab-4703-8180-b2df1237bfe8_3012x1486.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jLMQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37572dd3-3cab-4703-8180-b2df1237bfe8_3012x1486.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/37572dd3-3cab-4703-8180-b2df1237bfe8_3012x1486.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;:889142,&quot;alt&quot;:&quot;A screenshot of the modified dashboard clone, now featuring a new, floating &#8216;Studio Assistant&#8217; chat window on the right side, offering to help analyze video performance.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://adamfaik.substack.com/i/179632953?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37572dd3-3cab-4703-8180-b2df1237bfe8_3012x1486.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A screenshot of the modified dashboard clone, now featuring a new, floating &#8216;Studio Assistant&#8217; chat window on the right side, offering to help analyze video performance." title="A screenshot of the modified dashboard clone, now featuring a new, floating &#8216;Studio Assistant&#8217; chat window on the right side, offering to help analyze video performance." srcset="https://substackcdn.com/image/fetch/$s_!jLMQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37572dd3-3cab-4703-8180-b2df1237bfe8_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!jLMQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37572dd3-3cab-4703-8180-b2df1237bfe8_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!jLMQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37572dd3-3cab-4703-8180-b2df1237bfe8_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!jLMQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37572dd3-3cab-4703-8180-b2df1237bfe8_3012x1486.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The final prototype: the cloned dashboard now features a working &#8220;Studio Assistant&#8221; widget.</figcaption></figure></div><p><strong>A funny detail: It knows what you need. </strong>Here is something that genuinely surprised me. Once the clone was ready, I looked at the &#8220;Suggestions&#8221; bar at the bottom. The tool had analyzed the context of my dashboard (views, videos, dates) and was already suggesting relevant AI features to add, like &#8220;Add date filter,&#8221; &#8220;Add video search,&#8221; or even generic &#8220;AI Features.&#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_!CDVH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e237b9a-28bd-4b5e-ada8-d295980e0ecf_3012x1486.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CDVH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e237b9a-28bd-4b5e-ada8-d295980e0ecf_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!CDVH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e237b9a-28bd-4b5e-ada8-d295980e0ecf_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!CDVH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e237b9a-28bd-4b5e-ada8-d295980e0ecf_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!CDVH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e237b9a-28bd-4b5e-ada8-d295980e0ecf_3012x1486.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CDVH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e237b9a-28bd-4b5e-ada8-d295980e0ecf_3012x1486.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2e237b9a-28bd-4b5e-ada8-d295980e0ecf_3012x1486.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;:746834,&quot;alt&quot;:&quot;A screenshot focusing on the bottom-left suggestions bar in Google AI Studio, offering actions like &#8216;AI Features&#8217;, &#8216;Add date filter&#8217;, and &#8216;Add bulk actions&#8217;.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://adamfaik.substack.com/i/179632953?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e237b9a-28bd-4b5e-ada8-d295980e0ecf_3012x1486.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A screenshot focusing on the bottom-left suggestions bar in Google AI Studio, offering actions like &#8216;AI Features&#8217;, &#8216;Add date filter&#8217;, and &#8216;Add bulk actions&#8217;." title="A screenshot focusing on the bottom-left suggestions bar in Google AI Studio, offering actions like &#8216;AI Features&#8217;, &#8216;Add date filter&#8217;, and &#8216;Add bulk actions&#8217;." srcset="https://substackcdn.com/image/fetch/$s_!CDVH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e237b9a-28bd-4b5e-ada8-d295980e0ecf_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!CDVH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e237b9a-28bd-4b5e-ada8-d295980e0ecf_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!CDVH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e237b9a-28bd-4b5e-ada8-d295980e0ecf_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!CDVH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e237b9a-28bd-4b5e-ada8-d295980e0ecf_3012x1486.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The tool is smart enough to understand the context of your UI. Here, it automatically suggests adding AI-powered features relevant to this interface.</figcaption></figure></div><p><strong>Under the hood:</strong> For the curious PMs reading this, this isn&#8217;t smoke and mirrors. The tool actually wrote the system architecture for this assistant. If you look at the code, you can see it generated a specific systemInstruction telling the AI: &#8220;You are an expert YouTube Channel Consultant.&#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_!BSlj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F108ec1e1-7fcc-4da7-87af-5bdbf2b011ef_3012x1486.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BSlj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F108ec1e1-7fcc-4da7-87af-5bdbf2b011ef_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!BSlj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F108ec1e1-7fcc-4da7-87af-5bdbf2b011ef_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!BSlj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F108ec1e1-7fcc-4da7-87af-5bdbf2b011ef_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!BSlj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F108ec1e1-7fcc-4da7-87af-5bdbf2b011ef_3012x1486.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BSlj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F108ec1e1-7fcc-4da7-87af-5bdbf2b011ef_3012x1486.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/108ec1e1-7fcc-4da7-87af-5bdbf2b011ef_3012x1486.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;:594126,&quot;alt&quot;:&quot;A screenshot of the &#8216;Code&#8217; view in Google AI Studio, highlighting the useEffect hook and systemInstruction string that defines the AI assistant&#8217;s behavior and access to mock video 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://adamfaik.substack.com/i/179632953?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F108ec1e1-7fcc-4da7-87af-5bdbf2b011ef_3012x1486.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A screenshot of the &#8216;Code&#8217; view in Google AI Studio, highlighting the useEffect hook and systemInstruction string that defines the AI assistant&#8217;s behavior and access to mock video data." title="A screenshot of the &#8216;Code&#8217; view in Google AI Studio, highlighting the useEffect hook and systemInstruction string that defines the AI assistant&#8217;s behavior and access to mock video data." srcset="https://substackcdn.com/image/fetch/$s_!BSlj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F108ec1e1-7fcc-4da7-87af-5bdbf2b011ef_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!BSlj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F108ec1e1-7fcc-4da7-87af-5bdbf2b011ef_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!BSlj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F108ec1e1-7fcc-4da7-87af-5bdbf2b011ef_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!BSlj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F108ec1e1-7fcc-4da7-87af-5bdbf2b011ef_3012x1486.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A look at the generated code: you can see the specific system instructions the tool wrote to give the AI assistant its personality and goals.</figcaption></figure></div><p><strong>Why this matters:</strong> Google AI Studio destroys the barrier to experimentation. You don&#8217;t need to ask engineering for a proof of concept. You don&#8217;t need a sprint. You can show up to your next stakeholder meeting or user interview with a working, interactive demo of your exact product featuring the new AI capability you want to pitch or test.</p><div><hr></div><h2>Advanced tips for the PM-turned-builder</h2><p>Once you move from &#8220;playing around&#8221; to building a real prototype, you need a process. After some hours in Google AI Studio, here is the workflow that separates the hobbyists from the power users.</p><h3>1. The kickoff: Write a PRD (and use superpowers)</h3><p>In your first iteration, it&#8217;s fine to type a vague prompt and hope for the best. But for a real product, don&#8217;t start empty-handed.</p><p>Use Gemini to write a clear Product Requirements Document (PRD) first. Paste that PRD into the prompt bar to ground the AI.</p><p><strong>Pro Tip:</strong> Look just below the prompt bar. Google lists specific &#8220;AI Superpowers&#8221; (like Vision, Audio, or Google Search). Clicking one of these cards pre-loads the model with the right capabilities for your 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_!I7L8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F944ebed0-9a1a-476e-b544-a4c8082f37b3_3012x1486.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!I7L8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F944ebed0-9a1a-476e-b544-a4c8082f37b3_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!I7L8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F944ebed0-9a1a-476e-b544-a4c8082f37b3_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!I7L8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F944ebed0-9a1a-476e-b544-a4c8082f37b3_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!I7L8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F944ebed0-9a1a-476e-b544-a4c8082f37b3_3012x1486.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!I7L8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F944ebed0-9a1a-476e-b544-a4c8082f37b3_3012x1486.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/944ebed0-9a1a-476e-b544-a4c8082f37b3_3012x1486.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;:467312,&quot;alt&quot;:&quot;A screenshot of the Google AI Studio start screen showing a text input field for describing an idea, and a section below titled &#8216;Supercharge your apps with AI&#8217; listing various pre-built capabilities.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://adamfaik.substack.com/i/179632953?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F944ebed0-9a1a-476e-b544-a4c8082f37b3_3012x1486.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A screenshot of the Google AI Studio start screen showing a text input field for describing an idea, and a section below titled &#8216;Supercharge your apps with AI&#8217; listing various pre-built capabilities." title="A screenshot of the Google AI Studio start screen showing a text input field for describing an idea, and a section below titled &#8216;Supercharge your apps with AI&#8217; listing various pre-built capabilities." srcset="https://substackcdn.com/image/fetch/$s_!I7L8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F944ebed0-9a1a-476e-b544-a4c8082f37b3_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!I7L8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F944ebed0-9a1a-476e-b544-a4c8082f37b3_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!I7L8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F944ebed0-9a1a-476e-b544-a4c8082f37b3_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!I7L8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F944ebed0-9a1a-476e-b544-a4c8082f37b3_3012x1486.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The starting line. You can paste your PRD into the prompt box, and select a specific &#8220;supercharge&#8221; card below (like &#8220;Nano banana&#8221; for image editing) to give your app specific AI capabilities right away.</figcaption></figure></div><h3>2. The project brief: Set system instructions</h3><p>This is critical. While the chat prompt is for action (&#8221;Make the button blue&#8221;), the system instructions panel is for governance. This is where you define the laws of physics for your app.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hbFc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6e7147e-f5f7-40e9-b2e9-c408b72a9a0c_3012x1486.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hbFc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6e7147e-f5f7-40e9-b2e9-c408b72a9a0c_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!hbFc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6e7147e-f5f7-40e9-b2e9-c408b72a9a0c_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!hbFc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6e7147e-f5f7-40e9-b2e9-c408b72a9a0c_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!hbFc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6e7147e-f5f7-40e9-b2e9-c408b72a9a0c_3012x1486.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hbFc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6e7147e-f5f7-40e9-b2e9-c408b72a9a0c_3012x1486.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c6e7147e-f5f7-40e9-b2e9-c408b72a9a0c_3012x1486.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;:474241,&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://adamfaik.substack.com/i/179632953?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6e7147e-f5f7-40e9-b2e9-c408b72a9a0c_3012x1486.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_!hbFc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6e7147e-f5f7-40e9-b2e9-c408b72a9a0c_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!hbFc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6e7147e-f5f7-40e9-b2e9-c408b72a9a0c_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!hbFc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6e7147e-f5f7-40e9-b2e9-c408b72a9a0c_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!hbFc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6e7147e-f5f7-40e9-b2e9-c408b72a9a0c_3012x1486.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BPYb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F587954d3-045b-490e-b663-af1a8763347e_3012x1486.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BPYb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F587954d3-045b-490e-b663-af1a8763347e_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!BPYb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F587954d3-045b-490e-b663-af1a8763347e_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!BPYb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F587954d3-045b-490e-b663-af1a8763347e_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!BPYb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F587954d3-045b-490e-b663-af1a8763347e_3012x1486.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BPYb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F587954d3-045b-490e-b663-af1a8763347e_3012x1486.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/587954d3-045b-490e-b663-af1a8763347e_3012x1486.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;:641184,&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://adamfaik.substack.com/i/179632953?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F587954d3-045b-490e-b663-af1a8763347e_3012x1486.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_!BPYb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F587954d3-045b-490e-b663-af1a8763347e_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!BPYb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F587954d3-045b-490e-b663-af1a8763347e_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!BPYb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F587954d3-045b-490e-b663-af1a8763347e_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!BPYb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F587954d3-045b-490e-b663-af1a8763347e_3012x1486.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The &#8220;System Instructions&#8221; panel is where you define your app&#8217;s DNA. Use this to set high-level technical constraints and design rules that apply to every future code generation.</figcaption></figure></div><h3>3. The red pen: Annotate your feedback</h3><p>Describing a visual bug in text is painful (&#8221;The button in the top right is weird&#8221;).</p><p>Instead, use the annotation tool (the pencil icon). Draw a circle around the broken element and type: &#8220;Fix this.&#8221; The AI &#8220;sees&#8221; exactly what you are pointing at and understands the visual context.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FZRF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7e236ac-229b-4bc7-972a-40cd42227b36_3012x1486.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FZRF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7e236ac-229b-4bc7-972a-40cd42227b36_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!FZRF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7e236ac-229b-4bc7-972a-40cd42227b36_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!FZRF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7e236ac-229b-4bc7-972a-40cd42227b36_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!FZRF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7e236ac-229b-4bc7-972a-40cd42227b36_3012x1486.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FZRF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7e236ac-229b-4bc7-972a-40cd42227b36_3012x1486.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b7e236ac-229b-4bc7-972a-40cd42227b36_3012x1486.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;:760387,&quot;alt&quot;:&quot;A screenshot showing the annotation tool in action; a specific area of the app interface is highlighted with a bounding box, and a prompt is attached to it asking to add a 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://adamfaik.substack.com/i/179632953?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7e236ac-229b-4bc7-972a-40cd42227b36_3012x1486.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A screenshot showing the annotation tool in action; a specific area of the app interface is highlighted with a bounding box, and a prompt is attached to it asking to add a button." title="A screenshot showing the annotation tool in action; a specific area of the app interface is highlighted with a bounding box, and a prompt is attached to it asking to add a button." srcset="https://substackcdn.com/image/fetch/$s_!FZRF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7e236ac-229b-4bc7-972a-40cd42227b36_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!FZRF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7e236ac-229b-4bc7-972a-40cd42227b36_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!FZRF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7e236ac-229b-4bc7-972a-40cd42227b36_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!FZRF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7e236ac-229b-4bc7-972a-40cd42227b36_3012x1486.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The &#8220;Pencil&#8221; tool allows you to draw directly on the UI to give feedback. The AI &#8220;sees&#8221; what you circle and understands the context instantly.</figcaption></figure></div><h3>4. The time machine: Use checkpoints for creative safety</h3><p>As you build, you will inevitably hit a dead end. Maybe you asked for a new feature, and the AI rewrote your entire working code into a mess. You don&#8217;t have to accept the result. Use the <strong>Checkpoint</strong> feature to travel back in time. It allows you to revert your app to the exact state it was in <em>before</em> that bad prompt, so you can try again with a different approach.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oljG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F453b1185-ac80-4b1a-8604-99da9cef7eef_3012x1486.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oljG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F453b1185-ac80-4b1a-8604-99da9cef7eef_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!oljG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F453b1185-ac80-4b1a-8604-99da9cef7eef_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!oljG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F453b1185-ac80-4b1a-8604-99da9cef7eef_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!oljG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F453b1185-ac80-4b1a-8604-99da9cef7eef_3012x1486.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oljG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F453b1185-ac80-4b1a-8604-99da9cef7eef_3012x1486.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/453b1185-ac80-4b1a-8604-99da9cef7eef_3012x1486.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;:860587,&quot;alt&quot;:&quot;A screenshot of the left sidebar showing the &#8216;Checkpoint&#8217; entry with options to &#8216;View diff&#8217; or &#8216;Restore&#8217;, highlighting the version history functionality.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://adamfaik.substack.com/i/179632953?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F453b1185-ac80-4b1a-8604-99da9cef7eef_3012x1486.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A screenshot of the left sidebar showing the &#8216;Checkpoint&#8217; entry with options to &#8216;View diff&#8217; or &#8216;Restore&#8217;, highlighting the version history functionality." title="A screenshot of the left sidebar showing the &#8216;Checkpoint&#8217; entry with options to &#8216;View diff&#8217; or &#8216;Restore&#8217;, highlighting the version history functionality." srcset="https://substackcdn.com/image/fetch/$s_!oljG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F453b1185-ac80-4b1a-8604-99da9cef7eef_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!oljG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F453b1185-ac80-4b1a-8604-99da9cef7eef_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!oljG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F453b1185-ac80-4b1a-8604-99da9cef7eef_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!oljG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F453b1185-ac80-4b1a-8604-99da9cef7eef_3012x1486.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The checkpoint feature saves your session state. Use it to revert to a working version if the AI takes a wrong turn.</figcaption></figure></div><h3>5. The Super Nintendo rule: Don&#8217;t lose your progress</h3><p>Here is a critical warning: Google AI Studio sessions behave like a <strong>Super Nintendo</strong>. If you refresh the page, close the tab, or come back the next day, your chat history and those handy Checkpoints are <strong>gone forever</strong>. It&#8217;s like leaving your console powered on all night because the game cartridge doesn&#8217;t have a save battery.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ye0G!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05f16eac-b390-4e74-877d-750cb57e6703_3012x1486.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ye0G!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05f16eac-b390-4e74-877d-750cb57e6703_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!Ye0G!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05f16eac-b390-4e74-877d-750cb57e6703_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!Ye0G!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05f16eac-b390-4e74-877d-750cb57e6703_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!Ye0G!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05f16eac-b390-4e74-877d-750cb57e6703_3012x1486.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ye0G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05f16eac-b390-4e74-877d-750cb57e6703_3012x1486.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/05f16eac-b390-4e74-877d-750cb57e6703_3012x1486.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;:366336,&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://adamfaik.substack.com/i/179632953?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05f16eac-b390-4e74-877d-750cb57e6703_3012x1486.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_!Ye0G!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05f16eac-b390-4e74-877d-750cb57e6703_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!Ye0G!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05f16eac-b390-4e74-877d-750cb57e6703_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!Ye0G!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05f16eac-b390-4e74-877d-750cb57e6703_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!Ye0G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05f16eac-b390-4e74-877d-750cb57e6703_3012x1486.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The &#8220;Super Nintendo&#8221; effect: I refreshed the page, and while my app is still there, the entire chat history has vanished.</figcaption></figure></div><p><strong>The fix:</strong> Use the <strong>&#8220;Save to GitHub&#8221;</strong> button. Don&#8217;t rely on the browser session. Push your code to GitHub frequently. This is your permanent &#8220;Memory Card.&#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_!BIdv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc91970be-6519-4762-b226-062dabab8310_3012x1486.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BIdv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc91970be-6519-4762-b226-062dabab8310_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!BIdv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc91970be-6519-4762-b226-062dabab8310_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!BIdv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc91970be-6519-4762-b226-062dabab8310_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!BIdv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc91970be-6519-4762-b226-062dabab8310_3012x1486.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BIdv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc91970be-6519-4762-b226-062dabab8310_3012x1486.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c91970be-6519-4762-b226-062dabab8310_3012x1486.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;:861871,&quot;alt&quot;:&quot;A screenshot of the top navigation bar with a red box highlighting the GitHub icon.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://adamfaik.substack.com/i/179632953?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc91970be-6519-4762-b226-062dabab8310_3012x1486.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A screenshot of the top navigation bar with a red box highlighting the GitHub icon." title="A screenshot of the top navigation bar with a red box highlighting the GitHub icon." srcset="https://substackcdn.com/image/fetch/$s_!BIdv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc91970be-6519-4762-b226-062dabab8310_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!BIdv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc91970be-6519-4762-b226-062dabab8310_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!BIdv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc91970be-6519-4762-b226-062dabab8310_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!BIdv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc91970be-6519-4762-b226-062dabab8310_3012x1486.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Don&#8217;t rely on browser cache. Click the GitHub icon in the top right&#8230;</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_!Dpbg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2789741-4d9e-44a0-96e4-a1139aef2b1b_3012x1486.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Dpbg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2789741-4d9e-44a0-96e4-a1139aef2b1b_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!Dpbg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2789741-4d9e-44a0-96e4-a1139aef2b1b_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!Dpbg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2789741-4d9e-44a0-96e4-a1139aef2b1b_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!Dpbg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2789741-4d9e-44a0-96e4-a1139aef2b1b_3012x1486.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Dpbg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2789741-4d9e-44a0-96e4-a1139aef2b1b_3012x1486.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f2789741-4d9e-44a0-96e4-a1139aef2b1b_3012x1486.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;:1089150,&quot;alt&quot;:&quot;A screenshot of the &#8216;GitHub&#8217; modal window allowing the user to create a new repository name and select visibility (Public/Private) to push the 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://adamfaik.substack.com/i/179632953?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2789741-4d9e-44a0-96e4-a1139aef2b1b_3012x1486.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A screenshot of the &#8216;GitHub&#8217; modal window allowing the user to create a new repository name and select visibility (Public/Private) to push the code." title="A screenshot of the &#8216;GitHub&#8217; modal window allowing the user to create a new repository name and select visibility (Public/Private) to push the code." srcset="https://substackcdn.com/image/fetch/$s_!Dpbg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2789741-4d9e-44a0-96e4-a1139aef2b1b_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!Dpbg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2789741-4d9e-44a0-96e4-a1139aef2b1b_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!Dpbg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2789741-4d9e-44a0-96e4-a1139aef2b1b_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!Dpbg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2789741-4d9e-44a0-96e4-a1139aef2b1b_3012x1486.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">...and create a repository to save your work permanently.</figcaption></figure></div><h3>6. The LLM-powered-LLM workflow</h3><p>This is the expert-level trick that makes you look like a 10x developer. Sometimes, Google AI Studio gets stuck in a loop or writes messy code. Instead of fighting it, I call in a second opinion.</p><ul><li><p><strong>Step 1:</strong> I click the &#8220;Push to GitHub&#8221; button inside AI Studio to save the code.</p></li><li><p><strong>Step 2:</strong> I copy that GitHub link and paste it into <strong>Gemini</strong> or <strong>Claude</strong>.</p></li><li><p><strong>Step 3:</strong> I ask: <em>&#8220;Review this repo. The API connection is flaky. How would you refactor it for better reliability?&#8221;</em></p></li><li><p><strong>Step 4:</strong> I take their optimized code and paste it back into Google AI Studio.</p></li></ul><p>It&#8217;s like having a code review from a completely different senior engineer. One AI builds; the other optimizes.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EPmi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c2214ef-cb61-4bb9-abfa-bbcc2cc8903e_3012x1486.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EPmi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c2214ef-cb61-4bb9-abfa-bbcc2cc8903e_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!EPmi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c2214ef-cb61-4bb9-abfa-bbcc2cc8903e_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!EPmi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c2214ef-cb61-4bb9-abfa-bbcc2cc8903e_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!EPmi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c2214ef-cb61-4bb9-abfa-bbcc2cc8903e_3012x1486.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EPmi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c2214ef-cb61-4bb9-abfa-bbcc2cc8903e_3012x1486.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6c2214ef-cb61-4bb9-abfa-bbcc2cc8903e_3012x1486.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;:179025,&quot;alt&quot;:&quot;A screenshot of the Gemini chat interface showing a GitHub repository card attached to the prompt area, ready for code analysis.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://adamfaik.substack.com/i/179632953?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c2214ef-cb61-4bb9-abfa-bbcc2cc8903e_3012x1486.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A screenshot of the Gemini chat interface showing a GitHub repository card attached to the prompt area, ready for code analysis." title="A screenshot of the Gemini chat interface showing a GitHub repository card attached to the prompt area, ready for code analysis." srcset="https://substackcdn.com/image/fetch/$s_!EPmi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c2214ef-cb61-4bb9-abfa-bbcc2cc8903e_3012x1486.png 424w, https://substackcdn.com/image/fetch/$s_!EPmi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c2214ef-cb61-4bb9-abfa-bbcc2cc8903e_3012x1486.png 848w, https://substackcdn.com/image/fetch/$s_!EPmi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c2214ef-cb61-4bb9-abfa-bbcc2cc8903e_3012x1486.png 1272w, https://substackcdn.com/image/fetch/$s_!EPmi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c2214ef-cb61-4bb9-abfa-bbcc2cc8903e_3012x1486.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The LLM-powered-LLM workflow in action. I paste my GitHub repository link directly into Gemini to get a senior code review and optimization tips.</figcaption></figure></div><div><hr></div><h2>Stop debating, start validating</h2><p>We spend too much time in meetings debating the theory of AI. &#8220;Will users actually want a chatbot here?&#8221; &#8220;Is AI really better than a simple filter?&#8221; &#8220;How much will it cost to verify this?&#8221;</p><p>The only way to avoid the AI trap (building an expensive AI feature that actually makes the user experience worse) is to test it. Not with a static Figma mockup, but with a working prototype.</p><p>Google AI Studio removes the cost, the technical barrier, and the delay. It gives you a factory where you can turn a &#8220;what if&#8221; into a &#8220;play with this&#8221; in a single afternoon.</p><p>So, when should you open Google AI Studio versus other tools like <a href="https://lovable.dev/">Lovable.dev</a> or <a href="https://v0.dev/">v0.dev</a>? Here is the rule of thumb:</p><p><strong>Use Google AI Studio when...</strong></p><ul><li><p><strong>The goal is logic:</strong> You need to validate if the AI feature is actually useful. You need a functional app that does things (analyzes data, processes video, generates complex reasoning).</p></li><li><p><strong>You need AI:</strong> You want access to advanced models (Gemini 3 Pro, Vision) natively without setting up API keys.</p></li><li><p><strong>Budget is zero:</strong> You want to iterate freely without credit anxiety.</p></li></ul><p><strong>Use visual tools (v0.dev, Lovable.dev) when...</strong></p><ul><li><p><strong>The goal is beauty:</strong> You need a high-fidelity, pixel-perfect UI to impress a stakeholder.</p></li><li><p><strong>The logic is simple:</strong> The AI part is basic (or fake-able), but the user flow and design need to look production-ready immediately.</p></li></ul><p>The next time you have an idea, don&#8217;t write a Jira ticket. Don&#8217;t schedule a brainstorming session. <strong>Go build the feature yourself</strong>. Open the studio, describe your problem, and see what happens. You might just surprise yourself with what you can create in 3 minutes.</p><div><hr></div><p><strong>Over to You!</strong> Now I&#8217;d love to hear from you. What is the most egregious example of an &#8220;AI for nothing&#8221; feature you&#8217;ve seen recently? Or, if you give this workflow a try, come back and tell me: what is the wildest prototype you were able to build in under an hour? Let me know in the comments!</p>]]></content:encoded></item><item><title><![CDATA[How to go from zero to AI-first in 3 hours]]></title><description><![CDATA[Feel behind? Here is 3h curated YouTube videos to get you from AI-curious to AI-capable before your Monday sync. Catch up on everything that matters right now (and will be obsolete in 6 months).]]></description><link>https://www.theaithinker.com/p/how-to-go-from-zero-to-ai-first-in</link><guid isPermaLink="false">https://www.theaithinker.com/p/how-to-go-from-zero-to-ai-first-in</guid><dc:creator><![CDATA[Adam Faik]]></dc:creator><pubDate>Mon, 24 Nov 2025 12:02:56 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/9d43dc6c-a030-46e7-b4cc-2510a45d7726_1024x731.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>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.</p><p><strong>Suddenly, everyone is obsessed</strong>. It&#8217;s all over Slack, it&#8217;s popping up in meetings, it&#8217;s in every discussion with your colleagues, and top management is asking about it in town halls. Your team is using terms like RAG, AI agents, Gems, and MCP, and you&#8217;re just... lost. And it&#8217;s not just curiosity; <strong>there&#8217;s a real urgency to be AI-first</strong>.</p><h2>Your starting line</h2><h3>Why AI-first?</h3><p>The why is simple. The primary goal is to make <strong>&#8220;Ask AI first&#8221; your new default reflex</strong>. We&#8217;re not doing this just to use new tech; we&#8217;re doing it to <strong>increase our collective speed, creativity, and quality</strong>. For any task you start, your first question should be: <strong>&#8220;How can AI help me?&#8221;</strong>.</p><p>If that sounds daunting, I&#8217;ve got you. This article is the crash course. It&#8217;s a 3-hour weekend playbook designed to catch you up.</p><p>A quick warning: AI is moving so fast that <strong>this playlist will probably be obsolete in 6 months</strong>. The good news? You can master everything that matters right now in the time it takes to watch a long movie.</p><h3>What this playbook is</h3><ul><li><p>This is a <strong>100% practical, hands-on how-to guide</strong>.</p></li><li><p>It&#8217;s a <strong>foundational introduction</strong> to build your confidence with core AI productivity tools.</p></li><li><p>It focuses on the <strong>mindset and principles, which are permanent</strong>, not just the tools, which will constantly change.</p></li></ul><h3>What this playbook IS NOT</h3><ul><li><p>This is <strong>NOT</strong> a deep dive into complex AI theory or abstract futurism.</p></li><li><p>This is <strong>NOT</strong> a legal or privacy guide (your company might have its own separate, existing training for that).</p></li><li><p>This is <strong>NOT</strong> a comprehensive masterclass. I can&#8217;t possibly cover every tool, job function, or advanced topic (like QA, HR, or Marketing). I&#8217;ll focus on a core stack common in many companies: <strong>Slack, Gemini, NotebookLM, Miro, GitHub Copilot, and Cursor</strong>.</p></li></ul><p>If your company uses different tools (like ChatGPT, Claude, etc.), that&#8217;s great! The principles you learn here are universal.</p><h3>How to use this guide</h3><p>This is the <strong>starting line for your self-learning journey</strong>. To get the most out of it, you must follow the 3-step learning loop for each module.</p><ol><li><p><strong>Watch:</strong> View the curated video (most are 10-15 minutes).</p></li><li><p><strong>To-Do (THE MOST IMPORTANT STEP):</strong> I&#8217;ll give you a practical to-do list. You must build the AI-first habit by doing. <strong>The real learning comes from doing,</strong> not just watching.</p></li><li><p><strong>Quiz:</strong> Complete the fun level-up quiz to check your grasp of the key principles.</p></li></ol><p>The curated videos total about 3 hours of watch time, but you should plan to set aside additional practice time throughout your week to <strong>turn these actions into true, lasting habits.</strong></p><h3>The agenda</h3><p>Here&#8217;s the full agenda for this crash course.</p><ul><li><p><strong><a href="https://adamfaik.substack.com/i/178923082/module-slack-ai-search-summarize-and-recap">Module 1:</a></strong><a href="https://adamfaik.substack.com/i/178923082/module-slack-ai-search-summarize-and-recap"> Slack AI: Search, summarize, and recap (10 min)</a></p></li><li><p><strong><a href="https://adamfaik.substack.com/i/178923082/module-gemini-a-full-feature-tour">Module 2:</a></strong><a href="https://adamfaik.substack.com/i/178923082/module-gemini-a-full-feature-tour"> Gemini: A full feature tour (30 min)</a></p></li><li><p><strong><a href="https://adamfaik.substack.com/i/178923082/module-prompting-persona-task-context-and-format">Module 3:</a></strong><a href="https://adamfaik.substack.com/i/178923082/module-prompting-persona-task-context-and-format"> Prompting: Persona, task, context, and format (10 min)</a></p></li><li><p><strong><a href="https://adamfaik.substack.com/i/178923082/module-deep-research-scope-write-and-find-gaps">Module 4:</a></strong><a href="https://adamfaik.substack.com/i/178923082/module-deep-research-scope-write-and-find-gaps"> Deep Research: Scope, write, and find gaps (15 min)</a></p></li><li><p><strong><a href="https://adamfaik.substack.com/i/178923082/module-gems-build-your-personal-ai-assistant">Module 5:</a></strong><a href="https://adamfaik.substack.com/i/178923082/module-gems-build-your-personal-ai-assistant"> Gems: Build your personal AI assistant (10 min)</a></p></li><li><p><strong><a href="https://adamfaik.substack.com/i/178923082/module-google-meet-transcribe-summarize-and-customize">Module 6:</a></strong><a href="https://adamfaik.substack.com/i/178923082/module-google-meet-transcribe-summarize-and-customize"> Google Meet: Transcribe, summarize, and customize (10 min)</a></p></li><li><p><strong><a href="https://adamfaik.substack.com/i/178923082/module-canvas-outline-prototype-and-quiz">Module 7:</a></strong><a href="https://adamfaik.substack.com/i/178923082/module-canvas-outline-prototype-and-quiz"> Canvas: Outline, prototype, and quiz (10 min)</a></p></li><li><p><strong><a href="https://adamfaik.substack.com/i/178923082/module-notebooklm-analyze-docs-videos-and-websites">Module 8:</a></strong><a href="https://adamfaik.substack.com/i/178923082/module-notebooklm-analyze-docs-videos-and-websites"> NotebookLM: Analyze docs, videos, and websites (20 min)</a></p></li><li><p><strong><a href="https://adamfaik.substack.com/i/178923082/module-miro-ai-brainstorm-diagram-and-summarize">Module 9:</a></strong><a href="https://adamfaik.substack.com/i/178923082/module-miro-ai-brainstorm-diagram-and-summarize"> Miro AI: Brainstorm, diagram, and summarize (5 min)</a></p></li><li><p><strong><a href="https://adamfaik.substack.com/i/178923082/module-github-copilot-suggest-explain-and-automate">Module 10:</a></strong><a href="https://adamfaik.substack.com/i/178923082/module-github-copilot-suggest-explain-and-automate"> GitHub Copilot: Suggest, explain, and automate (15 min)</a></p></li><li><p><strong><a href="https://adamfaik.substack.com/i/178923082/module-cursor-build-debug-and-visually-edit">Module 11:</a></strong><a href="https://adamfaik.substack.com/i/178923082/module-cursor-build-debug-and-visually-edit"> Cursor: Build, debug, and visually edit (15 min)</a></p></li><li><p><strong><a href="https://adamfaik.substack.com/i/178923082/module-figma-make-prompt-visualize-and-refine-ideas">Module 12:</a></strong><a href="https://adamfaik.substack.com/i/178923082/module-figma-make-prompt-visualize-and-refine-ideas"> Figma Make: Prompt, visualize, and refine ideas (10 min)</a></p></li><li><p><strong><a href="https://adamfaik.substack.com/i/178923082/module-ai-agents-instruct-delegate-and-automate">Module 13:</a></strong><a href="https://adamfaik.substack.com/i/178923082/module-ai-agents-instruct-delegate-and-automate"> AI agents: Instruct, delegate, and automate (10 min)</a></p></li><li><p><strong><a href="https://adamfaik.substack.com/i/178923082/module-mcp-give-your-llm-new-skills">Module 14:</a></strong><a href="https://adamfaik.substack.com/i/178923082/module-mcp-give-your-llm-new-skills"> MCP: Give your LLM new skills (10 min)</a></p></li><li><p><strong><a href="https://adamfaik.substack.com/i/178923082/module-aa-how-agents-talk-and-work-together">Module 15:</a></strong><a href="https://adamfaik.substack.com/i/178923082/module-aa-how-agents-talk-and-work-together"> A2A: How agents talk and work together (10 min)</a></p></li></ul><h3>Get support and share your wins</h3><p>Got questions? Stuck? Have a better video or a new to-do idea to suggest?</p><p><strong>Leave a comment below!</strong> This is a living document. I&#8217;ll do my best to reply and update the playbook with the best ideas from the community.</p><p>Let&#8217;s begin!</p><div><hr></div><h2>Module 1: Slack AI: Search, summarize, and recap</h2><p><strong>PM problem:</strong> You&#8217;re back from a 3-day weekend, or you&#8217;ve just been pulled into a new project. You open Slack and see a mile-long thread and a project channel with hundreds of unread messages. Your old reflex: spend 30 minutes scrolling (and losing your mind).</p><p><strong>AI-first reflex:</strong> Instantly summarize the thread, ask the channel for a 7-day summary, and get a daily recap of your most important projects. This module is your first quick-win for reclaiming your time.</p><p><strong>Tutorials:</strong></p><div id="youtube2-r4F4ZbcyQnc" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;r4F4ZbcyQnc&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/r4F4ZbcyQnc?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><div id="youtube2-YzpLi3Lshzk" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;YzpLi3Lshzk&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/YzpLi3Lshzk?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><div id="youtube2-q1JFMm8biXo" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;q1JFMm8biXo&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/q1JFMm8biXo?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><strong>Key concepts:</strong></p><ul><li><p><strong>Get answers, not just results:</strong> The biggest shift is how you search. Stop using keywords. Ask Slack AI questions in natural language, just like you&#8217;d ask a teammate (e.g., &#8220;Who is doing the creative for Project Eagle?&#8221;).</p></li><li><p><strong>Your catch-up superpower:</strong> You can instantly summarize any thread or channel. This is perfect for a PM. You can summarize a <strong>project channel</strong> to see what progress has been made, an <strong>account channel</strong> to learn about a customer, or a <strong>user feedback channel</strong> to find trends and themes.</p></li><li><p><strong>Control the timeframe:</strong> When you summarize, you can choose a specific timeframe, like just your &#8220;unread messages&#8221; or (most powerfully) the &#8220;last 7 days&#8221;.</p></li><li><p><strong>Your proactive daily digest:</strong> The &#8220;Recap&#8221; feature is your personalized digest. You select only the channels you can&#8217;t monitor 24/7 but need to stay informed on. It gives you a daily summary of missed messages so you can stay in the loop without being overwhelmed.</p></li><li><p><strong>Trust but verify (with sources):</strong> This is critical for PMs. Every answer or summary Slack AI gives you provides <strong>source links</strong>. You can click them to jump directly to the original message in the conversation for full context.</p></li></ul><p><strong>To-do: </strong>The real learning comes from doing. Go try this right now in your Slack workspace.</p><ul><li><p><strong>Ask a question:</strong> Go to the Slack search bar and ask a natural language question about one of your projects (e.g., &#8220;What is the status of [Project Name]?&#8221; or &#8220;What is the latest update on the design sprint?&#8221;).</p></li><li><p><strong>Summarize a thread:</strong> Find a long, unread thread in one of your channels and hit the &#8220;Summarize&#8221; button. See if the summary gives you what you need in 10 seconds.</p></li><li><p><strong>Summarize a channel:</strong> Go to a busy project channel. Use the &#8220;Summarize&#8221; feature and select &#8220;Last 7 days&#8221;.</p></li><li><p><strong>Set up your recap:</strong> Click the &#8220;Recap&#8221; button in your sidebar and add 3-5 of your most important project, team, or feedback channels.</p></li></ul><p><strong>Quiz:</strong></p><div class="poll-embed" data-attrs="{&quot;id&quot;:405394}" data-component-name="PollToDOM"></div><div class="poll-embed" data-attrs="{&quot;id&quot;:405398}" data-component-name="PollToDOM"></div><div class="poll-embed" data-attrs="{&quot;id&quot;:405399}" data-component-name="PollToDOM"></div><div><hr></div><h2>Module 2: Gemini: A full feature tour</h2><p><strong>PM Problem:</strong> You have a blank page for a new PRD. You have a 50-page user research PDF to synthesize. You know the answer to a question is somewhere in your Google Drive, but you can&#8217;t find it.</p><p><strong>AI-first reflex:</strong> You stop starting with a blank page. Gemini is your new Swiss Army knife. You use it to upload files for summaries, brainstorm first drafts, search your Drive, and even get a podcast-style overview of a document for your commute.</p><p><strong>Tutorial:</strong></p><div id="youtube2-7HuXSoDXfTY" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;7HuXSoDXfTY&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/7HuXSoDXfTY?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><strong>Key concepts:</strong></p><ul><li><p><strong>It&#8217;s more than a chatbot:</strong> This is the key takeaway. You can <strong>upload files</strong> (PDFs, docs) and even <strong>images</strong> for analysis. (e.g., &#8220;Summarize this 30-page PDF&#8221; or &#8220;Analyze this screenshot of a competitor&#8217;s flow&#8221;).</p></li><li><p><strong>It&#8217;s your Google Drive search engine:</strong> You can <strong>connect your Google Drive</strong> (in Settings &gt; Apps). This is a game-changer. You can now ask, &#8220;What were the main takeaways from the &#8216;Project Eagle Q3&#8217; doc?&#8221; and it will find and read the file for you.</p></li><li><p><strong>Deep Research for complex tasks:</strong> For big, open-ended questions (like market research or planning), use the Deep Research mode. It will search hundreds of websites to create a detailed, condensed summary.</p></li><li><p><strong>Gems for repeatable tasks:</strong> Gems are custom versions of Gemini you create for specific, repeatable tasks. Think of them as productizing your best prompts. Examples: &#8220;Meeting Recap Generator,&#8221; &#8220;PRD First Draft Writer,&#8221; or &#8220;User Feedback Synthesizer.&#8221;</p></li><li><p><strong>Audio overview for your commute:</strong> When you upload a document, you can often generate a podcast-style audio summary. This lets you read your project docs while you&#8217;re walking or driving.</p></li><li><p><strong>Fact-check everything:</strong> AI can and does make mistakes. Always use the built-in fact-checker. Click the three-dot menu and select <strong>&#8220;double-check the response,&#8221;</strong> which uses a standard Google search to verify its claims.</p></li></ul><p><strong>To-do: </strong>Time to build the habit. Go to <a href="https://gemini.google.com/">gemini.google.com</a>.</p><ul><li><p><strong>Summarize a file:</strong> Upload a PDF or Google Doc (like a project brief or research doc) using the plus (+) icon and ask: &#8220;Summarize this in 3 bullet points.&#8221;</p></li><li><p><strong>Connect your Drive:</strong> Click the settings gear (left menu) &gt; &#8220;Apps&#8221; and <strong>connect your Google Drive</strong>. Start a new chat and ask a question about a specific file you know is in your Drive.</p></li><li><p><strong>Try Deep Research:</strong> Go to the Deep Research tab (at the top) and try a PM prompt like: &#8220;Create a competitor analysis plan for a new B2B SaaS product.&#8221;</p></li><li><p><strong>Explore Gems:</strong> Click Gems (left menu) and explore the pre-built Editor. Paste in a paragraph of your own writing (from an email or doc) and ask it to &#8220;refine this to be more clear and concise.&#8221;</p></li></ul><p><strong>Quiz:</strong></p><div class="poll-embed" data-attrs="{&quot;id&quot;:405417}" data-component-name="PollToDOM"></div><div class="poll-embed" data-attrs="{&quot;id&quot;:405418}" data-component-name="PollToDOM"></div><div class="poll-embed" data-attrs="{&quot;id&quot;:405419}" data-component-name="PollToDOM"></div><div><hr></div><h2>Module 3: Prompting: Persona, task, context, and format</h2><p><strong>PM problem:</strong> You try using AI, but the results are generic, vague, and useless. You ask it to &#8220;write a PRD&#8221; and it gives you a high-school-level template. You get frustrated and go back to a blank page.</p><p><strong>AI-first reflex:</strong> You stop chatting and start briefing. You learn to give the AI a spec, just like you&#8217;d give to an engineer or designer, using a simple 4-part framework.</p><p><strong>Tutorial:</strong></p><div id="youtube2-QUoxvf4tZHQ" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;QUoxvf4tZHQ&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/QUoxvf4tZHQ?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><strong>Key concepts: </strong>This module teaches Google&#8217;s 4-part formula for writing prompts that actually get you what you want. Think of it as your new AI-first brief.</p><ul><li><p><strong>The 4-part AI-first brief (PTCF):</strong></p><ul><li><p><strong>P = Persona:</strong> Who do you want the AI to be? (e.g., &#8220;You are an expert Product Manager at a B2B SaaS company...&#8221;)</p></li><li><p><strong>T = Task:</strong> What, specifically, do you want it to do? (e.g., &#8220;...write 5 potential user stories for a new &#8216;admin dashboard&#8217; feature.&#8221;)</p></li><li><p><strong>C = Context:</strong> What background info does it need? (e.g., &#8220;The feature is for non-technical admins. The goal is to give them a high-level view of user activity...&#8221;)</p></li><li><p><strong>F = Format:</strong> How should the output look? (e.g., &#8220;Put this in a table with columns for: User Story, Acceptance Criteria, and Business Value.&#8221;)</p></li></ul></li><li><p><strong>This framework is universal:</strong> This isn&#8217;t just for Gemini. The PTCF framework works effectively across all major AI tools, including ChatGPT, Claude, and others.</p></li><li><p><strong>The magic prompt-refiner:</strong> If you get a weak result, or you&#8217;re not sure what context to add, just ask the AI: <strong>&#8220;What questions do you have about this prompt?&#8221;</strong> It will literally give you a checklist of the exact details it needs to give you a better answer.</p></li><li><p><strong>Don&#8217;t accept the first draft:</strong> Always iterate on the output. Get a result, then give follow-up commands like: &#8220;Make this more concise,&#8221; &#8220;Put this in a 90-day plan,&#8221; or &#8220;Now re-format this as a table.&#8221;</p></li></ul><p><strong>To-do: </strong>Time to build the most critical habit.</p><ul><li><p><strong>Write a PTCF prompt:</strong> Go to Gemini. Draft your next real work request (e.g., writing an email, brainstorming ideas, summarizing notes) using the full <strong>Persona, Task, Context, and Format</strong> framework.</p></li><li><p><strong>Use the magic refiner:</strong> In a new chat, write a simple, weak prompt (e.g., &#8220;Write a blog post about AI&#8221;). Then, ask the follow-up: <strong>&#8220;What questions do you have about this prompt?&#8221;</strong> Watch as it tells you exactly what to add.</p></li><li><p><strong>Iterate on output:</strong> Take any AI response you just got. Ask it: &#8220;Now put this into a table.&#8221; If it works, try the &#8220;Export to Google Sheets&#8221; feature.</p></li></ul><p><strong>Quiz:</strong></p><div class="poll-embed" data-attrs="{&quot;id&quot;:405600}" data-component-name="PollToDOM"></div><div class="poll-embed" data-attrs="{&quot;id&quot;:405601}" data-component-name="PollToDOM"></div><div class="poll-embed" data-attrs="{&quot;id&quot;:405602}" data-component-name="PollToDOM"></div><div><hr></div><h2>Module 4: Deep Research: Scope, write, and find gaps</h2><p><strong>PM problem:</strong> You&#8217;re starting a new initiative in a domain you know nothing about. You need to get up to speed, fast. Your old reflex: spend days in a rabbit hole of browser tabs, articles, and competitor teardowns.</p><p><strong>AI-first reflex:</strong> You use Gemini&#8217;s Deep Research mode as your personal research assistant. You ask it to &#8220;map the field,&#8221; &#8220;find knowledge gaps,&#8221; and &#8220;summarize opposing arguments.&#8221; It scans hundreds of websites and gives you a complete overview in minutes.</p><p><strong>Tutorial:</strong></p><div id="youtube2-qEe5Zd-pRPo" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;qEe5Zd-pRPo&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/qEe5Zd-pRPo?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><strong>Key concepts:</strong></p><ul><li><p><strong>Create an instant map of any topic:</strong> Deep Research mode scans years of peer-reviewed research and articles to give you a complete map of a topic. You can instantly find the major subtopics, key trends, and most importantly the <strong>key knowledge gaps</strong>.</p></li><li><p><strong>Write your first 0.1 draft:</strong> This is the ultimate blank page killer. Ask it to generate a first draft of a literature review, market analysis, or introduction. It will do the grunt work, saving you hours. You can then <strong>export it directly to Google Docs</strong> to edit and refine.</p></li><li><p><strong>Find weaknesses in your argument (rigor):</strong> This is critical for PMs. Before you go into a stakeholder meeting, ask Gemini to find the <strong>main critiques or alternative perspectives</strong> on your argument. This makes your own ideas more robust and prepares you for any challenge.</p></li><li><p><strong>Find adjacent opportunities:</strong> AI makes it easy to find overlaps with adjacent fields. This is a powerhouse for innovation. You can ask, &#8220;How have researchers in [Adjacent Field] approached the problem of [Your Problem]?&#8221; to discover new techniques or collaboration opportunities.</p></li><li><p><strong>Bonus tip - Canvas mode:</strong> The video mentions a bonus feature called Canvas. This is an interactive mode where you can edit individual sections of an AI-generated document. You can highlight one paragraph that has no references and ask, &#8220;Find 3-5 references that support this statement.&#8221;</p></li></ul><p><strong>To-do: </strong>Time to become a super-researcher.</p><ul><li><p><strong>Scope a topic:</strong> Open Gemini and (in Deep Research mode) use a prompt like: &#8220;Based on market research from the past 3 years, what are the <strong>major knowledge gaps</strong> in the [Your Area of Interest, e.g., &#8216;customer onboarding SaaS&#8217;] market?&#8221;</p></li><li><p><strong>Test your argument:</strong> Take a core assumption you have (e.g., &#8220;users prefer a self-serve model&#8221;). Ask Gemini: &#8220;What are the <strong>main critiques or alternative perspectives</strong> challenging the idea that [Your Core Argument]?&#8221;</p></li><li><p><strong>Find collaborators:</strong> Ask Gemini: &#8220;How have companies in <strong>adjacent fields</strong> like [e.g., &#8216;B2C gaming&#8217;] approached the problem of [e.g., &#8216;user engagement and retention&#8217;]?&#8221;</p></li></ul><p><strong>Quiz:</strong></p><div class="poll-embed" data-attrs="{&quot;id&quot;:405604}" data-component-name="PollToDOM"></div><div class="poll-embed" data-attrs="{&quot;id&quot;:405605}" data-component-name="PollToDOM"></div><div class="poll-embed" data-attrs="{&quot;id&quot;:405606}" data-component-name="PollToDOM"></div><div><hr></div><h2>Module 5: Gems: Build your personal AI assistant</h2><p><strong>PM problem:</strong> You do the same, tedious tasks every week. Maybe it&#8217;s formatting your weekly project report, drafting similar replies to user feedback, or summarizing customer inquiries. It&#8217;s low-value work that makes you sigh every time it appears on your calendar.</p><p><strong>AI-first reflex:</strong> You automate it. You build a custom Gem to act as your personal expert for that one specific task. You productize your prompt so you never have to write it again.</p><p><strong>Tutorial:</strong></p><div id="youtube2-yO01B8OoXfo" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;yO01B8OoXfo&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/yO01B8OoXfo?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><strong>Key concepts:</strong></p><ul><li><p><strong>Gems are productized prompts:</strong> A Gem is a custom version of Gemini you build to act as your personal expert for any repetitive task (like drafting emails or formatting reports).</p></li><li><p><strong>Use the PTCF framework (again!):</strong> The best way to build a Gem is to use the <strong>Persona, Task, Context, Format</strong> framework you learned in Module 3 for its instructions.</p></li><li><p><strong>Give your Gem knowledge:</strong> You can upload files (like PDFs with FAQs, project specs, or business information) directly into your Gem. It will use this document as its single source of truth.</p></li><li><p><strong>The real time-saver:</strong> The magic is that the Gem already has all the instructions and context saved. You don&#8217;t have to write a complex prompt every time. You just give it the new input (like &#8220;Here is the latest customer email&#8221;) and it does the work.</p></li><li><p><strong>(New) Gems are shareable:</strong> You can now share your Gems with your team, just like you&#8217;d share a Google Doc. Build a &#8220;User Feedback Summarizer&#8221; and share it with your whole product team.</p></li></ul><p><strong>To-do: </strong>Let&#8217;s build your first AI assistant.</p><ul><li><p><strong>Brainstorm your annoying tasks:</strong> List 3-5 of your most repetitive, tedious weekly tasks.</p></li><li><p><strong>Pick one:</strong> Open the &#8220;Gem Manager&#8221; in Gemini and start a &#8220;New Gem.&#8221;</p></li><li><p><strong>Write the spec:</strong> Write instructions for your Gem using the <strong>Persona, Task, Context, and Format</strong> framework. (Or, just write simple notes and ask Gemini to rewrite the instructions for you!)</p></li><li><p><strong>Add knowledge:</strong> Upload a relevant document to the &#8220;Add knowledge&#8221; section to give your Gem context (e.g., a sample of a good report, a PRD, an FAQ doc).</p></li><li><p><strong>Test your Gem:</strong> Give your new Gem a simple prompt related to its task (like pasting in a chunk of data or a customer email) and see it work.</p></li></ul><p><strong>Quiz:</strong></p><div class="poll-embed" data-attrs="{&quot;id&quot;:405609}" data-component-name="PollToDOM"></div><div class="poll-embed" data-attrs="{&quot;id&quot;:405610}" data-component-name="PollToDOM"></div><div class="poll-embed" data-attrs="{&quot;id&quot;:405611}" data-component-name="PollToDOM"></div><div><hr></div><h2>Module 6: Google Meet: Transcribe, summarize, and customize</h2><p><strong>PM problem:</strong> You&#8217;re in a critical stakeholder meeting. You&#8217;re either frantically typing notes and missing the conversation (and the body language), or you&#8217;re fully engaged but end the call with zero record of who agreed to what. Both are terrible.</p><p><strong>AI-first reflex:</strong> You automate. You turn on Gemini in Google Meet to get a perfect transcript. Then, you use a custom Gem to turn that transcript into your perfect notes: action items by owner, key decisions, and a concise summary.</p><p><strong>Tutorial:</strong></p><div id="youtube2-ZRgTrvwAoJs" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;ZRgTrvwAoJs&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/ZRgTrvwAoJs?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><strong>Key concepts: </strong>This workflow is a game-changer for your meetings. Here are the core concepts to understand:</p><ul><li><p>You can activate Gemini directly in Google Meet to <strong>automatically transcribe the entire call</strong> and generate a summary.</p></li><li><p>After the call, all notes and transcripts are <strong>automatically saved in a Google Drive folder</strong> called &#8220;Meetings recordings&#8221;.</p></li><li><p>A critical benefit is that Gemini&#8217;s transcript <strong>knows who said what</strong>. This is essential for creating accurate, custom summaries and assigning action items to the right person.</p></li><li><p>The pro move is to <strong>copy the raw transcript (not the generic summary)</strong> and paste it into a custom Gem.</p></li><li><p>You then <strong>train your custom Gem</strong> by giving it specific instructions (a system prompt) on exactly how you want your notes formatted (e.g., &#8220;list action items by person,&#8221; &#8220;extract key decisions,&#8221; &#8220;create a one-paragraph summary&#8221;). This gives you perfect, tailored notes every time.</p></li></ul><p><strong>To-do: </strong>Let&#8217;s make sure you never lose an action item again.</p><ul><li><p><strong>Turn it on:</strong> In your very next Google Meet, click the button to <strong>&#8220;Start&#8221; Gemini note-taking</strong>.</p></li><li><p><strong>Find the folder:</strong> After the call, find the <strong>&#8220;Meetings recordings&#8221;</strong> folder in your Google Drive and locate the transcript.</p></li><li><p><strong>Build your &#8220;Notes Gem&#8221;:</strong> Create a new &#8220;Gem&#8221; (or start a new chat) and give it your custom prompt for meeting notes.</p></li><li><p><strong>Run the transcript:</strong> <strong>Copy the full transcript</strong> from the Google Doc and paste it into your new Gem.</p></li><li><p><strong>Compare and iterate:</strong> Compare your custom output to Google&#8217;s generic summary. Edit your Gem&#8217;s instructions to dial it in perfectly.</p></li></ul><p><strong>Quiz:</strong></p><div class="poll-embed" data-attrs="{&quot;id&quot;:405613}" data-component-name="PollToDOM"></div><div class="poll-embed" data-attrs="{&quot;id&quot;:405614}" data-component-name="PollToDOM"></div><div class="poll-embed" data-attrs="{&quot;id&quot;:405615}" data-component-name="PollToDOM"></div><div><hr></div><h2>Module 7: Canvas: Outline, prototype, and quiz</h2><p><strong>PM problem:</strong> Your engineers are talking about &#8220;stateless requests&#8221; for a new &#8220;REST API,&#8221; and you&#8217;re just nodding along. You need to learn this new technical concept fast to be effective, but reading dry documentation is slow and passive.</p><p><strong>AI-first reflex:</strong> You stop just reading and start interacting. You use Gemini&#8217;s Canvas feature to build a personal, interactive study guide. You highlight terms you don&#8217;t know, generate mini-prototypes to see how things work, and quiz yourself, all in one place.</p><p><strong>Tutorial:</strong></p><div id="youtube2-OeYhQB5wT-I" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;OeYhQB5wT-I&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/OeYhQB5wT-I?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><strong>Key concepts:</strong></p><ul><li><p><strong>It&#8217;s an interactive study guide:</strong> Gemini Canvas is a powerful tool for learning new skills by letting you build an interactive study guide from a single prompt.</p></li><li><p><strong>Get in-context explanations:</strong> This is the killer feature. You can <strong>highlight any text</strong> (like &#8220;JSON&#8221; or &#8220;stateless&#8221;) in the study guide and ask Gemini to &#8220;explain this in more detail&#8221; right inside the canvas. The document dynamically updates with the new info.</p></li><li><p><strong>Learn by doing with prototypes:</strong> Canvas can use its code generation to create <strong>interactive prototypes</strong> (like an API simulator). This lets you understand complex concepts visually by doing instead of just reading.</p></li><li><p><strong>Instantly test your knowledge:</strong> Once you&#8217;ve built your guide, you can ask Gemini to <strong>create an interactive quiz</strong> based on the content it just generated, helping you lock in the knowledge.</p></li><li><p><strong>Learn on the go:</strong> The audio overviews feature lets you transform your entire study guide into a <strong>podcast-style summary</strong> to listen to on your commute.</p></li></ul><p><strong>To-do: </strong>Let&#8217;s learn a new skill in 10 minutes.</p><ul><li><p><strong>Pick your topic:</strong> Open Gemini and pick a simple concept you need to learn for your job (e.g., &#8220;What is &#8216;Agile methodology&#8217;?&#8221; or &#8220;Explain &#8216;feature flags&#8217;&#8221;).</p></li><li><p><strong>Create the guide:</strong> Use the prompt: &#8220;I&#8217;m new to [Your Topic]. Create a simple study guide for me. I am a Product Manager and not a technical expert.&#8221;</p></li><li><p><strong>Get clarification:</strong> Find a term in the response you don&#8217;t understand, <strong>highlight it</strong>, and ask Gemini: &#8220;Explain this to me in simple terms.&#8221;</p></li><li><p><strong>Test your knowledge:</strong> Ask Gemini: &#8220;Now, create a 5-question multiple-choice quiz based on this study guide to test my knowledge.&#8221;</p></li></ul><p><strong>Quiz:</strong></p><div class="poll-embed" data-attrs="{&quot;id&quot;:405617}" data-component-name="PollToDOM"></div><div class="poll-embed" data-attrs="{&quot;id&quot;:405618}" data-component-name="PollToDOM"></div><div class="poll-embed" data-attrs="{&quot;id&quot;:405619}" data-component-name="PollToDOM"></div><div><hr></div><h2>Module 8: NotebookLM: Analyze docs, videos, and websites</h2><p><strong>PM problem:</strong> Your project info is scattered. You have 10 PRDs in Google Drive, 5 user research PDFs, 20 competitor website links, and a 1-hour YouTube video of a user interview. You need to find one specific answer (like &#8220;What was the main feedback on feature X?&#8221;), but it&#8217;s buried in one of those 36 sources. Your old reflex: open 36 tabs and start skimming.</p><p><strong>AI-first reflex:</strong> You build a single source of truth. You create one NotebookLM project and upload all 36 sources. You&#8217;re now chatting with your entire project. You ask, &#8220;What was the main feedback on feature X?&#8221; and it answers with citations, showing you exactly which doc and page the answer came from.</p><p><strong>Tutorial:</strong></p><div id="youtube2-uKPBIKF5FUI" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;uKPBIKF5FUI&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/uKPBIKF5FUI?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><strong>Key concepts:</strong></p><ul><li><p><strong>It&#8217;s source-grounded:</strong> This is the key concept. NotebookLM is an AI assistant that <strong>only uses the documents you upload</strong> to provide answers. It stops hallucinations because it&#8217;s not guessing from the whole internet; it&#8217;s grounded in your sources.</p></li><li><p><strong>Upload your entire project:</strong> You can create notebooks for different projects and upload your PDFs, Google Drive files, website links, and even <strong>YouTube video links</strong>. This is perfect for centralizing user research, competitor links, and project specs.</p></li><li><p><strong>Chat with your docs and get cited answers:</strong> You can ask direct questions to all your sources at once. NotebookLM will answer with <strong>citations</strong>, showing you exactly which document (or video timestamp) the information came from.</p></li><li><p><strong>Instant summaries, mind maps, and podcasts:</strong> With one click, you can get a summary of a 1-hour video, a mind map of a complex PRD, an FAQ, or an audio overview (a podcast) of your research docs for your commute.</p></li></ul><p><strong>To-do: </strong>Let&#8217;s build your project brain.</p><ul><li><p><strong>Create your notebook:</strong> Go to <a href="https://notebooklm.google.com/">notebooklm.google.com</a> and create your first new notebook (e.g., &#8220;[Project Name] - Research&#8221;).</p></li><li><p><strong>Upload your sources:</strong> Upload at least 3 different sources: a <strong>Google Doc</strong> (like a PRD), a <strong>website link</strong> (like a competitor&#8217;s homepage), and a <strong>PDF</strong> (like a user research report).</p></li><li><p><strong>Get an instant summary:</strong> Click on one of the sources you just uploaded to get an instant summary and list of key topics.</p></li><li><p><strong>Chat with your project:</strong> Use the chat box to ask a specific question that spans all your documents (e.g., &#8220;What are the main user pain points mentioned across all sources?&#8221;).</p></li><li><p><strong>Try a power feature:</strong> Click &#8220;Audio Overview&#8221; to generate an instant podcast based on your documents.</p></li></ul><p><strong>Quiz:</strong></p><div class="poll-embed" data-attrs="{&quot;id&quot;:405624}" data-component-name="PollToDOM"></div><div class="poll-embed" data-attrs="{&quot;id&quot;:405625}" data-component-name="PollToDOM"></div><div class="poll-embed" data-attrs="{&quot;id&quot;:405626}" data-component-name="PollToDOM"></div><div><hr></div><h2>Module 9: Miro AI: Brainstorm, diagram, and summarize</h2><p><strong>PM problem:</strong> Your Miro board after a brainstorming session is a glorious mess of sticky notes, screenshots, and disconnected arrows. Now, you have to spend an hour manually sorting, clustering, and turning it all into a structured project plan or competitor analysis doc.</p><p><strong>AI-first reflex:</strong> You use the AI built into the board. You generate a mind map from a text prompt to start. Then, you select all your messy sticky notes and screenshots and ask Miro AI to &#8220;summarize the selected content,&#8221; &#8220;compare these competitor examples,&#8221; or &#8220;turn this into an actionable project plan,&#8221; and it does, in seconds.</p><p><strong>Tutorial:</strong></p><div id="youtube2-Jc72Ot0Qdq0" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;Jc72Ot0Qdq0&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/Jc72Ot0Qdq0?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><strong>Key concepts:</strong></p><ul><li><p><strong>AI is built into the board:</strong> Miro AI is right on your toolbar. It can generate new content from scratch (Docs, Tables, Diagrams, Mind maps, etc.) without you ever leaving your workflow.</p></li><li><p><strong>The context-aware superpower:</strong> This is its most powerful feature. You can <strong>select existing items on your board</strong> (sticky notes, images, diagrams) and use them as context for a new prompt.</p></li><li><p><strong>Seamless workflow:</strong> This context-aware ability lets you move from one phase to the next instantly. You can go from a brainstorm (a mind map) to competitive analysis (a document) to an execution plan (a table) all in one continuous flow, using the previous step&#8217;s output as the input for the next.</p></li></ul><p><strong>To-do: </strong>Let&#8217;s turn chaos into clarity.</p><ul><li><p><strong>Generate a diagram:</strong> Open a new Miro board, click the &#8220;Create with AI&#8221; icon, and ask it to generate a <strong>Diagram &gt; Mind map</strong> on a topic (e.g., &#8220;create a mind map of marketing channels for a new product&#8221;).</p></li><li><p><strong>Add your own context:</strong> Add a few sticky notes or images to the board (e.g., screenshots of competitor websites).</p></li><li><p><strong>Use context-aware AI:</strong> <strong>Select your new mind map AND your sticky notes/images. </strong>Open Miro AI and choose <strong>Document</strong>.</p></li><li><p><strong>Summarize and analyze:</strong> Use the prompt: &#8220;Summarize the selected content and compare the ideas in the mind map to the competitor examples.&#8221;</p></li></ul><p><strong>Quiz:</strong></p><div class="poll-embed" data-attrs="{&quot;id&quot;:405629}" data-component-name="PollToDOM"></div><div class="poll-embed" data-attrs="{&quot;id&quot;:405630}" data-component-name="PollToDOM"></div><div class="poll-embed" data-attrs="{&quot;id&quot;:405631}" data-component-name="PollToDOM"></div><div><hr></div><h2>Module 10: GitHub Copilot: Suggest, explain, and automate</h2><p><strong>PM problem:</strong> You&#8217;re in a sprint planning meeting, and your tech lead says a simple feature request is 5 story points because the legacy code is confusing. Later, you look at a Pull Request (PR) and have no idea what the wall of red and green text actually means. You feel disconnected from the technical work.</p><p><strong>AI-first reflex:</strong> You understand that your dev team now has an AI pair programmer. You can now ask, &#8220;Can you have Copilot explain this confusing code to us in plain English?&#8221; You know they can generate tests faster, write documentation instantly, and build features by assembling AI-suggested code, not just typing every line by hand.</p><p><strong>Tutorial:</strong></p><div id="youtube2-b5xcWdzAB5c" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;b5xcWdzAB5c&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/b5xcWdzAB5c?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><strong>Key concepts: </strong>You don&#8217;t need to know how to use Copilot, but you must know what it&#8217;s capable of.</p><ul><li><p><strong>It&#8217;s an AI pair programmer:</strong> AI is no longer just a fancy search. It actively suggests and <strong>writes entire blocks of code</strong> for developers in real-time. This frees them from repetitive tasks to focus on building better, more creative products.</p></li><li><p><strong>The universal translator (</strong><code>/explain</code><strong>):</strong> This is your new best friend. A developer can highlight any confusing block of code and ask Copilot to <strong>explain it in plain English</strong>. This shatters the barrier between technical and non-technical team members.</p></li><li><p><strong>Plain English commands:</strong> Developers can now edit code using natural language. Just like in the video, they can highlight code and type, <strong>&#8220;change this to allow &#8216;r&#8217; for rock&#8221;</strong>, and the AI does the refactor. This means faster iteration and bug fixes.</p></li><li><p><strong>Automated quality and documentation:</strong> Copilot helps automate related tasks. It can <strong>write automated tests</strong> to improve quality and <strong>write summaries of code changes (commit messages)</strong>. This means you get clearer, faster updates on what actually got done.</p></li></ul><p><strong>To-do: </strong>Your mission is about collaboration, not coding.</p><ul><li><p><strong>Schedule 15 mins with an engineer:</strong> Ask an engineer on your team to give you a live demo of how they use Copilot.</p></li><li><p><strong>Ask for an explanation:</strong> Find a recent PR or a piece of code you&#8217;re curious about. Ask your engineer to use the <code>/explain</code><strong> command</strong> and share the plain-English summary with you.</p></li><li><p><strong>See a commit written:</strong> Ask them to show you how they use Copilot to generate a <strong>commit message</strong> (a summary of their changes).</p></li></ul><p><strong>Quiz:</strong></p><div class="poll-embed" data-attrs="{&quot;id&quot;:405635}" data-component-name="PollToDOM"></div><div class="poll-embed" data-attrs="{&quot;id&quot;:405636}" data-component-name="PollToDOM"></div><div class="poll-embed" data-attrs="{&quot;id&quot;:405637}" data-component-name="PollToDOM"></div><div><hr></div><h2>Module 11: Cursor: Build, debug, and visually edit</h2><p><strong>PM problem:</strong> The feedback loop is slow. You ask for a simple change (e.g., &#8220;make that button yellow&#8221;). Your engineer has to find the code, change it, push it, deploy it to a staging site, and then you can finally see it... only to realize you actually meant a different yellow.</p><p><strong>AI-first reflex:</strong> You understand your dev team can now use vibe coding tools. You can join a screen share, watch them <strong>click the button, and tell the AI in plain English, &#8220;Make this button yellow&#8221;</strong>. You see the change instantly in a live preview, allowing you to give feedback in seconds, not hours.</p><p><strong>Tutorial:</strong></p><div id="youtube2-Nvj7ADWTS20" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;Nvj7ADWTS20&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/Nvj7ADWTS20?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><strong>Key concepts: </strong>This tool shows the future of development, where building an app feels more like editing a visual design.</p><ul><li><p><strong>Chat + Live preview:</strong> This is the game-changer. AI coding tools now combine the chat with a <strong>live browser preview</strong>. Developers can talk to their code and see their changes (like a button changing color) happen instantly, dramatically speeding up the build-and-test cycle.</p></li><li><p><strong>Visual editing with plain English:</strong> Developers can now <strong>visually edit apps</strong> by just clicking on an element (like a button or a title) and telling the AI in plain English what to do.</p></li><li><p><strong>Faster debugging:</strong> The built-in browser has <strong>console logs</strong> (a list of errors). Developers can feed error messages directly to the AI, which acts as an expert assistant to help find the solution much faster.</p></li><li><p><strong>Run an AI horse race:</strong> Instead of just one AI&#8217;s solution, a developer can <strong>ask multiple AI models</strong> (like GPT-5, Claude 3.5, and Composer) for a solution to the same problem, then pick the fastest or most efficient one.</p></li><li><p><strong>New habits (&#8221;New Agent&#8221;):</strong> To get the best results, devs are learning to start a <strong>new agent (or chat) for each new task</strong>. This keeps the AI focused and stops it from getting confused by old, unrelated instructions.</p></li></ul><p><strong>To-do: </strong>Your mission is to experience this new feedback loop.</p><ul><li><p><strong>Schedule a 15-min vibe coding session:</strong> Ask an engineer on your team to share their screen while using Cursor (or a similar tool).</p></li><li><p><strong>Suggest a visual edit:</strong> Suggest a simple visual change (e.g., &#8220;change the text on that button&#8221; or &#8220;change that title&#8217;s color&#8221;).</p></li><li><p><strong>Watch the magic:</strong> See if they can use the <strong>visual click-and-tell feature</strong> to make your change. Watch it happen instantly in the live preview.</p></li><li><p><strong>Ask about models:</strong> Ask them if they ever use multiple models to solve a tricky bug.</p></li></ul><p><strong>Quiz:</strong></p><div class="poll-embed" data-attrs="{&quot;id&quot;:405641}" data-component-name="PollToDOM"></div><div class="poll-embed" data-attrs="{&quot;id&quot;:405642}" data-component-name="PollToDOM"></div><div class="poll-embed" data-attrs="{&quot;id&quot;:405643}" data-component-name="PollToDOM"></div><div><hr></div><h2>Module 12: Figma Make: Prompt, visualize, and refine ideas</h2><p><strong>PM problem:</strong> You have a great idea for a new feature, but it&#8217;s hard to explain. Your &#8220;back of the napkin&#8221; sketch or text description needs to be translated by a designer into a low-fi wireframe, which takes time and can lead to misinterpretations.</p><p><strong>AI-first reflex:</strong> You stop waiting. You (or your designer) use an AI tool to generate a web interface in minutes from your simple text prompt or even a photo of your sketch. This allows your team to visualize, debate, and collaborate on a tangible prototype almost instantly.</p><p><strong>Tutorial:</strong></p><div id="youtube2-WKnNQL4TUf4" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;WKnNQL4TUf4&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/WKnNQL4TUf4?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><strong>Key concepts:</strong></p><ul><li><p><strong>3 ways to create:</strong> AI can now generate complex interfaces from three simple inputs:</p><ol><li><p><strong>A text prompt:</strong> (e.g., &#8220;Create a modern web dashboard with 4 KPI cards and a data table&#8221;).</p></li><li><p><strong>An existing Figma file:</strong> You can copy/paste an existing design to have the AI iterate on it.</p></li><li><p><strong>An image:</strong> You can upload a simple sketch or a screenshot and have the AI turn it into a functional UI.</p></li></ol></li><li><p><strong>Speed and collaboration:</strong> This technology massively speeds up the process from &#8220;idea&#8221; to &#8220;usable prototype.&#8221; It allows anyone on the team (not just designers) to visualize an idea, making collaboration faster and more concrete.</p></li><li><p><strong>Mindset &gt; Tool:</strong> We&#8217;re looking at Figma Make, but this is a bigger trend (<a href="https://v0.dev/">v0.dev</a>, <a href="https://lovable.dev/">Lovable.dev</a>, <a href="https://bolt.new/">bolt.new</a>, <a href="https://aistudio.google.com/">Google AI Studio</a>, etc.) The specific tool will change, but the <strong>AI-first mindset of using AI as a creative partner</strong> is what&#8217;s important.</p></li><li><p><strong>Generate, then edit:</strong> The AI gets you an 80% complete first draft. From there, your team can use AI-powered editing to refine the design, like changing all fonts or colors at once with a single command.</p></li></ul><p><strong>To-do: </strong>Time to visualize an idea.</p><ul><li><p><strong>Generate from a prompt:</strong> Open <a href="https://www.figma.com/make/">Figma Make</a> (or a similar tool: <a href="https://v0.dev/">v0.dev</a>, <a href="https://lovable.dev/">Lovable.dev</a>, <a href="https://bolt.new/">bolt.new</a>, <a href="https://aistudio.google.com/">Google AI Studio</a>) and try a prompt: &#8220;Create a modern login screen for a mobile app with a logo, email field, password field, and a &#8216;Sign Up&#8217; button.&#8221;</p></li><li><p><strong>Generate from an image:</strong> Take a screenshot of an app you like. Upload it to the AI and use a simple prompt like: &#8220;Create this interface.&#8221;</p></li><li><p><strong>Try AI editing:</strong> In the generated design, select a text element and use the AI editor to &#8220;change all button text to be bold.&#8221;</p></li></ul><p><strong>Quiz:</strong></p><div class="poll-embed" data-attrs="{&quot;id&quot;:405645}" data-component-name="PollToDOM"></div><div class="poll-embed" data-attrs="{&quot;id&quot;:405646}" data-component-name="PollToDOM"></div><div class="poll-embed" data-attrs="{&quot;id&quot;:405647}" data-component-name="PollToDOM"></div><div><hr></div><h2>Module 13: AI Agents: Instruct, delegate, and automate</h2><p><strong>PM problem:</strong> You&#8217;ve finally mastered using AI chatbots (LLMs) like Gemini. But now, in meetings, your tech lead and leadership team keep using a new term: &#8220;AI agents.&#8221; They sound completely different, and you&#8217;re not sure why. You&#8217;re missing the key concept.</p><p><strong>AI-first reflex:</strong> You can clearly articulate the evolution from a passive chatbot to an autonomous agent. You understand the massive change that happens when the AI stops just following your steps and starts making its own decisions to achieve a goal. This clarity is essential for future roadmapping.</p><p><strong>Tutorial:</strong></p><div id="youtube2-FwOTs4UxQS4" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;FwOTs4UxQS4&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/FwOTs4UxQS4?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><strong>Key concepts: </strong>This video breaks down the 3-level evolution of AI.</p><ul><li><p><strong>Level 1: LLMs, the chatbot:</strong> This is what you use today. Standard AI chatbots are <strong>passive</strong>. They respond to your prompts based on their training data but <strong>can&#8217;t access your personal, real-time info</strong> (like your calendar or email).</p></li><li><p><strong>Level 2: AI workflows, the recipe:</strong> These follow a <strong>predefined path set by a human</strong>. You are the decision-maker, telling the AI, &#8220;First, do this, then do this&#8221;.</p><ul><li><p><strong>What is RAG?</strong> You&#8217;ll hear this acronym constantly. <strong>RAG (Retrieval Augmented Generation)</strong> is just a fancy name for an AI workflow where the AI &#8220;looks something up&#8221; (like a library of private documents) before answering.</p></li></ul></li><li><p><strong>Level 3: AI agents, the game-changer:</strong> This is the massive change. <strong>The LLM becomes the decision-maker</strong>. You stop giving it steps and start giving it a goal.</p><ul><li><p><strong>The ReAct framework:</strong> Most agents use this framework. The AI <strong>autonomously</strong> decides what to do. It <strong>Reasons</strong> (makes a plan), <strong>Acts</strong> (uses tools like Google Search or your calendar), and <strong>Iterates</strong> (critiques its own work and tries again) until the goal is achieved.</p></li></ul></li></ul><p><strong>To-do: </strong>This is a conceptual module, so your mission is to apply the concept.</p><ul><li><p><strong>Analyze a task:</strong> Think of a common PM task, like &#8220;Write a competitor analysis report for our top 3 competitors.&#8221;</p></li><li><p><strong>Write a workflow prompt:</strong> Write down the steps you would give an AI to complete this (e.g., &#8220;1. Search for competitors. 2. Find their pricing pages. 3. Summarize them in a table...&#8221;). That&#8217;s a workflow.</p></li><li><p><strong>Write an agent goal:</strong> Now, write the goal you would give an AI Agent (e.g., &#8220;Produce a full competitor analysis report for our top 3 competitors, identifying their key strengths, weaknesses, and pricing models.&#8221;). The Agent would then decide how to do all the steps itself.</p></li></ul><p><strong>Quiz:</strong></p><div class="poll-embed" data-attrs="{&quot;id&quot;:405648}" data-component-name="PollToDOM"></div><div class="poll-embed" data-attrs="{&quot;id&quot;:405649}" data-component-name="PollToDOM"></div><div class="poll-embed" data-attrs="{&quot;id&quot;:405650}" data-component-name="PollToDOM"></div><div><hr></div><h2>Module 14: MCP: Give your LLM new skills</h2><p><strong>PM problem:</strong> Your AI is stuck in a box. It doesn&#8217;t know what&#8217;s on your calendar, it can&#8217;t read your unread Slack messages, and it can&#8217;t pull data from your team&#8217;s Jira board. It&#8217;s a generalist, not a true personal assistant that can actually do things for you.</p><p><strong>AI-first reflex:</strong> You understand that for your AI to be truly useful, it needs a secure key to unlock your other apps. You know this key is a standard called <strong>MCP (Model Context Protocol)</strong>. You&#8217;re now thinking about which trusted servers you can use to build these connections, so your AI can finally go from a generalist to a specialist that actually works for you.</p><p><strong>Tutorial:</strong></p><div id="youtube2-bC3mIQWHZMQ" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;bC3mIQWHZMQ&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/bC3mIQWHZMQ?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><strong>Key concepts:</strong></p><ul><li><p><strong>Your AI is in a box:</strong> By default, LLMs can&#8217;t see your personal, real-time data (like your calendar, a database, or a specific website).</p></li><li><p><strong>MCP is the key:</strong> <strong>MCP (Model Context Protocol)</strong> is the technology that lets your AI get out of its box and connect to your external tools and data.</p></li><li><p><strong>It&#8217;s a universal language:</strong> This is the most important part. MCP is a standardized protocol. It allows any AI app (the client, like Cursor or a chatbot) to talk to any MCP server (the middle-man that holds the keys to all your tools).</p></li><li><p><strong>The goal is personalization:</strong> This is the tech that will finally let your AI <strong>check your calendar, summarize your Slack, or pull data from your team&#8217;s tools</strong>.</p></li><li><p><strong>Security is the whole point:</strong> This system involves giving a server your personal API keys and tokens. The entire protocol is built around security, which is why it&#8217;s critical to <strong>only use trusted servers</strong>.</p></li></ul><p><strong>To-do: </strong>This is conceptual, but you can map out the logic.</p><ul><li><p><strong>Brainstorm your connections:</strong> List the top 3 apps you wish your AI could connect to (e.g., Google Calendar, Slack, Jira, Figma).</p></li><li><p><strong>Find a server (conceptually):</strong> Look at a trusted service that acts as an MCP server (like the Zapier example in the video).</p></li><li><p><strong>Map the flow:</strong> Think about a prompt you would use if it was connected, like: &#8220;Read my #product-feedback channel in Slack for the last 24 hours, summarize the top 3 themes, and create a new &#8216;AI Feedback&#8217; doc in my Google Drive.&#8221; This is the future MCP enables.</p></li></ul><p><strong>Quiz:</strong></p><div class="poll-embed" data-attrs="{&quot;id&quot;:405652}" data-component-name="PollToDOM"></div><div class="poll-embed" data-attrs="{&quot;id&quot;:405654}" data-component-name="PollToDOM"></div><div class="poll-embed" data-attrs="{&quot;id&quot;:405655}" data-component-name="PollToDOM"></div><div><hr></div><h2>Module 15: A2A: How agents talk and work together</h2><p><strong>PM problem:</strong> You&#8217;re starting to see the future. You have an AI Agent (Module 13) that can use MCP (Module 14) to access your own apps. But it&#8217;s still an island. It can&#8217;t talk to the Salesforce Agent at your company, the Jira Agent from Atlassian, or the Slack Agent. How do you build a truly powerful, end-to-end workflow (e.g., &#8220;Summarize feedback from Slack, find the customer in Salesforce, and create a ticket in Jira&#8221;) if all the best agents can&#8217;t talk to each other?</p><p><strong>AI-first reflex:</strong> You realize the walled garden problem needs a common language. You understand the <strong>A2A (Agent-to-Agent) protocol</strong> is that open-source standard. You&#8217;re no longer just building a single agent; you&#8217;re thinking about an ecosystem. You know your agent will publish an agent card (like a public API doc) to advertise its skills, securely authenticate, and collaborate, all while keeping its internal logic private.</p><p><strong>Tutorial:</strong></p><div id="youtube2-Tud9HLTk8hg" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;Tud9HLTk8hg&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/Tud9HLTk8hg?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><strong>Key concepts: </strong>This is the final piece of the puzzle, explaining how a mesh of agents will work.</p><ul><li><p><strong>The common language standard:</strong> The A2A (Agent-to-Agent) protocol is an <strong>open-source standard</strong> (housed by the Linux Foundation). It provides a common language so agents from different companies (e.g., a flight agent and a hotel agent) can work together to solve complex tasks.</p></li><li><p><strong>The 3-stage handshake:</strong> It works in three main stages:</p><ol><li><p><strong>Discovery:</strong> An agent finds another agent and its skills by reading its public <strong>agent card</strong> (a JSON file listing its capabilities).</p></li><li><p><strong>Authentication:</strong> They securely verify each other&#8217;s identity.</p></li><li><p><strong>Communication:</strong> They exchange tasks and information using common web standards (JSON-RPC over HTTPS).</p></li></ol></li><li><p><strong>Privacy is the key benefit:</strong> Agents are treated as <strong>opaque</strong>. This is critical for enterprise use. It means your agent can collaborate with an external agent without revealing its internal logic, proprietary tools, or private data.</p></li><li><p><strong>Handles long-running tasks:</strong> For tasks that take time (like waiting for human input), the protocol streams status updates using <strong>SSE (Server-Sent Events)</strong>. This means your client agent isn&#8217;t just left with a loading spinner.</p></li></ul><p><strong>To-do: </strong>This is a thought experiment to map your agent&#8217;s future.</p><ul><li><p><strong>Map your agent ecosystem:</strong> Think of a complex workflow you&#8217;d want to automate (e.g., &#8220;Analyze user feedback and file bugs&#8221;). List the other agents your agent would need to talk to (e.g., Slack agent, Jira agent, Google Calendar agent).</p></li><li><p><strong>Define your agent card:</strong> What skills would your agent advertise to the world? List 2-3 (e.g., <code>summarize_user_feedback</code>, <code>identify_sentiment</code>, <code>find_related_tickets</code>&#8220;).</p></li><li><p><strong>Explain the opaque benefit:</strong> In one sentence, explain to a stakeholder why it&#8217;s a good thing that your agent is opaque when talking to the Jira agent. (Hint: It protects your proprietary logic and company data).</p></li></ul><p><strong>Quiz:</strong></p><div class="poll-embed" data-attrs="{&quot;id&quot;:405656}" data-component-name="PollToDOM"></div><div class="poll-embed" data-attrs="{&quot;id&quot;:405657}" data-component-name="PollToDOM"></div><div class="poll-embed" data-attrs="{&quot;id&quot;:405658}" data-component-name="PollToDOM"></div><div><hr></div><h2>Your journey begins now!</h2><p>Congratulations! You&#8217;ve just completed a 3-hour crash course that took you from the basics of prompting to the future of collaborative AI agents. You now have the full vocabulary and mental models to lead your product teams with confidence.</p><p>But this isn&#8217;t the finish line. <strong>This is the starting line.</strong></p><p>This playbook was never just about the videos or the quizzes; it was about <strong>building a new reflex</strong>. The real learning begins tomorrow, when you start applying these skills to your own work, your own problems, and your own ideas. Your goal is to make the AI-first mindset second nature.</p><h3>Your mission</h3><ol><li><p><strong>Apply one thing:</strong> Don&#8217;t try to boil the ocean. Pick <strong>one task</strong> this week, a document, a competitor analysis, a meeting summary, and <strong>force yourself</strong> to use AI for it. Start small.</p></li><li><p><strong>Keep practicing:</strong> The AI-first mindset is a muscle. You have to use it every day, even for just 10 minutes, to make it strong.</p></li><li><p><strong>Be curious:</strong> The tools you saw today will be different in six months. <strong>The principles will not</strong>. Stay curious, keep exploring, and subscribe to a newsletter like <strong><a href="https://tldr.tech/ai">TLDR AI</a></strong> to stay current in 5 minutes a day.</p></li></ol><p>Adopting an AI-first mindset is the essential first step, where you must force yourself to use these tools, so that you can then progress to the next stage of <strong>using AI with discernment</strong>, knowing when it&#8217;s relevant, understanding its nuances, and picking the right tool for the job.</p><h3>You are not alone</h3><p>Don&#8217;t be afraid to get stuck. Everyone does. When you find a prompt or a trick that saves you 20 minutes, <strong>post it in the comments below!</strong> Your win will help 10 other people.</p><p>Likewise, if you get a confusing result, <strong>ask for help in the comments</strong>. We can all learn from each other.</p><p>By adopting this mindset, you are not just making your own work faster or better. You are actively helping build the next version of our products and our companies, ones that are faster, smarter, and more innovative.</p><p>Thank you for being a part of this. <strong>Go build!</strong></p>]]></content:encoded></item><item><title><![CDATA[How to build your first AI agent]]></title><description><![CDATA[From JTBD to multi-tool agent: A practical guide to building your first multi-tool AI agent, from a PM's perspective, by partnering with an LLM as your engineering assistant.]]></description><link>https://www.theaithinker.com/p/how-to-build-your-first-ai-agent</link><guid isPermaLink="false">https://www.theaithinker.com/p/how-to-build-your-first-ai-agent</guid><dc:creator><![CDATA[Adam Faik]]></dc:creator><pubDate>Mon, 17 Nov 2025 12:02:21 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/9810afa8-5fe3-4b05-abe5-916a9abcf902_1024x731.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;ba0ace89-83bf-42ce-8d2b-1e4b1dacefd4&quot;,&quot;duration&quot;:null}"></div><p><em>Many thanks to my GenAI professor at Sorbonne University, <a href="https://www.linkedin.com/in/kamila-kare-phd-572a87112/">Kamila Kare</a>, for his excellent course and for suggesting this very project.</em></p><div><hr></div><p>You&#8217;ve heard the buzz. Everyone is talking about &#8220;AI agents.&#8221; You see fragmented demos and read <strong>conflicting definitions</strong>, making it all feel impossibly complex, like something reserved for a massive engineering team six months from now.</p><p><strong>But what if you, as a product manager, could build one this week?</strong> What if the main blocker wasn&#8217;t the complexity of the code, but simply having a clear, valuable product idea?</p><p>This playbook is about demystifying AI agents. I&#8217;m not a staff engineer. I&#8217;m a product manager, just like you, who wanted to understand this new technology by building it. This is the story of how I partnered with an LLM (I used Gemini, but these principles work for ChatGPT, Claude, etc.) to <strong>turn a simple product idea into a fully functional AI assistant</strong>. This is a guide to AI-native product building.</p><p>This article isn&#8217;t just theoretical. It&#8217;s a real, hands-on build. You can find the complete code in the GitHub repo right here: <a href="https://github.com/adamfaik/paris-by-bike-agent">github.com/adamfaik/paris-by-bike-agent</a>.</p><p>This is a PM-to-PM story of that build. We&#8217;ll follow the entire journey, from the initial &#8220;what if?&#8221; to a working app. Here&#8217;s the agenda:</p><ul><li><p><strong><a href="https://adamfaik.substack.com/i/178539859/part-the-final-product-a-demo-first">Part 1: The final product, a demo first</a>:</strong> Before we get technical, let&#8217;s look at what we&#8217;re building: a full demo of the &#8220;Paris by Bike&#8221; assistant from a pure product and user experience perspective.</p></li><li><p><strong><a href="https://adamfaik.substack.com/i/178539859/part-the-briefing-the-core-concepts">Part 2: The briefing, the core concepts</a>:</strong> We&#8217;ll demystify the jargon with simple, PM-friendly analogies. We&#8217;ll define what an &#8220;AI Agent&#8221; actually is, what &#8220;RAG&#8221; means, and why the &#8220;system prompt&#8221; is your most valuable new product spec.</p></li><li><p><strong><a href="https://adamfaik.substack.com/i/178539859/part-the-mission-the-product-brief">Part 3: The mission, the product brief</a>:</strong> I&#8217;ll show you how I framed the entire project as a simple product brief, focusing on the &#8220;Job-to-be-Done&#8221; (JTBD) for the AI assistant.</p></li><li><p><strong><a href="https://adamfaik.substack.com/i/178539859/part-the-action-the-build-process">Part 4: The action, the build process</a>:</strong> The core of the playbook. I&#8217;ll share my step-by-step process of partnering with Gemini, showing you the exact prompts I used to generate the project&#8217;s entire code and structure.</p></li><li><p><strong><a href="https://adamfaik.substack.com/i/178539859/part-the-debrief-analysis-and-trade-offs">Part 5: The debrief, analysis and trade-offs</a>:</strong> We&#8217;ll look &#8220;inside the black box&#8221; to understand why it works and discuss the critical PM trade-offs (like speed vs. privacy).</p></li><li><p><strong><a href="https://adamfaik.substack.com/i/178539859/part-the-lessons-your-turn">Part 6: The lessons, your turn</a>:</strong> We&#8217;ll conclude with a clear list of high-level lessons to help you build your own AI agent.</p></li></ul><p>By the end of this article, you&#8217;ll have a clear, concrete understanding of what an AI agent is, see its immediate application for your own products, and have a complete, practical guide to building your very first one.</p><p>Ready to build? Let&#8217;s start with the vision.</p><div><hr></div><h2>Part 1: The final product, a demo first</h2><p>Before we dive into the &#8220;how,&#8221; let me show you the &#8220;what&#8221; and the &#8220;why.&#8221; This whole project started from a personal frustration.</p><p>I recently bought a bike here in Paris. I have a few friends who are true bike enthusiasts, the kind of people who just know everything. They can instantly plan an amazing Sunday ride based on the weather, what new art expo is on, which boulangeries have the best pastries, and the historical secrets of a neighborhood. I was always amazed.</p><p>But... they aren&#8217;t available 24/7. When I found myself on my sofa on a surprisingly sunny Tuesday, I had no one to ask. <strong>I wanted a &#8220;digital bike friend&#8221; who was always there.</strong> Someone who could not only answer my questions but would actively motivate me to get off the sofa, grab my bike, and explore the city.</p><p>Imagine talking to an assistant that doesn&#8217;t just give you a list of 10 links, but says, &#8220;The weather is perfect for the next three hours, there&#8217;s a cool street art exhibit in Le Marais, and here&#8217;s a 45-minute scenic route to get you there and back. Go!&#8221;</p><p>That&#8217;s what I wanted to build. And here&#8217;s what it looks like.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XV44!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1dc71c6-84a2-4779-85f9-bcc1ecc31d92_2976x1432.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XV44!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1dc71c6-84a2-4779-85f9-bcc1ecc31d92_2976x1432.png 424w, https://substackcdn.com/image/fetch/$s_!XV44!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1dc71c6-84a2-4779-85f9-bcc1ecc31d92_2976x1432.png 848w, https://substackcdn.com/image/fetch/$s_!XV44!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1dc71c6-84a2-4779-85f9-bcc1ecc31d92_2976x1432.png 1272w, https://substackcdn.com/image/fetch/$s_!XV44!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1dc71c6-84a2-4779-85f9-bcc1ecc31d92_2976x1432.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XV44!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1dc71c6-84a2-4779-85f9-bcc1ecc31d92_2976x1432.png" width="1456" height="701" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f1dc71c6-84a2-4779-85f9-bcc1ecc31d92_2976x1432.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:701,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:133963,&quot;alt&quot;:&quot;A screenshot of the Paris by Bike app&#8217;s home screen, showing a text input box and four &#8220;starter&#8221; prompt buttons.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://adamfaik.substack.com/i/178539859?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1dc71c6-84a2-4779-85f9-bcc1ecc31d92_2976x1432.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A screenshot of the Paris by Bike app&#8217;s home screen, showing a text input box and four &#8220;starter&#8221; prompt buttons." title="A screenshot of the Paris by Bike app&#8217;s home screen, showing a text input box and four &#8220;starter&#8221; prompt buttons." srcset="https://substackcdn.com/image/fetch/$s_!XV44!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1dc71c6-84a2-4779-85f9-bcc1ecc31d92_2976x1432.png 424w, https://substackcdn.com/image/fetch/$s_!XV44!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1dc71c6-84a2-4779-85f9-bcc1ecc31d92_2976x1432.png 848w, https://substackcdn.com/image/fetch/$s_!XV44!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1dc71c6-84a2-4779-85f9-bcc1ecc31d92_2976x1432.png 1272w, https://substackcdn.com/image/fetch/$s_!XV44!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1dc71c6-84a2-4779-85f9-bcc1ecc31d92_2976x1432.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The final app: a simple, clean chat interface</figcaption></figure></div><p>On the surface, the interface (which we&#8217;ll build with a tool called <a href="https://docs.chainlit.io/get-started/overview">Chainlit</a>) looks familiar, it&#8217;s a clean, simple chat window, just like ChatGPT.</p><p><strong>The difference isn&#8217;t the UI; it&#8217;s the brain underneath.</strong> This agent has two things a general-purpose chatbot doesn&#8217;t:</p><ol><li><p><strong>A private, expert library:</strong> A set of 10 expert guides I wrote (with the help of Gemini&#8217;s Deep Research tool) on everything from scenic routes to bike-friendly cafes.</p></li><li><p><strong>Custom tools:</strong> A set of 5 superpowers I give it, like checking live weather, searching the web, and generating map links.</p></li></ol><p>Let&#8217;s see these capabilities in action, from the simplest to the most powerful.</p><p><strong>One quick note:</strong> In these demos, you&#8217;ll see the agent&#8217;s &#8216;thought process&#8217; as it works, showing which tools it&#8217;s using (like <code>Used &#129300; Thinking...</code>). This is intentional. <strong>It&#8217;s an invaluable &#8220;debug mode&#8221;</strong> for us as builders to test and refine the agent&#8217;s logic. We&#8217;ll cover how to set this up later (it&#8217;s just a parameter) and how you can, of course, hide it for a polished, live product.</p><p><strong>1. The persona: knowing when not to act</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_!j9Qn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F779afd80-8e53-437f-90b7-63205ad94093_2976x1432.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!j9Qn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F779afd80-8e53-437f-90b7-63205ad94093_2976x1432.png 424w, https://substackcdn.com/image/fetch/$s_!j9Qn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F779afd80-8e53-437f-90b7-63205ad94093_2976x1432.png 848w, https://substackcdn.com/image/fetch/$s_!j9Qn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F779afd80-8e53-437f-90b7-63205ad94093_2976x1432.png 1272w, https://substackcdn.com/image/fetch/$s_!j9Qn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F779afd80-8e53-437f-90b7-63205ad94093_2976x1432.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!j9Qn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F779afd80-8e53-437f-90b7-63205ad94093_2976x1432.png" width="1456" height="701" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/779afd80-8e53-437f-90b7-63205ad94093_2976x1432.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:701,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:142631,&quot;alt&quot;:&quot;A screenshot of the &#8216;Paris by Bike&#8217; app, showing a simple &#8216;Hello&#8217; and the agent&#8217;s friendly greeting.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://adamfaik.substack.com/i/178539859?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F779afd80-8e53-437f-90b7-63205ad94093_2976x1432.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A screenshot of the &#8216;Paris by Bike&#8217; app, showing a simple &#8216;Hello&#8217; and the agent&#8217;s friendly greeting." title="A screenshot of the &#8216;Paris by Bike&#8217; app, showing a simple &#8216;Hello&#8217; and the agent&#8217;s friendly greeting." srcset="https://substackcdn.com/image/fetch/$s_!j9Qn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F779afd80-8e53-437f-90b7-63205ad94093_2976x1432.png 424w, https://substackcdn.com/image/fetch/$s_!j9Qn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F779afd80-8e53-437f-90b7-63205ad94093_2976x1432.png 848w, https://substackcdn.com/image/fetch/$s_!j9Qn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F779afd80-8e53-437f-90b7-63205ad94093_2976x1432.png 1272w, https://substackcdn.com/image/fetch/$s_!j9Qn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F779afd80-8e53-437f-90b7-63205ad94093_2976x1432.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The agent&#8217;s &#8220;persona&#8221; in action. It knows when to just be conversational</figcaption></figure></div><p>This is a crucial first test. The agent correctly identified a simple salutation and didn&#8217;t trigger a complex and expensive tool. This isn&#8217;t a simple if-then rule; it&#8217;s the agent&#8217;s brain (the LLM) correctly interpreting the user&#8217;s intent based on the <code>SYSTEM_PROMPT</code> (its job description) we gave it. It decided no tool was necessary. This is just as important as deciding which tool to use.</p><p><strong>2. &#128218; The library: the RAG tool</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_!xyJ8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4166d20a-25d2-4b97-9bd5-2468263e5084_2976x1432.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xyJ8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4166d20a-25d2-4b97-9bd5-2468263e5084_2976x1432.png 424w, https://substackcdn.com/image/fetch/$s_!xyJ8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4166d20a-25d2-4b97-9bd5-2468263e5084_2976x1432.png 848w, https://substackcdn.com/image/fetch/$s_!xyJ8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4166d20a-25d2-4b97-9bd5-2468263e5084_2976x1432.png 1272w, https://substackcdn.com/image/fetch/$s_!xyJ8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4166d20a-25d2-4b97-9bd5-2468263e5084_2976x1432.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xyJ8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4166d20a-25d2-4b97-9bd5-2468263e5084_2976x1432.png" width="1456" height="701" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4166d20a-25d2-4b97-9bd5-2468263e5084_2976x1432.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:701,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:239249,&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://adamfaik.substack.com/i/178539859?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4166d20a-25d2-4b97-9bd5-2468263e5084_2976x1432.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_!xyJ8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4166d20a-25d2-4b97-9bd5-2468263e5084_2976x1432.png 424w, https://substackcdn.com/image/fetch/$s_!xyJ8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4166d20a-25d2-4b97-9bd5-2468263e5084_2976x1432.png 848w, https://substackcdn.com/image/fetch/$s_!xyJ8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4166d20a-25d2-4b97-9bd5-2468263e5084_2976x1432.png 1272w, https://substackcdn.com/image/fetch/$s_!xyJ8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4166d20a-25d2-4b97-9bd5-2468263e5084_2976x1432.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vz-p!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcd5e613-50bd-4404-9aab-dd4d49ca2a9c_2976x1432.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vz-p!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcd5e613-50bd-4404-9aab-dd4d49ca2a9c_2976x1432.png 424w, https://substackcdn.com/image/fetch/$s_!vz-p!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcd5e613-50bd-4404-9aab-dd4d49ca2a9c_2976x1432.png 848w, https://substackcdn.com/image/fetch/$s_!vz-p!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcd5e613-50bd-4404-9aab-dd4d49ca2a9c_2976x1432.png 1272w, https://substackcdn.com/image/fetch/$s_!vz-p!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcd5e613-50bd-4404-9aab-dd4d49ca2a9c_2976x1432.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vz-p!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcd5e613-50bd-4404-9aab-dd4d49ca2a9c_2976x1432.png" width="1456" height="701" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fcd5e613-50bd-4404-9aab-dd4d49ca2a9c_2976x1432.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:701,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:267648,&quot;alt&quot;:&quot;A screenshot showing the agent&#8217;s response to &#8216;scenic route for beginners,&#8217; with details about the Seine 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://adamfaik.substack.com/i/178539859?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcd5e613-50bd-4404-9aab-dd4d49ca2a9c_2976x1432.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A screenshot showing the agent&#8217;s response to &#8216;scenic route for beginners,&#8217; with details about the Seine path." title="A screenshot showing the agent&#8217;s response to &#8216;scenic route for beginners,&#8217; with details about the Seine path." srcset="https://substackcdn.com/image/fetch/$s_!vz-p!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcd5e613-50bd-4404-9aab-dd4d49ca2a9c_2976x1432.png 424w, https://substackcdn.com/image/fetch/$s_!vz-p!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcd5e613-50bd-4404-9aab-dd4d49ca2a9c_2976x1432.png 848w, https://substackcdn.com/image/fetch/$s_!vz-p!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcd5e613-50bd-4404-9aab-dd4d49ca2a9c_2976x1432.png 1272w, https://substackcdn.com/image/fetch/$s_!vz-p!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcd5e613-50bd-4404-9aab-dd4d49ca2a9c_2976x1432.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The RAG tool (paris_bike_guide) pulling from the private, expert knowledge base</figcaption></figure></div><p>This is our <strong>Retrieval-Augmented Generation (RAG)</strong> pipeline in action. The agent didn&#8217;t Google a generic answer. It correctly identified this as a knowledge-base question and called its <code>paris_bike_guide</code> tool. The UI shows it thinking and selecting that specific tool. The answer it gives is high-quality, expert-level, and citable (it comes from <code>paris_scenic_bike_routes.md</code>) because I curated the data it&#8217;s pulling from.</p><p><strong>3. &#129518; The calculator: a custom skill</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_!XjtW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe204557e-a6a5-41af-ba85-46a75662dac0_2976x1432.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XjtW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe204557e-a6a5-41af-ba85-46a75662dac0_2976x1432.png 424w, https://substackcdn.com/image/fetch/$s_!XjtW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe204557e-a6a5-41af-ba85-46a75662dac0_2976x1432.png 848w, https://substackcdn.com/image/fetch/$s_!XjtW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe204557e-a6a5-41af-ba85-46a75662dac0_2976x1432.png 1272w, https://substackcdn.com/image/fetch/$s_!XjtW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe204557e-a6a5-41af-ba85-46a75662dac0_2976x1432.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XjtW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe204557e-a6a5-41af-ba85-46a75662dac0_2976x1432.png" width="1456" height="701" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e204557e-a6a5-41af-ba85-46a75662dac0_2976x1432.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:701,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:235917,&quot;alt&quot;:&quot;A screenshot showing the agent&#8217;s thought process, calling the calculator tool with the argument &#8216;duration_minutes: 90&#8217;.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://adamfaik.substack.com/i/178539859?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe204557e-a6a5-41af-ba85-46a75662dac0_2976x1432.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A screenshot showing the agent&#8217;s thought process, calling the calculator tool with the argument &#8216;duration_minutes: 90&#8217;." title="A screenshot showing the agent&#8217;s thought process, calling the calculator tool with the argument &#8216;duration_minutes: 90&#8217;." srcset="https://substackcdn.com/image/fetch/$s_!XjtW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe204557e-a6a5-41af-ba85-46a75662dac0_2976x1432.png 424w, https://substackcdn.com/image/fetch/$s_!XjtW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe204557e-a6a5-41af-ba85-46a75662dac0_2976x1432.png 848w, https://substackcdn.com/image/fetch/$s_!XjtW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe204557e-a6a5-41af-ba85-46a75662dac0_2976x1432.png 1272w, https://substackcdn.com/image/fetch/$s_!XjtW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe204557e-a6a5-41af-ba85-46a75662dac0_2976x1432.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The agent using its custom calculate_biking_plan tool to provide an answer</figcaption></figure></div><p>This is a simple but powerful concept. We gave the agent a new &#8220;skill&#8221; by just writing a basic Python function. The LLM&#8217;s brain was smart enough to extract the entity (&#8221;90 minutes&#8221;) from my natural language query and pass it as a structured argument (<code>duration_minutes: 90</code>) to the tool. This is a non-trivial leap: the agent can understand unstructured language and convert it into a structured API call.</p><p><strong>4. &#127780;&#65039; The window: a live API tool for weather</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_!gaGy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32bb221c-489a-4342-8e0a-3257d240fa75_2976x1432.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gaGy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32bb221c-489a-4342-8e0a-3257d240fa75_2976x1432.png 424w, https://substackcdn.com/image/fetch/$s_!gaGy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32bb221c-489a-4342-8e0a-3257d240fa75_2976x1432.png 848w, https://substackcdn.com/image/fetch/$s_!gaGy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32bb221c-489a-4342-8e0a-3257d240fa75_2976x1432.png 1272w, https://substackcdn.com/image/fetch/$s_!gaGy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32bb221c-489a-4342-8e0a-3257d240fa75_2976x1432.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gaGy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32bb221c-489a-4342-8e0a-3257d240fa75_2976x1432.png" width="1456" height="701" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/32bb221c-489a-4342-8e0a-3257d240fa75_2976x1432.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:701,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:241312,&quot;alt&quot;:&quot;A screenshot showing the agent calling the weather tool and presenting the live conditions: 8.5&#176;C and 7.4 km/h wind.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://adamfaik.substack.com/i/178539859?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32bb221c-489a-4342-8e0a-3257d240fa75_2976x1432.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A screenshot showing the agent calling the weather tool and presenting the live conditions: 8.5&#176;C and 7.4 km/h wind." title="A screenshot showing the agent calling the weather tool and presenting the live conditions: 8.5&#176;C and 7.4 km/h wind." srcset="https://substackcdn.com/image/fetch/$s_!gaGy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32bb221c-489a-4342-8e0a-3257d240fa75_2976x1432.png 424w, https://substackcdn.com/image/fetch/$s_!gaGy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32bb221c-489a-4342-8e0a-3257d240fa75_2976x1432.png 848w, https://substackcdn.com/image/fetch/$s_!gaGy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32bb221c-489a-4342-8e0a-3257d240fa75_2976x1432.png 1272w, https://substackcdn.com/image/fetch/$s_!gaGy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32bb221c-489a-4342-8e0a-3257d240fa75_2976x1432.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The agent calling an external API (get_weather) to fetch real-time data</figcaption></figure></div><p>This is how we break out of the static library. The agent now has a window to the outside world. It can access live, real-time data from any API we give it. This unlocks any use case that depends on current information, which was the core of my initial digital bike friend idea.</p><p><strong>5. &#128376;&#65039; The web browser: a live API tool for search</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_!1N81!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F242d5c38-bfd8-433e-9dfb-cae212ed5912_2976x1432.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1N81!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F242d5c38-bfd8-433e-9dfb-cae212ed5912_2976x1432.png 424w, https://substackcdn.com/image/fetch/$s_!1N81!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F242d5c38-bfd8-433e-9dfb-cae212ed5912_2976x1432.png 848w, https://substackcdn.com/image/fetch/$s_!1N81!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F242d5c38-bfd8-433e-9dfb-cae212ed5912_2976x1432.png 1272w, https://substackcdn.com/image/fetch/$s_!1N81!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F242d5c38-bfd8-433e-9dfb-cae212ed5912_2976x1432.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1N81!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F242d5c38-bfd8-433e-9dfb-cae212ed5912_2976x1432.png" width="1456" height="701" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/242d5c38-bfd8-433e-9dfb-cae212ed5912_2976x1432.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:701,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:239183,&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://adamfaik.substack.com/i/178539859?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F242d5c38-bfd8-433e-9dfb-cae212ed5912_2976x1432.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_!1N81!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F242d5c38-bfd8-433e-9dfb-cae212ed5912_2976x1432.png 424w, https://substackcdn.com/image/fetch/$s_!1N81!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F242d5c38-bfd8-433e-9dfb-cae212ed5912_2976x1432.png 848w, https://substackcdn.com/image/fetch/$s_!1N81!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F242d5c38-bfd8-433e-9dfb-cae212ed5912_2976x1432.png 1272w, https://substackcdn.com/image/fetch/$s_!1N81!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F242d5c38-bfd8-433e-9dfb-cae212ed5912_2976x1432.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gKna!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f81480a-040f-47c0-9dc9-11e92a6f2d72_2976x1432.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gKna!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f81480a-040f-47c0-9dc9-11e92a6f2d72_2976x1432.png 424w, https://substackcdn.com/image/fetch/$s_!gKna!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f81480a-040f-47c0-9dc9-11e92a6f2d72_2976x1432.png 848w, https://substackcdn.com/image/fetch/$s_!gKna!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f81480a-040f-47c0-9dc9-11e92a6f2d72_2976x1432.png 1272w, https://substackcdn.com/image/fetch/$s_!gKna!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f81480a-040f-47c0-9dc9-11e92a6f2d72_2976x1432.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gKna!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f81480a-040f-47c0-9dc9-11e92a6f2d72_2976x1432.png" width="1456" height="701" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7f81480a-040f-47c0-9dc9-11e92a6f2d72_2976x1432.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:701,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:271641,&quot;alt&quot;:&quot;A screenshot showing the agent&#8217;s answer about a cycling event, complete with a clickable 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://adamfaik.substack.com/i/178539859?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f81480a-040f-47c0-9dc9-11e92a6f2d72_2976x1432.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A screenshot showing the agent&#8217;s answer about a cycling event, complete with a clickable link." title="A screenshot showing the agent&#8217;s answer about a cycling event, complete with a clickable link." srcset="https://substackcdn.com/image/fetch/$s_!gKna!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f81480a-040f-47c0-9dc9-11e92a6f2d72_2976x1432.png 424w, https://substackcdn.com/image/fetch/$s_!gKna!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f81480a-040f-47c0-9dc9-11e92a6f2d72_2976x1432.png 848w, https://substackcdn.com/image/fetch/$s_!gKna!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f81480a-040f-47c0-9dc9-11e92a6f2d72_2976x1432.png 1272w, https://substackcdn.com/image/fetch/$s_!gKna!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f81480a-040f-47c0-9dc9-11e92a6f2d72_2976x1432.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The agent using the web_search tool to find new information not in its knowledge base</figcaption></figure></div><p>This is the agent&#8217;s safety net. My RAG library knows about routes, but it can&#8217;t know about an event happening this weekend. The agent&#8217;s reasoning (which we&#8217;ll see is defined in the System Prompt) is: &#8220;I&#8217;ll check my <code>paris_bike_guide</code> tool first. No results? Okay, this must be a current event. I&#8217;ll use the <code>web_search</code> tool instead.&#8221; This two-step fallback is a sophisticated piece of product logic.</p><p><strong>6. &#128506;&#65039; The map: the actionable tool</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_!4x1K!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff359923b-51bf-4586-84bb-9e8558a8d4e0_2976x1432.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4x1K!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff359923b-51bf-4586-84bb-9e8558a8d4e0_2976x1432.png 424w, https://substackcdn.com/image/fetch/$s_!4x1K!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff359923b-51bf-4586-84bb-9e8558a8d4e0_2976x1432.png 848w, https://substackcdn.com/image/fetch/$s_!4x1K!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff359923b-51bf-4586-84bb-9e8558a8d4e0_2976x1432.png 1272w, https://substackcdn.com/image/fetch/$s_!4x1K!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff359923b-51bf-4586-84bb-9e8558a8d4e0_2976x1432.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4x1K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff359923b-51bf-4586-84bb-9e8558a8d4e0_2976x1432.png" width="1456" height="701" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f359923b-51bf-4586-84bb-9e8558a8d4e0_2976x1432.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:701,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:247193,&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://adamfaik.substack.com/i/178539859?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff359923b-51bf-4586-84bb-9e8558a8d4e0_2976x1432.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_!4x1K!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff359923b-51bf-4586-84bb-9e8558a8d4e0_2976x1432.png 424w, https://substackcdn.com/image/fetch/$s_!4x1K!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff359923b-51bf-4586-84bb-9e8558a8d4e0_2976x1432.png 848w, https://substackcdn.com/image/fetch/$s_!4x1K!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff359923b-51bf-4586-84bb-9e8558a8d4e0_2976x1432.png 1272w, https://substackcdn.com/image/fetch/$s_!4x1K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff359923b-51bf-4586-84bb-9e8558a8d4e0_2976x1432.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gBSo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff41039ab-ad64-417f-b2bc-7e4b507532d7_2976x1432.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gBSo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff41039ab-ad64-417f-b2bc-7e4b507532d7_2976x1432.png 424w, https://substackcdn.com/image/fetch/$s_!gBSo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff41039ab-ad64-417f-b2bc-7e4b507532d7_2976x1432.png 848w, https://substackcdn.com/image/fetch/$s_!gBSo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff41039ab-ad64-417f-b2bc-7e4b507532d7_2976x1432.png 1272w, https://substackcdn.com/image/fetch/$s_!gBSo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff41039ab-ad64-417f-b2bc-7e4b507532d7_2976x1432.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gBSo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff41039ab-ad64-417f-b2bc-7e4b507532d7_2976x1432.png" width="1456" height="701" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f41039ab-ad64-417f-b2bc-7e4b507532d7_2976x1432.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:701,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:251495,&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://adamfaik.substack.com/i/178539859?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff41039ab-ad64-417f-b2bc-7e4b507532d7_2976x1432.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_!gBSo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff41039ab-ad64-417f-b2bc-7e4b507532d7_2976x1432.png 424w, https://substackcdn.com/image/fetch/$s_!gBSo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff41039ab-ad64-417f-b2bc-7e4b507532d7_2976x1432.png 848w, https://substackcdn.com/image/fetch/$s_!gBSo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff41039ab-ad64-417f-b2bc-7e4b507532d7_2976x1432.png 1272w, https://substackcdn.com/image/fetch/$s_!gBSo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff41039ab-ad64-417f-b2bc-7e4b507532d7_2976x1432.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WYjl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59a89d5-04f3-49a2-99b3-89f141ab7790_2976x1432.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WYjl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59a89d5-04f3-49a2-99b3-89f141ab7790_2976x1432.png 424w, https://substackcdn.com/image/fetch/$s_!WYjl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59a89d5-04f3-49a2-99b3-89f141ab7790_2976x1432.png 848w, https://substackcdn.com/image/fetch/$s_!WYjl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59a89d5-04f3-49a2-99b3-89f141ab7790_2976x1432.png 1272w, https://substackcdn.com/image/fetch/$s_!WYjl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59a89d5-04f3-49a2-99b3-89f141ab7790_2976x1432.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WYjl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59a89d5-04f3-49a2-99b3-89f141ab7790_2976x1432.png" width="1456" height="701" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a59a89d5-04f3-49a2-99b3-89f141ab7790_2976x1432.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:701,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3348186,&quot;alt&quot;:&quot;A screenshot showing the agent providing a clickable Google Maps URL for a cycling route from the Eiffel Tower to Montmartre.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://adamfaik.substack.com/i/178539859?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59a89d5-04f3-49a2-99b3-89f141ab7790_2976x1432.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A screenshot showing the agent providing a clickable Google Maps URL for a cycling route from the Eiffel Tower to Montmartre." title="A screenshot showing the agent providing a clickable Google Maps URL for a cycling route from the Eiffel Tower to Montmartre." srcset="https://substackcdn.com/image/fetch/$s_!WYjl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59a89d5-04f3-49a2-99b3-89f141ab7790_2976x1432.png 424w, https://substackcdn.com/image/fetch/$s_!WYjl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59a89d5-04f3-49a2-99b3-89f141ab7790_2976x1432.png 848w, https://substackcdn.com/image/fetch/$s_!WYjl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59a89d5-04f3-49a2-99b3-89f141ab7790_2976x1432.png 1272w, https://substackcdn.com/image/fetch/$s_!WYjl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59a89d5-04f3-49a2-99b3-89f141ab7790_2976x1432.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The agent&#8217;s final action step: generating a usable Google Maps link for the user.</figcaption></figure></div><p>This is the last mile of the user&#8217;s Job-to-be-Done. The agent doesn&#8217;t just describe the route; it delivers it. This closes the loop. The user can now click this link and start their ride, which means they stay within our product ecosystem instead of leaving to open Google Maps themselves.</p><p><strong>7. The Grand Finale: multi-tool planning</strong></p><p>This is the magic moment, where the agent uses all its capabilities at once to solve a complex, multi-part problem.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0q11!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafe6d1d6-be43-4e20-a76e-bc21e57ff507_2976x1432.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0q11!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafe6d1d6-be43-4e20-a76e-bc21e57ff507_2976x1432.png 424w, https://substackcdn.com/image/fetch/$s_!0q11!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafe6d1d6-be43-4e20-a76e-bc21e57ff507_2976x1432.png 848w, https://substackcdn.com/image/fetch/$s_!0q11!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafe6d1d6-be43-4e20-a76e-bc21e57ff507_2976x1432.png 1272w, https://substackcdn.com/image/fetch/$s_!0q11!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafe6d1d6-be43-4e20-a76e-bc21e57ff507_2976x1432.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0q11!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafe6d1d6-be43-4e20-a76e-bc21e57ff507_2976x1432.png" width="1456" height="701" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/afe6d1d6-be43-4e20-a76e-bc21e57ff507_2976x1432.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:701,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:193928,&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://adamfaik.substack.com/i/178539859?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafe6d1d6-be43-4e20-a76e-bc21e57ff507_2976x1432.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_!0q11!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafe6d1d6-be43-4e20-a76e-bc21e57ff507_2976x1432.png 424w, https://substackcdn.com/image/fetch/$s_!0q11!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafe6d1d6-be43-4e20-a76e-bc21e57ff507_2976x1432.png 848w, https://substackcdn.com/image/fetch/$s_!0q11!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafe6d1d6-be43-4e20-a76e-bc21e57ff507_2976x1432.png 1272w, https://substackcdn.com/image/fetch/$s_!0q11!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafe6d1d6-be43-4e20-a76e-bc21e57ff507_2976x1432.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-DNe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba20e771-6a7d-437a-bc7c-599f7de320a3_2976x1432.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-DNe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba20e771-6a7d-437a-bc7c-599f7de320a3_2976x1432.png 424w, https://substackcdn.com/image/fetch/$s_!-DNe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba20e771-6a7d-437a-bc7c-599f7de320a3_2976x1432.png 848w, https://substackcdn.com/image/fetch/$s_!-DNe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba20e771-6a7d-437a-bc7c-599f7de320a3_2976x1432.png 1272w, https://substackcdn.com/image/fetch/$s_!-DNe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba20e771-6a7d-437a-bc7c-599f7de320a3_2976x1432.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-DNe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba20e771-6a7d-437a-bc7c-599f7de320a3_2976x1432.png" width="1456" height="701" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ba20e771-6a7d-437a-bc7c-599f7de320a3_2976x1432.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:701,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:334759,&quot;alt&quot;:&quot;A screenshot showing the agent&#8217;s final answer, which combines a Route Suggestion (from RAG) with a Weather forecast (from an API).&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://adamfaik.substack.com/i/178539859?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba20e771-6a7d-437a-bc7c-599f7de320a3_2976x1432.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A screenshot showing the agent&#8217;s final answer, which combines a Route Suggestion (from RAG) with a Weather forecast (from an API)." title="A screenshot showing the agent&#8217;s final answer, which combines a Route Suggestion (from RAG) with a Weather forecast (from an API)." srcset="https://substackcdn.com/image/fetch/$s_!-DNe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba20e771-6a7d-437a-bc7c-599f7de320a3_2976x1432.png 424w, https://substackcdn.com/image/fetch/$s_!-DNe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba20e771-6a7d-437a-bc7c-599f7de320a3_2976x1432.png 848w, https://substackcdn.com/image/fetch/$s_!-DNe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba20e771-6a7d-437a-bc7c-599f7de320a3_2976x1432.png 1272w, https://substackcdn.com/image/fetch/$s_!-DNe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba20e771-6a7d-437a-bc7c-599f7de320a3_2976x1432.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The agent combining multiple tools (RAG + weather) to answer one question.</figcaption></figure></div><p>This is the whole a-ha! moment. The user asked one question, and the agent performed a multi-step analysis. It reasoned that the query had two parts (the route and the timing), called the two correct tools in sequence, and then synthesized the results into a single, cohesive, valuable answer. This is what separates a simple chatbot from a true AI agent.</p><p>So, what we&#8217;ve just built is an <strong>AI Agent</strong>.</p><p>At its simplest, an <strong>AI Agent</strong> is a system that uses an <strong>LLM as its brain</strong> (or orchestrator) to <strong>reason</strong>, <strong>plan</strong>, and <strong>use tools</strong> (like code functions or APIs) to accomplish a complex goal.</p><p>This architecture is a powerful blueprint. Imagine this same pattern for your own product:</p><ol><li><p><strong>HR onboarding:</strong> A RAG tool for the employee handbook + API tools to check vacation balances or book a 1:1 with HR.</p></li><li><p><strong>E-commerce shopper:</strong> A RAG tool for product manuals + API tools to check live inventory, find accessories, or track a shipping status.</p></li><li><p><strong>Data analyst:</strong> A RAG tool for all your data dictionaries + a tool that can write and execute SQL or Python code to answer questions.</p></li><li><p><strong>Marketing assistant:</strong> A RAG tool for your brand&#8217;s style guides + Tools to search the web for trends and post drafts to social media.</p></li><li><p><strong>Personal assistant:</strong> A RAG tool for your personal notes + Tools to check your live calendar and draft an email.</p></li></ol><p>If you&#8217;re reading this, take five minutes right now. Think about your own product or workflow. What&#8217;s a user Job-to-be-Done that&#8217;s currently stuck in a leaky funnel?</p><p>Hold that idea in your head, because if you follow the next steps, you&#8217;ll be able to build it.</p><div><hr></div><h2>Part 2: The briefing, the core concepts</h2><p>Before we open the hood, let&#8217;s get our terms straight. The AI space is filled with confusing jargon, and it&#8217;s the biggest barrier to getting started. As PMs, our job is to translate complex ideas into simple, powerful models. Here are the plain-English analogies I learned, which I now use to explain these concepts to my own teams.</p><h3>What is Generative AI?</h3><p>For the last few years, most AI we&#8217;ve used has been <strong>discriminative AI</strong> (a &#8220;sorter&#8221;). It&#8217;s brilliant at classifying or predicting. Think of it as a bouncer at a club who has learned to check an ID. The AI learns the <strong>conditional probability</strong>, <code>P(y|x)</code>: &#8221;Given this person <code>x</code> (the ID), what&#8217;s the probability <code>y</code> they are on the list?&#8221; It&#8217;s a &#8220;cat&#8221; or &#8220;not cat&#8221; machine.</p><p><strong>Generative AI</strong> (a &#8220;creator&#8221;) is completely different. It doesn&#8217;t learn a decision boundary; it learns the entire pattern of the data itself. In technical terms, <strong>it learns the joint probability</strong>, <code>P(x,y)</code>.</p><p>Forget the math. Here&#8217;s the simple version: The &#8220;sorter&#8221; AI learns to recognize a cat. The &#8220;creator&#8221; AI has studied so many pictures of cats that it can generate a new, original picture of a cat that has never existed.</p><p><strong>An AI agent uses generative AI</strong> to create new, helpful, human-like answers for users.</p><h3>What is an LLM brain?</h3><p>A Large Language Model (LLM) is the brain of an AI agent. At its core, it&#8217;s an <strong>autoregressive</strong> system, which is a very fancy way of saying it does one thing, and one thing only: it predicts the next word (or <strong>token</strong>) based on all the words that came before it. It generates text word by word, just like we do. It only feels instantaneous because of the powerful <strong>GPUs</strong> (processors) it runs on.</p><p>It can do this because it was <strong>pre-trained on a massive snapshot of the internet</strong>. It learned the probability of which words are likely to follow other words.</p><p><strong>How it understands:</strong></p><ul><li><p><strong>Tokenization:</strong> First, the LLM breaks our text into sub-word pieces. &#8220;Paris by Bike&#8221; isn&#8217;t three words; it might be five tokens like <code>[&#8221;Par&#8221;, &#8220;is&#8221;, &#8220; by&#8221;, &#8220; B&#8221;, &#8220;ike&#8221;]</code>. This is how it handles any word, even ones it&#8217;s never seen.</p></li><li><p><strong>Embeddings:</strong> Next, it converts each token into a massive list of numbers (a vector). This isn&#8217;t random; it&#8217;s a semantic coordinate. The vectors for &#8220;King&#8221; and &#8220;Queen&#8221; are close to each other in this high-dimensional space. In fact, the model learns vector math: <code>vector(King) - vector(Man) + vector(Woman)</code> is statistically very close to the <code>vector(Queen)</code>. This semantic space is how the model reasons about concepts.</p></li><li><p><strong>The attention mechanism:</strong> This is the real secret sauce, introduced in the 2017 paper <a href="https://arxiv.org/abs/1706.03762">Attention Is All You Need</a>. This is what allows the model to handle long-range dependencies, to understand that the &#8220;it&#8221; at the end of a long paragraph refers to the &#8220;bicycle&#8221; at the beginning. It learns to &#8220;pay attention&#8221; to the most relevant tokens for any given context.</p></li></ul><h3>What is RAG?</h3><p>This is the most important concept for building valuable, enterprise-ready AI. <strong>RAG, Retrieval-Augmented Generation,</strong> is the solution to the LLM&#8217;s two biggest problems:</p><ol><li><p><strong>Its knowledge cutoff:</strong> It doesn&#8217;t know about last week&#8217;s news.</p></li><li><p><strong>Its privacy:</strong> it doesn&#8217;t know about your private company docs.</p></li></ol><p>RAG is how we give our agent its own proprietary, expert library.</p><p>This entire process is captured in the <code>rag_pipeline.py</code> file. You don&#8217;t need to be a Python expert to understand it. If you <a href="https://github.com/adamfaik/paris-by-bike-agent/blob/main/rag_pipeline.py">open that file</a>, you can follow along as I describe the two simple phases.</p><h4>Phase 1: Ingestion, building the library</h4><p>This is what <code>rag_pipeline.py</code> does before the app even starts.</p><ol><li><p><strong>Load:</strong> First, it scans the <code>/data</code> folder and loads all the expert-written <code>.md</code> and <code>.pdf</code> files.</p><ul><li><p>In the code, look for: the <code>rglob</code> functions scanning for <code>*.pdf</code> and <code>*.md</code> files.</p></li></ul></li><li><p><strong>Chunk:</strong> We can&#8217;t give the LLM a 50-page document at once (this is the context window limit). So, we use a smart paper shredder called <code>RecursiveCharacterTextSplitter</code> to break the text into small, overlapping paragraphs called <strong>chunks</strong>. The overlap is key: It&#8217;s like repeating the last sentence of a page at the top of the next, so no context is lost.</p><ul><li><p>In the code, look for: the <code>text_splitter = RecursiveCharacterTextSplitter(...)</code> line.</p></li></ul></li><li><p><strong>Embed:</strong> This is where the magic happens. We use an <strong>embedding model</strong>, in this case, <code>nomic-embed-text</code>. An embedding model is a translator. It&#8217;s a specific type of AI, an <strong>encoder-only transformer</strong>, whose only job is to read a piece of text and convert it into a semantic coordinate, a long list of numbers, or <strong>vector</strong>. This vector represents the meaning of the text.</p><ul><li><p>In the code, look for: the <code>EMBED_MODEL = OllamaEmbeddings(...)</code> variable.</p></li></ul></li><li><p><strong>Store:</strong> We dump all these vectors (and the text chunks they point to) into a magic filing cabinet called a <strong>vector store</strong>. The &#8220;Paris by Bike&#8221; project uses <code>FAISS</code>. <code>FAISS</code>, Facebook AI Similarity Search, is a high-performance library that&#8217;s incredibly fast at one thing: finding the closest vectors to a new query vector. It&#8217;s super-lightweight and runs locally on a machine.</p><ul><li><p>In the code, look for: the <code>vectorstore = FAISS.from_documents(...)</code> line, which creates the &#8220;filing cabinet,&#8221; and <code>vectorstore.save_local(...)</code> which saves it to our disk.</p></li></ul></li></ol><h4>Phase 2: Retrieval, using the library</h4><p>This happens in real-time every time the user asks a question.</p><ol><li><p><strong>Embed query:</strong> The user&#8217;s query (&#8221;What&#8217;s a good scenic route?&#8221;) is converted into a vector using the exact same <code>nomic-embed-text</code> model.</p></li><li><p><strong>Search:</strong> The agent performs a similarity search. It asks FAISS, &#8220;Find me the 4 text chunks whose vectors are closest to this query vector.&#8221;</p><ul><li><p>In the code, look for: <code>retriever = vectorstore.as_retriever(...)</code>. This retriever is the librarian that instantly searches the filing cabinet.</p></li></ul></li><li><p><strong>Augment and generate:</strong> The agent retrieves those 4 original text chunks (the context) and augments the prompt. It staples that context to the user&#8217;s question and tells the LLM: &#8220;Hey, using only this context I&#8217;m giving you... answer this question.&#8221;</p><ul><li><p>In the code, look for: the <code>RAG_PROMPT_TEMPLATE</code> variable. You&#8217;ll see the <code>{context}</code> and <code>{input}</code> placeholders. This is exactly where the retrieved text and the user&#8217;s query get inserted.</p></li></ul></li></ol><p>This is how we get expert, citable answers from private data.</p><h3>What is an AI Agent?</h3><p>You&#8217;ve already used an agent. When you&#8217;re in ChatGPT and you ask about a current event, you&#8217;ll see a little box appear that says &#8220;Browsing the web.&#8221; <strong>That&#8217;s an agent.</strong> The LLM (the brain) reasoned that your query couldn&#8217;t be answered by its internal knowledge. It decided to use a <strong>tool</strong> (its web browser). It then read the search results and synthesized an answer for you.</p><p>So, an AI Agent is a system that uses an <strong>LLM as its brain</strong> (or orchestrator) to <strong>reason</strong>, <strong>plan</strong>, and <strong>interact with tools</strong> (like code functions or APIs) to accomplish a complex goal.</p><p>This brings up the critical PM question: &#8220;Wait, <strong>how is this different from a workflow?</strong>&#8221;</p><p>We&#8217;ve had automation for years (think Zapier, IFTTT, or simple scripts). A <strong>traditional workflow</strong> is <strong>predefined and brittle</strong>. As the PM, you have to map out every single step: <code>IF a user emails &#8220;support,&#8221; THEN create a ticket in Jira, THEN send a Slack message.</code> It&#8217;s powerful, but it breaks the instant the user&#8217;s request doesn&#8217;t match the exact trigger (e.g., they email &#8220;help!&#8221; instead of &#8220;support&#8221;).</p><p>An <strong>AI agent</strong> is fundamentally different. It&#8217;s <strong>dynamic</strong>.</p><ul><li><p>In a <strong>workflow</strong>, you define the path.</p></li><li><p>In an <strong>agent</strong>, you define the capabilities (the tools).</p></li></ul><p>The agent&#8217;s brain (the LLM) uses its <strong>reasoning</strong> ability to create the workflow on the fly based on the user&#8217;s unstructured, natural-language request. This is why agents are so powerful. <strong>They can handle the messy, unpredictable, and complex queries of real humans</strong>, which a rigid workflow could never do.</p><p>Instead of building a rigid path, we just give our agent an assistant&#8217;s desk with a <strong>collection of tools.</strong> RAG is just one tool in that collection.</p><p>If you look at the &#8220;Paris by Bike&#8221; project&#8217;s <code>agent_logic.py</code> file <a href="https://github.com/adamfaik/paris-by-bike-agent/blob/main/agent_logic.py">here</a>, you&#8217;ll see I gave the agent a set of 5 tools. Here&#8217;s the breakdown. You can follow along in the file to see how simple this is.</p><ol><li><p><strong>&#128218; A library: The RAG pipeline (</strong><code>paris_bike_guide</code><strong>). </strong>This is the expert encyclopedia. It&#8217;s the tool the agent uses to query the private 10-document library.</p><ul><li><p>Look for the <code>@tool</code> decorator right above the <code>def paris_bike_guide(query: str)</code> function. You&#8217;ll see this function is just a simple wrapper that passes the user&#8217;s query to the <code>rag_chain</code> we built in the <code>rag_pipeline.py</code> file.</p></li></ul></li><li><p><strong>&#127780;&#65039; A window: A live weather API (</strong><code>get_weather</code><strong>). </strong>This tool gives our agent a window to the real, live world. It calls the OpenWeatherMap API to get the current forecast.</p><ul><li><p>Look for the <code>def get_weather_function(location: str)</code>. You can see the logic right inside: it checks for an <code>OPENWEATHERMAP_API_KEY</code>. If it can&#8217;t find one, it just returns &#8220;demo data&#8221;. This is a simple, PM-driven fallback.</p></li></ul></li><li><p><strong>&#128376;&#65039; A web browser: A web search API (</strong><code>web_search_tool</code><strong>). </strong>This is the agent&#8217;s safety net for any question our private library can&#8217;t answer, like &#8220;what&#8217;s on this weekend?&#8221;</p><ul><li><p>Look for the <code>web_search_function(query: str)</code>. This function uses the <code>TavilySearchResults</code> library to get results, and then just formats them nicely with clickable links. The most important part for us as PMs is the <code>description</code> field in the <code>StructuredTool.from_function</code> call. That description is the &#8220;manual&#8221; the LLM reads to understand <em>when</em> to use this tool.</p></li></ul></li><li><p><strong>&#129518; A calculator: A simple Python function (</strong><code>calculate_biking_plan</code><strong>). </strong>This is a custom &#8220;skill&#8221; I built to answer questions like &#8220;How far can I bike in 90 minutes?&#8221;</p><ul><li><p>Look for the <code>def calculate_biking_plan_function(...)</code>. This isn&#8217;t a complex API. It&#8217;s just a few lines of basic Python math (<code>distance = round(hours * speed_kmh, 1)</code>). This shows that a &#8220;tool&#8221; can be any simple helper function you can imagine.</p></li></ul></li><li><p><strong>&#128506;&#65039; A map service: A URL generator (</strong><code>generate_route_map</code><strong>). </strong>The tool that makes our agent&#8217;s advice actionable. It creates a Google Maps link so the user can start their ride.</p><ul><li><p>Look for the <code>def generate_route_map_function(...)</code>. You&#8217;ll see it&#8217;s not magic. It&#8217;s just a Python function that formats a string to build a Google Maps URL with the right parameters (<code>...&amp;travelmode=bicycling</code>). This is a perfect example of how a simple, 10-line function can become a powerful tool for an AI agent.</p></li></ul></li></ol><h3>How does the agent think?</h3><p>How does the agent know <em>which</em> tool to use, or how to combine them? It uses a framework called <strong>ReAct</strong>, which stands for <strong>Reason + Act</strong>. It&#8217;s the brain of the agent. This is where <strong>Chain of Thought (CoT)</strong> comes in.</p><p>You can think of CoT as the agent&#8217;s <strong>internal monologue</strong>. Instead of just blurting out an answer, the LLM thinks step-by-step to reason about the problem first. This allows it to break a big, complex problem (like &#8220;plan my ride&#8221;) into small, manageable pieces.</p><p><strong>The ReAct framework combines this thinking with doing.</strong> When you ask a complex question like &#8220;Is it a good idea to bike to Versailles tomorrow?&#8221;, the agent&#8217;s internal logic looks exactly like this:</p><ol><li><p><strong>Reason:</strong> &#8220;The user wants to know about Versailles and tomorrow&#8217;s weather. This is a multi-step problem.&#8221;</p></li><li><p><strong>Act:</strong> &#8220;I&#8217;ll use the <code>paris_bike_guide</code> tool first to find the route.&#8221;</p></li><li><p><strong>Observe:</strong> (Gets the route info from the RAG tool).</p></li><li><p><strong>Reason:</strong> &#8220;Great. Now I need the weather. I&#8217;ll use the <code>get_weather</code> tool.&#8221;</p></li><li><p><strong>Act:</strong> (Calls the OpenWeatherMap API).</p></li><li><p><strong>Observe:</strong> (Gets the weather data).</p></li><li><p><strong>Reason:</strong> &#8220;I have all the info. I will now synthesize them into a single, helpful answer for the user.&#8221;</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_!I-ou!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d2ba11-1f72-479a-afac-f1fffe2df9e7_800x450.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!I-ou!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d2ba11-1f72-479a-afac-f1fffe2df9e7_800x450.gif 424w, https://substackcdn.com/image/fetch/$s_!I-ou!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d2ba11-1f72-479a-afac-f1fffe2df9e7_800x450.gif 848w, https://substackcdn.com/image/fetch/$s_!I-ou!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d2ba11-1f72-479a-afac-f1fffe2df9e7_800x450.gif 1272w, https://substackcdn.com/image/fetch/$s_!I-ou!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d2ba11-1f72-479a-afac-f1fffe2df9e7_800x450.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!I-ou!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d2ba11-1f72-479a-afac-f1fffe2df9e7_800x450.gif" width="800" height="450" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c5d2ba11-1f72-479a-afac-f1fffe2df9e7_800x450.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:450,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Think, Act, Observe cycle&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="Think, Act, Observe cycle" title="Think, Act, Observe cycle" srcset="https://substackcdn.com/image/fetch/$s_!I-ou!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d2ba11-1f72-479a-afac-f1fffe2df9e7_800x450.gif 424w, https://substackcdn.com/image/fetch/$s_!I-ou!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d2ba11-1f72-479a-afac-f1fffe2df9e7_800x450.gif 848w, https://substackcdn.com/image/fetch/$s_!I-ou!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d2ba11-1f72-479a-afac-f1fffe2df9e7_800x450.gif 1272w, https://substackcdn.com/image/fetch/$s_!I-ou!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5d2ba11-1f72-479a-afac-f1fffe2df9e7_800x450.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The core ReAct loop: The agent Thinks, takes an Action, and makes an Observation (from <a href="https://huggingface.co/learn/agents-course/unit1/agent-steps-and-structure">Hugging Face&#8217;s Agents course</a>)</figcaption></figure></div><p>This Reason-Act-Observe loop is what makes an agent feel intelligent. So, how did I build this loop? This is where the <strong>LangGraph</strong> library comes in. As PMs, we can think of it like this: If LangChain gives us the building blocks (the tools, the RAG chain), LangGraph provides the plumbing or the &#8220;smart flowchart&#8221; that connects them.</p><p>A simple LangChain chain is linear (A &#8594; B &#8594; C). LangGraph allows us to build graphs, systems that can run in a loop, make decisions, and go back to a previous step. This looping ability is what makes the &#8220;Reason &#8594; Act &#8594; Observe &#8594; Reason...&#8221; cycle possible.</p><p><strong>Code-Curious? </strong>This entire complex loop is created with <strong>one line of code</strong> in the <code>agent_logic.py</code> file <a href="https://github.com/adamfaik/paris-by-bike-agent/blob/main/agent_logic.py">here</a>: <code>agent_executor = create_react_agent(llm, tools)</code>. This single function from LangGraph takes the LLM and the list of 5 tools and automatically builds this powerful ReAct engine for us.</p><h3>What is the system prompt?</h3><p>This is the most important and powerful tool as PMs. The <strong>system prompt</strong> is the text document where we define the agent&#8217;s entire reality.</p><p>If you look at <code>agent_logic.py</code> <a href="https://github.com/adamfaik/paris-by-bike-agent/blob/main/agent_logic.py">here</a>, you&#8217;ll find the <code>SYSTEM_PROMPT</code> variable. It&#8217;s not just a prompt; it&#8217;s the product spec. It tells the agent:</p><ul><li><p><strong>Who you are:</strong> &#8220;You are &#8216;Paris by Bike&#8217; - a knowledgeable and friendly biking assistant...&#8221;</p></li><li><p><strong>What your tools are:</strong> (It gets a list of the 5 tools and, crucially, their <em>descriptions</em>).</p></li><li><p><strong>What your rules are:</strong> &#8220;CRITICAL RULES FOR TOOL USAGE: 1. MATCH YOUR RESPONSE TO THE QUESTION COMPLEXITY...&#8221;</p></li></ul><p>This is how we program the agent&#8217;s logic in plain English. The agent&#8217;s skill at picking the right tool is completely dependent on how well we (as PMs) write the description for that tool.</p><h3>Recap</h3><p>Okay, let&#8217;s pause. That was the briefing, and I know that was a lot of theory. If your head is spinning a bit with terms like <strong>autoregressive, embeddings, RAG,</strong> and <strong>ReAct,</strong> that is completely normal.</p><p>We&#8217;ve just put a name to the concepts we&#8217;re using in this project:</p><ul><li><p><strong>RAG</strong> is the private library (which we&#8217;ll see is built in the <code>rag_pipeline.py</code> file).</p></li><li><p>The <strong>agent</strong>, its <strong>tools</strong>, and its <strong>system prompt</strong> make up our assistant (defined in the <code>agent_logic.py</code> file).</p></li><li><p>The <strong>ReAct Loop</strong> is the thought process (powered by <strong>LangGraph</strong>) that the AI agent uses to choose those tools.</p></li></ul><p>Here&#8217;s the most important part: <strong>you do not need to be a master of these concepts to start building.</strong> My own deep understanding didn&#8217;t come from reading definitions; it came from seeing it work in practice and then coming back to the theory, which suddenly made sense.</p><p>Learning this stuff is an iterative loop. You see the practice, and the theory gets clearer. You revisit the theory, and the practice becomes more powerful.</p><p>The good news is, the heaviest theory part is over. From here on, <strong>we&#8217;re focused on the practical, step-by-step build</strong>. We&#8217;re going to move from the &#8220;what&#8221; to the &#8220;why:&#8221; How to frame this entire project as a simple product brief you can write in an afternoon.</p><div><hr></div><h2>Part 3: The mission, the product brief</h2><p>Alright, let&#8217;s be honest. My core motivation for this project wasn&#8217;t just to solve my sofa-to-bike problem. As a product manager, I saw &#8220;RAG&#8221; dominate the conversation last year, and now, &#8220;AI Agents&#8221; are the new buzzword. I felt that if I couldn&#8217;t actually build one and explain how it worked, I was falling behind, a PM fraud in the new age of agentic AI.</p><p>So, I set myself a challenge: Could I build a single assistant that combined both? A system that was smart enough to have its own <strong>expert, private knowledge (RAG)</strong> and smart enough to use tools to take <strong>real-world actions (the &#8220;agentic&#8221; part)</strong>?</p><p>My &#8220;Paris by Bike&#8221; idea was the perfect use case. The real challenge was figuring out the requirements. As PMs, our job is to <strong>define the problem so well that the solution becomes obvious.</strong></p><p>It turns out, designing an AI agent is just a new, high-leverage way of doing product discovery. You don&#8217;t need to talk about &#8220;RAG&#8221; or &#8220;tools&#8221; with your stakeholders or users. <strong>You just need a framework to find the friction points.</strong></p><p>Here is the 3-step &#8220;agent design&#8221; framework I used. This is a simple, non-technical way for any PM to define the requirements for an AI agent, just by mapping out a user&#8217;s real workflow.</p><h3>Step 1: Define the Job-to-be-Done (JTBD)</h3><p>First, what is the single, high-level job the user is trying to do?</p><p><strong>My project&#8217;s JTBD:</strong> &#8220;When I have a free afternoon, motivate me and help me plan and execute a great bike ride, from initial idea to final route, all in one place.&#8221;</p><h3>Step 2: Map the leaky funnel, find the friction points</h3><p>Next, map the user&#8217;s current workflow for this job. Where do they leak from your platform? Where do they open a new tab? Each leak is an opportunity for a tool.</p><p><strong>My leaky funnel:</strong></p><ul><li><p>I get an idea from a blog post.</p><ul><li><p>Leak 1: I leave to open my <strong>Weather</strong> app. &#8220;Is it sunny?&#8221;</p></li></ul></li><li><p>The weather is good.</p><ul><li><p>Leak 2: I leave to open <strong>Google Maps</strong>. &#8220;How do I get there? How long will it take?&#8221;</p></li></ul></li><li><p>I find a route.</p><ul><li><p>Leak 3: I leave to open <strong>Google Search</strong>. &#8220;What&#8217;s even happening in that neighborhood today?&#8221;</p></li></ul></li><li><p>I find an event.</p><ul><li><p>Leak 4: I get distracted by other links, lose momentum, and stay on the sofa.</p></li></ul></li></ul><h3>Step 3: Define the toolbelt, the capabilities to plug the leaks</h3><p>This is the final step. Each leak you identified in Step 2 now becomes a clear, obvious requirement for your agent. You&#8217;re not building features; you&#8217;re building capabilities to plug the leaks.</p><p>This framework writes the product brief for you. When I ran my &#8220;Paris by Bike&#8221; idea through it, my agent&#8217;s toolbelt became crystal clear:</p><ul><li><p><strong>User:</strong> &#8220;I need ideas for a route.&#8221;</p><ul><li><p><strong>&#128218; Tool 1:</strong> A &#8220;private library&#8221; of expert-written routes.</p></li></ul></li><li><p><strong>User:</strong> &#8220;Should I go now or later?&#8221;</p><ul><li><p><strong>&#127780;&#65039; Tool 2:</strong> A &#8220;window&#8221; to check the live weather.</p></li></ul></li><li><p><strong>User:</strong> &#8220;How long will that take?&#8221;</p><ul><li><p><strong>&#129518; Tool 3:</strong> A &#8220;calculator&#8221; to estimate time/distance.</p></li></ul></li><li><p><strong>User :</strong> &#8220;What&#8217;s happening this weekend?&#8221;</p><ul><li><p><strong>&#128376;&#65039; Tool 4:</strong> A &#8220;web browser&#8221; to find current events.</p></li></ul></li><li><p><strong>User:</strong> &#8220;How do I actually get there?&#8221;</p><ul><li><p><strong>&#128506;&#65039; Tool 5:</strong> A &#8220;Map Service&#8221; to provide navigation.</p></li></ul></li></ul><p>That&#8217;s it. That&#8217;s the entire product brief.</p><p>The 5 tools you see listed in the <code>agent_logic.py</code> file aren&#8217;t just random Python functions. They are the direct technical implementation of the 5 user needs I identified. This <strong>(JTBD &#8594; leaky funnel &#8594; toolbelt)</strong> framework is how you can design any AI agent for any use case, and you can explain it to any stakeholder.</p><p>Now, we just need to build it. And for that, I&#8217;m not going to open a code editor, I&#8217;m going to open a chat with Gemini.</p><div><hr></div><h2>Part 4: The action, the build process</h2><p>Now for the &#8220;how.&#8221; I hope you&#8217;re not disappointed, but <strong>I didn&#8217;t write the 500+ lines of Python for this project from scratch</strong>. I read them, tested them, debugged them, and directed them.</p><p>My job as the PM wasn&#8217;t to be an engineer. It was to be the &#8220;taster.&#8221; <strong>I was the one judging the results at every step</strong>, asking &#8220;why does it do that?&#8221; or &#8220;can we make it do this instead?&#8221; I felt a bit like Steve Jobs in the early Macintosh days, talking to the engineers. I was demanding, incredibly curious, and pushed my AI partner, Gemini 2.5 Pro, to build things I couldn&#8217;t, all without worrying about the technical obstacles. I just wanted to see my product vision come to life, and <strong>I wanted to understand every single piece</strong>.</p><p>This is the exact, step-by-step process I followed.</p><h3>Step 1: The &#8220;what if?&#8221; prompt, asking for a plan</h3><p>I didn&#8217;t start by writing a 10-page PRD or a complex code prompt. My very first prompt to Gemini was simple, high-level, and focused on a plan:</p><blockquote><p>I&#8217;m a PM and I&#8217;ve heard a lot about RAG and AI Agents. I want to build my first agent to really understand them. Can you give me a <strong>step-by-step plan</strong> for a total beginner? My idea is a &#8220;Paris by Bike&#8221; assistant. It should have its own knowledge (RAG) but also tools (like weather or maps).</p><p><strong>Crucially, I need to test this a lot without paying for API calls.</strong> Can you design the plan so it works locally with a free tool like Ollama, but also has an option to switch to a fast cloud LLM like Groq for speed?</p><p>I just need the plan to get started, from creating the GitHub repo to having a local app I can test. I use VS Code as my IDE.</p></blockquote><p>Gemini didn&#8217;t give me code. It gave me a plan. It suggested the 3-file structure (<code>app.py</code>, <code>agent_logic.py</code>, <code>rag_pipeline.py</code>), recommended <strong>LangChain</strong> and <strong>LangGraph</strong> as the plumbing, and <strong>Chainlit</strong> for the UI, because they all work well together.</p><h3>Step 2: The conversational build, my AI dev team</h3><p>With this plan, I opened my tools: VS Code for the editor, GitHub for version control, and a chat window with my AI partner.</p><p>I followed the plan, step-by-step, with Gemini as my &#8220;junior dev&#8221; partner. My process was a simple, iterative loop:</p><ol><li><p><strong>Me:</strong> &#8220;Okay, I&#8217;m on Step 3 of the plan: &#8216;Create the RAG pipeline.&#8217; Can you give me the complete code for the <code>rag_pipeline.py</code> file based on our plan?&#8221;</p></li><li><p><strong>Gemini:</strong> (Generates the code).</p></li><li><p><strong>Me:</strong> &#8220;This is great. Now, can you walk me through this file, line-by-line, and explain what each part does? What is &#8216;<code>FAISS</code>&#8217;? What is &#8216;<code>RecursiveCharacterTextSplitter</code>&#8217;?&#8221;</p></li><li><p><strong>Gemini:</strong> (Explains the concepts).</p></li><li><p><strong>Me:</strong> (I copy, paste, and run the code). &#8220;Okay, it&#8217;s working. Now for Step 4: &#8216;Create the agent logic&#8217;...&#8221;</p></li></ol><p>I repeated this for all three files. When I hit a really hard bug, I discovered an amazing multi-AI strategy. <strong>I&#8217;d switch to Claude</strong>. I see Gemini as a brilliant junior dev: It gets me 90% of the way there with code that is clear and easy for me to understand. I see Claude as the senior dev: It&#8217;s incredibly powerful at spotting complex debugging issues from a simple file upload, even if its final code is sometimes a bit harder for me to read.</p><h3>Step 3: A PM&#8217;s tour of the final codebase</h3><p>After this process, I had my working MVP. You don&#8217;t need to read all 500+ lines in the repo to understand it. As a PM, you just need to understand the architecture and what each component does.</p><p>Here are the three files that matter:</p><ul><li><p><code>rag_pipeline.py</code><strong>: the librarian (<a href="https://github.com/adamfaik/paris-by-bike-agent/blob/main/rag_pipeline.py">here</a>).</strong></p><ul><li><p><strong>Job:</strong> This file&#8217;s only job is to build the expert library. It scans the <code>/data</code> folder and turns the 10 guides into a magic filing cabinet (a <code>FAISS</code> vector store) that the agent can search instantly.</p></li><li><p><strong>Key components:</strong> <code>PyPDFLoader</code> and <code>TextLoader</code> (to read files), <code>RecursiveCharacterTextSplitter</code> (the &#8220;smart shredder&#8221;), <code>OllamaEmbeddings</code> (the &#8220;translator&#8221;), and <code>FAISS</code> (the &#8220;filing cabinet&#8221;).</p></li></ul></li><li><p><code>agent_logic.py</code><strong>: the assistant&#8217;s brain (<a href="https://github.com/adamfaik/paris-by-bike-agent/blob/main/agent_logic.py">here</a>).</strong></p><ul><li><p><strong>Job:</strong> This is the core of the project. It defines the agent&#8217;s logic, its collection of 5 tools, and its job description (the system prompt).</p></li><li><p><strong>Key components:</strong> The <code>llm</code> switcher (to flip between fast Groq and private Ollama), the 5 <code>@tool</code> definitions (the collection), and the all-important <code>SYSTEM_PROMPT</code> string.</p></li></ul></li><li><p><code>app.py</code><strong>: the user interface (<a href="https://github.com/adamfaik/paris-by-bike-agent/blob/main/app.py">here</a>).</strong></p><ul><li><p><strong>Job:</strong> This file creates the chat window using Chainlit, the UI library.</p></li><li><p><strong>Key components:</strong> The <code>@cl.on_chat_start</code> function (which loads the agent into memory) and the <code>@cl.on_message</code> function (which takes the user&#8217;s message, runs the agent, and streams the final answer back).</p></li></ul></li></ul><h3>Step 4: My &#8220;PM refinement&#8221; loop (this was my real job)</h3><p>Getting the first version running was just the start. This is where I, as the PM and &#8220;taster,&#8221; really added value.</p><h4>Refinement A: Curating data as a product</h4><p>Gemini built the RAG pipeline (<code>rag_pipeline.py</code>), but it was empty. I first tried to find existing PDFs online, but they were low-quality or badly formatted. So, I realized my agent&#8217;s expert knowledge was the product. I used Gemini&#8217;s Deep Research feature to generate 10 high-quality, expert-level guides on topics I knew a rider would need, like <code>paris_scenic_bike_routes.md</code>, <code>paris_bike_rental_guide.md</code>, <code>paris_biking_rules_and_safety.md</code>, and <code>paris_bike_friendly_cafes.md</code>. This 10-document library, which you can see in the <code>/data</code> folder, became my proprietary secret library that makes the agent smarter than a generic chatbot.</p><h4>Refinement B: Iterating on the job description, the system prompt</h4><p>This was the most critical loop. My real job was to be the &#8220;taster&#8221; and &#8220;debugger&#8221; of the agent&#8217;s logic.</p><ul><li><p><strong>Temperature:</strong> I asked Gemini to play with this parameter. The temperature is a setting from 0.0 to 1.0. A low value (like 0.3, which I used) makes the agent focused and predictable. A high value (like 1.0) makes it creative and random. For an assistant, I wanted helpful and predictable.</p></li><li><p><strong>Testing:</strong> I created a formal test suite: 5 questions for each of the 5 tools (&#8221;What&#8217;s the weather?&#8221;), plus 10 complex multi-tool questions (&#8221;Plan a 2-hour ride for beginners from the Louvre, but only if it&#8217;s not raining.&#8221;).</p></li><li><p><strong>Debugging:</strong> I ran these tests locally (with Ollama, so it was free). At first, I couldn&#8217;t see why the agent was picking the wrong tool. So, I asked Gemini, &#8220;How can I see the agent&#8217;s &#8216;thinking&#8217; in my Chainlit UI?&#8221; It told me how to configure the <code>app.py</code> file to show the &#8220;Thinking...&#8221; dropdown. This debug view was my most valuable tool for refining the system prompt.</p></li><li><p><strong>Iterating:</strong> After a test run, I&#8217;d go back to Gemini and say, &#8220;The agent is using the web search for route questions. That&#8217;s wrong. Please update the <code>SYSTEM_PROMPT</code> to be more inclined to use the <code>paris_bike_guide</code> tool first.&#8221; We iterated until the logic was sharp.</p></li></ul><h4>Refinement C: GitHub as a PM&#8217;s change-log</h4><p>Every time I had a new, stable version, I&#8217;d make a commit to GitHub. This wasn&#8217;t just backing up code: It was product versioning. My commit history became my PM changelog, letting me track progress and roll back if a test failed.</p><p><strong>Pro-tip:</strong> Here&#8217;s a powerful PM hack I discovered. Once my project was on GitHub, I&#8217;d start a brand new chat with Gemini or Claude. I&#8217;d provide the public link to my repo and ask, &#8220;Please review my project and give me 10 ideas for improvement.&#8221;</p><p>The feedback was always incredible: New tool ideas, logic refinements, and tech suggestions. But this comes with a classic PM warning: <strong>It&#8217;s tempting to improve forever.</strong> The AI will always find new things to add. At a certain point, I had to declare my &#8220;MVP&#8221; and stop, otherwise, I would have never finished! It&#8217;s the perfect tool for generating a backlog, but you still have to be the one to prioritize and say &#8220;stop.&#8221;</p><h4>Refinement D: The Final UX Polish.</h4><p>Finally, I did the &#8220;last 5%&#8221; of product polish. I designed a logo and configured the chainlit.md file and app.py to add starters, those prompt suggestions that help the user get started. These are the small touches that make a project feel like a product.</p><div><hr></div><h2>Part 5: The debrief, analysis and trade-offs</h2><p>So, the &#8220;Paris by Bike&#8221; agent works. It can answer complex, multi-step questions.</p><p>But as PMs, our job isn&#8217;t just to ship a feature; it&#8217;s to understand why it works, what its limitations are, and what&#8217;s next. This is the debrief, where we look at the results and build the backlog for the next sprint.</p><h3>The critical PM trade-off: Speed vs. privacy</h3><p>The <code>agent_logic.py</code> file has a simple if/else switch for the LLM brain. This isn&#8217;t just a technical detail; it&#8217;s a core product strategy decision:</p><ul><li><p><strong>If a </strong><code>GROQ_API_KEY</code><strong> exists:</strong> The AI agent uses the cloud-based <code>ChatGroq</code>.</p><ul><li><p><strong>Pro:</strong> It is blazing-fast. This is a massive UX win for a live, user-facing product.</p></li><li><p><strong>Con:</strong> It costs money (per API call) and user data is sent to a third-party API.</p></li></ul></li><li><p><strong>If no key exists:</strong> The AI agent defaults to a local <code>ChatOllama</code> model (like Llama 3.1).</p><ul><li><p><strong>Pro:</strong> It&#8217;s 100% free to run and 100% private. No data ever leaves the user&#8217;s machine. This is a critical feature for any enterprise use case (like an HR bot) or for any PM who wants to test extensively without running up a bill.</p></li><li><p><strong>Con:</strong> It can be slow and requires a more powerful computer to run.</p></li></ul></li></ul><p><strong>This switcher logic is a powerful pattern.</strong> It lets you build one product that can serve both a fast, consumer-facing need (with Groq) and a secure, on-premise enterprise need (with Ollama).</p><p>My choice to use Ollama and Groq was a local-first decision. It was perfect for my goal: to test, iterate, and debug hundreds of times for free. <strong>The downside?</strong> When I wanted to deploy a public version (e.g., on a Hugging Face Space), it became a nightmare. <strong>These non-standard models are complex to host.</strong> Gemini gave me a plan, but it meant redoing a lot of work.</p><p><strong>The Lesson:</strong> If my goal from Day 1 had been a live, public-facing app, I would have just used the standard <strong>OpenAI API</strong>. It&#8217;s a classic PM trade-off: my free and flexible dev choice created a high friction production path.</p><h3>My backlog: What&#8217;s next</h3><p>No project is ever done. This is where my role as PM kicks back in. Here are three key items I would tackle next if I were to continue, but there are many more:</p><ul><li><p><strong>Performance: Cache the RAG index.</strong></p><ul><li><p><strong>The problem:</strong> The expert library (<code>FAISS</code> index) is rebuilt from scratch every time the app starts. This is slow and inefficient.</p></li><li><p><strong>User story:</strong> As a user, I want the app to start instantly.</p></li><li><p><strong>Fix:</strong> I&#8217;ll modify <code>rag_pipeline.py</code> to save the index to disk (<code>faiss_store/</code>) and only rebuild it if the files in the <code>/data</code> folder have changed.</p></li></ul></li><li><p><strong>Personalization: Add a memory.</strong></p><ul><li><p><strong>The problem:</strong> The agent is stateless. If a user says &#8220;I have my own bike,&#8221; the agent will forget by the very next new conversation and offer rental shop info.</p></li><li><p><strong>User story:</strong> As a user, if I say &#8220;I have my own bike,&#8221; I never want to be offered rental shop info again.</p></li><li><p><strong>Fix:</strong> I&#8217;ll use the <code>cl.user_session</code> (which is already in <code>app.py</code>) to store user preferences (e.g., <code>&#8220;owns_bike&#8221;: true</code>). Then, I&#8217;ll dynamically add this to the <code>SYSTEM_PROMPT</code> in <code>agent_logic.py</code> on every turn: <code>&#8220;USER CONTEXT: This user owns their own bike.&#8221;</code></p></li></ul></li><li><p><strong>UX/retention: Embed the UI elements.</strong></p><ul><li><p><strong>The problem:</strong> The Google Maps link leaves the app. This is a &#8220;leaky funnel&#8221; and bad for retention.</p></li><li><p><strong>User Story:</strong> As a user, when I ask for a map, I don&#8217;t want to be sent to a new browser tab; I want to see the map in the chat.</p></li><li><p><strong>Fix:</strong> Instead of just sending a URL, I&#8217;ll have the <code>generate_route_map</code> tool return a Chainlit UI element like <code>cl.Embed</code> to display an interactive map inside the chat window.</p></li></ul></li></ul><h3>Is an agent even the right product?</h3><p>This is the biggest question I&#8217;m left with. As PMs, we have to ask: Is the chat interface a brilliant, universal solution, or is it sometimes a lazy one?</p><ul><li><p><strong>The blank slate problem:</strong> When you open the app, you&#8217;re faced with a chat box. You don&#8217;t know what the agent is capable of. You don&#8217;t know what&#8217;s in its &#8220;private library&#8221; or what its 5 tools are. The &#8220;Starters&#8221; I added feel like a lazy fix. The UI forces the user to &#8220;discover&#8221; the agent&#8217;s skills over time, like making a new friend and slowly learning what they&#8217;re good at. This takes time and can be awkward.</p></li><li><p><strong>The &#8220;Better App&#8221; Question:</strong> For my &#8220;sofa-to-bike&#8221; problem, would a traditional app be a better, more straightforward UX? Imagine a non-AI app: you open it and see a beautiful map, a menu of &#8220;Scenic Routes,&#8221; and clear buttons for &#8220;Check Weather&#8221; or &#8220;Find Events.&#8221; For this specific JTBD, that might be a superior, more discoverable product.</p></li><li><p><strong>The Honest Answer:</strong> In my case, this was a &#8220;solution in search of a problem.&#8221; My primary goal was to learn the technology and understand how RAG and agents work. From that perspective, this project was a massive success.</p></li></ul><p>But this raises a critical question for all PMs: are we choosing an agent because it&#8217;s the best solution, or because it&#8217;s the trendiest one? It&#8217;s something we need to ask ourselves. Even I will probably forget exactly what&#8217;s in my 10 RAG documents in six months, making the discoverability problem real even for the builder. This leads me to my final, actionable lessons.</p><div><hr></div><h2>Part 6: The lessons, your turn</h2><p>So, what&#8217;s the high-level takeaway for your own AI product strategy? My goal was to demystify this new &#8220;agent&#8221; buzzword, and I hope seeing the journey from idea to a working app has done that.</p><p>It all comes down to a few key lessons.</p><ul><li><p><strong>Your first AI agent is one master prompt away.</strong> You don&#8217;t need to be a Python expert to build one. You need to be a requirements expert. My master prompt to Gemini was just a clear, well-structured product brief. You can partner with an AI to write the boilerplate code, which frees you up to focus on the logic and the user experience, the parts that actually create product value.</p></li><li><p><strong>The system prompt is the job description.</strong> This was my biggest a-ha! moment. The most critical code I wrote for this project was the SYSTEM_PROMPT in agent_logic.py. This is where you, as the PM, get to be the architect. You define the persona, the rules, the failure modes, and the business logic in plain English. A well-written prompt is a well-defined product.</p></li><li><p><strong>Curate your data as your secret library.</strong> An AI agent is only as good as its tools, and the RAG tool is only as good as its data. My agent&#8217;s expert knowledge didn&#8217;t come from the public web; it came from the 10 high-quality guides I generated and put in the /data folder. Your proprietary, high-quality, curated knowledge base is your single biggest competitive advantage.</p></li><li><p><strong>Build a toolbelt, not just a chatbot.</strong> The framework <strong>(JTBD &#8594; leaky funnel &#8594; toolbelt)</strong> is your new best friend for agent design. From day one, stop asking &#8220;What can it answer?&#8221; and start asking &#8220;What can it do?&#8221; Map your user&#8217;s leaky funnel. Every time they have to open a new tab, that&#8217;s an opportunity for a new tool in your agent&#8217;s collection.</p></li><li><p><strong>Your new PM superpower: spec writing for an AI partner.</strong> This entire project changed my view of my own role. The build process wasn&#8217;t &#8220;code, test, debug.&#8221; It was: 1. Write a master prompt (the PRD). 2. Get the code from Gemini. 3. Test it. 4. Find the flaws. 5. Refine the prompt logic (not the code). This is a new and incredibly fast way to build. The &#8220;Paris by Bike&#8221; repo is the result of that loop.</p></li></ul><p>Now, go build yours!</p><div><hr></div><p>What&#8217;s your Job-to-be-Done? What&#8217;s the user problem you&#8217;re going to solve by building an agent? Let me know your idea or your finished project in the comments, I&#8217;m curious to see what you build!</p>]]></content:encoded></item></channel></rss>