<?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[Adityeah’s Newsletter: How I AI?]]></title><description><![CDATA[Unlock the power of AI for product managers and builders. This section explores practical insights, tools, and strategies to help you integrate AI into your product thinking, drive innovation, and stay ahead in a rapidly evolving landscape. Whether you’re curious about trends or seeking hands-on tips, you’ll find actionable content tailored for product professionals.]]></description><link>https://news.adityeah.in/s/how-i-ai</link><image><url>https://substackcdn.com/image/fetch/$s_!EG3O!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13060973-a126-4423-a1a7-8976241cadbd_1024x1024.png</url><title>Adityeah’s Newsletter: How I AI?</title><link>https://news.adityeah.in/s/how-i-ai</link></image><generator>Substack</generator><lastBuildDate>Wed, 08 Apr 2026 01:48:14 GMT</lastBuildDate><atom:link href="https://news.adityeah.in/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Aditya]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[adityeah@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[adityeah@substack.com]]></itunes:email><itunes:name><![CDATA[Aditya]]></itunes:name></itunes:owner><itunes:author><![CDATA[Aditya]]></itunes:author><googleplay:owner><![CDATA[adityeah@substack.com]]></googleplay:owner><googleplay:email><![CDATA[adityeah@substack.com]]></googleplay:email><googleplay:author><![CDATA[Aditya]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[I Hate AI Notetakers, Too—So I Found One That’s Actually Invisible ]]></title><description><![CDATA[I Hate AI Notetakers, Too&#8212;So I Found One That&#8217;s Actually Invisible]]></description><link>https://news.adityeah.in/p/i-hate-ai-notetakers-tooso-i-found</link><guid isPermaLink="false">https://news.adityeah.in/p/i-hate-ai-notetakers-tooso-i-found</guid><dc:creator><![CDATA[Aditya]]></dc:creator><pubDate>Sun, 08 Mar 2026 06:10:36 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/55effb4c-ca8d-4a25-8a75-9f6903a6751f_2500x1581.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>As a Product Manager, your day is a marathon of context-switching. You jump from a high-stakes strategy session with the leadership to a granular technical deep-dive with engineering, only to end the day with a customer interview. By the time you sit down to write your PRDs or update the roadmap, you&#8217;ve likely forgotten <strong>70% of what was actually said</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_!62KR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d337e2-85ea-401d-83ab-5e618a4dfde6_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!62KR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d337e2-85ea-401d-83ab-5e618a4dfde6_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!62KR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d337e2-85ea-401d-83ab-5e618a4dfde6_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!62KR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d337e2-85ea-401d-83ab-5e618a4dfde6_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!62KR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d337e2-85ea-401d-83ab-5e618a4dfde6_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!62KR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d337e2-85ea-401d-83ab-5e618a4dfde6_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/76d337e2-85ea-401d-83ab-5e618a4dfde6_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1997303,&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://news.adityeah.in/i/185815872?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d337e2-85ea-401d-83ab-5e618a4dfde6_1536x1024.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_!62KR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d337e2-85ea-401d-83ab-5e618a4dfde6_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!62KR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d337e2-85ea-401d-83ab-5e618a4dfde6_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!62KR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d337e2-85ea-401d-83ab-5e618a4dfde6_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!62KR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76d337e2-85ea-401d-83ab-5e618a4dfde6_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This is the <strong>Ebbinghaus Forgetting Curve</strong> in action. Your brain isn&#8217;t a tape recorder; it&#8217;s a storyteller that fills in gaps with assumptions. If you&#8217;ve ever spent a week building a feature only to realize the VP never actually asked for it, you&#8217;ve experienced the &#8220;Shared False Memory&#8221; trap.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://news.adityeah.in/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Adityeah&#8217;s Newsletter is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h3>The Group Hallucination: Why Your Roadmap is at Risk</h3><p>It&#8217;s one thing to forget a meeting; it&#8217;s another to collectively &#8220;invent&#8221; one. In groups, this phenomenon turns dangerous. Research shows that teams often walk out of a room with <strong>shared false memories</strong>, convinced the CEO issued a directive that she never actually said.</p><p>You implement a non-existent strategy, and six months later, no one even questions it because everyone &#8220;remembers&#8221; it clearly. I&#8217;ve seen a client team waste three entire weeks building a feature their VP supposedly &#8220;asked for&#8221;. The transcript later proved she never mentioned it, yet four senior people would have sworn on their careers that she did.</p><p>The hard truth? </p><blockquote><p><strong>Your memory is just a piece of fan fiction you wrote about the meeting after it ended</strong>.</p></blockquote><h3>The Failed Fixes of the Past</h3><p>We&#8217;ve all tried the standard &#8220;productivity&#8221; hacks, and we know why they fail:</p><ul><li><p><strong>Manual Note-taking</strong>: You split your focus. While you&#8217;re typing the last sentence, you&#8217;re missing the next one. You capture words, but you aren&#8217;t actually <em>present</em> to lead the conversation. And let&#8217;s be honest: you&#8217;ll never look at those notes again.</p></li><li><p><strong>The &#8220;Audio Graveyard&#8221;</strong>: You hit record, creating 47 minutes of audio that will sit in a folder until the end of time. We both know you aren&#8217;t going to replay it.</p></li><li><p><strong>The Bot Invasion</strong>: You invite an AI notetaker, and suddenly the vibe shifts. People talk differently when a bot is watching. You end up with a generic &#8220;nothing-summary&#8221; that tells you the team &#8220;discussed priorities&#8221;&#8212;which helps exactly no one.</p></li></ul><p>You eventually give up and Slack a colleague: <em>&#8220;Hey, what did we actually decide?&#8221;</em>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dQwV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d3fa8ea-fe6e-4dff-8a83-e8811018f303_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dQwV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d3fa8ea-fe6e-4dff-8a83-e8811018f303_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!dQwV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d3fa8ea-fe6e-4dff-8a83-e8811018f303_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!dQwV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d3fa8ea-fe6e-4dff-8a83-e8811018f303_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!dQwV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d3fa8ea-fe6e-4dff-8a83-e8811018f303_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dQwV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d3fa8ea-fe6e-4dff-8a83-e8811018f303_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4d3fa8ea-fe6e-4dff-8a83-e8811018f303_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1619858,&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://news.adityeah.in/i/185815872?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d3fa8ea-fe6e-4dff-8a83-e8811018f303_1536x1024.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_!dQwV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d3fa8ea-fe6e-4dff-8a83-e8811018f303_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!dQwV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d3fa8ea-fe6e-4dff-8a83-e8811018f303_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!dQwV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d3fa8ea-fe6e-4dff-8a83-e8811018f303_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!dQwV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d3fa8ea-fe6e-4dff-8a83-e8811018f303_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>I&#8217;ll say it plainly: <strong>I hate AI notetakers.</strong></p><p>You know the ones. You join a Google Meet or Zoom, and instead of a focused group of humans, you see a dozen &#8220;Assistants&#8221; and &#8220;Recorders&#8221; staring back at you. It&#8217;s a nightmare straight out of a <em>Black Mirror</em> episode.</p><p>When a bot joins, the room changes. People stop speaking freely. They filter their thoughts because they know a &#8220;gray circle&#8221; is transcribing their every word for a generic summary you probably won&#8217;t even read. We&#8217;ve reached a point where we should almost shame the use of these intrusive bots&#8212;they destroy the very &#8220;realness&#8221; of the conversation they&#8217;re trying to capture.</p><p>For a long time, I thought note-taking simply wasn&#8217;t a solved problem. I went back to scribbling poor, disjointed notes just to avoid the &#8220;Bot Invasion.&#8221;</p><p>Then, I found <strong>Granola</strong></p><h3>The &#8220;Invisible&#8221; Advantage: Why Granola is Different</h3><p>Unlike typical AI notetakers, <strong>Granola is a local app</strong>. It doesn&#8217;t join your call as a participant. It simply listens to your device audio, transcribing in the background while you stay 100% present in the conversation.</p><ul><li><p><strong>The "Ghost" Mode: </strong>No bot joins the call. Granola runs locally, capturing audio directly from your device. Because there is no "AI Notetaker" circle visible to others, the conversation remains natural and authentic. You get the real story, not the filtered version.</p></li><li><p><strong>Privacy First</strong>: Your data remains yours. Granola doesn&#8217;t store your audio&#8212;only the transcripts, which you control completely. This allows you to stop typing entirely and stay fully engaged in the meeting.</p></li><li><p><strong>Fully Focused</strong>: You don&#8217;t have to type a single word during the call. You can finally look your customers in the eye (digitally) and catch the nuance you&#8217;d usually miss while frantically taking notes.</p></li><li><p><strong>The Power of "Recipes"</strong>: Beyond being invisible, Granola allows you to build custom prompts&#8212;what they call "Recipes"&#8212;to automate your most tedious tasks.</p></li></ul><p>I know you&#8217;re already thinking about it: you want to copy my personal prompts. This is the #1 reason I&#8217;ve abandoned every other AI tool.</p><h3>No More Copy-Paste Fatigue</h3><p>The genius of Granola is its built-in AI chat. You don&#8217;t need to export text or juggle tabs with Claude or ChatGPT. You simply type &#8220;/&#8221; directly within your transcript to run a Recipe and get your output instantly.</p><p>&lt;video&gt;</p><h2><strong>Prompt 1: TLDR so-short-you-have-to-read it.</strong></h2><p>Default AI summaries are three paragraphs of nothing.</p><p>I need two bullets I&#8217;ll actually look at.</p><p>Link for direct access &#8594; <a href="https://recipes.granola.ai/r/7bc211bc-6278-4a78-a56b-d45630b72056">https://recipes.granola.ai/r/7bc211bc-6278-4a78-a56b-d45630b72056</a> But if you want to recreate it, here&#8217;s the exact prompt I use:</p><blockquote><p>You are summarizing a meeting for someone who is extremely busy and will only read something if it&#8217;s shockingly short. Your job is to distill the meeting provided into a single TLDR that is so brief, skipping it would feel ridiculous.</p><p>RULES:</p><ul><li><p>Maximum 2 bullet points total</p></li><li><p>Each bullet must be under 12 words</p></li><li><p>No fluff, greetings, or preamble</p></li><li><p>No &#8220;In summary...&#8221; or &#8220;Key takeaways include...&#8221; &#8212; just the points</p></li><li><p>Only include what actually matters: decisions made, actions required, or critical information</p></li><li><p>If nothing important happened, say &#8220;Nothing worth your time.&#8221;</p></li></ul><p>FORMAT:</p><ul><li><p>[Most important thing, the 80%]</p></li><li><p>[Second most important thing, the 20%]</p></li></ul><p>That&#8217;s it. Nothing else.</p></blockquote><p>What you get back:</p><ul><li><p>Aman owns the pricing proposal by Friday.</p></li><li><p>We&#8217;re not launching in Q1 anymore.</p></li></ul><p>That&#8217;s it. The meeting in ten seconds.</p><div><hr></div><h2><strong>Quick How-To for Granola Recipe.</strong></h2><p>How to create your own Granola Recipe:</p><ol><li><p>Go to your Granola account.</p></li><li><p>Go to the bottom left &#8220;<strong>Recipe</strong>&#8221;.</p></li><li><p>Click on &#8220;<strong>Create a Recipe on the top right</strong>&#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_!iO7k!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2373e00-8575-49e2-8fc8-1252bb6ab900_3024x1894.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iO7k!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2373e00-8575-49e2-8fc8-1252bb6ab900_3024x1894.png 424w, https://substackcdn.com/image/fetch/$s_!iO7k!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2373e00-8575-49e2-8fc8-1252bb6ab900_3024x1894.png 848w, https://substackcdn.com/image/fetch/$s_!iO7k!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2373e00-8575-49e2-8fc8-1252bb6ab900_3024x1894.png 1272w, https://substackcdn.com/image/fetch/$s_!iO7k!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2373e00-8575-49e2-8fc8-1252bb6ab900_3024x1894.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iO7k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2373e00-8575-49e2-8fc8-1252bb6ab900_3024x1894.png" width="3024" height="1894" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f2373e00-8575-49e2-8fc8-1252bb6ab900_3024x1894.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1894,&quot;width&quot;:3024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1292565,&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://news.adityeah.in/i/185815872?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dcf967c-eb7e-4ef9-bf4d-9826b162acc0_3024x1964.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_!iO7k!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2373e00-8575-49e2-8fc8-1252bb6ab900_3024x1894.png 424w, https://substackcdn.com/image/fetch/$s_!iO7k!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2373e00-8575-49e2-8fc8-1252bb6ab900_3024x1894.png 848w, https://substackcdn.com/image/fetch/$s_!iO7k!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2373e00-8575-49e2-8fc8-1252bb6ab900_3024x1894.png 1272w, https://substackcdn.com/image/fetch/$s_!iO7k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2373e00-8575-49e2-8fc8-1252bb6ab900_3024x1894.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>And then it&#8217;s quite simple.</p><ol><li><p>Type your <strong>name</strong> at the top (<em>you will access it with / </em>).</p></li><li><p>The <strong>prompt</strong> part is the most important one. Copy mine or do yours.</p></li><li><p>Select the model. My favorite is <strong>claude-opus-4-5</strong>.</p></li><li><p>Make it for <strong>single meetings</strong> or <strong>multi-meetings</strong>.</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_!RbqR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2d09886-1b4d-4585-993a-72d61e3fea48_2750x1806.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RbqR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2d09886-1b4d-4585-993a-72d61e3fea48_2750x1806.png 424w, https://substackcdn.com/image/fetch/$s_!RbqR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2d09886-1b4d-4585-993a-72d61e3fea48_2750x1806.png 848w, https://substackcdn.com/image/fetch/$s_!RbqR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2d09886-1b4d-4585-993a-72d61e3fea48_2750x1806.png 1272w, https://substackcdn.com/image/fetch/$s_!RbqR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2d09886-1b4d-4585-993a-72d61e3fea48_2750x1806.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RbqR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2d09886-1b4d-4585-993a-72d61e3fea48_2750x1806.png" width="1456" height="956" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f2d09886-1b4d-4585-993a-72d61e3fea48_2750x1806.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:956,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RbqR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2d09886-1b4d-4585-993a-72d61e3fea48_2750x1806.png 424w, https://substackcdn.com/image/fetch/$s_!RbqR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2d09886-1b4d-4585-993a-72d61e3fea48_2750x1806.png 848w, https://substackcdn.com/image/fetch/$s_!RbqR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2d09886-1b4d-4585-993a-72d61e3fea48_2750x1806.png 1272w, https://substackcdn.com/image/fetch/$s_!RbqR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2d09886-1b4d-4585-993a-72d61e3fea48_2750x1806.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>PS: If you struggle to make your own Recipe, <strong>leave a comment</strong>.</p><p>I&#8217;ll help you prompt it.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://news.adityeah.in/p/i-hate-ai-notetakers-tooso-i-found/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://news.adityeah.in/p/i-hate-ai-notetakers-tooso-i-found/comments"><span>Leave a comment</span></a></p><div><hr></div><h2><strong>Prompt 2: Action items, nothing more.</strong></h2><p>Default action items are vague. &#8220;<em>Follow up on discussion.</em>&#8221;</p><p>Follow up on what? With who? By when?</p><p>I made a Recipe for that. My action items, nothing more.</p><p>The link for direct access &#8594; <a href="https://recipes.granola.ai/r/43347a99-e934-4972-8a88-cef1b9c7b27d">https://recipes.granola.ai/r/43347a99-e934-4972-8a88-cef1b9c7b27d</a></p><p> Or here&#8217;s the exact prompt of my Recipe:</p><blockquote><p>You are reviewing a meeting to extract action items assigned to a specific person. Your job: Find and list of the action items assigned to the people the user will mention. It could be multiple people.</p><p>Rules:</p><p>- Output action items as bullet points only</p><p>- No introduction, greeting, summary, or closing remarks</p><p>- No headers or section titles</p><p>- If an action item has a deadline mentioned, include it in parentheses at the end</p><p>Example of an output format:</p><p>[name]</p><p>- Send the updated contract to legal (by Thursday)</p><p>- Book the venue for the offsite</p><p>- Review David&#8217;s proposal and share feedback</p><p>- Circle back with the client about pricing</p></blockquote><p>Now I know exactly what I owe. Just what was actually said.</p><div><hr></div><h2><strong>The &#8220;</strong><em><strong>I never forget meeting</strong></em><strong>&#8221; workflow.</strong></h2><ol><li><p>Meeting starts.</p></li><li><p>Granola takes notes on the background.</p></li><li><p>Meeting ends.</p></li><li><p>Open Granola.</p></li><li><p>Type &#8220;/&#8221; &#8594; run the TLDR prompt &#8594; 2 bullets essence.</p></li><li><p>Type &#8220;/&#8221; &#8594; run the action items prompt &#8594; copy to Slack or Notion.</p></li><li><p>Done.</p></li></ol><p>Two minutes. Every meeting.</p><p>No more &#8220;<em>wait, what did we decide?</em>&#8221;</p><p>You finally remember more than 30% after a day.</p><p>And you can still hate on AI notetakers bots. Shame them, really.</p><p><em>If you agree, say it louder in the comments.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://news.adityeah.in/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Adityeah&#8217;s Newsletter is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[How to build AI that feels Intelligent? RAG vs Fine-tuning vs Prompt Engineering]]></title><description><![CDATA[Context Engineering- Part 2]]></description><link>https://news.adityeah.in/p/how-to-build-ai-that-feels-intelligent-856</link><guid isPermaLink="false">https://news.adityeah.in/p/how-to-build-ai-that-feels-intelligent-856</guid><dc:creator><![CDATA[Aditya]]></dc:creator><pubDate>Sat, 07 Feb 2026 07:32:23 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/c6072a0f-b4da-424a-a4fd-2d1abf2a60c5_2500x1581.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7Zv3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeb0be17-83ab-4fe5-9f58-ed917873e554_1024x1404.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7Zv3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeb0be17-83ab-4fe5-9f58-ed917873e554_1024x1404.png 424w, https://substackcdn.com/image/fetch/$s_!7Zv3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeb0be17-83ab-4fe5-9f58-ed917873e554_1024x1404.png 848w, https://substackcdn.com/image/fetch/$s_!7Zv3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeb0be17-83ab-4fe5-9f58-ed917873e554_1024x1404.png 1272w, https://substackcdn.com/image/fetch/$s_!7Zv3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeb0be17-83ab-4fe5-9f58-ed917873e554_1024x1404.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7Zv3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeb0be17-83ab-4fe5-9f58-ed917873e554_1024x1404.png" width="1024" height="1404" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eeb0be17-83ab-4fe5-9f58-ed917873e554_1024x1404.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1404,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2274412,&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://news.adityeah.in/i/178360424?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9a11bfc-7679-42f4-af48-69fde320fabc_1024x1536.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_!7Zv3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeb0be17-83ab-4fe5-9f58-ed917873e554_1024x1404.png 424w, https://substackcdn.com/image/fetch/$s_!7Zv3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeb0be17-83ab-4fe5-9f58-ed917873e554_1024x1404.png 848w, https://substackcdn.com/image/fetch/$s_!7Zv3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeb0be17-83ab-4fe5-9f58-ed917873e554_1024x1404.png 1272w, https://substackcdn.com/image/fetch/$s_!7Zv3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feeb0be17-83ab-4fe5-9f58-ed917873e554_1024x1404.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>We can all come up with great ideas for LLMs to enhance our products, but <strong>the devil is in the details</strong>:</p><ul><li><p>How do we get our AI to adopt a <em>very specific writing style</em>?</p></li><li><p>How do we get our AI to <em>use our latest product documentation</em>?</p></li><li><p>What&#8217;s the <em>fastest way to test an AI concept</em> and get it into users&#8217; hands for feedback?</p></li></ul><p>These aren&#8217;t just technical questions. They&#8217;re strategic product decisions.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://news.adityeah.in/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Adityeah&#8217;s Newsletter! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Everyone can access powerful foundation models like GPT-4.5 or Claude Opus 4. So, what&#8217;s going to make <em>your</em> AI feature stand out?</p><p><em>Hint</em>: It&#8217;s not just about having &#8216;AI&#8217;.</p><p>It&#8217;s about making that AI uniquely <em>yours</em> and genuinely useful.</p><div class="pullquote"><p>Before we dive into these technical execution details, make sure your foundation is solid. I highly recommend starting with <strong><a href="https://news.adityeah.in/p/how-to-build-ai-that-feels-intelligent">How to build AI that feels Intelligent?- Context Engineering Part 1</a></strong>, so you can master the core philosophy before tackling the strategy below.</p></div><h3><strong>The 3 Approaches to Optimizing AI</strong></h3><p>Base LLMs are like brilliant interns: incredibly capable, but they don&#8217;t know your company&#8217;s specific jargon, your proprietary data, or the nuanced style your customers expect.</p><p>Leaving them &#8220;off-the-shelf&#8221; often leads to:</p><ul><li><p>Hallucinations &amp; Generic Answers</p></li><li><p>Lack of Domain Expertise</p></li><li><p>Inconsistent Brand Voice</p></li></ul><p>You have three major ways to address these problems:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KPJ5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4cecb4c-21f4-4520-ac8c-3c8e6b8dcd41_1024x1433.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KPJ5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4cecb4c-21f4-4520-ac8c-3c8e6b8dcd41_1024x1433.png 424w, https://substackcdn.com/image/fetch/$s_!KPJ5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4cecb4c-21f4-4520-ac8c-3c8e6b8dcd41_1024x1433.png 848w, https://substackcdn.com/image/fetch/$s_!KPJ5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4cecb4c-21f4-4520-ac8c-3c8e6b8dcd41_1024x1433.png 1272w, https://substackcdn.com/image/fetch/$s_!KPJ5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4cecb4c-21f4-4520-ac8c-3c8e6b8dcd41_1024x1433.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KPJ5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4cecb4c-21f4-4520-ac8c-3c8e6b8dcd41_1024x1433.png" width="1024" height="1433" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a4cecb4c-21f4-4520-ac8c-3c8e6b8dcd41_1024x1433.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1433,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2420270,&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://news.adityeah.in/i/178360424?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1987919-c013-485a-b3e8-8ad1d0d333bc_1024x1536.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_!KPJ5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4cecb4c-21f4-4520-ac8c-3c8e6b8dcd41_1024x1433.png 424w, https://substackcdn.com/image/fetch/$s_!KPJ5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4cecb4c-21f4-4520-ac8c-3c8e6b8dcd41_1024x1433.png 848w, https://substackcdn.com/image/fetch/$s_!KPJ5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4cecb4c-21f4-4520-ac8c-3c8e6b8dcd41_1024x1433.png 1272w, https://substackcdn.com/image/fetch/$s_!KPJ5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4cecb4c-21f4-4520-ac8c-3c8e6b8dcd41_1024x1433.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>RAG (</strong>Retrieval Augmented Generation)</p><p><em>Have a model do a search to enhance its results with information not in its training data set, then incorporate those findings into its answer</em></p></li><li><p><strong>Fine-tuning</strong></p><p><em>Specializing a model based on information</em></p></li><li><p><strong>Prompt engineering</strong></p><p><em>Better specifying what you&#8217;re looking for from the model</em></p></li></ol><p>The question is: when should you use each, and why?</p><p>Today, we&#8217;re breaking down the <strong>definitive framework</strong> for choosing between prompt engineering, RAG, and fine-tuning.</p><div><hr></div><h2><strong>Today&#8217;s Post</strong></h2><p><em>We&#8217;re going to give you the context, decision frameworks, and a practical step-by-step walkthrough to help you build the intuition. Once you build each on your own, you&#8217;ll have that AI engineer level knowledge to speak with them confidently:</em></p><ol><li><p>Mistakes</p></li><li><p>Pros and Cons</p></li><li><p>Decision Framework</p></li></ol><p><em>Think of this post more like a course-lesson where you have to follow along than an article.</em></p><div><hr></div><pre><code><code>TL;DR: Start with prompt engineering (hours/days), escalate to RAG when you need real-time data ($70-1000/month), and only use fine-tuning when you need deep specialization (months + 6x inference costs).</code></code></pre><div><hr></div><h2><strong>1. The 3 Major Mistakes We See</strong></h2><p><em>Let&#8217;s start by understanding what not to do, then build up to the right approach.</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!U0f-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f2f01e5-00e3-4dcf-9398-63c3476ed38b_1024x1218.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!U0f-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f2f01e5-00e3-4dcf-9398-63c3476ed38b_1024x1218.png 424w, https://substackcdn.com/image/fetch/$s_!U0f-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f2f01e5-00e3-4dcf-9398-63c3476ed38b_1024x1218.png 848w, https://substackcdn.com/image/fetch/$s_!U0f-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f2f01e5-00e3-4dcf-9398-63c3476ed38b_1024x1218.png 1272w, https://substackcdn.com/image/fetch/$s_!U0f-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f2f01e5-00e3-4dcf-9398-63c3476ed38b_1024x1218.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!U0f-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f2f01e5-00e3-4dcf-9398-63c3476ed38b_1024x1218.png" width="1024" height="1218" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1f2f01e5-00e3-4dcf-9398-63c3476ed38b_1024x1218.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1218,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2096454,&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://news.adityeah.in/i/178360424?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd35baa6d-e8ce-4e16-9dbb-7830736d8177_1024x1536.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_!U0f-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f2f01e5-00e3-4dcf-9398-63c3476ed38b_1024x1218.png 424w, https://substackcdn.com/image/fetch/$s_!U0f-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f2f01e5-00e3-4dcf-9398-63c3476ed38b_1024x1218.png 848w, https://substackcdn.com/image/fetch/$s_!U0f-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f2f01e5-00e3-4dcf-9398-63c3476ed38b_1024x1218.png 1272w, https://substackcdn.com/image/fetch/$s_!U0f-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f2f01e5-00e3-4dcf-9398-63c3476ed38b_1024x1218.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3><strong>The Strategic Imperative</strong></h3><p>The truth? There&#8217;s a strategic choice between Prompt Engineering, RAG, and Fine-Tuning.</p><p>Choosing RIGHT? That&#8217;s your path to AI-driven product growth.</p><p>Too often, teams jump to:</p><ol><li><p><strong>Over-engineering:</strong> &#8220;Let&#8217;s fine-tune a massive model!&#8221;</p><p>(Costly, time-consuming, maybe overkill)</p></li><li><p><strong>Under-powering:</strong> &#8220;We&#8217;ll just tweak the prompt a bit more.&#8221;</p><p>(Hits a ceiling, can&#8217;t handle complex needs or new data)</p></li><li><p><strong>The &#8220;Black Box&#8221; Hope:</strong> &#8220;We&#8217;ll plug in an API and hope for the best.&#8221;</p><p>(Lacks control, struggles with proprietary knowledge)</p></li></ol><p>The truth is, there&#8217;s a strategic choice to be made between <strong>Prompt Engineering</strong>, <strong>Retrieval Augmented Generation (RAG)</strong>, and <strong>Fine-Tuning</strong>.</p><p>Choosing wrong means wasted cycles, blown budgets, and features that underwhelm.</p><p>Choosing right? That&#8217;s your path to AI-driven product growth.</p><p><em>This article is your map.</em></p><div><hr></div><h2><strong>2. Pros and Cons: RAG vs. Fine-tuning vs. Prompt Engineering</strong></h2><p>Let&#8217;s start by understanding each of the three techniques at a deep conceptual level and discuss their pros and cons.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8B9x!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0c937c1-3515-4fbd-a175-365e74e7b944_1024x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8B9x!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0c937c1-3515-4fbd-a175-365e74e7b944_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!8B9x!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0c937c1-3515-4fbd-a175-365e74e7b944_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!8B9x!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0c937c1-3515-4fbd-a175-365e74e7b944_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!8B9x!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0c937c1-3515-4fbd-a175-365e74e7b944_1024x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8B9x!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0c937c1-3515-4fbd-a175-365e74e7b944_1024x1536.png" width="1024" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e0c937c1-3515-4fbd-a175-365e74e7b944_1024x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2125185,&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://news.adityeah.in/i/178360424?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0c937c1-3515-4fbd-a175-365e74e7b944_1024x1536.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_!8B9x!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0c937c1-3515-4fbd-a175-365e74e7b944_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!8B9x!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0c937c1-3515-4fbd-a175-365e74e7b944_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!8B9x!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0c937c1-3515-4fbd-a175-365e74e7b944_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!8B9x!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0c937c1-3515-4fbd-a175-365e74e7b944_1024x1536.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3><strong>Prompt Engineering</strong></h3><p>As upcoming podcast guest Hamel Husain says:</p><blockquote><blockquote><p><em>Prompt engineering is just prompting these days.</em></p></blockquote></blockquote><p>We all have to prompt, but when it comes to building the right prompt for your product feature, prompt engineering is critical.</p><p>It goes beyond simple clarification. It&#8217;s about transforming the model&#8217;s output with additional training or data retrieval. It&#8217;s about better activating a model&#8217;s existing capabilities.</p><p><strong>Pros:</strong></p><ul><li><p>You don&#8217;t need to change backend infrastructure</p></li><li><p>You get to see immediate responses and results to what you do - no new training data or data processing required</p></li></ul><p><strong>Cons:</strong></p><ul><li><p>Trial and error - it&#8217;s as much an art as a science</p></li><li><p>You&#8217;re limited to the model&#8217;s existing knowledge, unable to add new or proprietary data</p></li></ul><h3><strong>Fine-tuning</strong></h3><p>Fine-tuning takes an existing foundation model and gives it specialized &#8216;graduate-level&#8217; training on a focused dataset relevant to <em>your</em> specific needs.</p><p>You&#8217;re subtly adjusting the model&#8217;s internal &#8216;weights&#8217; (its understanding of relationships in data) to make it an expert in a particular domain, style, or task.</p><p>This typically involves providing hundreds or thousands of high-quality input-output examples.</p><p><strong>Pros:</strong></p><ul><li><p>Great when you need deep domain expertise or consistent tone/style</p></li><li><p>Faster at inference time than RAG because it doesn&#8217;t need to search through external data and don&#8217;t need to maintain a separate vector database</p></li></ul><p><strong>Cons:</strong></p><ul><li><p>Issues with the training complexity - need 1000s of examples</p></li><li><p>There are significant computational and maintenance costs involved</p></li><li><p>You risk &#8220;catastrophic forgetting,&#8221; where the model loses some general capabilities as it becomes more specialized</p></li></ul><h3><strong>RAG</strong></h3><p>Retrieval Augmented Generation is like giving your LLM real-time access to a specific, curated library of information &#8211; your product docs, a knowledge base, recent news, etc.</p><p>When a user asks a question, the RAG system first <em>retrieves</em> relevant snippets from this external library and then feeds that context to the LLM along with the original query.</p><p>The LLM then uses this fresh, targeted information to generate its answer.</p><p><strong>Pros:</strong></p><ul><li><p>Good for up-to-date information</p></li><li><p>Good for adding domain-specific information</p></li></ul><p><strong>Cons:</strong></p><ul><li><p>Performance impact - retrieval adds latency to each prompt (typically 100-500ms)</p></li><li><p>Processing costs - eg for the vector database</p></li></ul><p><em>Ready to add more context to this? We highly recommend staying around for section 4 - where we walk you step-by-step through all 3 so you can have a great addition to your PM portfolio and learn the intuition behind this.</em></p><div><hr></div><h2><strong>3. Decision Framework</strong></h2><p>Now comes the <strong>million-dollar question</strong>: <em>how do you actually decide which one to use, and when?</em></p><p><em>This is our battle-tested framework after learning from case studies at Shopify, Google, Apollo, and OpenAI:</em></p><h4><strong>The Million-Dollar Mistake Most Teams Make</strong></h4><p>Here&#8217;s the uncomfortable truth, the one that burns through budgets and timelines faster than a poorly optimized LLM: <strong>Teams reflexively jump to the most complex solution.</strong></p><p>Fine-tuning sounds sophisticated, like you&#8217;re truly &#8216;building AI.&#8217;</p><p>RAG systems feel robust, like you&#8217;re tackling data head-on.</p><p>So, engineers get excited, data scientists propose intricate architectures, and <strong>suddenly, you&#8217;re six months deep into a project that could have delivered value in six weeks</strong>.</p><p>Worst of all? They try to do <em>everything at once</em>.</p><p>At Shopify, we&#8217;ve seen this play out firsthand with &#8216;Auto Write,&#8217; their AI content generation feature.</p><p>The initial internal buzz was all about fine-tuning GPT-3. Data science was already sketching out a sophisticated RAG system. Everyone had a strong opinion, usually leaning towards the most technically challenging path.</p><h4><strong>What </strong><em><strong>actually</strong></em><strong> worked? What shipped and delivered value?</strong></h4><p>They started with disciplined prompt engineering. Simple, direct, and focused.</p><p>The result?</p><p>They shipped a high-accuracy feature in <strong>10 weeks</strong>.</p><p>The fancy, more complex approaches like RAG and fine-tuning came <em>later</em> &#8211; much later &#8211; only <em>after</em> they had validated the core user problem and proven the initial value with the simplest effective method.</p><p>The lesson is: <strong>don&#8217;t let the allure of complexity derail your path to impact</strong>.</p><h4><strong>Our Practical Decision Framework: Your Step-by-Step Guide</strong></h4><p>How do you avoid the &#8216;Million-Dollar Mistake&#8217; and make the <em>right</em> call? Here&#8217;s the battle-tested decision framework Miqdad and I 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_!ggsW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc21ca300-a777-462b-9452-400ab313e6ae_1024x1374.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ggsW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc21ca300-a777-462b-9452-400ab313e6ae_1024x1374.png 424w, https://substackcdn.com/image/fetch/$s_!ggsW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc21ca300-a777-462b-9452-400ab313e6ae_1024x1374.png 848w, https://substackcdn.com/image/fetch/$s_!ggsW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc21ca300-a777-462b-9452-400ab313e6ae_1024x1374.png 1272w, https://substackcdn.com/image/fetch/$s_!ggsW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc21ca300-a777-462b-9452-400ab313e6ae_1024x1374.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ggsW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc21ca300-a777-462b-9452-400ab313e6ae_1024x1374.png" width="1024" height="1374" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c21ca300-a777-462b-9452-400ab313e6ae_1024x1374.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1374,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2375338,&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://news.adityeah.in/i/178360424?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68efd2ea-9776-4e03-80d1-8c0877956f78_1024x1536.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_!ggsW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc21ca300-a777-462b-9452-400ab313e6ae_1024x1374.png 424w, https://substackcdn.com/image/fetch/$s_!ggsW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc21ca300-a777-462b-9452-400ab313e6ae_1024x1374.png 848w, https://substackcdn.com/image/fetch/$s_!ggsW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc21ca300-a777-462b-9452-400ab313e6ae_1024x1374.png 1272w, https://substackcdn.com/image/fetch/$s_!ggsW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc21ca300-a777-462b-9452-400ab313e6ae_1024x1374.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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 walk through the logic.</p><h4><strong>Step 1: Nail Your Use Case</strong></h4><p>Before you write a single line of code or craft a prompt, ask yourself: Is the user problem you&#8217;re aiming to solve with AI crystal clear? Do you know precisely who this is for and what a &#8220;win&#8221; looks like from their perspective?</p><p>Vague goals breed vague AI &#8211; features that meander, require endless tweaks, and ultimately, satisfy no one.</p><p>&#8220;AI for sales&#8221; isn&#8217;t a strategy; &#8220;AI to draft personalized follow-up emails for SMB sales reps based on CRM interaction history&#8221; is getting warmer.</p><p>If your use case is fuzzy, <strong>stop.</strong> Seriously. Hammer out the problem definition, user stories, and key success metrics.</p><p>This isn&#8217;t just a nice-to-have; it&#8217;s the non-negotiable foundation. Only once your target is sharp should you proceed.</p><h4><strong>Step 2: The Prompt Engineering Gauntlet</strong></h4><p>With a clear use case, your first port of call is <em>always</em> prompt engineering. Can you get to roughly 80% of your desired outcome with well-crafted prompts alone?</p><p>This is where you test your MVP or prototype ideas. It&#8217;s your fastest, cheapest way to see what the base model is capable of.</p><p>Don&#8217;t underestimate what good prompting can achieve.</p><p>But also, don&#8217;t fall into the trap of spending months trying to coax magic out of prompts for a task that fundamentally needs more.</p><p>Give yourself a tight timebox &#8211; say, one to two weeks max of dedicated effort &#8211; to explore this. If you hit that 80% mark, fantastic! Ship it. Get it in front of users, gather feedback, and iterate.</p><h4><strong>Step 3: The Data Question &#8211; Does Your AI Need a Live Feed?</strong></h4><p>If prompts alone aren&#8217;t cutting it, the next question is about data.</p><p>Does your AI feature <em>absolutely depend</em> on information the base model couldn&#8217;t possibly know? Think: data that changes by the minute, your company&#8217;s latest internal product documentation, or user-specific context.</p><p>Trying to &#8220;teach&#8221; an LLM constantly shifting facts through fine-tuning is like trying to fill a leaky bucket &#8211; slow and inefficient.</p><p>And while prompts can handle small bits of context, they can&#8217;t effectively inject vast, ever-changing datasets.</p><p>If your AI needs to be current and deeply aware of <em>your</em> specific, evolving world, then <strong>RAG (Retrieval Augmented Generation)</strong> is your answer.</p><p>It gives your LLM a live connection to the knowledge it needs, precisely when it needs it. If external data isn&#8217;t the core issue, your challenge likely lies in shaping the model&#8217;s inherent behavior or style.</p><h4><strong>Step 4: The Fine-Tuning Fuel Check &#8211; Got Quality Data?</strong></h4><p>So, prompts weren&#8217;t enough, and external data access (RAG) isn&#8217;t the primary bottleneck.</p><p>You&#8217;re now likely looking to instill a very specific style, tone, or a complex, nuanced understanding that goes beyond simple information retrieval.</p><p>This is often the case for achieving high volume and consistency in outputs, or for tackling enterprise-level tasks demanding sophisticated pattern recognition.</p><p>Welcome to the doorstep of fine-tuning.</p><p>But before you step through, check your fuel tank. Do you have at least a thousand (and often many more) <em>high-quality</em> training examples?</p><p>These aren&#8217;t just any examples; they need to be carefully curated, accurate input-output pairs that perfectly demonstrate the desired behavior you want the model to learn.</p><p>Fine-tuning with a handful of examples, or with messy, low-quality data, is a recipe for disaster.</p><p>Garbage in, garbage out is brutally amplified here. If you don&#8217;t have this data, your immediate focus should be on collecting and curating it, even while you continue to iterate with prompts or RAG.</p><h4><strong>Step 5: The ROI Litmus Test for Fine-Tuning</strong></h4><p>You&#8217;ve got the data. The need seems clear. But now, the crucial business question: Is the return on investment for fine-tuning undeniably compelling?</p><p>Fine-tuning &#8220;because we can&#8221; or because it sounds impressive on a slide deck is how innovation budgets die a quiet death. The bar should be high.</p><p>If the value proposition isn&#8217;t screamingly obvious, it&#8217;s probably not the right time. Stick with your refined prompt and RAG setup. Re-evaluate later when the case is stronger.</p><p>But if the data, the need, and the ROI all align? Then you&#8217;ve earned the right to strategically deploy this powerful, resource-intensive technique.</p><h4><strong>The Core Philosophy: Start Simple, Add Complexity Deliberately</strong></h4><p>The takeaway here isn&#8217;t subtle: <strong>Always start with the simplest approach that </strong><em><strong>could</strong></em><strong> work.</strong></p><p>Prompt engineering is your first, best friend. Only escalate to RAG or fine-tuning when the problem genuinely demands it, and you can clearly articulate the business case for the added complexity and cost.</p><p>Stay tuned for Part 3&#8230;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://news.adityeah.in/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Adityeah&#8217;s Newsletter! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The Actual Problem is Happiness: Using AI to Heal, Not Just Distract]]></title><description><![CDATA[How I built a Multi-Agent System that Optimizes for happiness and prioritize mental wellbeing?]]></description><link>https://news.adityeah.in/p/the-actual-problem-is-happiness-using</link><guid isPermaLink="false">https://news.adityeah.in/p/the-actual-problem-is-happiness-using</guid><dc:creator><![CDATA[Aditya]]></dc:creator><pubDate>Wed, 31 Dec 2025 12:50:01 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Dv28!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F225bc1ab-fce0-4577-acb7-b7dcf514bff6_1122x1032.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A while back, I wrote a post on LinkedIn that seemed to resonate with a lot of you. I was looking at the startup ecosystem and realized something unsettling: <strong>We have become experts at solving temporary problems.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.linkedin.com/posts/adityacbcc_happiness-humanizingbusiness-therapy-activity-7161262847186890753-6T0R?utm_source=share&amp;utm_medium=member_desktop&amp;rcm=ACoAACkUuUoBVkPGm7h1fIdM1Uq6pTVSEc-GQ3w" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Dv28!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F225bc1ab-fce0-4577-acb7-b7dcf514bff6_1122x1032.png 424w, https://substackcdn.com/image/fetch/$s_!Dv28!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F225bc1ab-fce0-4577-acb7-b7dcf514bff6_1122x1032.png 848w, https://substackcdn.com/image/fetch/$s_!Dv28!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F225bc1ab-fce0-4577-acb7-b7dcf514bff6_1122x1032.png 1272w, https://substackcdn.com/image/fetch/$s_!Dv28!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F225bc1ab-fce0-4577-acb7-b7dcf514bff6_1122x1032.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Dv28!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F225bc1ab-fce0-4577-acb7-b7dcf514bff6_1122x1032.png" width="727.998046875" height="669.6024816176471" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/225bc1ab-fce0-4577-acb7-b7dcf514bff6_1122x1032.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:1032,&quot;width&quot;:1122,&quot;resizeWidth&quot;:727.998046875,&quot;bytes&quot;:1494532,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://www.linkedin.com/posts/adityacbcc_happiness-humanizingbusiness-therapy-activity-7161262847186890753-6T0R?utm_source=share&amp;utm_medium=member_desktop&amp;rcm=ACoAACkUuUoBVkPGm7h1fIdM1Uq6pTVSEc-GQ3w&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://news.adityeah.in/i/183030898?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F225bc1ab-fce0-4577-acb7-b7dcf514bff6_1122x1032.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Dv28!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F225bc1ab-fce0-4577-acb7-b7dcf514bff6_1122x1032.png 424w, https://substackcdn.com/image/fetch/$s_!Dv28!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F225bc1ab-fce0-4577-acb7-b7dcf514bff6_1122x1032.png 848w, https://substackcdn.com/image/fetch/$s_!Dv28!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F225bc1ab-fce0-4577-acb7-b7dcf514bff6_1122x1032.png 1272w, https://substackcdn.com/image/fetch/$s_!Dv28!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F225bc1ab-fce0-4577-acb7-b7dcf514bff6_1122x1032.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">Click to read the full discussion on LinkedIn</figcaption></figure></div><p>We have mastered instant home deliveries. We have solved door-to-door travel. We have built entire industries around helping people earn and save money.</p><p><strong>But what happens after we save that time?</strong></p><p>Often, a second wave of companies&#8212;social media, endless streaming, doom-scrolling apps&#8212;sweeps in to capture that &#8220;saved&#8221; time. </p><blockquote><p><em><strong>We saved minutes on groceries only to lose hours to distraction.</strong></em></p></blockquote><p>Even education companies, which promise better careers and higher salaries, often result in corporate friends who are burnt out and unhappy.</p><blockquote><p><strong>The actual problem isn&#8217;t efficiency. It&#8217;s happiness.</strong> </p></blockquote><p>And frankly, most technology today doesn&#8217;t know how to solve that.</p><p>In that post, I suggested three starting points to fix this:</p><ol><li><p><strong>Mental Therapy</strong> (Access to care)</p></li><li><p><strong>Humanizing Business</strong> (Empathy in work)</p></li><li><p><strong>Tech Empowerment</strong> (Tools that heal rather than distract)</p></li></ol><p>Today, I want to talk about that third point: <strong>Tech Empowerment.</strong></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://news.adityeah.in/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://news.adityeah.in/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><h3><strong>Building the Solution</strong></h3><p>As we step into the New Year, I didn&#8217;t want to just make resolutions. I wanted to build a tool that helps keep them.</p><p>I realized that while I cannot replace a human therapist, I <em>can</em> use the latest advancements in AI agents to make support more accessible, immediate, and structured.</p><p>This week, I built a <strong>Multi-Agent Mental Wellbeing System</strong>.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;b0c07d7b-2c23-4924-b93e-d1f4c25aae53&quot;,&quot;duration&quot;:null}"></div><p></p><p>Unlike a standard chatbot that gives you generic advice, this system mimics a supportive care team. <em><strong>It is designed to help you deal with the chaos of life&#8212;whether it&#8217;s job stress, relationship anxiety, or just that overwhelming feeling that comes with a new year.</strong></em></p><h3><strong>How It Works (and How It Helps You)</strong></h3><p>The tool isn&#8217;t just one AI; it is a &#8220;swarm&#8221; of three specialized agents working together to support you:</p><p><strong>1. The Listener (Assessment Agent):</strong> We often just need to be heard. This agent doesn&#8217;t try to &#8220;fix&#8221; you immediately. It listens. It analyzes your emotional state, sleep patterns, and stress levels to understand exactly where you are standing 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_!cADf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ef2a4e2-b50e-48db-85e3-9c2a2af88aff_3000x1620.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cADf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ef2a4e2-b50e-48db-85e3-9c2a2af88aff_3000x1620.png 424w, https://substackcdn.com/image/fetch/$s_!cADf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ef2a4e2-b50e-48db-85e3-9c2a2af88aff_3000x1620.png 848w, https://substackcdn.com/image/fetch/$s_!cADf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ef2a4e2-b50e-48db-85e3-9c2a2af88aff_3000x1620.png 1272w, https://substackcdn.com/image/fetch/$s_!cADf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ef2a4e2-b50e-48db-85e3-9c2a2af88aff_3000x1620.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cADf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ef2a4e2-b50e-48db-85e3-9c2a2af88aff_3000x1620.png" width="1456" height="786" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9ef2a4e2-b50e-48db-85e3-9c2a2af88aff_3000x1620.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:786,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:419637,&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://news.adityeah.in/i/183030898?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ef2a4e2-b50e-48db-85e3-9c2a2af88aff_3000x1620.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_!cADf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ef2a4e2-b50e-48db-85e3-9c2a2af88aff_3000x1620.png 424w, https://substackcdn.com/image/fetch/$s_!cADf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ef2a4e2-b50e-48db-85e3-9c2a2af88aff_3000x1620.png 848w, https://substackcdn.com/image/fetch/$s_!cADf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ef2a4e2-b50e-48db-85e3-9c2a2af88aff_3000x1620.png 1272w, https://substackcdn.com/image/fetch/$s_!cADf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ef2a4e2-b50e-48db-85e3-9c2a2af88aff_3000x1620.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>2. The Helper (Action Agent): </strong> Once you&#8217;ve been heard, you need clarity. This agent cuts through the noise. It provides immediate, concrete steps&#8212;whether that&#8217;s a breathing exercise for right now or a resource to call tomorrow. It turns anxiety into action.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zcph!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55664cf2-2a4f-422a-82b1-6c1e93d05435_2994x1440.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zcph!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55664cf2-2a4f-422a-82b1-6c1e93d05435_2994x1440.png 424w, https://substackcdn.com/image/fetch/$s_!zcph!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55664cf2-2a4f-422a-82b1-6c1e93d05435_2994x1440.png 848w, https://substackcdn.com/image/fetch/$s_!zcph!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55664cf2-2a4f-422a-82b1-6c1e93d05435_2994x1440.png 1272w, https://substackcdn.com/image/fetch/$s_!zcph!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55664cf2-2a4f-422a-82b1-6c1e93d05435_2994x1440.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zcph!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55664cf2-2a4f-422a-82b1-6c1e93d05435_2994x1440.png" width="1456" height="700" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/55664cf2-2a4f-422a-82b1-6c1e93d05435_2994x1440.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;:633075,&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://news.adityeah.in/i/183030898?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55664cf2-2a4f-422a-82b1-6c1e93d05435_2994x1440.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_!zcph!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55664cf2-2a4f-422a-82b1-6c1e93d05435_2994x1440.png 424w, https://substackcdn.com/image/fetch/$s_!zcph!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55664cf2-2a4f-422a-82b1-6c1e93d05435_2994x1440.png 848w, https://substackcdn.com/image/fetch/$s_!zcph!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55664cf2-2a4f-422a-82b1-6c1e93d05435_2994x1440.png 1272w, https://substackcdn.com/image/fetch/$s_!zcph!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55664cf2-2a4f-422a-82b1-6c1e93d05435_2994x1440.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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></p><p><strong>3. The Partner (Follow-up Agent): </strong> This is the piece most tech misses. We don&#8217;t just need a quick fix; we need a lifestyle change. This agent builds a long-term strategy for you, focusing on habits and sustainable routines.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!L7au!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F392b36fc-4e00-43e0-a6a0-c4b598e72a15_2964x1614.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!L7au!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F392b36fc-4e00-43e0-a6a0-c4b598e72a15_2964x1614.png 424w, https://substackcdn.com/image/fetch/$s_!L7au!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F392b36fc-4e00-43e0-a6a0-c4b598e72a15_2964x1614.png 848w, https://substackcdn.com/image/fetch/$s_!L7au!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F392b36fc-4e00-43e0-a6a0-c4b598e72a15_2964x1614.png 1272w, https://substackcdn.com/image/fetch/$s_!L7au!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F392b36fc-4e00-43e0-a6a0-c4b598e72a15_2964x1614.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!L7au!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F392b36fc-4e00-43e0-a6a0-c4b598e72a15_2964x1614.png" width="1456" height="793" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/392b36fc-4e00-43e0-a6a0-c4b598e72a15_2964x1614.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:793,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:646983,&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://news.adityeah.in/i/183030898?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F392b36fc-4e00-43e0-a6a0-c4b598e72a15_2964x1614.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_!L7au!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F392b36fc-4e00-43e0-a6a0-c4b598e72a15_2964x1614.png 424w, https://substackcdn.com/image/fetch/$s_!L7au!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F392b36fc-4e00-43e0-a6a0-c4b598e72a15_2964x1614.png 848w, https://substackcdn.com/image/fetch/$s_!L7au!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F392b36fc-4e00-43e0-a6a0-c4b598e72a15_2964x1614.png 1272w, https://substackcdn.com/image/fetch/$s_!L7au!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F392b36fc-4e00-43e0-a6a0-c4b598e72a15_2964x1614.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3><strong>A Tool for the New Year</strong></h3><p>The New Year is often a source of pressure. We set massive goals and feel like failures by February.</p><p>I want this agent to be a tool for <strong>resilience</strong>, not just productivity. It is an example of technology that doesn&#8217;t demand your attention but supports your intention.</p><p>If you are feeling the weight of the world, or just the weight of a hectic job, give it a try. Let&#8217;s use technology to reclaim not just our time, but our peace of mind.</p><p>Here&#8217;s to a happier, healthier, and more empowered 2026.</p><p><strong>Adityeah</strong></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://news.adityeah.in/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://news.adityeah.in/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><h3><strong>P.S. For the Builders</strong></h3><p>For those interested in the architecture, this system uses <strong>AG2 (formerly AutoGen)</strong> to orchestrate the agents. By separating &#8220;Empathy&#8221; (Assessment) from &#8220;Logic&#8221; (Action), we drastically reduce hallucinations and improve the quality of care.</p><p>You can check out the open-source code here: </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://github.com/edityeah/ai_mental_wellbeing_agent.git&quot;,&quot;text&quot;:&quot;GitHib Link&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://github.com/edityeah/ai_mental_wellbeing_agent.git"><span>GitHib Link</span></a></p>]]></content:encoded></item><item><title><![CDATA[How to build AI that feels Intelligent? ]]></title><description><![CDATA[Context Engineering- Part 1]]></description><link>https://news.adityeah.in/p/how-to-build-ai-that-feels-intelligent</link><guid isPermaLink="false">https://news.adityeah.in/p/how-to-build-ai-that-feels-intelligent</guid><dc:creator><![CDATA[Aditya]]></dc:creator><pubDate>Thu, 18 Dec 2025 18:15:14 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/92e85272-2375-43d8-ad23-88d21dcbf149_2831x1563.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>AI products today live in two worlds.</p><p>In one world, the tech has never been better. Chips are faster, models are stronger, and building AI features is easier than ever.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://news.adityeah.in/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Adityeah&#8217;s Newsletter! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>In the other world, the features we ship often fall short. Many AI tools still feel like junior interns&#8212;helpful at times, but needing guidance and making mistakes you don&#8217;t expect.</p><p>And most of the time, the issue isn&#8217;t the model itself. It&#8217;s the context we give it.</p><p>That&#8217;s why context engineering matters. It may sound technical, but it&#8217;s quickly becoming one of the most important skills for anyone building AI products.</p><h2><strong>Today&#8217;s Post</strong></h2><ol><li><p>Why Does Context Engineering Matter?</p></li><li><p>The PM&#8217;s Role in Context Engineering</p></li><li><p>The 6 Layers of Context to Include</p></li><li><p>Common Mistakes</p></li><li><p>How to Engineer Context Step-by-Step</p></li><li><p>How to Spec out Features Appropriately</p></li><li><p>Checklists, templates + prompts you can steal</p></li></ol><div><hr></div><h2><strong>1. What is Context Engineering, and Why Does it Matter?</strong></h2><h3><strong>What Is Context Engineering?</strong></h3><p>Context engineering is the practice of giving an AI model the exact information it needs at the exact moment it needs it. Think of prompt engineering as writing instructions, while context engineering builds the world those instructions live in.</p><p>Humans naturally infer context&#8212;we remember who we&#8217;re talking to, what just happened, what matters, and what rules apply. LLMs don&#8217;t. The models don&#8217;t magically know:</p><ul><li><p>who the user is</p></li><li><p>what happened a few seconds ago</p></li><li><p>which document matters</p></li><li><p>what the system already knows</p></li><li><p>what rules or policies apply</p></li><li><p>what data they&#8217;re allowed to access</p></li><li><p>what was said in previous sessions</p></li><li><p>whether the user is new or experienced</p></li><li><p>what constraints must be followed</p></li><li><p>which entities exist in the workspace</p></li><li><p>how different pieces fit together<br></p></li></ul><p>None of this comes for free. We have to supply it.</p><p>That is the job of context engineering&#8212;and it&#8217;s the difference between an AI that feels clueless and one that feels intelligent.</p><h3><strong>Why Context Engineering Matters?</strong></h3><p>Most people obsess over models and prompts.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0Ut4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce52d86e-688f-4307-bab8-0ea2d5df156f_2048x2048.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0Ut4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce52d86e-688f-4307-bab8-0ea2d5df156f_2048x2048.png 424w, https://substackcdn.com/image/fetch/$s_!0Ut4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce52d86e-688f-4307-bab8-0ea2d5df156f_2048x2048.png 848w, https://substackcdn.com/image/fetch/$s_!0Ut4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce52d86e-688f-4307-bab8-0ea2d5df156f_2048x2048.png 1272w, https://substackcdn.com/image/fetch/$s_!0Ut4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce52d86e-688f-4307-bab8-0ea2d5df156f_2048x2048.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0Ut4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce52d86e-688f-4307-bab8-0ea2d5df156f_2048x2048.png" width="1456" height="1456" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ce52d86e-688f-4307-bab8-0ea2d5df156f_2048x2048.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1456,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5533072,&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://news.adityeah.in/i/181983398?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce52d86e-688f-4307-bab8-0ea2d5df156f_2048x2048.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_!0Ut4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce52d86e-688f-4307-bab8-0ea2d5df156f_2048x2048.png 424w, https://substackcdn.com/image/fetch/$s_!0Ut4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce52d86e-688f-4307-bab8-0ea2d5df156f_2048x2048.png 848w, https://substackcdn.com/image/fetch/$s_!0Ut4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce52d86e-688f-4307-bab8-0ea2d5df156f_2048x2048.png 1272w, https://substackcdn.com/image/fetch/$s_!0Ut4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce52d86e-688f-4307-bab8-0ea2d5df156f_2048x2048.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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;Should we use GPT-5.1 or Gemini 3?&#8221;<br> &#8220;What&#8217;s the perfect prompt?&#8221;</p><p>Those questions matter&#8212;but only after you&#8217;ve done the hard work of context.</p><p>Because if your system:</p><ul><li><p>doesn&#8217;t know which file the user is working on</p></li><li><p>doesn&#8217;t see the user&#8217;s preferences</p></li><li><p>isn&#8217;t aware of entities and relationships in the workspace</p></li><li><p>can&#8217;t recognize the user&#8217;s role</p></li><li><p>retrieves random, irrelevant documents</p></li><li><p>or misses key logs and events</p></li></ul><p>&#8230;then it doesn&#8217;t really matter which model you plug in. The output will still feel off.</p><p>Context is what turns &#8220;a smart model&#8221; into &#8220;a useful product.&#8221;</p><h3><strong>Example 1: AI Email Assistants</strong></h3><p>When I was working on an AI email writer, I learned this the hard way.</p><p>What the model <em>saw</em> changed everything:</p><ul><li><p><strong>Only the last message</strong> &#8594; the reply was generic</p></li><li><p><strong>Full email thread</strong> &#8594; the reply became coherent</p></li><li><p><strong>Thread + CRM notes</strong> &#8594; the reply became personalized</p></li><li><p><strong>Thread + CRM + tone-of-voice guidelines</strong> &#8594; the reply felt on-brand</p></li><li><p><strong>Thread + CRM + tone + relationship context (e.g., &#8220;key customer,&#8221; &#8220;renewal risk&#8221;)</strong> &#8594; the reply became shippable</p></li></ul><p>Same model. Very similar prompts. Completely different quality.</p><p>That&#8217;s context engineering at work.</p><div><hr></div><h3><strong>Example 2: AI Coding Assistants (Cursor)</strong></h3><p>Take coding assistants.</p><p>Ask yourself: why hasn&#8217;t Cursor been steamrolled by every new &#8220;better&#8221; model release, and instead grown into a billion-dollar+ business?</p><p>The key is not just <em>which</em> model they use. It&#8217;s <em>how</em> they prepare context.</p><p>Roughly speaking, tools like Cursor:</p><ol><li><p><strong>Index your codebase</strong>:</p><ul><li><p>Split the code into meaningful chunks (often using the AST).</p></li><li><p>Compute embeddings for every chunk.</p></li></ul></li><li><p><strong>Understand your question</strong>:</p><ul><li><p>Turn your query into embeddings.</p></li><li><p>Search a vector database for the most relevant files, functions, and lines.</p></li></ul></li><li><p><strong>Build a rich context window</strong>:</p><ul><li><p>Pull in only the relevant snippets.</p></li><li><p>Feed those into the model along with your request.</p></li></ul></li></ol><p>Because the context is so strong, Cursor can let you switch between OpenAI, Anthropic, Gemini, xAI, etc. The <em>model</em> is almost a plug-in.</p><p>The <em>moat</em> is the context layer: the indexing, retrieval, and wiring of code + queries into something the model can reason over.</p><p>That&#8217;s also why you see huge companies trying to buy or replicate these players instead of just &#8220;turning on a better model.&#8221; Model capability alone is not enough. Context is what makes the product defensible.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6FdM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05e2f28b-cbc1-43cd-8566-a92c67b15343_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6FdM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05e2f28b-cbc1-43cd-8566-a92c67b15343_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!6FdM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05e2f28b-cbc1-43cd-8566-a92c67b15343_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!6FdM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05e2f28b-cbc1-43cd-8566-a92c67b15343_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!6FdM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05e2f28b-cbc1-43cd-8566-a92c67b15343_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6FdM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05e2f28b-cbc1-43cd-8566-a92c67b15343_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/05e2f28b-cbc1-43cd-8566-a92c67b15343_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1006282,&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://news.adityeah.in/i/181983398?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05e2f28b-cbc1-43cd-8566-a92c67b15343_1024x1024.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_!6FdM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05e2f28b-cbc1-43cd-8566-a92c67b15343_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!6FdM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05e2f28b-cbc1-43cd-8566-a92c67b15343_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!6FdM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05e2f28b-cbc1-43cd-8566-a92c67b15343_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!6FdM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05e2f28b-cbc1-43cd-8566-a92c67b15343_1024x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Now that we&#8217;ve talked about why context engineering matters and how it shows up in real products, the rest of this guide will focus on the &#8220;how&#8221;:</p><ul><li><p>frameworks and canvases you can use as an AI PM</p></li><li><p>real-world checklists</p></li><li><p>templates and prompts you can copy straight into your own products</p></li></ul><p>The goal: help you treat context engineering as a first-class product skill, not an afterthought.</p><h2><strong>2. The PM&#8217;s Role in Context Engineering</strong></h2><p>Many teams assume context engineering is something only engineers handle.</p><p>It isn&#8217;t.</p><p>Context engineering sits where product thinking, user insight, and system design meet. Engineers can build the plumbing, but they can&#8217;t decide which signals matter, how they shape the experience, or what &#8220;good&#8221; looks like for the user.</p><p>That judgment lives with the PM.</p><h3><strong>What PMs Own in Context Engineering?</strong></h3><p>As a PM, there are three layers you&#8217;re directly responsible for&#8212;layers engineers cannot decide on their own.</p><h3><strong>1. Defining what &#8220;intelligence&#8221; means for the feature</strong></h3><p>Before anything is built, you must spell out what success looks like. That includes:</p><ul><li><p>What the AI should know about the user</p></li><li><p>What domain knowledge is essential vs. optional</p></li><li><p>Which user actions should update the context</p></li><li><p>How much personalization creates value without crossing the line</p></li></ul><p>These aren&#8217;t technical calls&#8212;they&#8217;re product calls.</p><h3><strong>2. Translating user value into context requirements</strong></h3><p>Users express fuzzy needs. PMs convert those into concrete context specifications.</p><ul><li><p>&#8220;Users want better suggestions&#8221; &#8594;<br> <em>system needs access to past dismissals, workspace state, and team preferences</em></p></li><li><p>&#8220;Make it feel personalized&#8221; &#8594;<br> <em>capture writing style, common corrections, and role-specific patterns</em></p></li></ul><p>Without this translation, engineering builds general-purpose systems that function but don&#8217;t feel smart.</p><h3><strong>3. Designing how the system behaves when context is missing</strong></h3><p>Context will fail: documents won&#8217;t load, signals will be stale, permissions will restrict data.</p><p>You decide the fallback behavior:</p><ul><li><p>Should the feature block?</p></li><li><p>Should it return a partial answer?</p></li><li><p>Should it ask clarifying questions?</p></li><li><p>Should it switch to a simpler mode?</p></li></ul><p>This is core product judgment. It defines reliability, trust, and user perception.</p><h2><strong>What Engineers Own?</strong></h2><p>Engineers handle the execution:</p><ul><li><p>retrieval architecture</p></li><li><p>vector databases</p></li><li><p>embeddings and chunking</p></li><li><p>indexing pipelines</p></li><li><p>integrations</p></li><li><p>latency, reliability, and scaling</p></li></ul><p>But all of this depends on the PM defining <em>what</em> to retrieve and <em>why it matters</em>.</p><h2><strong>The Division of Labor</strong></h2><p>A simple way to think about it:</p><ul><li><p><strong>PMs define the context pyramid</strong> &#8212; what information belongs at each layer</p></li><li><p><strong>Engineers build the infrastructure</strong> &#8212; how to store, fetch, and update it</p></li><li><p><strong>PMs design the orchestration logic</strong> &#8212; what the model should see and when</p></li><li><p><strong>Engineers implement the orchestration engine</strong> &#8212; the system that delivers it in real time</p></li></ul><p>When PMs skip their part, teams end up with technically impressive systems that feel oddly unintelligent&#8212;because nobody defined what intelligence actually required.</p><h2><strong>3. The 6 Layers of Context to Include</strong></h2><p>If you look closely at every world-class AI product, you&#8217;ll find their intelligence doesn&#8217;t come from clever prompting or bigger models. It comes from a carefully engineered hierarchy of 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_!dpNu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F170a2b8a-d2c6-46f1-bd5e-adc73abf0e8b_1856x2304.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dpNu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F170a2b8a-d2c6-46f1-bd5e-adc73abf0e8b_1856x2304.png 424w, https://substackcdn.com/image/fetch/$s_!dpNu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F170a2b8a-d2c6-46f1-bd5e-adc73abf0e8b_1856x2304.png 848w, https://substackcdn.com/image/fetch/$s_!dpNu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F170a2b8a-d2c6-46f1-bd5e-adc73abf0e8b_1856x2304.png 1272w, https://substackcdn.com/image/fetch/$s_!dpNu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F170a2b8a-d2c6-46f1-bd5e-adc73abf0e8b_1856x2304.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dpNu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F170a2b8a-d2c6-46f1-bd5e-adc73abf0e8b_1856x2304.png" width="1456" height="1807" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/170a2b8a-d2c6-46f1-bd5e-adc73abf0e8b_1856x2304.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1807,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:6423603,&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://news.adityeah.in/i/181983398?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F170a2b8a-d2c6-46f1-bd5e-adc73abf0e8b_1856x2304.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_!dpNu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F170a2b8a-d2c6-46f1-bd5e-adc73abf0e8b_1856x2304.png 424w, https://substackcdn.com/image/fetch/$s_!dpNu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F170a2b8a-d2c6-46f1-bd5e-adc73abf0e8b_1856x2304.png 848w, https://substackcdn.com/image/fetch/$s_!dpNu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F170a2b8a-d2c6-46f1-bd5e-adc73abf0e8b_1856x2304.png 1272w, https://substackcdn.com/image/fetch/$s_!dpNu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F170a2b8a-d2c6-46f1-bd5e-adc73abf0e8b_1856x2304.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>LAYER 1 &#8212; INTENT CONTEXT</h3><p><strong>Starting at the foundation&#8230;</strong></p><p><strong>Deciphering the user&#8217;s actual goal, not just their literal words.</strong></p><p>Nearly every AI disaster&#8212;hallucinations, logic errors, bad suggestions, irrelevant answers&#8212;stems from a single failure point: the system misread the user&#8217;s objective.</p><p>Humans are messy communicators.</p><p>They say one thing but want another. They highlight a paragraph without explaining the error. They click, pause, rewrite, or use shorthand that relies on assumptions the model cannot see.</p><p>This is the role of <strong>Intent Context</strong>: to give the AI interpretive intuition&#8212;the ability to reconstruct the user&#8217;s true aim, even when the prompt is vague, incomplete, or emotional.</p><p><strong>The &#8220;Triple-I&#8221; Decryption Model</strong></p><p>To turn intent from a concept into code, every input must pass through a three-stage filter:</p><ol><li><p><strong>Interpret:</strong> Convert the raw text into a clear, structured objective.</p></li><li><p><strong>Infer:</strong> Analyze recent actions (clicks, hovers, deletions, retries) to find the subtext.</p></li><li><p><strong>Identify Gaps:</strong> Spot missing data points (files, code snippets, metrics) that must be fetched before answering.</p></li></ol><p>This converts messy input into machine-ready intent, clearing the fog so the next five layers can work.</p><h3>LAYER 2 &#8212; USER CONTEXT</h3><p><strong>A live profile of the human: their habits, quirks, role, and mental model.</strong></p><p>Even a technically perfect answer fails if it feels robotic.</p><p>A principal architect wants the raw diff; a junior developer needs the tutorial. A CEO wants the bottom line; a researcher wants the citations.</p><p><strong>User Context</strong> ensures the AI acts not as a generic chatbot, but as a personalized extension of the operator&#8212;matching their rhythm, tone, expertise, and history.</p><p><strong>The 5-P Personalization Matrix</strong></p><p>To make this practical, track these five variables for every user:</p><ol><li><p><strong>Preferences:</strong> Voice (terse vs. warm), verbosity, style.</p></li><li><p><strong>Patterns:</strong> How they usually edit, format, or correct outputs.</p></li><li><p><strong>Proficiency:</strong> Expert vs. Novice (dynamic complexity adjustment).</p></li><li><p><strong>Pacing:</strong> The speed at which they consume information.</p></li><li><p><strong>Purpose:</strong> Their specific job-to-be-done and workflow goals.</p></li></ol><p>This allows the AI to speak in the user&#8217;s language, rather than the LLM&#8217;s default setting.</p><h3>LAYER 3 &#8212; DOMAIN CONTEXT</h3><p><strong>Without grounding, an AI isn&#8217;t a product; it is a hallucination engine with a nice UI.</strong></p><p><strong>Domain Context</strong> transforms your system from a creative toy into a subject-matter expert. It enables the AI to cite real objects, respect dependencies, use correct terminology, and navigate your company&#8217;s reality.</p><p>This is the &#8220;Source of Truth&#8221;: your entities, metadata, dependency trees, documentation, codebases, business logic, and institutional history. But you cannot just dump raw text. It must be structured.</p><p>Every domain requires five structural anchors:</p><ol><li><p><strong>Entities:</strong> The nouns of your world: tickets, users, dashboards, repos.</p></li><li><p><strong>Attributes:</strong> The descriptors: dates, owners, tags, status.</p></li><li><p><strong>Relationships:</strong> The web: &#8220;blocks,&#8221; &#8220;enables,&#8221; &#8220;owns,&#8221; &#8220;is part of.&#8221;</p></li><li><p><strong>Definitions:</strong> The logic: canonical formulas and business rules.</p></li><li><p><strong>Lineage:</strong> The history: who changed what, and when.</p></li></ol><h3>LAYER 4 &#8212; RULE CONTEXT</h3><p><strong>The laws, limits, and guardrails that dictate what the AI allows.</strong></p><p>Intelligence without constraints is dangerous. <strong>Rule Context</strong> acts as the judiciary of your system: deciding what is permitted, what is required, and what is strictly banned.</p><p>This covers everything from output schemas and permissions to safety compliance and formatting mandates. These cannot be polite suggestions in a prompt&#8212;they must be hard boundaries.</p><p><strong>The Dual-Barrier Framework</strong></p><p>Enforce rule context using two types of walls:</p><ol><li><p><strong>The Soft Wall:</strong> Advisory guidelines (brand voice, style, tone).</p></li><li><p><strong>The Hard Wall:</strong> Mandatory requirements (JSON schemas, security, permissions).</p></li></ol><p>Soft walls guide the vibe. Hard walls guarantee the function.</p><p>Together, they turn the AI from a probabilistic guesser into a deterministic operator.</p><h3>LAYER 5 &#8212; ENVIRONMENT CONTEXT</h3><p><strong>The immediate reality surrounding the user right now.</strong></p><p>Most work depends on the &#8220;now,&#8221; not on static knowledge.</p><p>A coding bot needs to see the open tab. A writing assistant needs the selected sentence. A support bot needs the error log from one minute ago. A planning bot needs the deadline expiring today.</p><p><strong>Environment Context</strong> gives the AI situational awareness&#8212;knowing the active file, the cursor position, the timestamps, and the current system state.</p><p><strong>The N.O.W. Awareness Model</strong></p><p>Capture the real-time signal via three channels:</p><ol><li><p><strong>Nearby Activity:</strong> The user&#8217;s immediate focus (selection, cursor, scroll).</p></li><li><p><strong>Operational State:</strong> System health, logs, errors, device info.</p></li><li><p><strong>Window of Time:</strong> Urgency, deadlines, and recency.</p></li></ol><p>This stops the AI from acting generically and helps it act contextually&#8212;like a coworker looking over your shoulder.</p><h3>LAYER 6 &#8212; EXPOSITION CONTEXT</h3><p><strong>The final, polished, noise-free signal the model actually receives.</strong></p><p>This is the top of the stack&#8212;the point where the previous five layers merge into a clean, ranked, coherent payload.</p><p><strong>Exposition Context</strong> is where potential becomes performance.</p><p>It is the difference between handing the model a library and handing it the exact page it needs.</p><p><strong>The Context Distillation Pipeline</strong></p><p>Every prompt payload must survive a five-step purification process:</p><ol><li><p><strong>Collect:</strong> Aggregate signals from Intent, User, Domain, Rule, and Environment.</p></li><li><p><strong>Compress:</strong> Cut the fluff, remove redundancy, resolve conflicts.</p></li><li><p><strong>Construct:</strong> Organize the data into clear, labeled sections.</p></li><li><p><strong>Constrain:</strong> Apply safety checks and formatting rules.</p></li><li><p><strong>Check:</strong> Verify the payload is consistent and ready for reasoning.</p></li></ol><p><strong>Unifying the Stack</strong></p><p>When these six layers align, the AI wakes up. Most products skip steps or build them poorly. The winners treat every layer as critical infrastructure, not optional features.</p><div><hr></div><h2>4. The Divide: Engineering Context vs. Dumping Data</h2><p>If you analyze high-performing AI agents, you will find they share a distinct architectural blueprint. Conversely, systems that hallucinate, drift, or confuse users almost always suffer from the same set of structural flaws.</p><p>The difference isn&#8217;t the model; it&#8217;s the discipline of the context pipeline.</p><h4>What Great AI Products Do Right</h4><p>World-class AI products treat context as a strict engineering discipline, adhering to these principles:</p><p><strong>1. Structure Over Chaos:</strong> They never feed the model raw blobs of text. They invest heavily in schemas, metadata fields, and entity graphs because they know that unstructured inputs inevitably yield unstructured behavior.</p><p><strong>2. Surgical Curation:</strong> They do not &#8220;give the model everything.&#8221; They aggressively pre-filter, selecting only the specific signals required for the current reasoning step. They value signal-to-noise ratio over total volume.</p><p><strong>3. Explicit Segmentation:</strong> The model receives context in clear, labeled packets (e.g., <code>&lt;UserHistory&gt;</code>, <code>&lt;SystemConstraints&gt;</code>, <code>&lt;ActiveFile&gt;</code>). They use the six layers to feed information in a predictable hierarchy, reducing ambiguity.</p><p><strong>4. Deterministic Guardrails:</strong> They do not rely on the LLM to police itself. Hard constraints are enforced by external validators and code logic, not by polite requests buried in the prompt.</p><p><strong>5. Dynamic Knowledge Graphs:</strong> They treat domain knowledge as a living network. Every new document or interaction updates the relationships in the graph, ensuring the context evolves alongside the business.</p><p><strong>6. Multi-Step Reasoning</strong>: They rarely rely on a single &#8220;God Prompt.&#8221; Instead, they use chains: planning steps, summarization calls, and iterative refinement loops to build the answer piece by piece.</p><h4>The Architecture of Failure</h4><p>Broken systems are equally predictable. Across hundreds of failed implementations, these patterns appear repeatedly:</p><p><strong>1. The &#8220;Kitchen Sink&#8221; Strategy:</strong> Stuffing the entire context window with every available document. This leads to token overload, model confusion, and &#8220;lost in the middle&#8221; retrieval errors.</p><p><strong>2. Naive Semantic Search:</strong> Relying solely on vector search (RAG) without structural filtering. This retrieves conceptually similar but factually irrelevant chunks that derail the model&#8217;s logic.</p><p><strong>3. The &#8220;Prompt-as-Code&#8221; Fallacy:</strong> Assuming that writing &#8220;Do not do X&#8221; in a prompt is a security measure. Prompts are probabilistic suggestions; without hard code boundaries, the model will eventually ignore them.</p><p><strong>4. Source Amnesia (No Provenance):</strong> Feeding data to the model without tracking where it came from. When the AI cannot cite its sources or distinguish between an old memo and a new policy, reasoning becomes impossible.</p><p><strong>5. The &#8220;Magic Box&#8221; Assumption:</strong> Expecting the LLM to infer the domain structure on its own. No matter how smart the model, it cannot guess your internal business logic unless you explicitly define the schema.</p><h4>The Bottom Line</h4><p>Great context engineering is about <strong>discipline</strong>. It requires rejecting the shortcut of &#8220;just dumping data&#8221; into the prompt and instead building the rigid infrastructure&#8212;schemas, layers, and filters&#8212;that true intelligence requires.</p><div><hr></div><h2>5. How to Engineer Context Step-by-Step The C.E.O. Framework</h2><p>The previous section covered <em>what</em> context is. This section covers <em>how</em> to build the invisible machinery that manages it.</p><p>Truly intelligent AI doesn&#8217;t just &#8220;react&#8221; to a prompt. It runs a continuous background process that gathers raw signals, structures them into meaning, and carefully curates what the model sees.</p><p>This is the <strong>C.E.O. Framework</strong>: <strong>C</strong>apture, <strong>E</strong>nrich, and <strong>O</strong>rchestrate.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1NnQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9b54504-a4d9-4f0d-8a88-778d14fbd4da_1024x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1NnQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9b54504-a4d9-4f0d-8a88-778d14fbd4da_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!1NnQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9b54504-a4d9-4f0d-8a88-778d14fbd4da_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!1NnQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9b54504-a4d9-4f0d-8a88-778d14fbd4da_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!1NnQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9b54504-a4d9-4f0d-8a88-778d14fbd4da_1024x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1NnQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9b54504-a4d9-4f0d-8a88-778d14fbd4da_1024x1536.png" width="1024" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f9b54504-a4d9-4f0d-8a88-778d14fbd4da_1024x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:796055,&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://news.adityeah.in/i/181983398?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9b54504-a4d9-4f0d-8a88-778d14fbd4da_1024x1536.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_!1NnQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9b54504-a4d9-4f0d-8a88-778d14fbd4da_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!1NnQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9b54504-a4d9-4f0d-8a88-778d14fbd4da_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!1NnQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9b54504-a4d9-4f0d-8a88-778d14fbd4da_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!1NnQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9b54504-a4d9-4f0d-8a88-778d14fbd4da_1024x1536.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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><h4>PHASE 1: CAPTURE</h4><p><strong>How the System Absorbs the World</strong></p><p>&#8220;Capture&#8221; is the foundational act of noticing. It is the sensor array that collects the raw ingredients of intelligence from the user, the application state, and the environment.</p><p>In high-quality AI products, this happens passively. The system does not wait for the user to explain their situation; it silently observes the micro-signals that define intent. It notices:</p><ul><li><p>The document currently open.</p></li><li><p>The specific text highlighted or the field just edited.</p></li><li><p>The filters applied to a dashboard.</p></li><li><p>The segment drilled down into during analysis.</p></li><li><p>The last output the user accepted (or rejected).</p></li><li><p>Looming deadlines on the timeline.</p></li></ul><p><strong>The Three Streams of Signal</strong> To build a complete picture, a robust capture layer aggregates three distinct families of inputs:</p><ol><li><p><strong>Explicit Signals:</strong> What the user intentionally provides (prompts, specific selections, uploaded files).</p></li><li><p><strong>Implicit Signals:</strong> What the user subconsciously reveals (scroll depth, cursor hover time, recent click paths).</p></li><li><p><strong>System Signals:</strong> The environmental reality (timestamps, object metadata, data freshness, error logs).</p></li></ol><p><strong>The Goal:</strong> To transform a stream of fragmented micro-data into a coherent answer to the question: <em>What is actually happening right now?</em></p><h4>PHASE 2: ENRICH</h4><p><strong>How Raw Signals Become Structured Meaning</strong></p><p>Raw data is noisy; enriched data is actionable.</p><p><strong>Enrichment</strong> is the process of converting ambiguous, unstructured signals into a consistent schema the model can reason about. It turns the messy complexity of human behavior into a clean &#8220;context package.&#8221;</p><p>This involves extracting entities, normalizing fields, resolving ambiguity, and filtering noise. It is the difference between the system seeing &#8220;User clicked the button&#8221; and seeing &#8220;User approved the Q3 Financial Report.&#8221;</p><p><strong>The Engineering Challenge: Reconciling Reality</strong> Enrichment is difficult because reality is inconsistent. The system must handle:</p><ul><li><p><strong>Ambiguity:</strong> Two users using the same phrase to mean different things.</p></li><li><p><strong>Vague References:</strong> A user asking about &#8220;the latest update&#8221; (which requires checking timestamps against version history).</p></li><li><p><strong>State Drift:</strong> A metric changing in the background while the user was working on something else.</p></li></ul><p><strong>The Transformation Pipeline</strong> A sophisticated enrichment layer performs four critical operations:</p><ol><li><p><strong>Disambiguation:</strong> Clarifying references like &#8220;this issue&#8221; or &#8220;that customer.&#8221;</p></li><li><p><strong>Stitching:</strong> Connecting related objects (e.g., linking a PR to the Incident Ticket it solves).</p></li><li><p><strong>Inference:</strong> Reconstructing implied relationships (e.g., &#8220;The user selected a high-risk item, implying they are in a risk-mitigation workflow&#8221;).</p></li><li><p><strong>Augmentation:</strong> Injecting domain knowledge (e.g., &#8220;This metric relies on Stream X, which is currently down&#8221;).</p></li></ol><h4>PHASE 3: ORCHESTRATE</h4><p><strong>How the System Decides What the Model Sees</strong></p><p><strong>Orchestration</strong> is judgment.</p><p>Just because you <em>captured</em> and <em>enriched</em> the data doesn&#8217;t mean the LLM should see all of it. Feeding a model too much information confuses it; feeding it too little hallucinates it.</p><p>Orchestration is the deliberate decision-making layer that determines exactly which artifacts are included, in what order, and in what format.</p><p><strong>The Four Balancing Forces</strong> The orchestrator must balance four competing constraints simultaneously:</p><ol><li><p><strong>Relevance:</strong> Does this signal materially affect the answer, or is it noise?</p></li><li><p><strong>Brevity:</strong> Can we fit this within the token window without losing nuance?</p></li><li><p><strong>Precision:</strong> Is the structure clear enough for the model to parse?</p></li><li><p><strong>Timing:</strong> Is this the right information for <em>this specific step</em> of the chain?</p></li></ol><p><strong>The Architecture of Control</strong> This is where context engineering becomes an art form. A strong orchestration layer separates concerns into distinct logic blocks:</p><ul><li><p><strong>The Filter:</strong> Selects the most relevant artifacts from the domain graph.</p></li><li><p><strong>The Structurer:</strong> Organizes data into labeled sections (summaries vs. raw text).</p></li><li><p><strong>The Ruler:</strong> Enforces constraints and business logic.</p></li><li><p><strong>The Personalizer:</strong> Injects user history and preferences.</p></li><li><p><strong>The Flow Controller:</strong> Decides if the model needs a planning step or a retrieval call before generating the final answer.</p></li></ul><p><strong>The Result:</strong> The model receives a highly curated, coherent dataset designed specifically for reasoning&#8212;not a random blob of text.</p><div><hr></div><h3>6. <strong>How to Spec out Features Appropriately</strong>: <strong>The 4D Context Canvas</strong></h3><p>You now have the <strong>Context Pyramid</strong> (the categories of context) and the <strong>C.E.O. Framework</strong> (the engine to process it).</p><p>But when you sit down to design a specific feature, you need a tactical plan. You need to answer: <em>What specific context does this feature require? Where does it live? And what happens when it&#8217;s missing?</em></p><p>This is the role of the <strong>4D Context Canvas</strong>.</p><p>Most AI features do not fail because the model wasn&#8217;t smart enough. They fail because the team never explicitly defined the context required to succeed. They relied on dangerous assumptions like <em>&#8220;we&#8217;ll just fetch that data&#8221;</em> or <em>&#8220;the model will figure it out.&#8221;</em></p><p>To prevent this, every AI feature must be stress-tested against four dimensions: </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LAAR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c78793-fe85-44e0-9fc3-2494b04e969f_1024x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LAAR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c78793-fe85-44e0-9fc3-2494b04e969f_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!LAAR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c78793-fe85-44e0-9fc3-2494b04e969f_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!LAAR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c78793-fe85-44e0-9fc3-2494b04e969f_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!LAAR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c78793-fe85-44e0-9fc3-2494b04e969f_1024x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LAAR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c78793-fe85-44e0-9fc3-2494b04e969f_1024x1536.png" width="1024" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/54c78793-fe85-44e0-9fc3-2494b04e969f_1024x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1062632,&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://news.adityeah.in/i/181983398?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c78793-fe85-44e0-9fc3-2494b04e969f_1024x1536.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_!LAAR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c78793-fe85-44e0-9fc3-2494b04e969f_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!LAAR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c78793-fe85-44e0-9fc3-2494b04e969f_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!LAAR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c78793-fe85-44e0-9fc3-2494b04e969f_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!LAAR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c78793-fe85-44e0-9fc3-2494b04e969f_1024x1536.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>Demand</strong>: What is the model actually being asked to do?</p></li><li><p><strong>Data:</strong> What context is required to get it right?</p></li><li><p><strong>Discovery</strong>: How will we obtain that context reliably during runtime?</p></li><li><p><strong>Defense</strong>: How will we detect failures and prevent incorrect outputs?</p></li></ol><div><hr></div><h4>D1 &#8212; DEMAND</h4><p><strong>Defining the Model&#8217;s Job Precisely</strong></p><p>If you cannot articulate the job, the model cannot perform it.</p><p>The primary cause of generic, erratic AI behavior is vague product requirements. Developers often write prompts without a clear specification, forcing the system to guess the user&#8217;s goal.</p><p>To fix this, you must translate fuzzy intent into a rigid <strong>Model Job Spec</strong>. You must clarify exactly what is being produced, for whom, and under what constraints.</p><p><strong>The Transformation</strong></p><ul><li><p><strong>The Vague Request:</strong> <em>&#8220;Draft a status update.&#8221;</em></p></li><li><p><strong>The Precise Demand:</strong> <em>&#8220;Summarize key changes in Project X since the last report, formatted for Stakeholder Y, adopting the user&#8217;s concise tone, and strictly adhering to the weekly reporting schema.&#8221;</em></p></li></ul><p><strong>The Spec Checklist</strong> A proper demand spec must explicitly define:</p><ol><li><p><strong>Inputs:</strong> What raw materials will the model receive?</p></li><li><p><strong>Assumptions:</strong> What acts as the &#8220;default&#8221; truth if data is missing?</p></li><li><p><strong>Required Outputs:</strong> The exact format, length, and structure.</p></li><li><p><strong>Success Criteria:</strong> What separates a &#8220;correct&#8221; answer from a &#8220;plausible&#8221; one?</p></li></ol><h4>D2 &#8212; DATA</h4><p><strong>Mapping the Hidden Dependencies</strong></p><p>Once the job is defined, you must identify the fuel.</p><p>Every AI feature has hidden dependencies. The <strong>Data</strong> step forces you to map the exact context required to execute the job. This is best done via a <strong>Context Requirements Table</strong>&#8212;a simple audit that removes ambiguity.</p><p><strong>The Context Audit</strong> For every piece of context, you must define four attributes:</p><ol><li><p><strong>The Signal:</strong> What entity, document, metric, or object is needed?</p></li><li><p><strong>The Source:</strong> Where does it live? (SQL DB, Vector Store, API, Browser State).</p></li><li><p><strong>Availability:</strong> Is this data <em>always</em> there, <em>sometimes</em> there (dependent on user history), or <em>rarely</em> there?</p></li><li><p><strong>Sensitivity:</strong> Is this PII? Internal-only? Public?</p></li></ol><p><strong>Example: The AI Sprint Planner</strong> To plan a sprint, the model cannot just &#8220;know&#8221; agile. It needs:</p><ul><li><p><em>Backlog Items</em> (Source: Jira API | Availability: High)</p></li><li><p><em>Team Capacity</em> (Source: HR System | Availability: Variable)</p></li><li><p><em>Historical Velocity</em> (Source: Analytics DB | Availability: High)</p></li><li><p><em>Cross-Team Dependencies</em> (Source: Knowledge Graph | Availability: Low/Hard to fetch)</p></li></ul><p>When you map this honestly, you immediately see if your feature is viable or if you are missing the data pipelines to support it.</p><h4>D3 &#8212; DISCOVERY</h4><p><strong>The Runtime Retrieval Strategy</strong></p><p>Knowing what data you need is easy. Getting it in real-time is hard.</p><p><strong>Discovery</strong> defines the logistics: how will the system locate, retrieve, and assemble the context at the exact moment the user presses &#8220;Enter&#8221;?</p><p>You must engineer a retrieval strategy that balances precision with latency:</p><p><strong>The Retrieval Toolkit</strong></p><ul><li><p><strong>Search-Based:</strong> Using Vector Search for semantic themes or Keyword Search for exact matches (e.g., retrieving specific error codes).</p></li><li><p><strong>Graph-Based:</strong> Navigating the Knowledge Graph to find related entities (e.g., &#8220;Find the owner of the project that this ticket belongs to&#8221;).</p></li><li><p><strong>Precomputed:</strong> Using cached views or daily jobs to have heavy data ready instantly (e.g., &#8220;Yesterday&#8217;s sales totals&#8221;).</p></li></ul><p><strong>The Trade-off: Speed vs. Depth</strong> Teams must make hard choices here. Which context must be real-time? Which can be 24 hours old? Which data is too expensive to fetch for a sub-second interaction?</p><h4>D4 &#8212; DEFENSE</h4><p><strong>Guardrails, Fallbacks, and Failure Modes</strong></p><p>A feature is not ready until you have designed its failure state.</p><p><strong>Defense</strong> is the layer that turns a fragile demo into a resilient production system. Because in the real world, APIs will time out, data will be stale, and models will hallucinate. Defense is about catching these failures <em>before</em> the user sees them.</p><p><strong>The Four Defensive Layers</strong></p><ol><li><p><strong>Pre-Checks (The Gatekeeper):</strong> Before invoking the model, ask: <em>&#8220;Do we actually have enough context to answer this?&#8221;</em> If the required entity is missing or the data is too old, block the generation and ask the user for clarification.</p></li><li><p><strong>Post-Checks (The Auditor):</strong> After the model generates text, validate it. Does it match the JSON schema? Did it violate a safety policy? Is it logically consistent with the source data?</p></li><li><p><strong>Fallback Paths (The Safety Net):</strong> When the system breaks, degrade gracefully. Do not show a stack trace.</p><ul><li><p><em>Instead of a hallucination:</em> Offer a conservative summary.</p></li><li><p><em>Instead of silence:</em> Ask a clarifying question.</p></li><li><p><em>Instead of a crash:</em> Revert to a hard-coded default.</p></li></ul></li><li><p><strong>Feedback Loops (The Teacher):</strong> Capture the signal from failure. Use explicit ratings (thumbs down) and implicit behavior (user editing the AI&#8217;s output) to detect patterns and patch the holes in your context logic.</p><p></p><div><hr></div><h3>7. The Toolkit: Checklists, Templates, and Prompts</h3><p>You now have the theory and the architecture. This section provides the copy-paste assets you need to deploy them.</p><p>Below is the <strong>Context Quality Checklist</strong> to run before every API call, and the <strong>Orchestrator Meta-Prompt</strong> that serves as the backbone for high-reasoning systems.</p><h4>Part 1: The Context Quality Checklist</h4><p><strong>Use this &#8220;Pre-Flight Check&#8221; every single time before sending a payload to an LLM.</strong></p><p>Hallucinations are rarely model failures; they are almost always context failures. If you feed the model noise, ambiguity, or contradictions, no amount of &#8220;prompt engineering&#8221; will save you.</p><p>Use this five-point audit to ensure the &#8220;brains&#8221; of your system are fed clean fuel.</p><p><strong>1. THE RELEVANCE AUDIT (Signal-to-Noise)</strong></p><ul><li><p><strong>Curated:</strong> Does every piece of text in the context directly help answer the specific intent?</p></li><li><p><strong>Distilled:</strong> Have you stripped away &#8220;kind of related&#8221; documents that dilute the model&#8217;s focus?</p></li><li><p><strong>Cleaned:</strong> Did you remove decorative JSON metadata (internal IDs, unrelated flags) that wastes tokens and confuses the model?</p></li></ul><p><strong>2. THE FRESHNESS AUDIT (Temporal Validity)</strong></p><ul><li><p><strong>Timestamps:</strong> Are the documents and logs from the current relevant window?</p></li><li><p><strong>State Awareness:</strong> Does the context reflect the system <em>as it is right now</em> (not cached from an hour ago)?</p></li><li><p><strong>Deprecation:</strong> Have you filtered out &#8220;legacy&#8221; or &#8220;archived&#8221; entities that might mislead the model?</p></li></ul><p><strong>3. THE SUFFICIENCY AUDIT (The &#8220;Missing Link&#8221; Check)</strong></p><ul><li><p><strong>Entity Completeness:</strong> If the user asks about &#8220;Project X,&#8221; did you include Project X&#8217;s owner, status, and recent comments?</p></li><li><p><strong>Dependency Mapping:</strong> Did you include related objects (e.g., the blocker preventing the project from moving)?</p></li><li><p><strong>Gap Analysis:</strong> If a critical piece of data is missing, does the system know it is missing? (Preventing the model from guessing).</p></li></ul><p><strong>4. THE STRUCTURE AUDIT (Parsability)</strong></p><ul><li><p><strong>Segmentation:</strong> Is the context broken into clear, labeled sections (e.g., <code>&lt;History&gt;</code>, <code>&lt;Rules&gt;</code>, <code>&lt;Data&gt;</code>)?</p></li><li><p><strong>Explicit Relationships:</strong> Are connections described explicitly (&#8221;X blocks Y&#8221;) rather than implied?</p></li><li><p><strong>Schema Adherence:</strong> Is domain knowledge presented as structured data, not a dump of raw text?</p></li></ul><p><strong>5. THE CONSTRAINT AUDIT (Safety &amp; Business Logic)</strong></p><ul><li><p><strong>Hard Rules:</strong> Are business rules embedded as commands, not suggestions?</p></li><li><p><strong>Tone &amp; Style:</strong> Are formatting and voice requirements explicitly defined?</p></li><li><p><strong>Permissions:</strong> Is the model explicitly told what it <em>cannot</em> do or access?</p></li></ul><h4>Part 2: The Orchestrator Meta-Prompt</h4><p><strong>The Template for High-Fidelity Reasoning</strong></p><p>This is the template used by top-tier AI agents. It forces the LLM to operate within a &#8220;structured reasoning cage,&#8221; dramatically reducing drift.</p><p>Copy this structure for your system prompt:</p></li></ol><pre><code>[System Instructions] 
You are an AI assistant operating inside a structured context engine. 
Your primary directive is to follow all business rules, domain constraints, and formatting instructions exactly. 
You must not invent facts. You are restricted to the context provided below.

[User Intent]
{inferred_intent}   &lt;-- The interpreted goal, not just the raw text
{explicit_prompt}   &lt;-- What the user actually typed

[Relevant Entities]
{structured_entities} &lt;-- The specific nouns involved (tickets, users, files)

[Relationships]
{entity_relationships} &lt;-- How those nouns connect (dependencies, ownership)

[Session State]
{recent_messages}     &lt;-- Short-term memory
{recent_selections}   &lt;-- Implicit context (clicks, hovers)

[User Profile]
{role}                &lt;-- Who is asking?
{tone_preferences}    &lt;-- How do they like to read?
{prior_examples}      &lt;-- Few-shot examples of success

[Domain Context]
{retrieved_docs}      &lt;-- RAG results, strictly filtered
{summaries}           &lt;-- Distilled knowledge
{attached_metadata}   &lt;-- Environment variables (Time, Location)

[Rules &amp; Constraints]
{business_rules}      &lt;-- Hard logic (e.g., &#8220;Never promise dates&#8221;)
{policies}            &lt;-- Safety guidelines
{prohibited_actions}  &lt;-- Negative constraints

[Environment Signals]
{calendar_events}     &lt;-- Temporal context
{deadlines}           &lt;-- Urgency signals
{system_status}       &lt;-- Operational reality

[Task Instructions]
Clear, step-by-step instructions for what the model must produce right now.

[Output Schema]
{json_schema_or_output_structure} &lt;-- The exact format required</code></pre><p><em>Adopting this template typically reduces hallucination rates by over 70% in production systems.</em></p><h4>Part 3: The Template in Action (Example)</h4><p><strong>Scenario: The AI Product Management Assistant</strong></p><p>To show you exactly how this looks populated, here is a real-world example of an orchestrator prompt generating a <strong>Weekly Status Update</strong>.</p><p>Notice how the &#8220;raw&#8221; data has been transformed into structured knowledge before the model ever sees it.</p><p><strong>THE PROMPT PAYLOAD:</strong></p><pre><code>[System Instructions]
You are an AI assistant operating inside a structured context engine for a product team.

You write weekly product status updates for senior stakeholders (VP Product, CTO, CEO) based strictly on the context provided below.

You must:
- Follow all business rules, domain constraints, and formatting instructions exactly.
- Never invent projects, metrics, incidents, or timelines that are not explicitly present in Domain Context.
- Treat the Domain Context and Rules sections as the single source of truth.
- If critical information is missing, state what is missing. Do not guess.

[User Intent]
{inferred_intent}:
&#8220;Summarize the most important product changes, progress, risks, and next steps for the past week into an executive-ready weekly update.&#8221;
{explicit_prompt}:
&#8220;Can you draft this week&#8217;s product update for leadership based on what changed since last Monday?&#8221;

[Relevant Entities]
{structured_entities}:
- project_roadmap_item:
    id: &#8220;PRJ-142&#8221;
    title: &#8220;Onboarding Funnel Revamp&#8221;
    owner: &#8220;Sara&#8221;
    status: &#8220;In Progress&#8221;
    target_release: &#8220;2025-12-01&#8221;
- project_roadmap_item:
    id: &#8220;PRJ-087&#8221;
    title: &#8220;AI Assistant v2&#8221;
    owner: &#8220;Imran&#8221;
    status: &#8220;Shipped&#8221;
    target_release: &#8220;2025-11-15&#8221;
- metric:
    id: &#8220;MTR-DAU&#8221;
    name: &#8220;Daily Active Users&#8221;
    current_value: 18240
    previous_value: 17680
    unit: &#8220;users&#8221;
- incident:
    id: &#8220;INC-221&#8221;
    title: &#8220;Checkout Latency Spike&#8221;
    status: &#8220;Resolved&#8221;
    severity: &#8220;High&#8221;

[Relationships]
{entity_relationships}:
- &#8220;PRJ-142&#8221; depends_on &#8220;PRJ-087&#8221;
- &#8220;INC-221&#8221; impacted &#8220;checkout_conversion&#8221;
- &#8220;MTR-DAU&#8221; improved_after &#8220;AI Assistant v2&#8221; release
- &#8220;PRJ-087&#8221; linked_to_release &#8220;2025.11.15-prod&#8221;

[Session State]
{recent_messages}:
- 2025-11-17T09:03Z &#8211; User: &#8220;Last week&#8217;s update is in the doc; I want something similar but shorter.&#8221;
- 2025-11-17T09:04Z &#8211; Assistant: &#8220;Understood, I will keep a similar structure but be more concise.&#8221;
- 2025-11-17T09:06Z &#8211; User: &#8220;Don&#8217;t oversell wins; keep it realistic.&#8221;

{recent_selections}:
- User highlighted last week&#8217;s &#8220;Risks &amp; Blockers&#8221; section.
- User opened the &#8220;AI Assistant v2 &#8211; Launch Notes&#8221; document.

[User Profile]
{role}:
- &#8220;Director of Product, responsible for AI &amp; Growth initiatives.&#8221;

{tone_preferences}:
- Confident but not hype.
- Data-informed, not overly narrative.
- Clear separation of &#8220;What happened&#8221;, &#8220;Why it matters&#8221;, and &#8220;What&#8217;s next&#8221;.

{prior_examples}:
- Example snippet: &#8220;This week we completed the rollout of the new onboarding experiment to 50% of new users. Early results show a +3.2% lift in activation.&#8221;

[Domain Context]
{retrieved_docs}:
- &#8220;Weekly Update &#8211; 2025-11-10&#8221; (last week&#8217;s product update)
- &#8220;AI Assistant v2 &#8211; Launch Notes&#8221;
- &#8220;Onboarding Funnel &#8211; Experiment Spec v3&#8221;
- &#8220;Incident Report &#8211; INC-221 Checkout Latency&#8221;

{summaries}:
- Last Week&#8217;s Update Summary: &#8220;Focused on preparing AI Assistant v2 launch, mitigating checkout latency incidents.&#8221;
- AI Assistant v2 Launch Notes Summary: &#8220;Shipped on 2025-11-15 to 100% of users, goals: improve task completion speed.&#8221;
- Incident INC-221 Summary: &#8220;High-severity latency issue, resolved within 4 hours, root cause: misconfigured database index.&#8221;

{attached_metadata}:
- current_week_range: &#8220;2025-11-10 to 2025-11-17&#8221;
- timezone: &#8220;America/Los_Angeles&#8221;
- environment: &#8220;Production&#8221;

[Rules &amp; Constraints]
{business_rules}:
- Do not share internal incident IDs (e.g., INC-221); describe incidents in business terms.
- Do not reference customers by name; aggregate or anonymize.
- Always tie product work back to business outcomes (activation, retention).

{policies}:
- No forward-looking commitments beyond the existing roadmap.
- Maintain consistency with official metric definitions.

{formatting_requirements}:
- Structure exactly as: 1. Highlights, 2. Metrics &amp; Impact, 3. Risks &amp; Blockers, 4. Next Week.
- Use Markdown headers (H2).
- Total length under 600 words.

{prohibited_actions}:
- Do not fabricate metrics, dates, or launches.
- Do not mention features not explicitly referenced in Domain Context.

[Environment Signals]
{calendar_events}:
- Today is Monday, 2025-11-17.
- &#8220;Exec Product Sync&#8221; is scheduled for 15:30 today.

{deadlines}:
- Q4 goals lock on 2025-12-01.

{system_status}:
- All systems operational. Analytics data is fresh as of 08:00Z.

[Task Instructions]
Using only the information provided above:
1. Draft a weekly product update that is realistic, grounded, and aligned with the user&#8217;s tone.
2. Follow the required structure: Highlights, Metrics &amp; Impact, Risks &amp; Blockers, Next Week.
3. Emphasize what actually changed this week compared to last week.
4. Connect product work to business outcomes using the provided metrics.
5. If there are known gaps (e.g., missing metric results), note them transparently.

[Output Schema]
Return the final result as a JSON object with the following shape:
{
  &#8220;highlights_markdown&#8221;: &#8220;string &#8211; Markdown-formatted section&#8221;,
  &#8220;metrics_and_impact_markdown&#8221;: &#8220;string &#8211; Markdown-formatted section&#8221;,
  &#8220;risks_and_blockers_markdown&#8221;: &#8220;string &#8211; Markdown-formatted section&#8221;,
  &#8220;next_week_markdown&#8221;: &#8220;string &#8211; Markdown-formatted section&#8221;,
  &#8220;notes_for_user&#8221;: &#8220;string &#8211; Any caveats or assumptions made&#8221;
}</code></pre><div><hr></div><h3>Final Words: The Age of Context</h3><p>We are crossing the threshold into what will be remembered as <strong>The Age of Context</strong>.</p><p>In the early 2020s, the industry was obsessed with &#8220;Model-First&#8221; development. We built wrappers around APIs, relied on clever prompts, and chased demo-day magic. Those tools dazzled for a moment, but they inevitably disappointed the second they encountered the messy reality of enterprise work. Those systems are fading, and they should.</p><p>The next decade belongs to <strong>Context-First</strong> architectures.</p><p>We are moving toward systems that do not just generate text, but that understand users with the intuition of a long-time colleague. Systems that navigate institutional history like a veteran employee. Systems that anticipate next steps like a strategic partner. And systems that respect boundaries with the rigor of a compliance officer.</p><p><strong>The Only Durable Moat</strong> Crucially, this is where the business value lies. A frontier model is a commodity; anyone can rent the smartest brain in the world for a few cents per token. But <strong>Context</strong> is an asset you own. It is the only defensible moat left.</p><ul><li><p>Your domain knowledge graph is a moat.</p></li><li><p>Your codified business rules are a moat.</p></li><li><p>Your user memory bank is a moat.</p></li><li><p>Your operational workflows are a moat.</p></li><li><p>Your environmental sensors are a moat.</p></li><li><p>Your orchestration logic is a moat.</p></li><li><p>Your data provenance is a moat.</p></li></ul><p><strong>And these moats compound.</strong></p><p>The teams that embrace context engineering today will build products that feel impossibly intelligent&#8212;not because they have a better model than their competitors, but because they have architected a system where intelligence is distributed across layers of memory, structure, reasoning, and constraint.</p><p>If you are building AI products, this is your invitation&#8212;and your responsibility.</p><p>Stop waiting for the next model breakthrough to solve your problems. </p><p><strong>The true foundation of intelligence is not inference.</strong> <strong>It is Context.</strong></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://news.adityeah.in/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Adityeah&#8217;s Newsletter! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The Vector Database Blueprint: Understanding Embeddings and BERT from the Ground Up]]></title><description><![CDATA[Vector Databases crash course- Part 1]]></description><link>https://news.adityeah.in/p/the-vector-database-blueprint-understanding</link><guid isPermaLink="false">https://news.adityeah.in/p/the-vector-database-blueprint-understanding</guid><dc:creator><![CDATA[Aditya]]></dc:creator><pubDate>Thu, 21 Aug 2025 17:40:20 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!lnV4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f5d321c-22f0-462c-a31f-11f9ac3467a8_2000x1069.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>It&#8217;s pretty likely that in the generative AI era (since the release of ChatGPT, to be more precise), you must have at least heard of the term &#8220;<strong>vector databases</strong>.&#8221;</p><p>It&#8217;s okay if you don&#8217;t know what they are, as this article is primarily intended to explain everything about vector databases in detail.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://news.adityeah.in/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Adityeah&#8217;s Substack! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>But given how popular they have become lately, I think it is crucial to be aware of what makes them so powerful that they gained so much popularity, and their practical utility not just in LLMs but in other applications as well.</p><p>Let&#8217;s dive in!</p><h2><strong>What are vector databases?</strong></h2><h3><strong>Objective</strong></h3><p>To begin, we must note that vector databases are NOT new.</p><p>In fact, they have existed for a pretty long time now. You have been indirectly interacting with them daily, even before they became widely popular lately. These include applications like recommendation systems, and search engines, for instance.</p><p>Simply put, a vector database stores <strong>unstructured data</strong> (text, images, audio, video, etc.) in the form of <strong>vector embeddings</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_!lnV4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f5d321c-22f0-462c-a31f-11f9ac3467a8_2000x1069.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lnV4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f5d321c-22f0-462c-a31f-11f9ac3467a8_2000x1069.png 424w, https://substackcdn.com/image/fetch/$s_!lnV4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f5d321c-22f0-462c-a31f-11f9ac3467a8_2000x1069.png 848w, https://substackcdn.com/image/fetch/$s_!lnV4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f5d321c-22f0-462c-a31f-11f9ac3467a8_2000x1069.png 1272w, https://substackcdn.com/image/fetch/$s_!lnV4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f5d321c-22f0-462c-a31f-11f9ac3467a8_2000x1069.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lnV4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f5d321c-22f0-462c-a31f-11f9ac3467a8_2000x1069.png" width="1456" height="778" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0f5d321c-22f0-462c-a31f-11f9ac3467a8_2000x1069.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:778,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lnV4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f5d321c-22f0-462c-a31f-11f9ac3467a8_2000x1069.png 424w, https://substackcdn.com/image/fetch/$s_!lnV4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f5d321c-22f0-462c-a31f-11f9ac3467a8_2000x1069.png 848w, https://substackcdn.com/image/fetch/$s_!lnV4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f5d321c-22f0-462c-a31f-11f9ac3467a8_2000x1069.png 1272w, https://substackcdn.com/image/fetch/$s_!lnV4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f5d321c-22f0-462c-a31f-11f9ac3467a8_2000x1069.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Each data point, whether a word, a document, an image, or any other entity, is transformed into a numerical vector using ML techniques (which we shall see ahead).</p><p>This numerical vector is called an <strong>embedding,</strong> and the model is trained in such a way that these vectors capture the essential features and characteristics of the underlying data.</p><p>Considering word embeddings, for instance, we may discover that in the embedding space, the embeddings of fruits are found close to each other, which cities form another cluster, and so 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_!2Z42!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72471a8c-cf8b-4b89-bed2-542c5a629e1c_2000x660.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2Z42!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72471a8c-cf8b-4b89-bed2-542c5a629e1c_2000x660.png 424w, https://substackcdn.com/image/fetch/$s_!2Z42!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72471a8c-cf8b-4b89-bed2-542c5a629e1c_2000x660.png 848w, https://substackcdn.com/image/fetch/$s_!2Z42!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72471a8c-cf8b-4b89-bed2-542c5a629e1c_2000x660.png 1272w, https://substackcdn.com/image/fetch/$s_!2Z42!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72471a8c-cf8b-4b89-bed2-542c5a629e1c_2000x660.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2Z42!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72471a8c-cf8b-4b89-bed2-542c5a629e1c_2000x660.png" width="1456" height="480" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/72471a8c-cf8b-4b89-bed2-542c5a629e1c_2000x660.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:480,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!2Z42!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72471a8c-cf8b-4b89-bed2-542c5a629e1c_2000x660.png 424w, https://substackcdn.com/image/fetch/$s_!2Z42!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72471a8c-cf8b-4b89-bed2-542c5a629e1c_2000x660.png 848w, https://substackcdn.com/image/fetch/$s_!2Z42!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72471a8c-cf8b-4b89-bed2-542c5a629e1c_2000x660.png 1272w, https://substackcdn.com/image/fetch/$s_!2Z42!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72471a8c-cf8b-4b89-bed2-542c5a629e1c_2000x660.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This shows that embeddings can learn the semantic characteristics of entities they represent (provided they are trained appropriately).</p><p>Once stored in a vector database, we can retrieve original objects that are similar to the query we wish to run on our unstructured data.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UsvE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9de15332-2d9d-4356-8ca2-7306c4be072c_2000x704.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UsvE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9de15332-2d9d-4356-8ca2-7306c4be072c_2000x704.png 424w, https://substackcdn.com/image/fetch/$s_!UsvE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9de15332-2d9d-4356-8ca2-7306c4be072c_2000x704.png 848w, https://substackcdn.com/image/fetch/$s_!UsvE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9de15332-2d9d-4356-8ca2-7306c4be072c_2000x704.png 1272w, https://substackcdn.com/image/fetch/$s_!UsvE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9de15332-2d9d-4356-8ca2-7306c4be072c_2000x704.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UsvE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9de15332-2d9d-4356-8ca2-7306c4be072c_2000x704.png" width="1456" height="513" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9de15332-2d9d-4356-8ca2-7306c4be072c_2000x704.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:513,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!UsvE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9de15332-2d9d-4356-8ca2-7306c4be072c_2000x704.png 424w, https://substackcdn.com/image/fetch/$s_!UsvE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9de15332-2d9d-4356-8ca2-7306c4be072c_2000x704.png 848w, https://substackcdn.com/image/fetch/$s_!UsvE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9de15332-2d9d-4356-8ca2-7306c4be072c_2000x704.png 1272w, https://substackcdn.com/image/fetch/$s_!UsvE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9de15332-2d9d-4356-8ca2-7306c4be072c_2000x704.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>In other words, encoding <strong>unstructured data</strong> allows us to run many sophisticated operations like similarity search, clustering, and classification over it, which otherwise is difficult with traditional databases.</p><p>To exemplify, when an e-commerce website provides recommendations for similar items or searches for a product based on the input query, we&#8217;re (<strong>in most cases</strong>) interacting with vector databases behind the scenes.</p><div><hr></div><p>Before we get into the technical details, let me give you a couple of intuitive examples to understand vector databases and their immense utility.</p><h3><strong>Example #1</strong></h3><p>Let's imagine we have a collection of photographs from various vacations we&#8217;ve taken over the years. Each photo captures different scenes, such as beaches, mountains, cities, and forests.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rElo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8944b2e-85a4-492c-af44-ee90367705f4_2000x804.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rElo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8944b2e-85a4-492c-af44-ee90367705f4_2000x804.png 424w, https://substackcdn.com/image/fetch/$s_!rElo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8944b2e-85a4-492c-af44-ee90367705f4_2000x804.png 848w, https://substackcdn.com/image/fetch/$s_!rElo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8944b2e-85a4-492c-af44-ee90367705f4_2000x804.png 1272w, https://substackcdn.com/image/fetch/$s_!rElo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8944b2e-85a4-492c-af44-ee90367705f4_2000x804.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rElo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8944b2e-85a4-492c-af44-ee90367705f4_2000x804.png" width="1456" height="585" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b8944b2e-85a4-492c-af44-ee90367705f4_2000x804.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:585,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!rElo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8944b2e-85a4-492c-af44-ee90367705f4_2000x804.png 424w, https://substackcdn.com/image/fetch/$s_!rElo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8944b2e-85a4-492c-af44-ee90367705f4_2000x804.png 848w, https://substackcdn.com/image/fetch/$s_!rElo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8944b2e-85a4-492c-af44-ee90367705f4_2000x804.png 1272w, https://substackcdn.com/image/fetch/$s_!rElo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8944b2e-85a4-492c-af44-ee90367705f4_2000x804.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Now, we want to organize these photos in a way that makes it easier to find similar ones quickly.</p><p>Traditionally, we might organize them by the date they were taken or the location where they were shot.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yNvK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd97b23ef-a986-4749-9b41-b929ad165eca_2000x844.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yNvK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd97b23ef-a986-4749-9b41-b929ad165eca_2000x844.png 424w, https://substackcdn.com/image/fetch/$s_!yNvK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd97b23ef-a986-4749-9b41-b929ad165eca_2000x844.png 848w, https://substackcdn.com/image/fetch/$s_!yNvK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd97b23ef-a986-4749-9b41-b929ad165eca_2000x844.png 1272w, https://substackcdn.com/image/fetch/$s_!yNvK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd97b23ef-a986-4749-9b41-b929ad165eca_2000x844.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yNvK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd97b23ef-a986-4749-9b41-b929ad165eca_2000x844.png" width="1456" height="614" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d97b23ef-a986-4749-9b41-b929ad165eca_2000x844.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:614,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!yNvK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd97b23ef-a986-4749-9b41-b929ad165eca_2000x844.png 424w, https://substackcdn.com/image/fetch/$s_!yNvK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd97b23ef-a986-4749-9b41-b929ad165eca_2000x844.png 848w, https://substackcdn.com/image/fetch/$s_!yNvK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd97b23ef-a986-4749-9b41-b929ad165eca_2000x844.png 1272w, https://substackcdn.com/image/fetch/$s_!yNvK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd97b23ef-a986-4749-9b41-b929ad165eca_2000x844.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>However, we can take a more sophisticated approach by encoding them as vectors.</p><p>More specifically, instead of relying solely on dates or locations, we could represent each photo as a set of numerical vectors that capture the essence of the image.</p><blockquote><p>&#128161; While Google Photos doesn't explicitly disclose the exact technical details of its backend systems, I speculate that it uses a vector database to facilitate its image search and organization features, which you may have already used many times.</p></blockquote><p>Let&#8217;s say we use an algorithm that converts each photo into a vector based on its color composition, prominent shapes, textures, people, etc.</p><p>Each photo is now represented as a point in a multi-dimensional space, where the dimensions correspond to different visual features and elements in the image.</p><p>Now, when we want to find similar photos, say, based on our input text query, we encode the text query into a vector and compare it with image vectors.</p><p>Photos that match the query are expected to have vectors that are close together in this multi-dimensional space.</p><p>Suppose we wish to find images of mountains.</p><p>In that case, we can quickly find such photos by querying the vector database for images close to the vector representing the input query.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!t63V!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc70ac241-148c-4613-8886-3044ddea4b3a_2000x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!t63V!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc70ac241-148c-4613-8886-3044ddea4b3a_2000x608.png 424w, https://substackcdn.com/image/fetch/$s_!t63V!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc70ac241-148c-4613-8886-3044ddea4b3a_2000x608.png 848w, https://substackcdn.com/image/fetch/$s_!t63V!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc70ac241-148c-4613-8886-3044ddea4b3a_2000x608.png 1272w, https://substackcdn.com/image/fetch/$s_!t63V!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc70ac241-148c-4613-8886-3044ddea4b3a_2000x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!t63V!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc70ac241-148c-4613-8886-3044ddea4b3a_2000x608.png" width="1456" height="443" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c70ac241-148c-4613-8886-3044ddea4b3a_2000x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:443,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!t63V!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc70ac241-148c-4613-8886-3044ddea4b3a_2000x608.png 424w, https://substackcdn.com/image/fetch/$s_!t63V!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc70ac241-148c-4613-8886-3044ddea4b3a_2000x608.png 848w, https://substackcdn.com/image/fetch/$s_!t63V!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc70ac241-148c-4613-8886-3044ddea4b3a_2000x608.png 1272w, https://substackcdn.com/image/fetch/$s_!t63V!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc70ac241-148c-4613-8886-3044ddea4b3a_2000x608.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A point to note here is that a vector database is NOT just a database to keep track of embeddings.</p><p>Instead, it maintains both the embeddings and the raw data which generated those embeddings.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ubEd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91a854ca-59b7-4141-be47-045fa3ab59e8_2000x1306.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ubEd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91a854ca-59b7-4141-be47-045fa3ab59e8_2000x1306.png 424w, https://substackcdn.com/image/fetch/$s_!ubEd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91a854ca-59b7-4141-be47-045fa3ab59e8_2000x1306.png 848w, https://substackcdn.com/image/fetch/$s_!ubEd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91a854ca-59b7-4141-be47-045fa3ab59e8_2000x1306.png 1272w, https://substackcdn.com/image/fetch/$s_!ubEd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91a854ca-59b7-4141-be47-045fa3ab59e8_2000x1306.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ubEd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91a854ca-59b7-4141-be47-045fa3ab59e8_2000x1306.png" width="1456" height="951" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/91a854ca-59b7-4141-be47-045fa3ab59e8_2000x1306.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:951,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!ubEd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91a854ca-59b7-4141-be47-045fa3ab59e8_2000x1306.png 424w, https://substackcdn.com/image/fetch/$s_!ubEd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91a854ca-59b7-4141-be47-045fa3ab59e8_2000x1306.png 848w, https://substackcdn.com/image/fetch/$s_!ubEd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91a854ca-59b7-4141-be47-045fa3ab59e8_2000x1306.png 1272w, https://substackcdn.com/image/fetch/$s_!ubEd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91a854ca-59b7-4141-be47-045fa3ab59e8_2000x1306.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>Why is that necessary, you may wonder?</p><p>Considering the above image retrieval task again, if our vector database is only composed of vectors, we would also need a way to reconstruct the image because that is what the end-user needs.</p><p>When a user queries for images of mountains, they would receive a list of vectors representing similar images, but without the actual images.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XgT5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71b4e388-43a9-433a-b691-fd04acf4ea0e_2000x366.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XgT5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71b4e388-43a9-433a-b691-fd04acf4ea0e_2000x366.png 424w, https://substackcdn.com/image/fetch/$s_!XgT5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71b4e388-43a9-433a-b691-fd04acf4ea0e_2000x366.png 848w, https://substackcdn.com/image/fetch/$s_!XgT5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71b4e388-43a9-433a-b691-fd04acf4ea0e_2000x366.png 1272w, https://substackcdn.com/image/fetch/$s_!XgT5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71b4e388-43a9-433a-b691-fd04acf4ea0e_2000x366.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XgT5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71b4e388-43a9-433a-b691-fd04acf4ea0e_2000x366.png" width="1456" height="266" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/71b4e388-43a9-433a-b691-fd04acf4ea0e_2000x366.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:266,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!XgT5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71b4e388-43a9-433a-b691-fd04acf4ea0e_2000x366.png 424w, https://substackcdn.com/image/fetch/$s_!XgT5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71b4e388-43a9-433a-b691-fd04acf4ea0e_2000x366.png 848w, https://substackcdn.com/image/fetch/$s_!XgT5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71b4e388-43a9-433a-b691-fd04acf4ea0e_2000x366.png 1272w, https://substackcdn.com/image/fetch/$s_!XgT5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71b4e388-43a9-433a-b691-fd04acf4ea0e_2000x366.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>By storing both the embeddings (the vectors representing the images) and the raw image data, the vector database ensures that when a user queries for similar images, it not only returns the closest matching vectors but also provides access to the original images.</p><h3><strong>Example #2</strong></h3><p>In this example, consider an all-text unstructured data, say thousands of news articles, and we wish to search for an answer from that data.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!odb9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1ffb055-1d3c-44c2-b3b5-913372836550_2501x993.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!odb9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1ffb055-1d3c-44c2-b3b5-913372836550_2501x993.png 424w, https://substackcdn.com/image/fetch/$s_!odb9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1ffb055-1d3c-44c2-b3b5-913372836550_2501x993.png 848w, https://substackcdn.com/image/fetch/$s_!odb9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1ffb055-1d3c-44c2-b3b5-913372836550_2501x993.png 1272w, https://substackcdn.com/image/fetch/$s_!odb9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1ffb055-1d3c-44c2-b3b5-913372836550_2501x993.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!odb9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1ffb055-1d3c-44c2-b3b5-913372836550_2501x993.png" width="1456" height="578" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a1ffb055-1d3c-44c2-b3b5-913372836550_2501x993.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:578,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!odb9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1ffb055-1d3c-44c2-b3b5-913372836550_2501x993.png 424w, https://substackcdn.com/image/fetch/$s_!odb9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1ffb055-1d3c-44c2-b3b5-913372836550_2501x993.png 848w, https://substackcdn.com/image/fetch/$s_!odb9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1ffb055-1d3c-44c2-b3b5-913372836550_2501x993.png 1272w, https://substackcdn.com/image/fetch/$s_!odb9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1ffb055-1d3c-44c2-b3b5-913372836550_2501x993.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>Traditional search methods rely on exact keyword search, which is entirely a brute-force approach and does not consider the inherent complexity of text data.</p><p>In other words, languages are incredibly nuanced, and each language provides various ways to express the same idea or ask the same question.</p><p>For instance, a simple inquiry like "What's the weather like today?" can be phrased in numerous ways, such as "How's the weather today?", "Is it sunny outside?", or "What are the current weather conditions?".</p><p>This linguistic diversity makes traditional keyword-based search methods inadequate.</p><p>As you may have already guessed, representing this data as vectors can be pretty helpful in this situation too.</p><p>Instead of relying solely on keywords and following a brute-force search, we can first represent text data in a high-dimensional vector space and store them in a vector 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_!G12M!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18e63d04-804d-4a82-9308-8b99c4027f57_2000x757.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!G12M!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18e63d04-804d-4a82-9308-8b99c4027f57_2000x757.png 424w, https://substackcdn.com/image/fetch/$s_!G12M!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18e63d04-804d-4a82-9308-8b99c4027f57_2000x757.png 848w, https://substackcdn.com/image/fetch/$s_!G12M!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18e63d04-804d-4a82-9308-8b99c4027f57_2000x757.png 1272w, https://substackcdn.com/image/fetch/$s_!G12M!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18e63d04-804d-4a82-9308-8b99c4027f57_2000x757.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!G12M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18e63d04-804d-4a82-9308-8b99c4027f57_2000x757.png" width="1456" height="551" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/18e63d04-804d-4a82-9308-8b99c4027f57_2000x757.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:551,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!G12M!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18e63d04-804d-4a82-9308-8b99c4027f57_2000x757.png 424w, https://substackcdn.com/image/fetch/$s_!G12M!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18e63d04-804d-4a82-9308-8b99c4027f57_2000x757.png 848w, https://substackcdn.com/image/fetch/$s_!G12M!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18e63d04-804d-4a82-9308-8b99c4027f57_2000x757.png 1272w, https://substackcdn.com/image/fetch/$s_!G12M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18e63d04-804d-4a82-9308-8b99c4027f57_2000x757.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>When users pose queries, the vector database can compare the vector representation of the query with that of the text data, <strong>even if they don't share the exact same wording.</strong></p><div><hr></div><h3><strong>How to generate embeddings?</strong></h3><p>At this point, if you are wondering how do we even transform words (strings) into vectors (a list of numbers), let me explain.</p><p>To build models for language-oriented tasks, it is crucial to generate numerical representations (or vectors) for words.</p><p>This allows words to be processed and manipulated mathematically and perform various computational operations on words.</p><p>The objective of embeddings is to capture semantic and syntactic relationships between words. This helps machines understand and reason about language more effectively.</p><p>In the pre-Transformers era, this was primarily done using pre-trained static embeddings.</p><p>Essentially, someone would train embeddings on, say, 100k, or 200k common words using deep learning techniques and open-source them.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Wop-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe0dd5fb-5073-429c-b2ac-5818227639b6_2000x478.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Wop-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe0dd5fb-5073-429c-b2ac-5818227639b6_2000x478.png 424w, https://substackcdn.com/image/fetch/$s_!Wop-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe0dd5fb-5073-429c-b2ac-5818227639b6_2000x478.png 848w, https://substackcdn.com/image/fetch/$s_!Wop-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe0dd5fb-5073-429c-b2ac-5818227639b6_2000x478.png 1272w, https://substackcdn.com/image/fetch/$s_!Wop-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe0dd5fb-5073-429c-b2ac-5818227639b6_2000x478.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Wop-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe0dd5fb-5073-429c-b2ac-5818227639b6_2000x478.png" width="1456" height="348" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/be0dd5fb-5073-429c-b2ac-5818227639b6_2000x478.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:348,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!Wop-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe0dd5fb-5073-429c-b2ac-5818227639b6_2000x478.png 424w, https://substackcdn.com/image/fetch/$s_!Wop-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe0dd5fb-5073-429c-b2ac-5818227639b6_2000x478.png 848w, https://substackcdn.com/image/fetch/$s_!Wop-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe0dd5fb-5073-429c-b2ac-5818227639b6_2000x478.png 1272w, https://substackcdn.com/image/fetch/$s_!Wop-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe0dd5fb-5073-429c-b2ac-5818227639b6_2000x478.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Consequently, other researchers would utilize those embeddings in their projects.</p><p>The most popular models at that time (around 2013-2017) were:</p><ul><li><p>Glove</p></li><li><p>Word2Vec</p></li><li><p>FastText, etc.</p></li></ul><p>These embeddings genuinely showed some promising results in learning the relationships between words.</p><p>For instance, at that time, an experiment showed that the vector operation <code>(King - Man) + Woman</code> returned a vector near the word <code>Queen</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_!jwtO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d098e18-7a12-4c2f-ac68-12fa5394c0d6_594x278.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jwtO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d098e18-7a12-4c2f-ac68-12fa5394c0d6_594x278.png 424w, https://substackcdn.com/image/fetch/$s_!jwtO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d098e18-7a12-4c2f-ac68-12fa5394c0d6_594x278.png 848w, https://substackcdn.com/image/fetch/$s_!jwtO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d098e18-7a12-4c2f-ac68-12fa5394c0d6_594x278.png 1272w, https://substackcdn.com/image/fetch/$s_!jwtO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d098e18-7a12-4c2f-ac68-12fa5394c0d6_594x278.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jwtO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d098e18-7a12-4c2f-ac68-12fa5394c0d6_594x278.png" width="594" height="278" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5d098e18-7a12-4c2f-ac68-12fa5394c0d6_594x278.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:278,&quot;width&quot;:594,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!jwtO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d098e18-7a12-4c2f-ac68-12fa5394c0d6_594x278.png 424w, https://substackcdn.com/image/fetch/$s_!jwtO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d098e18-7a12-4c2f-ac68-12fa5394c0d6_594x278.png 848w, https://substackcdn.com/image/fetch/$s_!jwtO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d098e18-7a12-4c2f-ac68-12fa5394c0d6_594x278.png 1272w, https://substackcdn.com/image/fetch/$s_!jwtO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d098e18-7a12-4c2f-ac68-12fa5394c0d6_594x278.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>That&#8217;s pretty interesting, isn&#8217;t it?</p><p>In fact, the following relationships were also found to be true:</p><ul><li><p><code>Paris - France + Italy</code> &#8776; <code>Rome</code></p></li><li><p><code>Summer - Hot + Cold</code> &#8776; <code>Winter</code></p></li><li><p><code>Actor - Man + Woman</code> &#8776; <code>Actress</code></p></li><li><p>and more.</p></li></ul><p>So, while these embeddings captured relative word representations, there was a major limitation.</p><p>Consider the following two sentences:</p><ul><li><p>Convert this data into a <strong>table</strong> in Excel.</p></li><li><p>Put this bottle on the <strong>table</strong>.</p></li></ul><p>Here, the word &#8220;<strong>table</strong>&#8221; conveys two entirely different meanings:</p><ul><li><p>The first sentence refers to a &#8220;<strong>data</strong>&#8221; specific sense of the word &#8220;table.&#8221;</p></li><li><p>The second sentence refers to a &#8220;<strong>furniture</strong>&#8221; specific sense of the word &#8220;table.&#8221;</p></li></ul><p>Yet, static embedding models assigned them the same representation.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tVjP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff72ce80b-fe12-4dfe-81d1-f9998c20de86_878x179.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tVjP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff72ce80b-fe12-4dfe-81d1-f9998c20de86_878x179.png 424w, https://substackcdn.com/image/fetch/$s_!tVjP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff72ce80b-fe12-4dfe-81d1-f9998c20de86_878x179.png 848w, https://substackcdn.com/image/fetch/$s_!tVjP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff72ce80b-fe12-4dfe-81d1-f9998c20de86_878x179.png 1272w, https://substackcdn.com/image/fetch/$s_!tVjP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff72ce80b-fe12-4dfe-81d1-f9998c20de86_878x179.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tVjP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff72ce80b-fe12-4dfe-81d1-f9998c20de86_878x179.png" width="878" height="179" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f72ce80b-fe12-4dfe-81d1-f9998c20de86_878x179.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:179,&quot;width&quot;:878,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!tVjP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff72ce80b-fe12-4dfe-81d1-f9998c20de86_878x179.png 424w, https://substackcdn.com/image/fetch/$s_!tVjP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff72ce80b-fe12-4dfe-81d1-f9998c20de86_878x179.png 848w, https://substackcdn.com/image/fetch/$s_!tVjP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff72ce80b-fe12-4dfe-81d1-f9998c20de86_878x179.png 1272w, https://substackcdn.com/image/fetch/$s_!tVjP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff72ce80b-fe12-4dfe-81d1-f9998c20de86_878x179.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Thus, these embeddings didn&#8217;t consider that a word may have different usages in different contexts.</p><p>But this was addressed in the Transformer era, which resulted in contextualized embedding models powered by Transformers, such as:</p><ul><li><p><strong>BERT</strong>: A language model trained using two techniques:</p><ul><li><p>Masked Language Modeling (MLM): Predict a missing word in the sentence, given the surrounding words.</p></li><li><p>Next Sentence Prediction (NSP).</p></li><li><p><em>We shall discuss it in a bit more detail shortly.</em></p></li></ul></li><li><p><strong>DistilBERT</strong>: A simple, effective, and lighter version of BERT, which is around 40% smaller:</p><ul><li><p>Utilizes a common machine learning strategy called student-teacher theory.</p></li><li><p>Here, the student is the distilled version of BERT, and the teacher is the original BERT model.</p></li><li><p>The student model is supposed to replicate the teacher model&#8217;s behavior.</p></li></ul></li><li><p><strong>SentenceTransformer</strong>: If you read the most recent <a href="https://www.dailydoseofds.com/you-are-probably-building-inconsistent-classification-models-without-even-realizing/">deep dive on building classification models on ordinal data</a>, we discussed this model there.</p><ul><li><p>Essentially, the <strong>SentenceTransformer</strong> model takes an entire sentence and generates an embedding for that sentence.</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_!dAm2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb93a5a7-898a-498c-a5fe-b3dba2828062_2000x877.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dAm2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb93a5a7-898a-498c-a5fe-b3dba2828062_2000x877.png 424w, https://substackcdn.com/image/fetch/$s_!dAm2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb93a5a7-898a-498c-a5fe-b3dba2828062_2000x877.png 848w, https://substackcdn.com/image/fetch/$s_!dAm2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb93a5a7-898a-498c-a5fe-b3dba2828062_2000x877.png 1272w, https://substackcdn.com/image/fetch/$s_!dAm2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb93a5a7-898a-498c-a5fe-b3dba2828062_2000x877.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dAm2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb93a5a7-898a-498c-a5fe-b3dba2828062_2000x877.png" width="1456" height="638" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cb93a5a7-898a-498c-a5fe-b3dba2828062_2000x877.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:638,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!dAm2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb93a5a7-898a-498c-a5fe-b3dba2828062_2000x877.png 424w, https://substackcdn.com/image/fetch/$s_!dAm2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb93a5a7-898a-498c-a5fe-b3dba2828062_2000x877.png 848w, https://substackcdn.com/image/fetch/$s_!dAm2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb93a5a7-898a-498c-a5fe-b3dba2828062_2000x877.png 1272w, https://substackcdn.com/image/fetch/$s_!dAm2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb93a5a7-898a-498c-a5fe-b3dba2828062_2000x877.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>This differs from the BERT and DistilBERT models, which produce an embedding for all words in the sentence.</p></li></ul><p>There are more models, but we won't go into more detail here, and I hope you get the point.</p><p>The idea is that these models are quite capable of generating context-aware representations, thanks to their self-attention mechanism and appropriate training mechanism.</p><h3><strong>BERT</strong></h3><p>For instance, if we consider BERT again, we discussed above that it uses the masked language modeling (MLM) technique and next sentence prediction (NSP).</p><p>These steps are also called the <strong>pre-training step</strong> of BERT because they involve training the model on a large corpus of text data before fine-tuning it on specific downstream tasks.</p><blockquote><p>Pre-training, in the context of machine learning model training, refers to the initial phase of training where the model learns general language representations from a large corpus of text data. The goal of pre-training is to enable the model to capture the syntactic and semantic properties of language, such as grammar, context, and relationships between words. While the text itself is unlabeled, MLM and NSP are two tasks that help us train the model in a supervised fashion. Once the model is trained, we can use the language understanding capabilities that the model acquired from the pre-training phase, and fine-tune the model on task-specific data. </p></blockquote><p>Moving on, let&#8217;s see how the pre-training objectives of masked language modeling (MLM) and next sentence prediction (NSP) help BERT generate embeddings.</p><h4><strong>#1) Masked Language Modeling (MLM)</strong></h4><ul><li><p>In MLM, BERT is trained to predict missing words in a sentence. To do this, a certain percentage of words in <strong>most</strong> (not all) sentences are randomly replaced with a special token, <code>[MASK]</code>.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!f0HW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9f233c9-78c0-494d-8d02-45a527a8f15d_639x200.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!f0HW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9f233c9-78c0-494d-8d02-45a527a8f15d_639x200.png 424w, https://substackcdn.com/image/fetch/$s_!f0HW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9f233c9-78c0-494d-8d02-45a527a8f15d_639x200.png 848w, https://substackcdn.com/image/fetch/$s_!f0HW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9f233c9-78c0-494d-8d02-45a527a8f15d_639x200.png 1272w, https://substackcdn.com/image/fetch/$s_!f0HW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9f233c9-78c0-494d-8d02-45a527a8f15d_639x200.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!f0HW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9f233c9-78c0-494d-8d02-45a527a8f15d_639x200.png" width="639" height="200" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a9f233c9-78c0-494d-8d02-45a527a8f15d_639x200.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:200,&quot;width&quot;:639,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!f0HW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9f233c9-78c0-494d-8d02-45a527a8f15d_639x200.png 424w, https://substackcdn.com/image/fetch/$s_!f0HW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9f233c9-78c0-494d-8d02-45a527a8f15d_639x200.png 848w, https://substackcdn.com/image/fetch/$s_!f0HW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9f233c9-78c0-494d-8d02-45a527a8f15d_639x200.png 1272w, https://substackcdn.com/image/fetch/$s_!f0HW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9f233c9-78c0-494d-8d02-45a527a8f15d_639x200.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>BERT then processes the masked sentence bidirectionally, meaning it considers both the left and right context of each masked word, that is why the name &#8220;<strong>Bidirectional</strong> Encoder Representation from Transformers (BERT).&#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_!XWq1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9591f21-ed41-45ca-9957-01996108eb33_639x263.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XWq1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9591f21-ed41-45ca-9957-01996108eb33_639x263.png 424w, https://substackcdn.com/image/fetch/$s_!XWq1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9591f21-ed41-45ca-9957-01996108eb33_639x263.png 848w, https://substackcdn.com/image/fetch/$s_!XWq1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9591f21-ed41-45ca-9957-01996108eb33_639x263.png 1272w, https://substackcdn.com/image/fetch/$s_!XWq1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9591f21-ed41-45ca-9957-01996108eb33_639x263.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XWq1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9591f21-ed41-45ca-9957-01996108eb33_639x263.png" width="639" height="263" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c9591f21-ed41-45ca-9957-01996108eb33_639x263.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:263,&quot;width&quot;:639,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!XWq1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9591f21-ed41-45ca-9957-01996108eb33_639x263.png 424w, https://substackcdn.com/image/fetch/$s_!XWq1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9591f21-ed41-45ca-9957-01996108eb33_639x263.png 848w, https://substackcdn.com/image/fetch/$s_!XWq1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9591f21-ed41-45ca-9957-01996108eb33_639x263.png 1272w, https://substackcdn.com/image/fetch/$s_!XWq1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9591f21-ed41-45ca-9957-01996108eb33_639x263.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>For each masked word, BERT predicts what the original word is supposed to be from its context. It does this by assigning a probability distribution over the entire vocabulary and selecting the word with the highest probability as the predicted word.</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_!SE4R!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7218e37c-1a18-408d-b1a3-0325c44dcb37_631x271.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SE4R!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7218e37c-1a18-408d-b1a3-0325c44dcb37_631x271.png 424w, https://substackcdn.com/image/fetch/$s_!SE4R!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7218e37c-1a18-408d-b1a3-0325c44dcb37_631x271.png 848w, https://substackcdn.com/image/fetch/$s_!SE4R!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7218e37c-1a18-408d-b1a3-0325c44dcb37_631x271.png 1272w, https://substackcdn.com/image/fetch/$s_!SE4R!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7218e37c-1a18-408d-b1a3-0325c44dcb37_631x271.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SE4R!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7218e37c-1a18-408d-b1a3-0325c44dcb37_631x271.png" width="631" height="271" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7218e37c-1a18-408d-b1a3-0325c44dcb37_631x271.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:271,&quot;width&quot;:631,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!SE4R!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7218e37c-1a18-408d-b1a3-0325c44dcb37_631x271.png 424w, https://substackcdn.com/image/fetch/$s_!SE4R!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7218e37c-1a18-408d-b1a3-0325c44dcb37_631x271.png 848w, https://substackcdn.com/image/fetch/$s_!SE4R!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7218e37c-1a18-408d-b1a3-0325c44dcb37_631x271.png 1272w, https://substackcdn.com/image/fetch/$s_!SE4R!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7218e37c-1a18-408d-b1a3-0325c44dcb37_631x271.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>During training, BERT is optimized to minimize the difference between the predicted words and the actual masked words, using techniques like cross-entropy loss.</p></li></ul><h4><strong>#2) Next Sentence Prediction (NSP)</strong></h4><ul><li><p>In NSP, BERT is trained to determine whether two input sentences appear consecutively in a document or whether they are randomly paired sentences from different documents.</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_!kqVe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb9044da-0b47-45a4-bb55-fafc9610f008_655x335.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kqVe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb9044da-0b47-45a4-bb55-fafc9610f008_655x335.png 424w, https://substackcdn.com/image/fetch/$s_!kqVe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb9044da-0b47-45a4-bb55-fafc9610f008_655x335.png 848w, https://substackcdn.com/image/fetch/$s_!kqVe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb9044da-0b47-45a4-bb55-fafc9610f008_655x335.png 1272w, https://substackcdn.com/image/fetch/$s_!kqVe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb9044da-0b47-45a4-bb55-fafc9610f008_655x335.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kqVe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb9044da-0b47-45a4-bb55-fafc9610f008_655x335.png" width="655" height="335" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bb9044da-0b47-45a4-bb55-fafc9610f008_655x335.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:335,&quot;width&quot;:655,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!kqVe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb9044da-0b47-45a4-bb55-fafc9610f008_655x335.png 424w, https://substackcdn.com/image/fetch/$s_!kqVe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb9044da-0b47-45a4-bb55-fafc9610f008_655x335.png 848w, https://substackcdn.com/image/fetch/$s_!kqVe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb9044da-0b47-45a4-bb55-fafc9610f008_655x335.png 1272w, https://substackcdn.com/image/fetch/$s_!kqVe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbb9044da-0b47-45a4-bb55-fafc9610f008_655x335.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>During training, BERT receives pairs of sentences as input. Half of these pairs are consecutive sentences from the same document (positive examples), and the other half are randomly paired sentences from different documents (negative examples).</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_!hsQ1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd035571a-ca83-4031-994a-1e69b512d9be_380x298.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hsQ1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd035571a-ca83-4031-994a-1e69b512d9be_380x298.png 424w, https://substackcdn.com/image/fetch/$s_!hsQ1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd035571a-ca83-4031-994a-1e69b512d9be_380x298.png 848w, https://substackcdn.com/image/fetch/$s_!hsQ1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd035571a-ca83-4031-994a-1e69b512d9be_380x298.png 1272w, https://substackcdn.com/image/fetch/$s_!hsQ1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd035571a-ca83-4031-994a-1e69b512d9be_380x298.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hsQ1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd035571a-ca83-4031-994a-1e69b512d9be_380x298.png" width="380" height="298" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d035571a-ca83-4031-994a-1e69b512d9be_380x298.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:298,&quot;width&quot;:380,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!hsQ1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd035571a-ca83-4031-994a-1e69b512d9be_380x298.png 424w, https://substackcdn.com/image/fetch/$s_!hsQ1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd035571a-ca83-4031-994a-1e69b512d9be_380x298.png 848w, https://substackcdn.com/image/fetch/$s_!hsQ1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd035571a-ca83-4031-994a-1e69b512d9be_380x298.png 1272w, https://substackcdn.com/image/fetch/$s_!hsQ1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd035571a-ca83-4031-994a-1e69b512d9be_380x298.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>BERT then learns to predict whether the second sentence follows the first sentence in the original document (<code>label 1</code>) or whether it is a randomly paired sentence (<code>label 0</code>).</p></li><li><p>Similar to MLM, BERT is optimized to minimize the difference between the predicted labels and the actual labels, using techniques like binary cross-entropy loss.</p></li></ul><blockquote><p>If we look back to MLM and NSP, in both cases, we did not need a labeled dataset to begin with. Instead, we used the structure of the text itself to create the training examples. This allows us to leverage large amounts of unlabeled text data, which is often more readily available than labeled data.</p></blockquote><p>Now, let's see how these pre-training objectives help BERT generate embeddings:</p><ul><li><p><strong>MLM:</strong> By predicting masked words based on their context, BERT learns to capture the meaning and context of each word in a sentence. The embeddings generated by BERT reflect not just the individual meanings of words but also their relationships with surrounding words in the sentence.</p></li><li><p><strong>NSP:</strong> By determining whether sentences are consecutive or not, BERT learns to understand the relationship between different sentences in a document. This helps BERT generate embeddings that capture not just the meaning of individual sentences but also the broader context of a document or text passage.</p></li></ul><div><hr></div><p>With consistent training, the model learns how different words relate to each other in sentences. It learns which words often come together and how they fit into the overall meaning of a sentence.</p><p>This learning process helps BERT create embeddings for words and sentences, which are <strong>contextualized</strong>, unlike earlier embeddings like Glove and Word2Vec:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WKU4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafa24b08-27b2-457d-b7df-eb23de4bc616_1019x229.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WKU4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafa24b08-27b2-457d-b7df-eb23de4bc616_1019x229.png 424w, https://substackcdn.com/image/fetch/$s_!WKU4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafa24b08-27b2-457d-b7df-eb23de4bc616_1019x229.png 848w, https://substackcdn.com/image/fetch/$s_!WKU4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafa24b08-27b2-457d-b7df-eb23de4bc616_1019x229.png 1272w, https://substackcdn.com/image/fetch/$s_!WKU4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafa24b08-27b2-457d-b7df-eb23de4bc616_1019x229.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WKU4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafa24b08-27b2-457d-b7df-eb23de4bc616_1019x229.png" width="1019" height="229" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/afa24b08-27b2-457d-b7df-eb23de4bc616_1019x229.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:229,&quot;width&quot;:1019,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!WKU4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafa24b08-27b2-457d-b7df-eb23de4bc616_1019x229.png 424w, https://substackcdn.com/image/fetch/$s_!WKU4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafa24b08-27b2-457d-b7df-eb23de4bc616_1019x229.png 848w, https://substackcdn.com/image/fetch/$s_!WKU4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafa24b08-27b2-457d-b7df-eb23de4bc616_1019x229.png 1272w, https://substackcdn.com/image/fetch/$s_!WKU4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafa24b08-27b2-457d-b7df-eb23de4bc616_1019x229.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Contextualized means that the embedding model can dynamically generate embeddings for a word based on the context they were used in.</p><p>As a result, if a word would appear in a different context, the model would return a different representation.</p><p>This is precisely depicted in the image below for different uses of the word <code>Bank</code>.</p><blockquote><p><em>For visualization purposes, the embeddings have been projected into 2d space using t-SNE.</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_!7PmP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3ea13e1-2e9b-4030-955f-85751d9fca97_2454x2439.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7PmP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3ea13e1-2e9b-4030-955f-85751d9fca97_2454x2439.jpeg 424w, https://substackcdn.com/image/fetch/$s_!7PmP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3ea13e1-2e9b-4030-955f-85751d9fca97_2454x2439.jpeg 848w, https://substackcdn.com/image/fetch/$s_!7PmP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3ea13e1-2e9b-4030-955f-85751d9fca97_2454x2439.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!7PmP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3ea13e1-2e9b-4030-955f-85751d9fca97_2454x2439.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7PmP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3ea13e1-2e9b-4030-955f-85751d9fca97_2454x2439.jpeg" width="1456" height="1447" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e3ea13e1-2e9b-4030-955f-85751d9fca97_2454x2439.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1447,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!7PmP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3ea13e1-2e9b-4030-955f-85751d9fca97_2454x2439.jpeg 424w, https://substackcdn.com/image/fetch/$s_!7PmP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3ea13e1-2e9b-4030-955f-85751d9fca97_2454x2439.jpeg 848w, https://substackcdn.com/image/fetch/$s_!7PmP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3ea13e1-2e9b-4030-955f-85751d9fca97_2454x2439.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!7PmP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe3ea13e1-2e9b-4030-955f-85751d9fca97_2454x2439.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></figure></div><p>As depicted above, the static embedding models &#8212; Glove and Word2Vec produce the same embedding for different usages of a word.</p><p>However, contextualized embedding models don&#8217;t.</p><p>In fact, contextualized embeddings understand the different meanings/senses of the word &#8220;Bank&#8221;:</p><ul><li><p>A financial institution</p></li><li><p>Sloping land</p></li><li><p>A Long Ridge, and more.</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_!y9nB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5462f667-fb98-423e-887f-fee3f54533e6_2533x931.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!y9nB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5462f667-fb98-423e-887f-fee3f54533e6_2533x931.png 424w, https://substackcdn.com/image/fetch/$s_!y9nB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5462f667-fb98-423e-887f-fee3f54533e6_2533x931.png 848w, https://substackcdn.com/image/fetch/$s_!y9nB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5462f667-fb98-423e-887f-fee3f54533e6_2533x931.png 1272w, https://substackcdn.com/image/fetch/$s_!y9nB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5462f667-fb98-423e-887f-fee3f54533e6_2533x931.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!y9nB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5462f667-fb98-423e-887f-fee3f54533e6_2533x931.png" width="1456" height="535" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5462f667-fb98-423e-887f-fee3f54533e6_2533x931.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:535,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!y9nB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5462f667-fb98-423e-887f-fee3f54533e6_2533x931.png 424w, https://substackcdn.com/image/fetch/$s_!y9nB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5462f667-fb98-423e-887f-fee3f54533e6_2533x931.png 848w, https://substackcdn.com/image/fetch/$s_!y9nB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5462f667-fb98-423e-887f-fee3f54533e6_2533x931.png 1272w, https://substackcdn.com/image/fetch/$s_!y9nB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5462f667-fb98-423e-887f-fee3f54533e6_2533x931.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>As a result, these contextualized embedding models address the major limitations of static embedding models.</p><div><hr></div><p>The point of the above discussion is that modern embedding models are quite proficient at the encoding task.</p><p>As a result, they can easily transform documents, paragraphs, or sentences into a numerical vector that captures its semantic meaning and context.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://news.adityeah.in/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Adityeah&#8217;s Substack! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Build an MCP-powered Audio Analysis Toolkit]]></title><description><![CDATA[In an era of voice-driven interfaces and AI-powered assistants, extracting meaningful insights from audio is more important than ever.]]></description><link>https://news.adityeah.in/p/build-an-mcp-powered-audio-analysis-toolkit</link><guid isPermaLink="false">https://news.adityeah.in/p/build-an-mcp-powered-audio-analysis-toolkit</guid><dc:creator><![CDATA[adityeah]]></dc:creator><pubDate>Sun, 13 Jul 2025 07:44:02 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/79ada869-059f-400a-adee-55ae06133a5f_1600x883.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Z0Sf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faeeddffc-2040-44f3-84d9-cc68affed3d6_2831x1563.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Z0Sf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faeeddffc-2040-44f3-84d9-cc68affed3d6_2831x1563.png 424w, https://substackcdn.com/image/fetch/$s_!Z0Sf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faeeddffc-2040-44f3-84d9-cc68affed3d6_2831x1563.png 848w, https://substackcdn.com/image/fetch/$s_!Z0Sf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faeeddffc-2040-44f3-84d9-cc68affed3d6_2831x1563.png 1272w, https://substackcdn.com/image/fetch/$s_!Z0Sf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faeeddffc-2040-44f3-84d9-cc68affed3d6_2831x1563.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Z0Sf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faeeddffc-2040-44f3-84d9-cc68affed3d6_2831x1563.png" width="1456" height="804" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aeeddffc-2040-44f3-84d9-cc68affed3d6_2831x1563.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:804,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:812485,&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://adityeah.substack.com/i/171132848?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faeeddffc-2040-44f3-84d9-cc68affed3d6_2831x1563.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_!Z0Sf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faeeddffc-2040-44f3-84d9-cc68affed3d6_2831x1563.png 424w, https://substackcdn.com/image/fetch/$s_!Z0Sf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faeeddffc-2040-44f3-84d9-cc68affed3d6_2831x1563.png 848w, https://substackcdn.com/image/fetch/$s_!Z0Sf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faeeddffc-2040-44f3-84d9-cc68affed3d6_2831x1563.png 1272w, https://substackcdn.com/image/fetch/$s_!Z0Sf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faeeddffc-2040-44f3-84d9-cc68affed3d6_2831x1563.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>In an era of voice-driven interfaces and AI-powered assistants, extracting meaningful insights from audio is more important than ever. Whether you're a developer, product builder, or AI tinkerer, this guide will show you how to build a full-fledged <strong>Audio Analysis Toolkit</strong> that can:</p><ul><li><p>Transcribe audio with speaker labels and timestamps</p></li><li><p>Summarize long conversations</p></li><li><p>Detect sentiment and emotional tone</p></li><li><p>Extract key topics</p></li><li><p>Enable natural-language Q&amp;A on audio content</p></li></ul><p>The best part? You can use it either as:</p><ol><li><p>A <strong>beautiful web UI</strong> powered by Streamlit, OR</p></li><li><p>A <strong>backend MCP server</strong> connected to Claude via Cursor for agentic interaction.</p></li></ol><p>Let&#8217;s dive into both modes of using the toolkit.</p><div id="youtube2-ypanLwJKXsA" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;ypanLwJKXsA&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/ypanLwJKXsA?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><h2><strong>Tech Stack Overview</strong></h2><ul><li><p><strong>AssemblyAI</strong> &#8211; API for audio transcription and advanced analysis (sentiment, topics, summarization)</p></li><li><p><strong>Streamlit</strong> &#8211; Rapid frontend for building interactive UI</p></li><li><p><strong>Cursor MCP (Model Context Protocol)</strong> &#8211; Interface for agents like Claude to call backend functions</p></li><li><p><strong>Claude (via Cursor)</strong> &#8211; Agent that can consume your toolkit through natural language</p></li><li><p><strong>Python 3.12+</strong></p></li></ul><h2><strong>Here's our workflow:</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HFwc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb76ee486-1d5c-4c68-aa3d-fe9c865ae546_1200x928.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HFwc!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb76ee486-1d5c-4c68-aa3d-fe9c865ae546_1200x928.gif 424w, https://substackcdn.com/image/fetch/$s_!HFwc!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb76ee486-1d5c-4c68-aa3d-fe9c865ae546_1200x928.gif 848w, https://substackcdn.com/image/fetch/$s_!HFwc!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb76ee486-1d5c-4c68-aa3d-fe9c865ae546_1200x928.gif 1272w, https://substackcdn.com/image/fetch/$s_!HFwc!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb76ee486-1d5c-4c68-aa3d-fe9c865ae546_1200x928.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HFwc!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb76ee486-1d5c-4c68-aa3d-fe9c865ae546_1200x928.gif" width="800" height="619" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b76ee486-1d5c-4c68-aa3d-fe9c865ae546_1200x928.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:619,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Audio Analysis Toolkit&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="Audio Analysis Toolkit" title="Audio Analysis Toolkit" srcset="https://substackcdn.com/image/fetch/$s_!HFwc!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb76ee486-1d5c-4c68-aa3d-fe9c865ae546_1200x928.gif 424w, https://substackcdn.com/image/fetch/$s_!HFwc!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb76ee486-1d5c-4c68-aa3d-fe9c865ae546_1200x928.gif 848w, https://substackcdn.com/image/fetch/$s_!HFwc!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb76ee486-1d5c-4c68-aa3d-fe9c865ae546_1200x928.gif 1272w, https://substackcdn.com/image/fetch/$s_!HFwc!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb76ee486-1d5c-4c68-aa3d-fe9c865ae546_1200x928.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></figure></div><ul><li><p>User's audio input is sent to AssemblyAI via a local MCP server.</p></li><li><p>&#8203;<strong>AssemblyAI</strong>&#8203;&nbsp;transcribes it while providing the summary, speaker labels, sentiment, and topics.</p></li><li><p>Post-transcription, the user can also chat with audio.</p></li></ul><h3><strong>Dual Tool Structure: Transcription + Audio Analysis (via MCP)</strong></h3><h4><strong>Transcription MCP tool</strong></h4><p>This tool accepts an audio input from the user and transcribes it using AssemblyAI.</p><p>We also store the full transcript to use in the next tool.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8xcr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F489acf93-e935-43ab-b6bf-d5e1334e78e3_680x596.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8xcr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F489acf93-e935-43ab-b6bf-d5e1334e78e3_680x596.png 424w, https://substackcdn.com/image/fetch/$s_!8xcr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F489acf93-e935-43ab-b6bf-d5e1334e78e3_680x596.png 848w, https://substackcdn.com/image/fetch/$s_!8xcr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F489acf93-e935-43ab-b6bf-d5e1334e78e3_680x596.png 1272w, https://substackcdn.com/image/fetch/$s_!8xcr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F489acf93-e935-43ab-b6bf-d5e1334e78e3_680x596.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8xcr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F489acf93-e935-43ab-b6bf-d5e1334e78e3_680x596.png" width="680" height="596" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/489acf93-e935-43ab-b6bf-d5e1334e78e3_680x596.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:596,&quot;width&quot;:680,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Transcription Audio&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="Transcription Audio" title="Transcription Audio" srcset="https://substackcdn.com/image/fetch/$s_!8xcr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F489acf93-e935-43ab-b6bf-d5e1334e78e3_680x596.png 424w, https://substackcdn.com/image/fetch/$s_!8xcr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F489acf93-e935-43ab-b6bf-d5e1334e78e3_680x596.png 848w, https://substackcdn.com/image/fetch/$s_!8xcr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F489acf93-e935-43ab-b6bf-d5e1334e78e3_680x596.png 1272w, https://substackcdn.com/image/fetch/$s_!8xcr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F489acf93-e935-43ab-b6bf-d5e1334e78e3_680x596.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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><h4><strong>Audio analysis tool</strong></h4><p>Next, we have a tool that returns specific insights from the transcript, like speaker labels, sentiment, topics, and summary.</p><p>Based on the user&#8217;s input query, the corresponding flags will be automatically set to True when the Agent will prepare the tool call via MCP:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TqBD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a226e83-a7be-4bf7-befa-57176b375c8d_679x554.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TqBD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a226e83-a7be-4bf7-befa-57176b375c8d_679x554.png 424w, https://substackcdn.com/image/fetch/$s_!TqBD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a226e83-a7be-4bf7-befa-57176b375c8d_679x554.png 848w, https://substackcdn.com/image/fetch/$s_!TqBD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a226e83-a7be-4bf7-befa-57176b375c8d_679x554.png 1272w, https://substackcdn.com/image/fetch/$s_!TqBD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a226e83-a7be-4bf7-befa-57176b375c8d_679x554.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TqBD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a226e83-a7be-4bf7-befa-57176b375c8d_679x554.png" width="679" height="554" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5a226e83-a7be-4bf7-befa-57176b375c8d_679x554.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:554,&quot;width&quot;:679,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Audio analysis tool&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="Audio analysis tool" title="Audio analysis tool" srcset="https://substackcdn.com/image/fetch/$s_!TqBD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a226e83-a7be-4bf7-befa-57176b375c8d_679x554.png 424w, https://substackcdn.com/image/fetch/$s_!TqBD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a226e83-a7be-4bf7-befa-57176b375c8d_679x554.png 848w, https://substackcdn.com/image/fetch/$s_!TqBD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a226e83-a7be-4bf7-befa-57176b375c8d_679x554.png 1272w, https://substackcdn.com/image/fetch/$s_!TqBD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a226e83-a7be-4bf7-befa-57176b375c8d_679x554.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3><strong>Bonus: It&#8217;s RAG-Ready</strong></h3><p>Once transcribed, the transcript can even be indexed into a vector database or used in an LLM context window for true <strong>RAG-style audio Q&amp;A</strong>, especially useful for:</p><ul><li><p>Meeting assistants</p></li><li><p>Interview breakdowns</p></li><li><p>Legal depositions</p></li><li><p>Customer call analysis</p></li></ul><p>Let&#8217;s implement this!</p><h2><strong>Option 1: Use as a Streamlit Web App&nbsp;</strong></h2><p>This mode is perfect if you want a user-friendly, visually rich interface for uploading and analyzing audio files.</p><p>This web-based interface is powered by <strong>Streamlit</strong> and comes with:</p><ul><li><p>Audio file upload: <code>.mp3</code>, <code>.wav</code>, <code>.mp4</code>, etc.</p></li><li><p>Full transcript with timestamps</p></li><li><p>Speaker-wise breakdown</p></li><li><p>Sentiment visualized with emojis and colors</p></li><li><p>AI-generated summaries</p></li><li><p>Top topics and relevance</p></li><li><p>Ask questions about the audio in a chatbot-style interface</p></li></ul><h3><strong>How to Run It?&nbsp;</strong></h3><p><strong>1. Clone the repo and set up the environment.</strong></p><pre><code>git clone https://github.com/edityeah/ai-hub.git
cd audio-analysis-toolkit
python -m venv .venv
source .venv/bin/activate    # Or .venvScriptsactivate on Windows
pip install -r requirements.txt&#9;</code></pre><p><strong>2. Add your AssemblyAI API Key</strong></p><p>Create a <code>.env</code> file:</p><pre><code>ASSEMBLYAI_API_KEY=your_key_here&#9;&#9;</code></pre><p>Run the app</p><pre><code>streamlit run app.py&#9;&#9;</code></pre><h2><strong>Option 2: Use as a Cursor MCP Server (for Claude Agents)</strong></h2><p>If you prefer working agentically &#8212; that is, using an AI like Claude to <em>invoke capabilities</em> &#8212; you can run this toolkit as an MCP server.</p><h3><strong>What is MCP?</strong></h3><p>MCP (Model Context Protocol) is how tools can plug into Cursor and be used by agents like Claude. It allows your local Python scripts to respond to natural language instructions inside the Cursor IDE.</p><h3><strong>Setting It Up:</strong></h3><ol><li><p><strong>Ensure <code>server.py</code> is in your project directory</strong> (this script exposes transcription logic via HTTP or CLI).</p></li><li><p><strong>Configure Cursor MCP:</strong><br>In Cursor &#8594; Preferences &#8594; MCP Servers &#8594; Global, add:</p></li></ol><pre><code>{
  "mcpServers": {
    "assemblyai": {
      "command": "python",
      "args": ["server.py"],
      "env": {
        "ASSEMBLYAI_API_KEY": "your_key_here"
      }
    }
  }
}&#9;&#9;&#9;</code></pre><p><strong>3. Open the project folder in Cursor</strong><br>Cursor will automatically launch the MCP server if the config and working directory are correct.</p><p><strong>4. Call it from Claude:</strong><br>Inside Cursor, invoke the tool like this:</p><pre><code>@assemblyai: transcribe "path/to/audio.mp3"&#9;&#9;</code></pre><p>Claude will now interact with your audio analysis server in real-time and return intelligent answers.</p><div id="datawrapper-iframe" class="datawrapper-wrap outer" data-attrs="{&quot;url&quot;:&quot;https://datawrapper.dwcdn.net/qdffx/1/&quot;,&quot;thumbnail_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7215a8b8-dcc3-4f1a-b4fa-eb763a298e51_1260x660.png&quot;,&quot;thumbnail_url_full&quot;:&quot;&quot;,&quot;height&quot;:312,&quot;title&quot;:&quot;Which One Should You Use?&quot;,&quot;description&quot;:&quot;&quot;}" data-component-name="DatawrapperToDOM"><iframe id="iframe-datawrapper" class="datawrapper-iframe" src="https://datawrapper.dwcdn.net/qdffx/1/" width="730" height="312" frameborder="0" scrolling="no"></iframe><script type="text/javascript">!function(){"use strict";window.addEventListener("message",(function(e){if(void 0!==e.data["datawrapper-height"]){var t=document.querySelectorAll("iframe");for(var a in e.data["datawrapper-height"])for(var r=0;r<t.length;r++){if(t[r].contentWindow===e.source)t[r].style.height=e.data["datawrapper-height"][a]+"px"}}}))}();</script></div><h2><strong>Final Thoughts</strong></h2><p>With just a few lines of Python and AssemblyAI&#8217;s APIs, you can build a full-featured audio intelligence system. Whether you want to offer this as a product, internal tool, or agentic function inside your AI IDE, this toolkit gives you the flexibility to do both.</p><blockquote><p>&#128161; Ready to build? Try both modes and see what fits your workflow best!</p></blockquote><h2></h2>]]></content:encoded></item><item><title><![CDATA[Building a Local MCP Server to Connect 200+ Data Sources Seamlessly]]></title><description><![CDATA[In today's organizations, data is scattered across countless platforms&#8212;Slack, Gmail, SQL databases, Google Drive, GitHub, and more.]]></description><link>https://news.adityeah.in/p/building-a-local-mcp-server-to-connect-200-data-sources-seamlessly</link><guid isPermaLink="false">https://news.adityeah.in/p/building-a-local-mcp-server-to-connect-200-data-sources-seamlessly</guid><dc:creator><![CDATA[adityeah]]></dc:creator><pubDate>Thu, 26 Jun 2025 18:16:20 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/a8aeabad-d7bb-4eab-9e49-31aa71b96f6f_1600x883.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!r_us!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1268a22-8544-4d1a-81a5-9106b1dd1ff9_2831x1563.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!r_us!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1268a22-8544-4d1a-81a5-9106b1dd1ff9_2831x1563.png 424w, https://substackcdn.com/image/fetch/$s_!r_us!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1268a22-8544-4d1a-81a5-9106b1dd1ff9_2831x1563.png 848w, https://substackcdn.com/image/fetch/$s_!r_us!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1268a22-8544-4d1a-81a5-9106b1dd1ff9_2831x1563.png 1272w, https://substackcdn.com/image/fetch/$s_!r_us!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1268a22-8544-4d1a-81a5-9106b1dd1ff9_2831x1563.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!r_us!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1268a22-8544-4d1a-81a5-9106b1dd1ff9_2831x1563.png" width="1456" height="804" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a1268a22-8544-4d1a-81a5-9106b1dd1ff9_2831x1563.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:804,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1265673,&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://adityeah.substack.com/i/171132847?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1268a22-8544-4d1a-81a5-9106b1dd1ff9_2831x1563.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_!r_us!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1268a22-8544-4d1a-81a5-9106b1dd1ff9_2831x1563.png 424w, https://substackcdn.com/image/fetch/$s_!r_us!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1268a22-8544-4d1a-81a5-9106b1dd1ff9_2831x1563.png 848w, https://substackcdn.com/image/fetch/$s_!r_us!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1268a22-8544-4d1a-81a5-9106b1dd1ff9_2831x1563.png 1272w, https://substackcdn.com/image/fetch/$s_!r_us!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1268a22-8544-4d1a-81a5-9106b1dd1ff9_2831x1563.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>In today's organizations, <strong>data is scattered across countless platforms</strong>&#8212;Slack, Gmail, SQL databases, Google Drive, GitHub, and more. Bringing these data sources into one unified, queryable system is often complex, requiring expensive data integration platforms or risky cloud-based services.</p><p>I've solved this by <strong>building a 100% local MCP (Model Context Protocol) server</strong> that can connect to <strong>200+ data sources</strong> and enable natural language querying across them via a simple chat interface.</p><p>Let&#8217;s walk you through how I've built this powerful federated query system using <strong>MindsDB, Cursor IDE, and Docker.</strong></p><h2><strong>The Unified MCP Server</strong></h2><p>This project revolves around building a <strong>local-first, modular, and scalable MCP server</strong> that:</p><ul><li><p>Connects to over <strong>200+ data sources</strong>.</p></li><li><p>Allows <strong>natural language querying</strong> across structured and unstructured platforms.</p></li><li><p>Is completely <strong>self-hosted</strong>, ensuring maximum data privacy and security.</p></li></ul><p><strong>I've used:</strong></p><ul><li><p><strong>MindsDB:</strong> A federated query engine that understands complex, multi-source queries.</p></li><li><p><strong>Cursor IDE:</strong> The interface that hosts the MCP chat and connects to the server.</p></li><li><p><strong>Docker:</strong> For local containerization and seamless deployment.</p></li></ul><h2><strong>Key Features</strong></h2><p><strong>FeatureDescription</strong>&#128269; Multi-source QueryingQuery 200+ data sources with a single natural language prompt.&#129504; Context-Aware AIAI responses tailored to your connected organizational data.&#128172; Real-time Chat InterfaceUnified chat window powered by Cursor IDE.&#128295; Modular DesignEasily plug in new data sources via MindsDB integrations.&#128051; Docker-based DeploymentFully local deployment ensuring security and control.&#128274; Privacy-firstData remains on your local machines&#8212;no cloud dependency.</p><h2><strong>How It Works: Architecture Flow</strong></h2><ol><li><p><strong>User submits a query</strong> via Cursor&#8217;s chat interface.</p></li><li><p><strong>Cursor client forwards the query</strong> to the MCP server.</p></li><li><p><strong>MCP server sends the query</strong> to MindsDB&#8217;s federated query engine.</p></li><li><p><strong>MindsDB retrieves results</strong> from the relevant connected data sources.</p></li><li><p><strong>MCP server receives results</strong> and passes them back to Cursor.</p></li><li><p><strong>Cursor displays the AI-generated response</strong> in the chat interface.</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_!izbw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f70ce19-8ba9-4512-9d6d-a2467728f7ff_894x604.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!izbw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f70ce19-8ba9-4512-9d6d-a2467728f7ff_894x604.gif 424w, https://substackcdn.com/image/fetch/$s_!izbw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f70ce19-8ba9-4512-9d6d-a2467728f7ff_894x604.gif 848w, https://substackcdn.com/image/fetch/$s_!izbw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f70ce19-8ba9-4512-9d6d-a2467728f7ff_894x604.gif 1272w, https://substackcdn.com/image/fetch/$s_!izbw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f70ce19-8ba9-4512-9d6d-a2467728f7ff_894x604.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!izbw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f70ce19-8ba9-4512-9d6d-a2467728f7ff_894x604.gif" width="894" height="604" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3f70ce19-8ba9-4512-9d6d-a2467728f7ff_894x604.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:604,&quot;width&quot;:894,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:107939,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://news.adityeah.in/i/171132847?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f70ce19-8ba9-4512-9d6d-a2467728f7ff_894x604.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!izbw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f70ce19-8ba9-4512-9d6d-a2467728f7ff_894x604.gif 424w, https://substackcdn.com/image/fetch/$s_!izbw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f70ce19-8ba9-4512-9d6d-a2467728f7ff_894x604.gif 848w, https://substackcdn.com/image/fetch/$s_!izbw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f70ce19-8ba9-4512-9d6d-a2467728f7ff_894x604.gif 1272w, https://substackcdn.com/image/fetch/$s_!izbw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f70ce19-8ba9-4512-9d6d-a2467728f7ff_894x604.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></figure></div><h2><strong>Step-by-Step Implementation Details</strong></h2><h3><strong>Prerequisites:</strong></h3><ul><li><p>Docker</p></li><li><p>Cursor IDE</p></li><li><p>MindsDB (installed locally)</p></li></ul><h3><strong>Docker Setup</strong></h3><p>MindsDB provides a pre-built Docker image for quick 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_!Gi2S!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46991e57-da62-4b62-acec-f01a21a7b76e_680x358.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Gi2S!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46991e57-da62-4b62-acec-f01a21a7b76e_680x358.png 424w, https://substackcdn.com/image/fetch/$s_!Gi2S!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46991e57-da62-4b62-acec-f01a21a7b76e_680x358.png 848w, https://substackcdn.com/image/fetch/$s_!Gi2S!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46991e57-da62-4b62-acec-f01a21a7b76e_680x358.png 1272w, https://substackcdn.com/image/fetch/$s_!Gi2S!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46991e57-da62-4b62-acec-f01a21a7b76e_680x358.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Gi2S!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46991e57-da62-4b62-acec-f01a21a7b76e_680x358.png" width="680" height="358" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/46991e57-da62-4b62-acec-f01a21a7b76e_680x358.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:358,&quot;width&quot;:680,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Docker Setup&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="Docker Setup" title="Docker Setup" srcset="https://substackcdn.com/image/fetch/$s_!Gi2S!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46991e57-da62-4b62-acec-f01a21a7b76e_680x358.png 424w, https://substackcdn.com/image/fetch/$s_!Gi2S!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46991e57-da62-4b62-acec-f01a21a7b76e_680x358.png 848w, https://substackcdn.com/image/fetch/$s_!Gi2S!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46991e57-da62-4b62-acec-f01a21a7b76e_680x358.png 1272w, https://substackcdn.com/image/fetch/$s_!Gi2S!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46991e57-da62-4b62-acec-f01a21a7b76e_680x358.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>To install MindsDB locally, I ran the following command:</p><pre><code>docker run --name mindsdb_container -e MINDSDB_APIS="http,mcp" 
-p 47334:47334 -p 47337:47337 mindsdb/mindsdb&#9;&#9;</code></pre><h3><strong>&#128421;&#65039; Start MindsDB GUI</strong></h3><p>After installing, go to&nbsp; <code>127.0.0.1:47334</code> in your browser to access the <strong>MindsDB editor.</strong></p><p>This GUI allows me to:</p><ul><li><p>Connect over <strong>200+ data sources</strong></p></li><li><p>Run <strong>SQL queries</strong> against them</p></li><li><p>Manage the federated query engine visually</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_!DZ4N!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b95f850-b5f2-49c6-9929-28ce8ec08a2f_680x605.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DZ4N!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b95f850-b5f2-49c6-9929-28ce8ec08a2f_680x605.png 424w, https://substackcdn.com/image/fetch/$s_!DZ4N!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b95f850-b5f2-49c6-9929-28ce8ec08a2f_680x605.png 848w, https://substackcdn.com/image/fetch/$s_!DZ4N!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b95f850-b5f2-49c6-9929-28ce8ec08a2f_680x605.png 1272w, https://substackcdn.com/image/fetch/$s_!DZ4N!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b95f850-b5f2-49c6-9929-28ce8ec08a2f_680x605.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DZ4N!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b95f850-b5f2-49c6-9929-28ce8ec08a2f_680x605.png" width="680" height="605" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0b95f850-b5f2-49c6-9929-28ce8ec08a2f_680x605.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:605,&quot;width&quot;:680,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Docker GUI&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="Docker GUI" title="Docker GUI" srcset="https://substackcdn.com/image/fetch/$s_!DZ4N!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b95f850-b5f2-49c6-9929-28ce8ec08a2f_680x605.png 424w, https://substackcdn.com/image/fetch/$s_!DZ4N!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b95f850-b5f2-49c6-9929-28ce8ec08a2f_680x605.png 848w, https://substackcdn.com/image/fetch/$s_!DZ4N!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b95f850-b5f2-49c6-9929-28ce8ec08a2f_680x605.png 1272w, https://substackcdn.com/image/fetch/$s_!DZ4N!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b95f850-b5f2-49c6-9929-28ce8ec08a2f_680x605.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3><strong>Integrate Data Sources</strong></h3><p>Let's start building our federated query engine by connecting our data sources to MindsDB.</p><p>We use Slack, Gmail, GitHub, and Hacker News as our federated data sources.</p><div id="youtube2-FUy9sCFRyJc" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;FUy9sCFRyJc&quot;,&quot;startTime&quot;:&quot;4s&quot;,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/FUy9sCFRyJc?start=4s&amp;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><h3><strong>Integrate MCP Server with Cursor</strong></h3><p>After building the federated query engine, let's unify our data sources by connecting them to MindsDB's MCP server.</p><p>Go to: File &#8594; Preferences &#8594; Cursor Settings &#8594; MCP &#8594; Add new global MCP server</p><p>In the JSON file, add the following &#128071;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tXDx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6da69b58-0fe5-4ec8-a831-375924e3ea0a_680x576.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tXDx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6da69b58-0fe5-4ec8-a831-375924e3ea0a_680x576.png 424w, https://substackcdn.com/image/fetch/$s_!tXDx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6da69b58-0fe5-4ec8-a831-375924e3ea0a_680x576.png 848w, https://substackcdn.com/image/fetch/$s_!tXDx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6da69b58-0fe5-4ec8-a831-375924e3ea0a_680x576.png 1272w, https://substackcdn.com/image/fetch/$s_!tXDx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6da69b58-0fe5-4ec8-a831-375924e3ea0a_680x576.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tXDx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6da69b58-0fe5-4ec8-a831-375924e3ea0a_680x576.png" width="680" height="576" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6da69b58-0fe5-4ec8-a831-375924e3ea0a_680x576.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:576,&quot;width&quot;:680,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!tXDx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6da69b58-0fe5-4ec8-a831-375924e3ea0a_680x576.png 424w, https://substackcdn.com/image/fetch/$s_!tXDx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6da69b58-0fe5-4ec8-a831-375924e3ea0a_680x576.png 848w, https://substackcdn.com/image/fetch/$s_!tXDx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6da69b58-0fe5-4ec8-a831-375924e3ea0a_680x576.png 1272w, https://substackcdn.com/image/fetch/$s_!tXDx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6da69b58-0fe5-4ec8-a831-375924e3ea0a_680x576.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>Done! Our MindsDB MCP server is live and connected to Cursor!</p><p>The MCP server offers two tools:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!iC3Q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2630adeb-d9a1-4d1b-9aee-f00de9facaf6_680x329.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iC3Q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2630adeb-d9a1-4d1b-9aee-f00de9facaf6_680x329.png 424w, https://substackcdn.com/image/fetch/$s_!iC3Q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2630adeb-d9a1-4d1b-9aee-f00de9facaf6_680x329.png 848w, https://substackcdn.com/image/fetch/$s_!iC3Q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2630adeb-d9a1-4d1b-9aee-f00de9facaf6_680x329.png 1272w, https://substackcdn.com/image/fetch/$s_!iC3Q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2630adeb-d9a1-4d1b-9aee-f00de9facaf6_680x329.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iC3Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2630adeb-d9a1-4d1b-9aee-f00de9facaf6_680x329.png" width="680" height="329" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2630adeb-d9a1-4d1b-9aee-f00de9facaf6_680x329.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:329,&quot;width&quot;:680,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!iC3Q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2630adeb-d9a1-4d1b-9aee-f00de9facaf6_680x329.png 424w, https://substackcdn.com/image/fetch/$s_!iC3Q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2630adeb-d9a1-4d1b-9aee-f00de9facaf6_680x329.png 848w, https://substackcdn.com/image/fetch/$s_!iC3Q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2630adeb-d9a1-4d1b-9aee-f00de9facaf6_680x329.png 1272w, https://substackcdn.com/image/fetch/$s_!iC3Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2630adeb-d9a1-4d1b-9aee-f00de9facaf6_680x329.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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><code>list_databases</code>: Lists all data sources connected to MindsDB.</p></li><li><p><code>query</code>: Answers user queries on the federated data.</p></li></ul><p>Apart from Claude and Cursor, the MindsDB MCP server also works with the new OpenAI MCP integration:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pqeK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab98257b-e4fc-471d-8c23-a53a3bbef82a_680x487.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pqeK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab98257b-e4fc-471d-8c23-a53a3bbef82a_680x487.png 424w, https://substackcdn.com/image/fetch/$s_!pqeK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab98257b-e4fc-471d-8c23-a53a3bbef82a_680x487.png 848w, https://substackcdn.com/image/fetch/$s_!pqeK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab98257b-e4fc-471d-8c23-a53a3bbef82a_680x487.png 1272w, https://substackcdn.com/image/fetch/$s_!pqeK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab98257b-e4fc-471d-8c23-a53a3bbef82a_680x487.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pqeK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab98257b-e4fc-471d-8c23-a53a3bbef82a_680x487.png" width="680" height="487" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ab98257b-e4fc-471d-8c23-a53a3bbef82a_680x487.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:487,&quot;width&quot;:680,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!pqeK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab98257b-e4fc-471d-8c23-a53a3bbef82a_680x487.png 424w, https://substackcdn.com/image/fetch/$s_!pqeK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab98257b-e4fc-471d-8c23-a53a3bbef82a_680x487.png 848w, https://substackcdn.com/image/fetch/$s_!pqeK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab98257b-e4fc-471d-8c23-a53a3bbef82a_680x487.png 1272w, https://substackcdn.com/image/fetch/$s_!pqeK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab98257b-e4fc-471d-8c23-a53a3bbef82a_680x487.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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 usage of&nbsp;<code>list_databases</code>&nbsp;is depicted below. We asked it to list all the data sources it can access and retrieved the four data sources we connected earlier:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XOrj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e25f2fe-1f63-4c9b-99ed-959b9c83c0ff_1024x843.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XOrj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e25f2fe-1f63-4c9b-99ed-959b9c83c0ff_1024x843.png 424w, https://substackcdn.com/image/fetch/$s_!XOrj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e25f2fe-1f63-4c9b-99ed-959b9c83c0ff_1024x843.png 848w, https://substackcdn.com/image/fetch/$s_!XOrj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e25f2fe-1f63-4c9b-99ed-959b9c83c0ff_1024x843.png 1272w, https://substackcdn.com/image/fetch/$s_!XOrj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e25f2fe-1f63-4c9b-99ed-959b9c83c0ff_1024x843.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XOrj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e25f2fe-1f63-4c9b-99ed-959b9c83c0ff_1024x843.png" width="800" height="659" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6e25f2fe-1f63-4c9b-99ed-959b9c83c0ff_1024x843.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:659,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!XOrj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e25f2fe-1f63-4c9b-99ed-959b9c83c0ff_1024x843.png 424w, https://substackcdn.com/image/fetch/$s_!XOrj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e25f2fe-1f63-4c9b-99ed-959b9c83c0ff_1024x843.png 848w, https://substackcdn.com/image/fetch/$s_!XOrj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e25f2fe-1f63-4c9b-99ed-959b9c83c0ff_1024x843.png 1272w, https://substackcdn.com/image/fetch/$s_!XOrj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e25f2fe-1f63-4c9b-99ed-959b9c83c0ff_1024x843.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>Below is another usage, where we asked it to list the available Slack channels.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Aabh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ee29422-6b60-4a99-bbd2-1b21eeda64a4_1024x574.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Aabh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ee29422-6b60-4a99-bbd2-1b21eeda64a4_1024x574.png 424w, https://substackcdn.com/image/fetch/$s_!Aabh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ee29422-6b60-4a99-bbd2-1b21eeda64a4_1024x574.png 848w, https://substackcdn.com/image/fetch/$s_!Aabh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ee29422-6b60-4a99-bbd2-1b21eeda64a4_1024x574.png 1272w, https://substackcdn.com/image/fetch/$s_!Aabh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ee29422-6b60-4a99-bbd2-1b21eeda64a4_1024x574.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Aabh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ee29422-6b60-4a99-bbd2-1b21eeda64a4_1024x574.png" width="800" height="448" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5ee29422-6b60-4a99-bbd2-1b21eeda64a4_1024x574.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:448,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Cursor Query to MindsDB&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="Cursor Query to MindsDB" title="Cursor Query to MindsDB" srcset="https://substackcdn.com/image/fetch/$s_!Aabh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ee29422-6b60-4a99-bbd2-1b21eeda64a4_1024x574.png 424w, https://substackcdn.com/image/fetch/$s_!Aabh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ee29422-6b60-4a99-bbd2-1b21eeda64a4_1024x574.png 848w, https://substackcdn.com/image/fetch/$s_!Aabh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ee29422-6b60-4a99-bbd2-1b21eeda64a4_1024x574.png 1272w, https://substackcdn.com/image/fetch/$s_!Aabh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ee29422-6b60-4a99-bbd2-1b21eeda64a4_1024x574.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>While this is quite basic, I have shown a much more sophisticated usage in the video attached at the top.</p><ul><li><p>I fetched info from Hacker News.</p></li><li><p>I generated a nicely formatted summary of the fetched details and sent that as a message to Slack.</p></li></ul><h2><strong>Chatting With My Data</strong></h2><p>I can now submit queries directly via Cursor&#8217;s chat interface:</p><ul><li><p><em>&#8220;Show me the last five emails from Gmail.&#8221;</em></p></li><li><p><em>&#8220;Summarize recent Slack mentions.&#8221;</em></p></li><li><p><em>&#8220;Fetch the top stories from Hacker News.&#8221;</em></p></li><li><p><em>&#8220;List all open GitHub issues in my repository.&#8221;</em></p></li></ul><h2><strong>Why I Built This</strong></h2><ul><li><p><strong>Data Privacy:</strong> Fully local, no cloud dependency.</p></li><li><p><strong>Unified Access:</strong> Query Slack, Gmail, GitHub, and more from one place.</p></li><li><p><strong>Scalable:</strong> Easy to add new data sources.</p></li><li><p><strong>Simple Interface:</strong> Natural language queries&#8212;no SQL skills required.</p></li></ul><h2><strong>&#128161; Closing Thoughts</strong></h2><p>I built this unified MCP server to make <strong>data querying seamless, private, and conversational.</strong></p><p>It&#8217;s:</p><ul><li><p><strong>Local-first</strong> for security.</p></li><li><p><strong>Modular</strong> for flexibility.</p></li><li><p><strong>Simple</strong> for everyday use.</p></li></ul><p>If you&#8217;re looking to <strong>own your data workflow</strong>, this is a powerful, scalable approach.</p>]]></content:encoded></item><item><title><![CDATA[What is MCP? A Visual and Practical Guide for Product Builders]]></title><description><![CDATA[Lately, there&#8217;s been a lot of buzz around Model Context Protocol (MCP). You&#8217;ve probably heard of it.]]></description><link>https://news.adityeah.in/p/what-is-mcp-a-visual-and-practical-guide-for-product-builders</link><guid isPermaLink="false">https://news.adityeah.in/p/what-is-mcp-a-visual-and-practical-guide-for-product-builders</guid><dc:creator><![CDATA[adityeah]]></dc:creator><pubDate>Tue, 17 Jun 2025 16:43:57 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/804ba336-b107-4453-aae2-cd95c84d93db_1600x883.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OjvL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4e77bdc-5d41-43b3-ab5b-26cb41f822e1_2831x1563.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OjvL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4e77bdc-5d41-43b3-ab5b-26cb41f822e1_2831x1563.png 424w, https://substackcdn.com/image/fetch/$s_!OjvL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4e77bdc-5d41-43b3-ab5b-26cb41f822e1_2831x1563.png 848w, https://substackcdn.com/image/fetch/$s_!OjvL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4e77bdc-5d41-43b3-ab5b-26cb41f822e1_2831x1563.png 1272w, https://substackcdn.com/image/fetch/$s_!OjvL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4e77bdc-5d41-43b3-ab5b-26cb41f822e1_2831x1563.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OjvL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4e77bdc-5d41-43b3-ab5b-26cb41f822e1_2831x1563.png" width="1456" height="804" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f4e77bdc-5d41-43b3-ab5b-26cb41f822e1_2831x1563.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:804,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:551676,&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://adityeah.substack.com/i/171132845?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4e77bdc-5d41-43b3-ab5b-26cb41f822e1_2831x1563.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_!OjvL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4e77bdc-5d41-43b3-ab5b-26cb41f822e1_2831x1563.png 424w, https://substackcdn.com/image/fetch/$s_!OjvL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4e77bdc-5d41-43b3-ab5b-26cb41f822e1_2831x1563.png 848w, https://substackcdn.com/image/fetch/$s_!OjvL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4e77bdc-5d41-43b3-ab5b-26cb41f822e1_2831x1563.png 1272w, https://substackcdn.com/image/fetch/$s_!OjvL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4e77bdc-5d41-43b3-ab5b-26cb41f822e1_2831x1563.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>Lately, there&#8217;s been a lot of buzz around <strong>Model Context Protocol (MCP)</strong>. You&#8217;ve probably heard of it.</p><p>Today, let&#8217;s break it down.</p><p>Intuitively speaking, <strong>MCP is like a USB-C port for your AI applications</strong>.</p><p>Just as USB-C offers a standardized way to connect devices to various accessories, <strong>MCP standardizes how AI apps connect to different data sources and tools.</strong></p><p>Let&#8217;s dive in a bit more technically.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1PH1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce298bcf-e237-4d11-a74b-c0ff22265204_1024x951.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1PH1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce298bcf-e237-4d11-a74b-c0ff22265204_1024x951.webp 424w, https://substackcdn.com/image/fetch/$s_!1PH1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce298bcf-e237-4d11-a74b-c0ff22265204_1024x951.webp 848w, https://substackcdn.com/image/fetch/$s_!1PH1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce298bcf-e237-4d11-a74b-c0ff22265204_1024x951.webp 1272w, https://substackcdn.com/image/fetch/$s_!1PH1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce298bcf-e237-4d11-a74b-c0ff22265204_1024x951.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1PH1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce298bcf-e237-4d11-a74b-c0ff22265204_1024x951.webp" width="800" height="743" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ce298bcf-e237-4d11-a74b-c0ff22265204_1024x951.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:743,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;What is MCP?&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="What is MCP?" title="What is MCP?" srcset="https://substackcdn.com/image/fetch/$s_!1PH1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce298bcf-e237-4d11-a74b-c0ff22265204_1024x951.webp 424w, https://substackcdn.com/image/fetch/$s_!1PH1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce298bcf-e237-4d11-a74b-c0ff22265204_1024x951.webp 848w, https://substackcdn.com/image/fetch/$s_!1PH1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce298bcf-e237-4d11-a74b-c0ff22265204_1024x951.webp 1272w, https://substackcdn.com/image/fetch/$s_!1PH1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce298bcf-e237-4d11-a74b-c0ff22265204_1024x951.webp 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3><strong>What is MCP?</strong></h3><p>At its core, <strong>MCP follows a client-server architecture</strong>, where a <strong>host application</strong> can connect to multiple servers.</p><p>It has <strong>three key components</strong>:</p><ul><li><p><strong>Host</strong></p></li><li><p><strong>Client</strong></p></li><li><p><strong>Server</strong></p></li></ul><p>Here&#8217;s a quick overview before we go deeper &#128071;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rFBy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15cfd19c-7e81-4eb9-afd4-d414d996eb17_791x876.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rFBy!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15cfd19c-7e81-4eb9-afd4-d414d996eb17_791x876.gif 424w, https://substackcdn.com/image/fetch/$s_!rFBy!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15cfd19c-7e81-4eb9-afd4-d414d996eb17_791x876.gif 848w, https://substackcdn.com/image/fetch/$s_!rFBy!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15cfd19c-7e81-4eb9-afd4-d414d996eb17_791x876.gif 1272w, https://substackcdn.com/image/fetch/$s_!rFBy!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15cfd19c-7e81-4eb9-afd4-d414d996eb17_791x876.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rFBy!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15cfd19c-7e81-4eb9-afd4-d414d996eb17_791x876.gif" width="791" height="876" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/15cfd19c-7e81-4eb9-afd4-d414d996eb17_791x876.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:876,&quot;width&quot;:791,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;MCP Clearly explained&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="MCP Clearly explained" title="MCP Clearly explained" srcset="https://substackcdn.com/image/fetch/$s_!rFBy!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15cfd19c-7e81-4eb9-afd4-d414d996eb17_791x876.gif 424w, https://substackcdn.com/image/fetch/$s_!rFBy!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15cfd19c-7e81-4eb9-afd4-d414d996eb17_791x876.gif 848w, https://substackcdn.com/image/fetch/$s_!rFBy!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15cfd19c-7e81-4eb9-afd4-d414d996eb17_791x876.gif 1272w, https://substackcdn.com/image/fetch/$s_!rFBy!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15cfd19c-7e81-4eb9-afd4-d414d996eb17_791x876.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></figure></div><ul><li><p><strong>Host</strong>: Represents any AI app (like Claude Desktop or Cursor) that provides an environment for AI interactions, accesses tools and data, and runs the <strong>MCP Client</strong>.</p></li><li><p><strong>MCP Client</strong>: Operates within the host and enables communication with MCP servers.</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_!kiLV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1e351d6-74f7-4d6b-83a6-05c9ec70a072_1024x488.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kiLV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1e351d6-74f7-4d6b-83a6-05c9ec70a072_1024x488.webp 424w, https://substackcdn.com/image/fetch/$s_!kiLV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1e351d6-74f7-4d6b-83a6-05c9ec70a072_1024x488.webp 848w, https://substackcdn.com/image/fetch/$s_!kiLV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1e351d6-74f7-4d6b-83a6-05c9ec70a072_1024x488.webp 1272w, https://substackcdn.com/image/fetch/$s_!kiLV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1e351d6-74f7-4d6b-83a6-05c9ec70a072_1024x488.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kiLV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1e351d6-74f7-4d6b-83a6-05c9ec70a072_1024x488.webp" width="800" height="381" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a1e351d6-74f7-4d6b-83a6-05c9ec70a072_1024x488.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:381,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;MCP Host and Client&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="MCP Host and Client" title="MCP Host and Client" srcset="https://substackcdn.com/image/fetch/$s_!kiLV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1e351d6-74f7-4d6b-83a6-05c9ec70a072_1024x488.webp 424w, https://substackcdn.com/image/fetch/$s_!kiLV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1e351d6-74f7-4d6b-83a6-05c9ec70a072_1024x488.webp 848w, https://substackcdn.com/image/fetch/$s_!kiLV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1e351d6-74f7-4d6b-83a6-05c9ec70a072_1024x488.webp 1272w, https://substackcdn.com/image/fetch/$s_!kiLV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1e351d6-74f7-4d6b-83a6-05c9ec70a072_1024x488.webp 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>MCP Server</strong>: Exposes specific capabilities and provides access to data like:</p><ul><li><p><strong>Tools</strong>: Let LLMs perform actions via your server</p></li><li><p><strong>Resources</strong>: Share data/content from your server with LLMs</p></li><li><p><strong>Prompts</strong>: Provide reusable prompt templates and workflows</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_!cAVt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4646d72-caa4-4d3c-923f-c91d3617bb70_1024x978.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cAVt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4646d72-caa4-4d3c-923f-c91d3617bb70_1024x978.webp 424w, https://substackcdn.com/image/fetch/$s_!cAVt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4646d72-caa4-4d3c-923f-c91d3617bb70_1024x978.webp 848w, https://substackcdn.com/image/fetch/$s_!cAVt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4646d72-caa4-4d3c-923f-c91d3617bb70_1024x978.webp 1272w, https://substackcdn.com/image/fetch/$s_!cAVt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4646d72-caa4-4d3c-923f-c91d3617bb70_1024x978.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cAVt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4646d72-caa4-4d3c-923f-c91d3617bb70_1024x978.webp" width="800" height="764" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c4646d72-caa4-4d3c-923f-c91d3617bb70_1024x978.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:764,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;MCP Server&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="MCP Server" title="MCP Server" srcset="https://substackcdn.com/image/fetch/$s_!cAVt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4646d72-caa4-4d3c-923f-c91d3617bb70_1024x978.webp 424w, https://substackcdn.com/image/fetch/$s_!cAVt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4646d72-caa4-4d3c-923f-c91d3617bb70_1024x978.webp 848w, https://substackcdn.com/image/fetch/$s_!cAVt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4646d72-caa4-4d3c-923f-c91d3617bb70_1024x978.webp 1272w, https://substackcdn.com/image/fetch/$s_!cAVt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4646d72-caa4-4d3c-923f-c91d3617bb70_1024x978.webp 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3><strong>How Does the Client-Server Communication Work?</strong></h3><p>Understanding this exchange is key to building your own MCP client-server 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_!i9fI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1df8ed15-4edb-495e-9e85-4981d6ae182e_1024x917.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!i9fI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1df8ed15-4edb-495e-9e85-4981d6ae182e_1024x917.webp 424w, https://substackcdn.com/image/fetch/$s_!i9fI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1df8ed15-4edb-495e-9e85-4981d6ae182e_1024x917.webp 848w, https://substackcdn.com/image/fetch/$s_!i9fI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1df8ed15-4edb-495e-9e85-4981d6ae182e_1024x917.webp 1272w, https://substackcdn.com/image/fetch/$s_!i9fI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1df8ed15-4edb-495e-9e85-4981d6ae182e_1024x917.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!i9fI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1df8ed15-4edb-495e-9e85-4981d6ae182e_1024x917.webp" width="800" height="716" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1df8ed15-4edb-495e-9e85-4981d6ae182e_1024x917.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:716,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!i9fI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1df8ed15-4edb-495e-9e85-4981d6ae182e_1024x917.webp 424w, https://substackcdn.com/image/fetch/$s_!i9fI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1df8ed15-4edb-495e-9e85-4981d6ae182e_1024x917.webp 848w, https://substackcdn.com/image/fetch/$s_!i9fI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1df8ed15-4edb-495e-9e85-4981d6ae182e_1024x917.webp 1272w, https://substackcdn.com/image/fetch/$s_!i9fI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1df8ed15-4edb-495e-9e85-4981d6ae182e_1024x917.webp 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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 look at the flow:</p><ol><li><p><strong>Capability Exchange</strong>:</p><ul><li><p>The client sends an initial request to <strong>learn the server&#8217;s capabilities</strong>.</p></li><li><p>The server responds with a list of its <strong>tools</strong>, <strong>resources</strong>, <strong>prompt templates</strong>, and other features.</p></li></ul><p>&#128230; <em>Example</em>: A Weather API server may reply with the tools it offers (like &#8220;getTemperature&#8221;), available prompt workflows, and supported parameters.</p></li><li><p><strong>Connection Acknowledgment</strong>:</p><ul><li><p>The client confirms successful connection.</p></li><li><p>All further interactions build on this shared understanding.</p></li></ul></li></ol><h3><strong>Why Is This Powerful?</strong></h3><p>Here&#8217;s a common pain point with traditional APIs:</p><ul><li><p>If your API initially requires two parameters (e.g.,&nbsp;<code>location</code>&nbsp;and&nbsp;<code>date</code>&nbsp;for a weather service), users integrate their applications to send requests with those exact parameters.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uyoN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11148e49-57ed-4900-b330-307c5874a777_1024x225.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uyoN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11148e49-57ed-4900-b330-307c5874a777_1024x225.webp 424w, https://substackcdn.com/image/fetch/$s_!uyoN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11148e49-57ed-4900-b330-307c5874a777_1024x225.webp 848w, https://substackcdn.com/image/fetch/$s_!uyoN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11148e49-57ed-4900-b330-307c5874a777_1024x225.webp 1272w, https://substackcdn.com/image/fetch/$s_!uyoN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11148e49-57ed-4900-b330-307c5874a777_1024x225.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uyoN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11148e49-57ed-4900-b330-307c5874a777_1024x225.webp" width="800" height="176" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/11148e49-57ed-4900-b330-307c5874a777_1024x225.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:176,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;MCP vs API Example&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="MCP vs API Example" title="MCP vs API Example" srcset="https://substackcdn.com/image/fetch/$s_!uyoN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11148e49-57ed-4900-b330-307c5874a777_1024x225.webp 424w, https://substackcdn.com/image/fetch/$s_!uyoN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11148e49-57ed-4900-b330-307c5874a777_1024x225.webp 848w, https://substackcdn.com/image/fetch/$s_!uyoN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11148e49-57ed-4900-b330-307c5874a777_1024x225.webp 1272w, https://substackcdn.com/image/fetch/$s_!uyoN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11148e49-57ed-4900-b330-307c5874a777_1024x225.webp 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>Later, if you decide to add a third&nbsp;<strong>required</strong>&nbsp;parameter (e.g.,&nbsp;<code>unit</code>&nbsp;for temperature units like Celsius or Fahrenheit), the API&#8217;s contract changes.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!82qF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc78b21fa-ca20-44e4-ac4d-cc3f7d7810a1_1024x227.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!82qF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc78b21fa-ca20-44e4-ac4d-cc3f7d7810a1_1024x227.webp 424w, https://substackcdn.com/image/fetch/$s_!82qF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc78b21fa-ca20-44e4-ac4d-cc3f7d7810a1_1024x227.webp 848w, https://substackcdn.com/image/fetch/$s_!82qF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc78b21fa-ca20-44e4-ac4d-cc3f7d7810a1_1024x227.webp 1272w, https://substackcdn.com/image/fetch/$s_!82qF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc78b21fa-ca20-44e4-ac4d-cc3f7d7810a1_1024x227.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!82qF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc78b21fa-ca20-44e4-ac4d-cc3f7d7810a1_1024x227.webp" width="800" height="177" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c78b21fa-ca20-44e4-ac4d-cc3f7d7810a1_1024x227.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:177,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!82qF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc78b21fa-ca20-44e4-ac4d-cc3f7d7810a1_1024x227.webp 424w, https://substackcdn.com/image/fetch/$s_!82qF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc78b21fa-ca20-44e4-ac4d-cc3f7d7810a1_1024x227.webp 848w, https://substackcdn.com/image/fetch/$s_!82qF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc78b21fa-ca20-44e4-ac4d-cc3f7d7810a1_1024x227.webp 1272w, https://substackcdn.com/image/fetch/$s_!82qF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc78b21fa-ca20-44e4-ac4d-cc3f7d7810a1_1024x227.webp 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>This means all users of your API must update their code to include the new parameter. If they don&#8217;t update, their requests might fail, return errors, or provide incomplete results.</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_!3fG5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ac19148-4211-4439-a6a8-124d20252b52_1024x576.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3fG5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ac19148-4211-4439-a6a8-124d20252b52_1024x576.webp 424w, https://substackcdn.com/image/fetch/$s_!3fG5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ac19148-4211-4439-a6a8-124d20252b52_1024x576.webp 848w, https://substackcdn.com/image/fetch/$s_!3fG5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ac19148-4211-4439-a6a8-124d20252b52_1024x576.webp 1272w, https://substackcdn.com/image/fetch/$s_!3fG5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ac19148-4211-4439-a6a8-124d20252b52_1024x576.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3fG5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ac19148-4211-4439-a6a8-124d20252b52_1024x576.webp" width="800" height="450" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1ac19148-4211-4439-a6a8-124d20252b52_1024x576.webp&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;MCP vs API Example&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="MCP vs API Example" title="MCP vs API Example" srcset="https://substackcdn.com/image/fetch/$s_!3fG5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ac19148-4211-4439-a6a8-124d20252b52_1024x576.webp 424w, https://substackcdn.com/image/fetch/$s_!3fG5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ac19148-4211-4439-a6a8-124d20252b52_1024x576.webp 848w, https://substackcdn.com/image/fetch/$s_!3fG5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ac19148-4211-4439-a6a8-124d20252b52_1024x576.webp 1272w, https://substackcdn.com/image/fetch/$s_!3fG5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ac19148-4211-4439-a6a8-124d20252b52_1024x576.webp 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3><strong>How MCP Solves This?</strong></h3><p>MCP introduces a dynamic and flexible approach that contrasts sharply with traditional APIs.</p><ul><li><p>For instance, when a client (e.g., an AI application like Claude Desktop) connects to an MCP server (e.g., your weather service), it sends an initial request to learn the server&#8217;s capabilities.</p></li><li><p>The server responds with details about its available tools, resources, prompts, and parameters. For example, if your weather API initially supports&nbsp;<code>location</code>&nbsp;and&nbsp;<code>date</code>, the server communicates these as part of its capabilities.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!50C6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe37c764e-8f1c-4a82-9f65-3eb149cd064b_1024x289.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!50C6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe37c764e-8f1c-4a82-9f65-3eb149cd064b_1024x289.webp 424w, https://substackcdn.com/image/fetch/$s_!50C6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe37c764e-8f1c-4a82-9f65-3eb149cd064b_1024x289.webp 848w, https://substackcdn.com/image/fetch/$s_!50C6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe37c764e-8f1c-4a82-9f65-3eb149cd064b_1024x289.webp 1272w, https://substackcdn.com/image/fetch/$s_!50C6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe37c764e-8f1c-4a82-9f65-3eb149cd064b_1024x289.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!50C6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe37c764e-8f1c-4a82-9f65-3eb149cd064b_1024x289.webp" width="800" height="226" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e37c764e-8f1c-4a82-9f65-3eb149cd064b_1024x289.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:226,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;MCP vs API Example&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="MCP vs API Example" title="MCP vs API Example" srcset="https://substackcdn.com/image/fetch/$s_!50C6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe37c764e-8f1c-4a82-9f65-3eb149cd064b_1024x289.webp 424w, https://substackcdn.com/image/fetch/$s_!50C6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe37c764e-8f1c-4a82-9f65-3eb149cd064b_1024x289.webp 848w, https://substackcdn.com/image/fetch/$s_!50C6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe37c764e-8f1c-4a82-9f65-3eb149cd064b_1024x289.webp 1272w, https://substackcdn.com/image/fetch/$s_!50C6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe37c764e-8f1c-4a82-9f65-3eb149cd064b_1024x289.webp 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>If you later add a&nbsp;<code>unit</code>&nbsp;parameter, the MCP server can dynamically update its capability description during the next exchange. The client doesn&#8217;t need to hardcode or predefine the parameters&#8212;it simply queries the server&#8217;s current capabilities and adapts accordingly.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Yfqf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc61341c-de62-4d51-ba13-8b0d13fa4792_1024x290.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Yfqf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc61341c-de62-4d51-ba13-8b0d13fa4792_1024x290.webp 424w, https://substackcdn.com/image/fetch/$s_!Yfqf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc61341c-de62-4d51-ba13-8b0d13fa4792_1024x290.webp 848w, https://substackcdn.com/image/fetch/$s_!Yfqf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc61341c-de62-4d51-ba13-8b0d13fa4792_1024x290.webp 1272w, https://substackcdn.com/image/fetch/$s_!Yfqf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc61341c-de62-4d51-ba13-8b0d13fa4792_1024x290.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Yfqf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc61341c-de62-4d51-ba13-8b0d13fa4792_1024x290.webp" width="800" height="227" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cc61341c-de62-4d51-ba13-8b0d13fa4792_1024x290.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:227,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;MCP vs API Example&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="MCP vs API Example" title="MCP vs API Example" srcset="https://substackcdn.com/image/fetch/$s_!Yfqf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc61341c-de62-4d51-ba13-8b0d13fa4792_1024x290.webp 424w, https://substackcdn.com/image/fetch/$s_!Yfqf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc61341c-de62-4d51-ba13-8b0d13fa4792_1024x290.webp 848w, https://substackcdn.com/image/fetch/$s_!Yfqf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc61341c-de62-4d51-ba13-8b0d13fa4792_1024x290.webp 1272w, https://substackcdn.com/image/fetch/$s_!Yfqf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc61341c-de62-4d51-ba13-8b0d13fa4792_1024x290.webp 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><ul><li><p>This way, the client can then adjust its behavior on-the-fly, using the updated capabilities (e.g., including unit in its requests) without needing to rewrite or redeploy code.</p></li></ul><h3><strong>Wrapping Up</strong></h3><p>I hope this clarifies what MCP does and how it compares to traditional APIs.</p><p>Do you think MCP is more powerful than traditional API setups?</p><p>In upcoming posts, we&#8217;ll explore <strong>how to build custom MCP servers</strong> and share <strong>hands-on demos</strong>.</p><p>Stay tuned!</p>]]></content:encoded></item><item><title><![CDATA[Finally, a Text-to-SQL Tool That Actually Works — Meet Vanna AI]]></title><description><![CDATA[In a world where data is the new oil, querying it shouldn't feel like learning a new language.]]></description><link>https://news.adityeah.in/p/finally-a-text-to-sql-tool-that-actually-works-meet-vanna-ai</link><guid isPermaLink="false">https://news.adityeah.in/p/finally-a-text-to-sql-tool-that-actually-works-meet-vanna-ai</guid><dc:creator><![CDATA[adityeah]]></dc:creator><pubDate>Fri, 02 May 2025 15:20:50 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/b05e8eb0-3230-4dba-bb6b-7b361273c7ff_1600x883.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dQfV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9f50a77-c54d-45b1-8c70-b8cb2ac1d4fb_2831x1563.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dQfV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9f50a77-c54d-45b1-8c70-b8cb2ac1d4fb_2831x1563.png 424w, https://substackcdn.com/image/fetch/$s_!dQfV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9f50a77-c54d-45b1-8c70-b8cb2ac1d4fb_2831x1563.png 848w, https://substackcdn.com/image/fetch/$s_!dQfV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9f50a77-c54d-45b1-8c70-b8cb2ac1d4fb_2831x1563.png 1272w, https://substackcdn.com/image/fetch/$s_!dQfV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9f50a77-c54d-45b1-8c70-b8cb2ac1d4fb_2831x1563.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dQfV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9f50a77-c54d-45b1-8c70-b8cb2ac1d4fb_2831x1563.png" width="1456" height="804" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c9f50a77-c54d-45b1-8c70-b8cb2ac1d4fb_2831x1563.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:804,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3579021,&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://adityeah.substack.com/i/171132837?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9f50a77-c54d-45b1-8c70-b8cb2ac1d4fb_2831x1563.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_!dQfV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9f50a77-c54d-45b1-8c70-b8cb2ac1d4fb_2831x1563.png 424w, https://substackcdn.com/image/fetch/$s_!dQfV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9f50a77-c54d-45b1-8c70-b8cb2ac1d4fb_2831x1563.png 848w, https://substackcdn.com/image/fetch/$s_!dQfV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9f50a77-c54d-45b1-8c70-b8cb2ac1d4fb_2831x1563.png 1272w, https://substackcdn.com/image/fetch/$s_!dQfV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9f50a77-c54d-45b1-8c70-b8cb2ac1d4fb_2831x1563.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>In a world where data is the new oil, querying it shouldn't feel like learning a new language.</p><p>And yet, that&#8217;s what most non-technical users face when trying to interact with databases.</p><p><strong>Enter <a href="https://github.com/vanna-ai/vanna">Vanna AI</a>:</strong> a powerful, 100% open-source Retrieval-Augmented Generation (RAG) framework that converts <strong>natural language into accurate SQL queries</strong>&#8212;securely, scalably, and seamlessly.</p><p>With over <strong>14,000 GitHub stars</strong>, Vanna has captured the attention of data teams, product managers, and developers for one simple reason:</p><blockquote><p><strong>It just works.</strong></p></blockquote><p>https://youtu.be/hhWId32mpyI</p><h2><strong>&#128640; What is Vanna AI?</strong></h2><p>Vanna AI is an open-source <strong>Text-to-SQL engine</strong> built on RAG (Retrieval-Augmented Generation), specifically designed to handle <strong>complex, dynamic datasets</strong> like the ones used in modern enterprises.</p><p>At its core, Vanna makes databases talk back in plain English. Whether you're working with Snowflake, Redshift, Postgres, or BigQuery, Vanna translates your questions into SQL queries that run directly on your data.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_a9I!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F518120cc-3737-4729-a126-f4bedd5b708c_1024x760.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_a9I!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F518120cc-3737-4729-a126-f4bedd5b708c_1024x760.png 424w, https://substackcdn.com/image/fetch/$s_!_a9I!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F518120cc-3737-4729-a126-f4bedd5b708c_1024x760.png 848w, https://substackcdn.com/image/fetch/$s_!_a9I!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F518120cc-3737-4729-a126-f4bedd5b708c_1024x760.png 1272w, https://substackcdn.com/image/fetch/$s_!_a9I!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F518120cc-3737-4729-a126-f4bedd5b708c_1024x760.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_a9I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F518120cc-3737-4729-a126-f4bedd5b708c_1024x760.png" width="800" height="594" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/518120cc-3737-4729-a126-f4bedd5b708c_1024x760.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:594,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Vanna AI&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="Vanna AI" title="Vanna AI" srcset="https://substackcdn.com/image/fetch/$s_!_a9I!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F518120cc-3737-4729-a126-f4bedd5b708c_1024x760.png 424w, https://substackcdn.com/image/fetch/$s_!_a9I!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F518120cc-3737-4729-a126-f4bedd5b708c_1024x760.png 848w, https://substackcdn.com/image/fetch/$s_!_a9I!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F518120cc-3737-4729-a126-f4bedd5b708c_1024x760.png 1272w, https://substackcdn.com/image/fetch/$s_!_a9I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F518120cc-3737-4729-a126-f4bedd5b708c_1024x760.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>&#129504; How Vanna Works in 2 Steps</strong></h2><p>Using Vanna is surprisingly simple:</p><p>1&#65039;&#8419; <strong>Train</strong> a RAG model on your database schema, documentation, and query logs (it creates a knowledge base).</p><p>2&#65039;&#8419; <strong>Ask</strong> your business question in plain English. Vanna generates SQL that can directly run on your DB&#8212;or be reviewed by analysts before execution.</p><p>And yes, <strong>it gets smarter with each question.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XcaU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F015c47ae-a5cc-48b0-a166-dade8ae5cc39_2406x1724.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XcaU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F015c47ae-a5cc-48b0-a166-dade8ae5cc39_2406x1724.gif 424w, https://substackcdn.com/image/fetch/$s_!XcaU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F015c47ae-a5cc-48b0-a166-dade8ae5cc39_2406x1724.gif 848w, https://substackcdn.com/image/fetch/$s_!XcaU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F015c47ae-a5cc-48b0-a166-dade8ae5cc39_2406x1724.gif 1272w, https://substackcdn.com/image/fetch/$s_!XcaU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F015c47ae-a5cc-48b0-a166-dade8ae5cc39_2406x1724.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XcaU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F015c47ae-a5cc-48b0-a166-dade8ae5cc39_2406x1724.gif" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/015c47ae-a5cc-48b0-a166-dade8ae5cc39_2406x1724.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3970190,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://adityeah.substack.com/i/171132837?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F015c47ae-a5cc-48b0-a166-dade8ae5cc39_2406x1724.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!XcaU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F015c47ae-a5cc-48b0-a166-dade8ae5cc39_2406x1724.gif 424w, https://substackcdn.com/image/fetch/$s_!XcaU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F015c47ae-a5cc-48b0-a166-dade8ae5cc39_2406x1724.gif 848w, https://substackcdn.com/image/fetch/$s_!XcaU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F015c47ae-a5cc-48b0-a166-dade8ae5cc39_2406x1724.gif 1272w, https://substackcdn.com/image/fetch/$s_!XcaU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F015c47ae-a5cc-48b0-a166-dade8ae5cc39_2406x1724.gif 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p></p><h2><strong>&#128273; Key Features</strong></h2><p>FeatureDescription&#127919; <strong>High Accuracy</strong>Handles nested, complex SQL queries with better performance than most LLM-only tools.&#129504; <strong>Self-Learning</strong>Continuously improves by learning from past queries and feedback.&#128274; <strong>Secure by Design</strong>Your data stays within your environment&#8212;Vanna only needs metadata, not actual records.&#127760; <strong>Database-Agnostic</strong>Supports all major SQL databases: Postgres, Snowflake, Redshift, MySQL, SQL Server, and more.&#128187; <strong>Flexible Frontends</strong>Integrate Vanna with Jupyter Notebooks, Slack bots, Streamlit apps, or even Flask APIs.</p><h2><strong>&#9881;&#65039; Under the Hood: Architecture Overview</strong></h2><p>Vanna combines the best of three layers:</p><ol><li><p><strong>LLMs (OpenAI, Anthropic, Gemini, etc.)</strong> &#8211; For interpreting natural language and generating human-like SQL.</p></li><li><p><strong>Vector DBs (ChromaDB, FAISS, Qdrant, etc.)</strong> &#8211; To search and retrieve relevant metadata, schemas, or logs.</p></li><li><p><strong>SQL Connectors</strong> &#8211; For seamless execution or validation on live databases.</p></li></ol><p>The stack is modular&#8212;you choose which LLM, which vector store, and which database you want to plug 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_!hyyJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f2b59c9-a4ca-4bdc-ac0e-8cc4c2f5ca46_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hyyJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f2b59c9-a4ca-4bdc-ac0e-8cc4c2f5ca46_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!hyyJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f2b59c9-a4ca-4bdc-ac0e-8cc4c2f5ca46_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!hyyJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f2b59c9-a4ca-4bdc-ac0e-8cc4c2f5ca46_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!hyyJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f2b59c9-a4ca-4bdc-ac0e-8cc4c2f5ca46_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hyyJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f2b59c9-a4ca-4bdc-ac0e-8cc4c2f5ca46_1024x1024.png" width="800" height="800" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7f2b59c9-a4ca-4bdc-ac0e-8cc4c2f5ca46_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:800,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;VANNA AI Architecture&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="VANNA AI Architecture" title="VANNA AI Architecture" srcset="https://substackcdn.com/image/fetch/$s_!hyyJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f2b59c9-a4ca-4bdc-ac0e-8cc4c2f5ca46_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!hyyJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f2b59c9-a4ca-4bdc-ac0e-8cc4c2f5ca46_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!hyyJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f2b59c9-a4ca-4bdc-ac0e-8cc4c2f5ca46_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!hyyJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f2b59c9-a4ca-4bdc-ac0e-8cc4c2f5ca46_1024x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>&#128161; Use Cases</strong></h2><p>Vanna isn&#8217;t just a technical marvel. It&#8217;s also <strong>practically useful</strong>:</p><ul><li><p>&#128202; <strong>Business Intelligence</strong>: Non-technical users can query without writing SQL.</p></li><li><p>&#128269; <strong>Exploratory Analysis</strong>: Analysts can speed up data discovery.</p></li><li><p>&#128104;&#8205;&#127979; <strong>Education</strong>: Helps learners understand the SQL equivalent of business questions.</p></li><li><p>&#128736; <strong>Internal Tools</strong>: Integrate into Slack, dashboards, or internal portals for real-time data Q&amp;A.</p></li></ul><h2><strong>&#128295; Installation &amp; Example</strong></h2><p>Want to try it? Just:</p><pre><code>pip install vanna</code></pre><p>Note: Depending on the LLM and vector store used, additional packages may be required.</p><p>Then Basic Setup (OpenAI + ChromaDB Example)</p><pre><code>from vanna.openai.openai_chat import OpenAI_Chat
from vanna.chromadb.chromadb_vector import ChromaDB_VectorStore
class MyVanna(ChromaDB_VectorStore, OpenAI_Chat):
    def __init__(self, config=None):
        ChromaDB_VectorStore.__init__(self, config=config)
        OpenAI_Chat.__init__(self, config=config)
vn = MyVanna(config={'api_key': 'your-openai-key', 'model': 'gpt-4'})
vn.train(schema='your_schema', logs='your_query_logs')
vn.ask("What are the top 5 products by revenue?")</code></pre><h2><strong>&#127891; Training Vanna AI</strong></h2><p>You can improve Vanna's output quality by training it on your:</p><h3>&#9997;&#65039; DDL Statements</h3><pre><code>vn.train(ddl="""
    CREATE TABLE IF NOT EXISTS my_table (
        id INT PRIMARY KEY,
        name VARCHAR(100),
        age INT
    )
""")</code></pre><h3>&#128218; Business Documentation</h3><pre><code>vn.train(documentation="Our business defines XYZ as ...")</code></pre><h3>&#128200; SQL Query Examples</h3><pre><code>vn.train(sql="SELECT name, age FROM my_table WHERE name = 'John Doe'")&#9;&#9;</code></pre><h2>&#128172; Ask Questions</h2><pre><code>vn.ask("What are the top 10 customers by sales?")&#9;</code></pre><h2>Returns:</h2><pre><code>SELECT c.c_name AS customer_name,
       SUM(l.l_extendedprice * (1 - l.l_discount)) AS total_sales
FROM   lineitem l
JOIN   orders o ON l.l_orderkey = o.o_orderkey
JOIN   customer c ON o.o_custkey = c.c_custkey
GROUP BY customer_name
ORDER BY total_sales DESC
LIMIT 10;</code></pre><p>And if connected to a DB, you also get a result table and a Plotly chart.</p><h2><strong>RAG vs Fine-Tuning</strong></h2><p>RAG ApproachFine-TuningEasily replace LLMsHardcoded to one modelCheap to runExpensive to train &amp; useEasily editable knowledge baseHard to remove outdated training data</p><h2><strong>Why Vanna AI?</strong></h2><ul><li><p>&#9989; <strong>Accuracy-first</strong>: Improves with more training data</p></li><li><p>&#128274; <strong>Data secure</strong>: SQL execution &amp; training remain local</p></li><li><p>&#129351; <strong>Customizable</strong>: Choose your own stack (LLM + Vector Store)</p></li><li><p>&#127775; <strong>Ready for production</strong>: Jupyter for devs, Streamlit or Slack for users</p></li></ul><h2><strong>Interfaces You Can Build With</strong></h2><ul><li><p>Jupyter notebooks (great for data analysts)</p></li><li><p>Streamlit apps (dashboard-ready)</p></li><li><p>Slack bots (team-friendly)</p></li><li><p>Flask APIs (for integration into internal tools)</p></li><li><p>Chainlit (chat-style data assistants)</p></li></ul><h2><strong>What It Doesn&#8217;t Do (Yet)</strong></h2><ul><li><p><strong>Data modification</strong> (INSERT/UPDATE) is not the focus.</p></li><li><p>Not optimized for <strong>non-SQL data sources</strong> (e.g., NoSQL).</p></li><li><p>The full install can be bulky (~400MB)&#8212;but it&#8217;s modular.</p></li></ul><h2><strong>Final Thoughts</strong></h2><p>Tools like Vanna AI represent a shift in how we think about querying data. Instead of expecting everyone to learn SQL, Vanna brings the <strong>query layer to where the user is</strong>&#8212;in plain language.</p><p>And because it&#8217;s open-source and modular, you&#8217;re in full control. No vendor lock-ins. No cloud-only limitations. Just powerful, customizable NLP-to-SQL magic.</p><h2><strong>&#128218; Learn More &amp; Contribute</strong></h2><p>Explore the full documentation and source code on the <a href="https://github.com/vanna-ai/vanna">official GitHub repo</a>.</p><p>Have a use case in mind? Fork it. Tweak it. Or just start asking questions&#8212;and let your data speak.</p>]]></content:encoded></item><item><title><![CDATA[How I Built a Talking AI Agent That Sounds Like Me (in 100 Lines of Code)]]></title><description><![CDATA[Imagine having a voice assistant that doesn't just respond from predefined answers but actually retrieves relevant context from your own local documents and responds using your own cloned voice.]]></description><link>https://news.adityeah.in/p/how-i-built-a-talking-ai-agent-that-sounds-like-me-in-100-lines-of-code</link><guid isPermaLink="false">https://news.adityeah.in/p/how-i-built-a-talking-ai-agent-that-sounds-like-me-in-100-lines-of-code</guid><dc:creator><![CDATA[adityeah]]></dc:creator><pubDate>Fri, 18 Apr 2025 06:48:55 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/29df6c06-e88b-49e0-acd1-550d52723867_1600x883.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MSuQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F484c6ce0-2942-4d8b-872c-d47657adfbfc_2831x1563.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MSuQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F484c6ce0-2942-4d8b-872c-d47657adfbfc_2831x1563.png 424w, https://substackcdn.com/image/fetch/$s_!MSuQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F484c6ce0-2942-4d8b-872c-d47657adfbfc_2831x1563.png 848w, https://substackcdn.com/image/fetch/$s_!MSuQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F484c6ce0-2942-4d8b-872c-d47657adfbfc_2831x1563.png 1272w, https://substackcdn.com/image/fetch/$s_!MSuQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F484c6ce0-2942-4d8b-872c-d47657adfbfc_2831x1563.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MSuQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F484c6ce0-2942-4d8b-872c-d47657adfbfc_2831x1563.png" width="1456" height="804" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/484c6ce0-2942-4d8b-872c-d47657adfbfc_2831x1563.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:804,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:666081,&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://adityeah.substack.com/i/171132835?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F484c6ce0-2942-4d8b-872c-d47657adfbfc_2831x1563.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_!MSuQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F484c6ce0-2942-4d8b-872c-d47657adfbfc_2831x1563.png 424w, https://substackcdn.com/image/fetch/$s_!MSuQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F484c6ce0-2942-4d8b-872c-d47657adfbfc_2831x1563.png 848w, https://substackcdn.com/image/fetch/$s_!MSuQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F484c6ce0-2942-4d8b-872c-d47657adfbfc_2831x1563.png 1272w, https://substackcdn.com/image/fetch/$s_!MSuQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F484c6ce0-2942-4d8b-872c-d47657adfbfc_2831x1563.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></p><p>Imagine having a voice assistant that doesn't just respond from predefined answers but actually <strong>retrieves relevant context</strong> from your own local documents and responds using your own <strong>cloned voice</strong>.</p><p>Welcome to the era of real-time voice-based Retrieval-Augmented Generation (RAG) agents!</p><p>In this post, I&#8217;ll walk you through:</p><ul><li><p>How I built a <strong>real-time voice-based RAG agent</strong></p></li><li><p>How I integrated <strong>AssemblyAI</strong> for transcription</p></li><li><p>How the agent uses <strong>LiveKit</strong> for voice streaming</p></li><li><p>How it responds in my <strong>cloned voice</strong> using <strong>Cartesia AI</strong></p></li><li><p>Practical <strong>real-life use cases</strong> that make this more than a fun demo</p></li></ul><h2><strong>&#9881;&#65039; Architecture Overview</strong></h2><p>Here&#8217;s what&#8217;s happening under the hood:</p><h2><strong>Technologies Used:</strong></h2><ul><li><p>&#129504; LLM: Google&#8217;s <strong>Gemma 3</strong> via <strong>LlamaIndex</strong></p></li><li><p>&#128196; Indexing: Local PDFs indexed with <strong>LlamaIndex</strong></p></li><li><p>&#128483;&#65039; STT: <strong>AssemblyAI</strong></p></li><li><p>&#129487;&#8205;&#9794;&#65039; TTS: <strong>Cartesia AI</strong></p></li><li><p>&#127908; VAD: <strong>Silero</strong></p></li><li><p>&#128225; Orchestration: <strong>LiveKit agents playground</strong></p></li></ul><div id="youtube2-Qw9c9evcYqU" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;Qw9c9evcYqU&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/Qw9c9evcYqU?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><h2><strong>&#128736;&#65039; Building the Agent</strong></h2><p>For those interested in the architecture, you can check out the open-source code here:</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://github.com/edityeah/voice-rag-agent.git&quot;,&quot;text&quot;:&quot;GitHub&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://github.com/edityeah/voice-rag-agent.git"><span>GitHub</span></a></p><p>Or follow the instructions below:</p><h3>1. Set up your environment</h3><pre><code>pip install -r requirements.txt&#9;&#9;&#9;&#9;&#9;&#9;</code></pre><p>Create a <code>.env</code> file with:</p><pre><code>OPENAI_API_KEY=your_openai_api_key
CARTESIA_API_KEY=your_cartesia_api_key
LIVEKIT_URL=your_livekit_url
LIVEKIT_API_KEY=your_livekit_api_key
LIVEKIT_API_SECRET=your_livekit_api_secret
ASSEMBLYAI_API_KEY=your_assemblyai_api_key&#9;&#9;&#9;</code></pre><h3>2. Index your documents</h3><p>Place your PDFs in a <code>docs/</code> folder and run:</p><pre><code>from llama_index.core import SimpleDirectoryReader, VectorStoreIndex
reader = SimpleDirectoryReader("docs")
docs = reader.load_data()
index = VectorStoreIndex.from_documents(docs)
index.storage_context.persist(persist_dir="chat-engine-storage")</code></pre><h3>3. Configure your agent (Python)</h3><p>Use the <a href="https://docs.livekit.io/agents">VoicePipelineAgent</a> from LiveKit. Key configurations:</p><pre><code>agent = VoicePipelineAgent(
    vad=silero.VAD.load(),
    stt=assemblyai.STT(),
    llm=llama_index.LLM(chat_engine=chat_engine),
    tts=cartesia.TTS(
        model="sonic-2",
        voice="your-cloned-voice-id",
    ),
    chat_ctx=chat_context,
)&#9;&#9;</code></pre><h3>4. Run the agent</h3><pre><code>python voice_agent.py start&#9;&#9;</code></pre><p>Now head to <a href="https://agents-playground.livekit.io">agents-playground.livekit.io</a>, and click <strong>Connect</strong>. Speak your question out loud&#8212;something relevant to the documents you indexed in Step 2.</p><p>&#129504; The agent will detect your voice, transcribe it using AssemblyAI, fetch context from your documents, generate a response using Gemma 3, and speak it back using Cartesia's voice synthesis engine.</p><h3>5: Clone Your Voice with Cartesia</h3><p>By default, your agent uses a robotic voice provided by Cartesia. But you can replace that with <strong>your own cloned voice</strong>.</p><ol><li><p>Visit <a href="https://cartesia.ai/">Cartesia.ai</a></p></li><li><p>Click on <strong>Instant Voice Clone</strong></p></li><li><p>Provide a name and a short 5-second audio sample (e.g., "Hey, this is Aditya and this is my voice for cloning")</p></li><li><p>Cartesia will return a <code>voice_id</code></p></li><li><p>Replace the default voice ID in your <code>.env</code> file:</p></li></ol><pre><code>CARTESIA_VOICE_ID=your_cloned_voice_id&#9;&#9;&#9;</code></pre><h3>6. Restart your agent to use your own voice!</h3><div><hr></div><p>Below is the full Python code I used to build this agent:</p><pre><code>import logging
import os
from dotenv import load_dotenv
from livekit.agents import JobContext, JobProcess, WorkerOptions, cli
from livekit.agents.job import AutoSubscribe
from livekit.agents.llm import (
    ChatContext,
)
from livekit.agents.pipeline import VoicePipelineAgent
from livekit.plugins import cartesia, silero, llama_index, assemblyai
load_dotenv()
logger = logging.getLogger("voice-assistant")
from llama_index.llms.ollama import Ollama
from llama_index.core import (
    SimpleDirectoryReader,
    StorageContext,
    VectorStoreIndex,
    load_index_from_storage,
    Settings
)
from llama_index.core.chat_engine.types import ChatMode
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
load_dotenv()
embed_model = HuggingFaceEmbedding(model_name="BAAI/bge-small-en-v1.5")
llm=Ollama(model="gemma3", request_timeout=120.0)
Settings.llm = llm
Settings.embed_model = embed_model
# check if storage already exists
PERSIST_DIR = "./chat-engine-storage"
if not os.path.exists(PERSIST_DIR):
    # load the documents and create the index
    documents = SimpleDirectoryReader("docs").load_data()
    index = VectorStoreIndex.from_documents(documents)
    # store it for later
    index.storage_context.persist(persist_dir=PERSIST_DIR)
else:
    # load the existing index
    storage_context = StorageContext.from_defaults(persist_dir=PERSIST_DIR)
    index = load_index_from_storage(storage_context)
def prewarm(proc: JobProcess):
    proc.userdata["vad"] = silero.VAD.load()
async def entrypoint(ctx: JobContext):
    chat_context = ChatContext().append(
        role="system",
        text=(
            "You are a funny, witty assistant."
            "Respond with short and concise answers. Avoid using unpronouncable punctuation or emojis."
        ),
    )
    chat_engine = index.as_chat_engine(chat_mode=ChatMode.CONTEXT)
    logger.info(f"Connecting to room {ctx.room.name}")
    await ctx.connect(auto_subscribe=AutoSubscribe.AUDIO_ONLY)
    participant = await ctx.wait_for_participant()
    logger.info(f"Starting voice assistant for participant {participant.identity}")
    stt_impl = assemblyai.STT()
    agent = VoicePipelineAgent(
        vad=ctx.proc.userdata["vad"],
        stt=stt_impl,
        llm=llama_index.LLM(chat_engine=chat_engine),
        tts=cartesia.TTS(
            model="sonic-2",
            voice="794f9389-aac1-45b6-b726-9d9369183238",
        ),
        chat_ctx=chat_context,
    )
    agent.start(ctx.room, participant)
    await agent.say(
        "Hey there! How can I help you today?",
        allow_interruptions=True,
    )
if __name__ == "__main__":
    print("Starting voice agent...")
    cli.run_app(
        WorkerOptions(
            entrypoint_fnc=entrypoint,
            prewarm_fnc=prewarm,
        ),
    )
&#9;&#9;&#9;&#9;
&#9;&#9;&#9;</code></pre><h2>&#129504; Real-Life Use Cases</h2><p>Here&#8217;s where this gets seriously powerful:</p><h3>1. Education &amp; Research</h3><p>Ask research papers questions by simply speaking. No UI. No ChatGPT. Just voice.</p><h3>2. Enterprise Knowledge Assistants</h3><p>Replace dumb IVRs. Let users talk to internal wikis, HR docs, SOPs.</p><h3>3. Elderly or Visually Impaired Users</h3><p>Make documentation searchable and explorable without screens.</p><h3>4. Developer Agents</h3><p>Let engineers talk to API docs, CLI tools, changelogs&#8212;all via voice.</p><h3>5. Personalized Voice Agents</h3><p>Build your own Jarvis-style assistant trained on your workflows.</p><p>Stay tuned for more experiments in real-time AI agents &#128640;</p>]]></content:encoded></item><item><title><![CDATA[How to Build a Local AI-Powered OCR App with Gemma-3 and Streamlit?]]></title><description><![CDATA[Optical Character Recognition (OCR) is an essential tool for extracting text from images, making it easier to digitize documents, analyze handwritten notes, and process structured information.]]></description><link>https://news.adityeah.in/p/how-to-build-a-local-ai-powered-ocr-app-with-gemma-3-and-streamlit</link><guid isPermaLink="false">https://news.adityeah.in/p/how-to-build-a-local-ai-powered-ocr-app-with-gemma-3-and-streamlit</guid><dc:creator><![CDATA[adityeah]]></dc:creator><pubDate>Fri, 21 Mar 2025 17:57:23 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/ea702507-aade-4857-8b5e-bf3d84b50440_1600x883.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4R1z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F874e6f71-d5c3-4781-a831-15362b4481d3_2831x1563.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4R1z!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F874e6f71-d5c3-4781-a831-15362b4481d3_2831x1563.png 424w, https://substackcdn.com/image/fetch/$s_!4R1z!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F874e6f71-d5c3-4781-a831-15362b4481d3_2831x1563.png 848w, https://substackcdn.com/image/fetch/$s_!4R1z!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F874e6f71-d5c3-4781-a831-15362b4481d3_2831x1563.png 1272w, https://substackcdn.com/image/fetch/$s_!4R1z!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F874e6f71-d5c3-4781-a831-15362b4481d3_2831x1563.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4R1z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F874e6f71-d5c3-4781-a831-15362b4481d3_2831x1563.png" width="1456" height="804" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/874e6f71-d5c3-4781-a831-15362b4481d3_2831x1563.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:804,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:413546,&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://adityeah.substack.com/i/171132833?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F874e6f71-d5c3-4781-a831-15362b4481d3_2831x1563.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_!4R1z!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F874e6f71-d5c3-4781-a831-15362b4481d3_2831x1563.png 424w, https://substackcdn.com/image/fetch/$s_!4R1z!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F874e6f71-d5c3-4781-a831-15362b4481d3_2831x1563.png 848w, https://substackcdn.com/image/fetch/$s_!4R1z!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F874e6f71-d5c3-4781-a831-15362b4481d3_2831x1563.png 1272w, https://substackcdn.com/image/fetch/$s_!4R1z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F874e6f71-d5c3-4781-a831-15362b4481d3_2831x1563.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>Optical Character Recognition (OCR) is an essential tool for extracting text from images, making it easier to digitize documents, analyze handwritten notes, and process structured information. With advancements in AI, OCR has become more accessible and efficient, allowing developers and product managers to integrate it into their workflows seamlessly.</p><p>In this guide, we&#8217;ll walk you through building your own locally running OCR app using Google&#8217;s <strong>Gemma-3 Vision model</strong>, <strong>Ollama</strong>, and <strong>Streamlit</strong>. This app allows users to upload an image and extract structured text in Markdown format, ensuring clarity and organization.</p><h2><strong>What is Ollama, Gemma-3, and Streamlit?</strong></h2><p>Before we dive into the setup, let&#8217;s understand the key components of our application:</p><ul><li><p><strong>Ollama</strong>: A lightweight tool that allows you to run large language models locally on your machine. It helps deploy models efficiently without requiring cloud-based services.</p></li><li><p><strong>Gemma-3 Vision Model</strong>: A powerful multimodal AI model developed by Google that can process both images and text, making it ideal for OCR tasks.</p></li><li><p><strong>Streamlit</strong>: A Python-based framework that makes it easy to create interactive web applications for machine learning models and data visualization.</p></li></ul><p>With these three tools, we can build a fully functional OCR app that runs entirely on your local machine.</p><div id="youtube2-PBykZE1Ta5c" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;PBykZE1Ta5c&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/PBykZE1Ta5c?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><h2><strong>Step-by-Step Guide to Set Up and Run the OCR App</strong></h2><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://github.com/edityeah/gemma-ocr&quot;,&quot;text&quot;:&quot;Github&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://github.com/edityeah/gemma-ocr"><span>Github</span></a></p><h3><strong>1. Install Ollama</strong></h3><p>To run Gemma-3 locally, we first need to install <strong>Ollama</strong>.</p><p>On <strong>Linux</strong>:</p><pre><code><code>curl -fsSL https://ollama.com/install.sh | sh</code></code></pre><p>On <strong>Mac</strong>:</p><pre><code><code>brew install ollama</code></code></pre><p>On <strong>Windows</strong> (using WSL 2):</p><pre><code>wsl --install
curl -fsSL https://ollama.com/install.sh | sh&#9;&#9;&#9;</code></pre><p>After installation, verify that Ollama is installed by running:</p><pre><code>ollama --version&#9;&#9;&#9;</code></pre><h3><strong>2. Download the Gemma-3 Vision Model</strong></h3><p>Once Ollama is set up, download and load the <strong>Gemma-3 Vision model</strong>:</p><pre><code>ollama run gemma3:12b</code></pre><p>This command ensures that the model is available on your local machine for inference.</p><h3><strong>3. Install Python and Required Dependencies</strong></h3><p>Ensure you have Python <strong>3.11 or later</strong> installed. Then, install the necessary Python packages:</p><pre><code>pip install streamlit ollama pillow&#9;</code></pre><h3><strong>4. Create the Streamlit App</strong></h3><p>Now, let&#8217;s write the Python script that powers our OCR application. Save the following code as <code>app.py</code>:</p><pre><code>import streamlit as st
import ollama
from PIL import Image
import io
import base64
# Page configuration
st.set_page_config(
    page_title="Gemma-3 OCR",
    page_icon="&#128270;",
    layout="wide",
    initial_sidebar_state="expanded"
)
# Title and description in main area
st.markdown("""
    # &lt;img src="data:image/png;base64,{}" width="50" style="vertical-align: -12px;"&gt; Gemma-3 OCR
""".format(base64.b64encode(open("./assets/gemma3.png", "rb").read()).decode()), unsafe_allow_html=True)
# Add clear button to top right
col1, col2 = st.columns([6,1])
with col2:
    if st.button("Clear &#128465;&#65039;"):
        if 'ocr_result' in st.session_state:
            del st.session_state['ocr_result']
        st.rerun()
st.markdown('&lt;p style="margin-top: -20px;"&gt;Extract structured text from images using Gemma-3 Vision!&lt;/p&gt;', unsafe_allow_html=True)
st.markdown("---")
# Move upload controls to sidebar
with st.sidebar:
    st.header("Upload Image")
    uploaded_file = st.file_uploader("Choose an image...", type=['png', 'jpg', 'jpeg'])
    if uploaded_file is not None:
        # Display the uploaded image
        image = Image.open(uploaded_file)
        st.image(image, caption="Uploaded Image")
        if st.button("Extract Text &#128269;", type="primary"):
            with st.spinner("Processing image..."):
                try:
                    response = ollama.chat(
                        model='gemma3:12b',
                        messages=[{
                            'role': 'user',
                            'content': """Analyze the text in the provided image. Extract all readable content
                                        and present it in a structured Markdown format that is clear, concise, 
                                        and well-organized. Ensure proper formatting (e.g., headings, lists, or
                                        code blocks) as necessary to represent the content effectively.""",
                            'images': [uploaded_file.getvalue()]
                        }]
                    )
                    st.session_state['ocr_result'] = response.message.content
                except Exception as e:
                    st.error(f"Error processing image: {str(e)}")
# Main content area for results
if 'ocr_result' in st.session_state:
    st.markdown(st.session_state['ocr_result'])
else:
    st.info("Upload an image and click 'Extract Text' to see the results here.")
# Footer
st.markdown("---")
st.markdown("Made with &#10084;&#65039; using Gemma-3 Vision Model | [Adityeah](https://adityeah.in/)")
&#9;&#9;&#9;&#9;
&#9;&#9;&#9;</code></pre><h3><strong>5. Run the Streamlit App</strong></h3><p>Once the script is ready, launch the Streamlit app by running:</p><pre><code>streamlit run app.py</code></pre><p>Your OCR app will be accessible in your browser, allowing you to upload an image and extract structured text.</p><h2><strong>Use Cases of OCR Across Domains</strong></h2><h3><strong>Education</strong></h3><ol><li><p><strong>Automated Exam Grading</strong>: Teachers can upload images of students' answer sheets, and the model can compare student responses with predefined correct answers to automate grading and feedback generation.</p></li><li><p><strong>Homework Evaluation</strong>: Students can submit handwritten homework, which the model can analyze for correctness and provide instant feedback.</p></li><li><p><strong>Doubt Resolution</strong>: Students can upload handwritten queries, and the model can extract and structure the content for quick reference and resolution.</p></li><li><p><strong>Digitizing Study Materials</strong>: OCR can convert handwritten notes, books, and lecture slides into digital formats for better accessibility.</p></li></ol><h3><strong>Finance</strong></h3><ol><li><p><strong>Automated Invoice Processing</strong>: OCR extracts and processes financial data from invoices and receipts for accounting automation.</p></li><li><p><strong>Check and Bank Statement Scanning</strong>: Quickly digitize paper checks and bank statements to track transactions more efficiently.</p></li><li><p><strong>Fraud Detection</strong>: OCR can verify documents for discrepancies in financial reports and detect potential fraud.</p></li></ol><h3><strong>Healthcare</strong></h3><ol><li><p><strong>Medical Record Digitization</strong>: Convert handwritten doctor notes and prescriptions into electronic health records (EHRs) for better accessibility.</p></li><li><p><strong>Insurance Claims Processing</strong>: Extract data from claim forms and automate insurance approvals.</p></li><li><p><strong>Patient Form Processing</strong>: Reduce paperwork by digitizing patient intake forms and medical histories.</p></li></ol><h3><strong>Retail &amp; Logistics</strong></h3><ol><li><p><strong>Barcode and Label Scanning</strong>: Automate inventory tracking by extracting data from labels and barcodes.</p></li><li><p><strong>Automated Receipt Processing</strong>: Digitize and categorize receipts for expense tracking and reimbursement.</p></li><li><p><strong>Order Management</strong>: OCR extracts shipping and order details from printed documents to streamline logistics operations.</p></li></ol><p>With OCR technology becoming more powerful and accessible, businesses across industries can leverage it to automate workflows, enhance efficiency, and improve data accuracy.</p>]]></content:encoded></item><item><title><![CDATA[AI prototyping for product folks]]></title><description><![CDATA[This post will transform how you build products, come up with new ideas, and operate as a PM.]]></description><link>https://news.adityeah.in/p/ai-prototyping-for-product-folks</link><guid isPermaLink="false">https://news.adityeah.in/p/ai-prototyping-for-product-folks</guid><dc:creator><![CDATA[adityeah]]></dc:creator><pubDate>Thu, 16 Jan 2025 16:31:49 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/2cba876c-7eb4-4d14-9150-74181f689b37_906x500.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zlPh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab9baddb-870d-4c47-aa44-33a8f8de4c47_2831x1563.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zlPh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab9baddb-870d-4c47-aa44-33a8f8de4c47_2831x1563.png 424w, https://substackcdn.com/image/fetch/$s_!zlPh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab9baddb-870d-4c47-aa44-33a8f8de4c47_2831x1563.png 848w, https://substackcdn.com/image/fetch/$s_!zlPh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab9baddb-870d-4c47-aa44-33a8f8de4c47_2831x1563.png 1272w, https://substackcdn.com/image/fetch/$s_!zlPh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab9baddb-870d-4c47-aa44-33a8f8de4c47_2831x1563.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zlPh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab9baddb-870d-4c47-aa44-33a8f8de4c47_2831x1563.png" width="1456" height="804" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ab9baddb-870d-4c47-aa44-33a8f8de4c47_2831x1563.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:804,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:620671,&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://adityeah.substack.com/i/171132823?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab9baddb-870d-4c47-aa44-33a8f8de4c47_2831x1563.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_!zlPh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab9baddb-870d-4c47-aa44-33a8f8de4c47_2831x1563.png 424w, https://substackcdn.com/image/fetch/$s_!zlPh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab9baddb-870d-4c47-aa44-33a8f8de4c47_2831x1563.png 848w, https://substackcdn.com/image/fetch/$s_!zlPh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab9baddb-870d-4c47-aa44-33a8f8de4c47_2831x1563.png 1272w, https://substackcdn.com/image/fetch/$s_!zlPh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab9baddb-870d-4c47-aa44-33a8f8de4c47_2831x1563.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This post will transform how you build products, come up with new ideas, and operate as a PM.</p><p>Whether you&#8217;re already deep into AI tools or just getting started, you&#8217;ll learn what tools you should be paying attention to, which tool to use when, and how to get unstuck when you run into an issue. You&#8217;ll find a collection of battle-tested prompts, real-world examples, and a step-by-step guide you can put into practice immediately. Imagine being able to turn Figma designs into a working app with a few clicks, or turn your PRD into a working prototype in minutes. This is all possible, and you&#8217;ll learn how.</p><p>If you haven&#8217;t been paying close attention over the past six months, you may have missed the rise of tools like&nbsp;<a href="https://www.cursor.com/">Cursor</a>,&nbsp;<a href="https://replit.com/">Replit Agent</a>,&nbsp;<a href="https://v0.dev/">v0</a>,&nbsp;<a href="https://bolt.new/">Bolt</a>, and other new cutting-edge AI tools that allow you to build working apps in minutes. For example, it took me 10 minutes to build&nbsp;<a href="https://cfjzdhoyqmiljtvb3fnjprf0stjcd8tg.vercel.app/">this 2-D tank game</a>&nbsp;(with an AI opponent included), merely using this series of prompts:</p><ul><li><p><em>&#8220;Build a 2d tank game with an AI opponent.&#8221;</em></p></li><li><p><em>&#8220;Add collision for the shot when it hits a tank.&#8221;</em></p></li><li><p><em>&#8220;When health hits zero, play an animation and reset the game.&#8221;</em></p></li><li><p><em>&#8220;Improve the acceleration for player movement.&#8221;</em></p></li><li><p><em>&#8220;Make it so holding down the space bar has a timer to shoot a 2nd time.&#8221;</em></p></li><li><p><em>&#8220;Add power ups to the map.&#8221;</em></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_!9g8o!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2bb8af7-b477-4009-a792-6f997633bb67_3220x1922.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9g8o!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2bb8af7-b477-4009-a792-6f997633bb67_3220x1922.gif 424w, https://substackcdn.com/image/fetch/$s_!9g8o!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2bb8af7-b477-4009-a792-6f997633bb67_3220x1922.gif 848w, https://substackcdn.com/image/fetch/$s_!9g8o!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2bb8af7-b477-4009-a792-6f997633bb67_3220x1922.gif 1272w, https://substackcdn.com/image/fetch/$s_!9g8o!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2bb8af7-b477-4009-a792-6f997633bb67_3220x1922.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9g8o!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2bb8af7-b477-4009-a792-6f997633bb67_3220x1922.gif" width="3220" height="1922" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f2bb8af7-b477-4009-a792-6f997633bb67_3220x1922.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1922,&quot;width&quot;:3220,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;GIF&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="GIF" title="GIF" srcset="https://substackcdn.com/image/fetch/$s_!9g8o!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2bb8af7-b477-4009-a792-6f997633bb67_3220x1922.gif 424w, https://substackcdn.com/image/fetch/$s_!9g8o!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2bb8af7-b477-4009-a792-6f997633bb67_3220x1922.gif 848w, https://substackcdn.com/image/fetch/$s_!9g8o!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2bb8af7-b477-4009-a792-6f997633bb67_3220x1922.gif 1272w, https://substackcdn.com/image/fetch/$s_!9g8o!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2bb8af7-b477-4009-a792-6f997633bb67_3220x1922.gif 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><p>Pretty cool. But what&#8217;s cooler is that you can use these tools to build functional prototypes from a Figma design, convert a rough hand-drawn sketch to a working app, translate a PRD document into an interactive prototype, or even build a usable internal tool for your team, with no coding ability. In this post, I&#8217;ll cover the basics of AI prototyping, show how to get good results out of the most popular tools, and walk through an end-to-end example of building a prototype in less than 10 minutes.</p><h2><strong>Choosing your tooling</strong></h2><p>Current AI development tools come in three types:</p><ol><li><p><strong>Chatbots (e.g.&nbsp;<a href="https://claude.ai/">Claude</a>,&nbsp;<a href="https://chatgpt.com/">ChatGPT</a>):&nbsp;</strong>The AI tools you probably know, which can also write and explain basic code</p></li><li><p><strong>Cloud development environments (e.g.&nbsp;<a href="https://replit.com/">Replit</a>,&nbsp;<a href="https://bolt.new/">Bolt</a>,&nbsp;<a href="https://v0.dev/">v0</a>,&nbsp;<a href="https://lovable.dev/">Lovable</a>):&nbsp;</strong>Full-stack platforms that<strong>&nbsp;</strong>can build and run your apps in the cloud</p></li><li><p><strong>Local developer assistants (e.g.&nbsp;<a href="https://github.com/features/copilot">GitHub Copliot</a>,&nbsp;<a href="https://www.cursor.com/">Cursor</a>,&nbsp;<a href="https://codeium.com/windsurf">Windsurf</a>,&nbsp;<a href="https://zed.dev/ai">Zed</a>):&nbsp;</strong>Development environments (i.e. IDEs) that help you write code with the help of AI</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_!uw38!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e3b7b3a-0594-439f-acc9-004430a580aa_906x500.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uw38!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e3b7b3a-0594-439f-acc9-004430a580aa_906x500.png 424w, https://substackcdn.com/image/fetch/$s_!uw38!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e3b7b3a-0594-439f-acc9-004430a580aa_906x500.png 848w, https://substackcdn.com/image/fetch/$s_!uw38!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e3b7b3a-0594-439f-acc9-004430a580aa_906x500.png 1272w, https://substackcdn.com/image/fetch/$s_!uw38!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e3b7b3a-0594-439f-acc9-004430a580aa_906x500.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uw38!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e3b7b3a-0594-439f-acc9-004430a580aa_906x500.png" width="800" height="442" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5e3b7b3a-0594-439f-acc9-004430a580aa_906x500.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:442,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!uw38!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e3b7b3a-0594-439f-acc9-004430a580aa_906x500.png 424w, https://substackcdn.com/image/fetch/$s_!uw38!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e3b7b3a-0594-439f-acc9-004430a580aa_906x500.png 848w, https://substackcdn.com/image/fetch/$s_!uw38!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e3b7b3a-0594-439f-acc9-004430a580aa_906x500.png 1272w, https://substackcdn.com/image/fetch/$s_!uw38!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e3b7b3a-0594-439f-acc9-004430a580aa_906x500.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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 review the most popular tools in each category to see what they can do and what we can build.</p><h2><strong>Chatbots (ChatGPT, Claude)</strong></h2><p><em><strong>Best for:</strong>&nbsp;Prototypes that are just one page and don&#8217;t have complex design requirements, like calculators, flip cards, or data visualizations</em></p><p>Chatbots are capable of writing code in response to a question or prompt.</p><p>A prompt like&nbsp;<em><strong>&#8220;Build me a calculator with React&#8221;</strong></em>&nbsp;results in the following:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nOwS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c9d7ea-1cb6-41dd-8c88-5f8d9ff2ae4e_1080x641.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nOwS!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c9d7ea-1cb6-41dd-8c88-5f8d9ff2ae4e_1080x641.gif 424w, https://substackcdn.com/image/fetch/$s_!nOwS!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c9d7ea-1cb6-41dd-8c88-5f8d9ff2ae4e_1080x641.gif 848w, https://substackcdn.com/image/fetch/$s_!nOwS!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c9d7ea-1cb6-41dd-8c88-5f8d9ff2ae4e_1080x641.gif 1272w, https://substackcdn.com/image/fetch/$s_!nOwS!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c9d7ea-1cb6-41dd-8c88-5f8d9ff2ae4e_1080x641.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nOwS!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c9d7ea-1cb6-41dd-8c88-5f8d9ff2ae4e_1080x641.gif" width="1080" height="641" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/06c9d7ea-1cb6-41dd-8c88-5f8d9ff2ae4e_1080x641.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:641,&quot;width&quot;:1080,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;GIF&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="GIF" title="GIF" srcset="https://substackcdn.com/image/fetch/$s_!nOwS!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c9d7ea-1cb6-41dd-8c88-5f8d9ff2ae4e_1080x641.gif 424w, https://substackcdn.com/image/fetch/$s_!nOwS!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c9d7ea-1cb6-41dd-8c88-5f8d9ff2ae4e_1080x641.gif 848w, https://substackcdn.com/image/fetch/$s_!nOwS!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c9d7ea-1cb6-41dd-8c88-5f8d9ff2ae4e_1080x641.gif 1272w, https://substackcdn.com/image/fetch/$s_!nOwS!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c9d7ea-1cb6-41dd-8c88-5f8d9ff2ae4e_1080x641.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></figure></div><p>If you want to run this code, ChatGPT requires you to copy and paste the code into your IDE and run it on your own computer.</p><p>Claude goes one step beyond ChatGPT&#8217;s abilities with their&nbsp;<a href="https://support.anthropic.com/en/articles/9487310-what-are-artifacts-and-how-do-i-use-them">Artifact system</a>. Artifacts allow you to run the code within Claude&#8217;s interface and deploy to a shareable link. An unfortunate limitation is that you can&#8217;t make any direct edits to the code, so you&#8217;re entirely reliant on using prompts to make code 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_!bx27!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71c5a618-e663-49d4-986e-0ea9c18620f8_1080x641.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bx27!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71c5a618-e663-49d4-986e-0ea9c18620f8_1080x641.gif 424w, https://substackcdn.com/image/fetch/$s_!bx27!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71c5a618-e663-49d4-986e-0ea9c18620f8_1080x641.gif 848w, https://substackcdn.com/image/fetch/$s_!bx27!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71c5a618-e663-49d4-986e-0ea9c18620f8_1080x641.gif 1272w, https://substackcdn.com/image/fetch/$s_!bx27!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71c5a618-e663-49d4-986e-0ea9c18620f8_1080x641.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bx27!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71c5a618-e663-49d4-986e-0ea9c18620f8_1080x641.gif" width="1080" height="641" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/71c5a618-e663-49d4-986e-0ea9c18620f8_1080x641.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:641,&quot;width&quot;:1080,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;GIF&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="GIF" title="GIF" srcset="https://substackcdn.com/image/fetch/$s_!bx27!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71c5a618-e663-49d4-986e-0ea9c18620f8_1080x641.gif 424w, https://substackcdn.com/image/fetch/$s_!bx27!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71c5a618-e663-49d4-986e-0ea9c18620f8_1080x641.gif 848w, https://substackcdn.com/image/fetch/$s_!bx27!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71c5a618-e663-49d4-986e-0ea9c18620f8_1080x641.gif 1272w, https://substackcdn.com/image/fetch/$s_!bx27!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71c5a618-e663-49d4-986e-0ea9c18620f8_1080x641.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></figure></div><p>(<a href="https://www.perplexity.ai/">Perplexity</a>&nbsp;is another tool you&#8217;ve probably heard of, which feels similar to chatbots but is more focused on search and not as useful for creating apps. It can write basic code because it&#8217;s built on top of other AI models like ChatGPT and Claude, but I wouldn&#8217;t recommend it for this use case.)</p><p>Remember that chatbots can write code for any part of our stack (client, server, database) but can&#8217;t host your code (deploy) for us. They also can&#8217;t create complex prototypes with multiple pages, and it&#8217;s difficult to change the code directly. As a result, these tools are best used for very simple one-time prototypes&#8212;which sometimes is enough to get the job done. Think of chatbots when you&#8217;re looking to create a very simple landing page, individual inputs like a date picker, or small apps like a to-do list.</p><h2><strong>Cloud development environments (Replit, Bolt, v0, Lovable)</strong></h2><p><em><strong>Best for:&nbsp;</strong>Prototypes with more than one feature, specific design requirements, or many pages</em></p><p>Cloud development environments are one big step up from chatbots. These tools handle all the tasks required to turn your ideas into an actual working product. They can help you build end-to-end features, handle the backend infrastructure necessary to run your prototype, allow multi-file edits with agentic workflows, and take on more complex tasks across your codebase such as updating your database schema.</p><p>One of the key differentiators among the various cloud development environments is hosting. Every software product is built with three parts: <strong>a client, a server, and a database.</strong> The client is what the user interacts with (often written in JavaScript), the server processes requests from the client to retrieve data or integrate with other products (often written in Node.js, Python, or Java), and the database is your permanent storage of data. Making prototypes that have real features requires you to host both your client and server code, and may require a database to power the app.</p><p>One of the most popular tools today,&nbsp;<a href="https://v0.dev/">v0</a>, is capable of writing and hosting both client and server code. By default it uses specific frameworks called&nbsp;<a href="https://nextjs.org/">Next.js</a>&nbsp;and&nbsp;<a href="https://ui.shadcn.com/">Shadcn UI</a>&nbsp;to do so (both were created by&nbsp;<a href="https://vercel.com/">Vercel</a>, the same company that owns v0). v0 can deploy your code and run backend servers&#8212;plus, one of its strongest features is that it has great styling as a default. Here&#8217;s a basic CRM I built in v0 with the prompt &#8220;Build me a basic CRM.&#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_!4VvC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1128fa8e-1f81-46af-a25d-4ca25a736306_1024x615.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4VvC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1128fa8e-1f81-46af-a25d-4ca25a736306_1024x615.png 424w, https://substackcdn.com/image/fetch/$s_!4VvC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1128fa8e-1f81-46af-a25d-4ca25a736306_1024x615.png 848w, https://substackcdn.com/image/fetch/$s_!4VvC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1128fa8e-1f81-46af-a25d-4ca25a736306_1024x615.png 1272w, https://substackcdn.com/image/fetch/$s_!4VvC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1128fa8e-1f81-46af-a25d-4ca25a736306_1024x615.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4VvC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1128fa8e-1f81-46af-a25d-4ca25a736306_1024x615.png" width="800" height="480" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1128fa8e-1f81-46af-a25d-4ca25a736306_1024x615.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:480,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!4VvC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1128fa8e-1f81-46af-a25d-4ca25a736306_1024x615.png 424w, https://substackcdn.com/image/fetch/$s_!4VvC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1128fa8e-1f81-46af-a25d-4ca25a736306_1024x615.png 848w, https://substackcdn.com/image/fetch/$s_!4VvC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1128fa8e-1f81-46af-a25d-4ca25a736306_1024x615.png 1272w, https://substackcdn.com/image/fetch/$s_!4VvC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1128fa8e-1f81-46af-a25d-4ca25a736306_1024x615.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><a href="https://bolt.new/">Bolt</a>&nbsp;is very similar to v0 in that it can also generate and deploy both client and server code. But a key difference is where the server runs. With v0, you deploy to real cloud hosting infrastructure, whereas Bolt runs the server code directly in the user&#8217;s browser. This means Bolt cannot natively support prototypes that need user identity like logins or accounts, multi-user interactions such as chat or collaborative workspaces, secure data operations like payment processing, or persistent data storage between sessions, because an isolated copy of the server is created on each user&#8217;s device. You can make up for this by integrating with external products like Supabase that offer servers and databases.</p><p>Here&#8217;s a basic CRM I built with Bolt, using the prompt &#8220;Build me a basic CRM.&#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_!KzZG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc50cbcf7-a527-4372-b8a3-8e210e92641c_1024x620.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KzZG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc50cbcf7-a527-4372-b8a3-8e210e92641c_1024x620.webp 424w, https://substackcdn.com/image/fetch/$s_!KzZG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc50cbcf7-a527-4372-b8a3-8e210e92641c_1024x620.webp 848w, https://substackcdn.com/image/fetch/$s_!KzZG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc50cbcf7-a527-4372-b8a3-8e210e92641c_1024x620.webp 1272w, https://substackcdn.com/image/fetch/$s_!KzZG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc50cbcf7-a527-4372-b8a3-8e210e92641c_1024x620.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KzZG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc50cbcf7-a527-4372-b8a3-8e210e92641c_1024x620.webp" width="800" height="484" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c50cbcf7-a527-4372-b8a3-8e210e92641c_1024x620.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:484,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!KzZG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc50cbcf7-a527-4372-b8a3-8e210e92641c_1024x620.webp 424w, https://substackcdn.com/image/fetch/$s_!KzZG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc50cbcf7-a527-4372-b8a3-8e210e92641c_1024x620.webp 848w, https://substackcdn.com/image/fetch/$s_!KzZG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc50cbcf7-a527-4372-b8a3-8e210e92641c_1024x620.webp 1272w, https://substackcdn.com/image/fetch/$s_!KzZG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc50cbcf7-a527-4372-b8a3-8e210e92641c_1024x620.webp 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>Another popular tool is&nbsp;<a href="https://replit.com/">Replit</a>. Replit allows you to build full-stack applications, including a client, server, and database. It can build web apps using both JavaScript and Python frameworks and particularly excels at building internal admin tools (e.g. file conversion, job applicant tracking) and data-driven applications (e.g. image resizing, multi-page dashboards) with simple UIs.</p><p>I use Replit whenever I need a fully functional back end or I want to use Python code. I&#8217;ve used it to build an MP4-to-GIF converter and a Substack image resizer&#8212;both tools I use weekly.</p><p>Here&#8217;s a basic CRM I built with Replit, using the prompt &#8220;Build me a basic CRM.&#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_!WscV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feab34944-ecd5-443c-b10f-c09bdf4247a0_1024x620.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WscV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feab34944-ecd5-443c-b10f-c09bdf4247a0_1024x620.webp 424w, https://substackcdn.com/image/fetch/$s_!WscV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feab34944-ecd5-443c-b10f-c09bdf4247a0_1024x620.webp 848w, https://substackcdn.com/image/fetch/$s_!WscV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feab34944-ecd5-443c-b10f-c09bdf4247a0_1024x620.webp 1272w, https://substackcdn.com/image/fetch/$s_!WscV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feab34944-ecd5-443c-b10f-c09bdf4247a0_1024x620.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WscV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feab34944-ecd5-443c-b10f-c09bdf4247a0_1024x620.webp" width="800" height="484" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eab34944-ecd5-443c-b10f-c09bdf4247a0_1024x620.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:484,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!WscV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feab34944-ecd5-443c-b10f-c09bdf4247a0_1024x620.webp 424w, https://substackcdn.com/image/fetch/$s_!WscV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feab34944-ecd5-443c-b10f-c09bdf4247a0_1024x620.webp 848w, https://substackcdn.com/image/fetch/$s_!WscV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feab34944-ecd5-443c-b10f-c09bdf4247a0_1024x620.webp 1272w, https://substackcdn.com/image/fetch/$s_!WscV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feab34944-ecd5-443c-b10f-c09bdf4247a0_1024x620.webp 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>Finally, we have&nbsp;<a href="https://lovable.dev/">Lovable</a>. It&#8217;s the newest of the bunch. Lovable is most similar to v0 and Bolt&#8212;it excels at generating websites, and uses JavaScript frameworks like React and Next.js. Its differentiation comes from its integrations with other popular tools. Lovable can connect to a GitHub repository, automatically add authentication and databases with Supabase, and help you connect to AI providers like Anthropic and OpenAI. All of these features make it one of the best AI coding tools for building products you actually want to use in production.</p><p>One major drawback of Lovable is the lack of a code editor. To edit code, you have to ask the agent with prompting. This can make it difficult to debug issues directly in Lovable. I often find myself starting a new feature here but moving over to Cursor to resolve problems.</p><p>Here&#8217;s a basic CRM I built with Lovable, using the prompt &#8220;Build me a basic CRM.&#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_!DImU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72fe6492-ea2c-45eb-ba59-d204bbf7f3f0_1024x615.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DImU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72fe6492-ea2c-45eb-ba59-d204bbf7f3f0_1024x615.webp 424w, https://substackcdn.com/image/fetch/$s_!DImU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72fe6492-ea2c-45eb-ba59-d204bbf7f3f0_1024x615.webp 848w, https://substackcdn.com/image/fetch/$s_!DImU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72fe6492-ea2c-45eb-ba59-d204bbf7f3f0_1024x615.webp 1272w, https://substackcdn.com/image/fetch/$s_!DImU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72fe6492-ea2c-45eb-ba59-d204bbf7f3f0_1024x615.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DImU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72fe6492-ea2c-45eb-ba59-d204bbf7f3f0_1024x615.webp" width="800" height="480" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/72fe6492-ea2c-45eb-ba59-d204bbf7f3f0_1024x615.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:480,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!DImU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72fe6492-ea2c-45eb-ba59-d204bbf7f3f0_1024x615.webp 424w, https://substackcdn.com/image/fetch/$s_!DImU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72fe6492-ea2c-45eb-ba59-d204bbf7f3f0_1024x615.webp 848w, https://substackcdn.com/image/fetch/$s_!DImU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72fe6492-ea2c-45eb-ba59-d204bbf7f3f0_1024x615.webp 1272w, https://substackcdn.com/image/fetch/$s_!DImU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72fe6492-ea2c-45eb-ba59-d204bbf7f3f0_1024x615.webp 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>To recap:</p><ul><li><p>Choose v0 for beautiful designs by default</p></li><li><p>Choose Bolt for quick prototypes with flexible designs</p></li><li><p>Choose Replit for internal tools or products that store or transform data</p></li><li><p>Choose Lovable for building production apps that benefit from integrations with your current tools</p></li></ul><p>Regardless of your choice, cloud development environments all support building more complex applications than chatbots, with the ability to deploy to the cloud and easily share updated iterations over time.</p><h2><strong>Local developer assistants (GitHub Copilot, Cursor, Windsurf, Zed)</strong></h2><p><em><strong>Best for:</strong>&nbsp;People who know how to code and are working on serious applications they want to ship to production</em></p><p>The final type of AI development tool is local developer assistants. These products are targeted toward people who know how to write code. Tools like Cursor and GitHub Copilot can take prompts in a similar fashion to Claude but can then generate and apply changes within your own codebase and development environment (IDE). These tools do more than autocomplete&#8212;they can now write most of your code just using prompts.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6Azz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb9ff6f4-c9d2-4653-95c5-e63bd7e9e1f7_3246x2136.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6Azz!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb9ff6f4-c9d2-4653-95c5-e63bd7e9e1f7_3246x2136.gif 424w, https://substackcdn.com/image/fetch/$s_!6Azz!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb9ff6f4-c9d2-4653-95c5-e63bd7e9e1f7_3246x2136.gif 848w, https://substackcdn.com/image/fetch/$s_!6Azz!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb9ff6f4-c9d2-4653-95c5-e63bd7e9e1f7_3246x2136.gif 1272w, https://substackcdn.com/image/fetch/$s_!6Azz!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb9ff6f4-c9d2-4653-95c5-e63bd7e9e1f7_3246x2136.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6Azz!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb9ff6f4-c9d2-4653-95c5-e63bd7e9e1f7_3246x2136.gif" width="3246" height="2136" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eb9ff6f4-c9d2-4653-95c5-e63bd7e9e1f7_3246x2136.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2136,&quot;width&quot;:3246,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;GIF&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="GIF" title="GIF" srcset="https://substackcdn.com/image/fetch/$s_!6Azz!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb9ff6f4-c9d2-4653-95c5-e63bd7e9e1f7_3246x2136.gif 424w, https://substackcdn.com/image/fetch/$s_!6Azz!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb9ff6f4-c9d2-4653-95c5-e63bd7e9e1f7_3246x2136.gif 848w, https://substackcdn.com/image/fetch/$s_!6Azz!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb9ff6f4-c9d2-4653-95c5-e63bd7e9e1f7_3246x2136.gif 1272w, https://substackcdn.com/image/fetch/$s_!6Azz!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb9ff6f4-c9d2-4653-95c5-e63bd7e9e1f7_3246x2136.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></figure></div><p>For example, I built this presentation app (with live Q&amp;A and polls!) in about 10 days using Lovable and Cursor. I started the app in Lovable to build basic features quickly, synced my code to GitHub to allow editing in other tools, and made final changes and fixed bugs with Cursor. This application uses authentication, databases, real-time updates, and more.</p><p>Ten days may sound like a lot, but most of that time was spent resolving bugs and troubleshooting issues&#8212;something Cursor excels at compared with other tools, and something I get into a couple of sections down.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jmQk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd66cb770-6f7d-4565-af71-02bd6d8da3f9_864x513.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jmQk!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd66cb770-6f7d-4565-af71-02bd6d8da3f9_864x513.gif 424w, https://substackcdn.com/image/fetch/$s_!jmQk!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd66cb770-6f7d-4565-af71-02bd6d8da3f9_864x513.gif 848w, https://substackcdn.com/image/fetch/$s_!jmQk!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd66cb770-6f7d-4565-af71-02bd6d8da3f9_864x513.gif 1272w, https://substackcdn.com/image/fetch/$s_!jmQk!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd66cb770-6f7d-4565-af71-02bd6d8da3f9_864x513.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jmQk!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd66cb770-6f7d-4565-af71-02bd6d8da3f9_864x513.gif" width="864" height="513" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d66cb770-6f7d-4565-af71-02bd6d8da3f9_864x513.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:513,&quot;width&quot;:864,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;GIF&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="GIF" title="GIF" srcset="https://substackcdn.com/image/fetch/$s_!jmQk!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd66cb770-6f7d-4565-af71-02bd6d8da3f9_864x513.gif 424w, https://substackcdn.com/image/fetch/$s_!jmQk!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd66cb770-6f7d-4565-af71-02bd6d8da3f9_864x513.gif 848w, https://substackcdn.com/image/fetch/$s_!jmQk!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd66cb770-6f7d-4565-af71-02bd6d8da3f9_864x513.gif 1272w, https://substackcdn.com/image/fetch/$s_!jmQk!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd66cb770-6f7d-4565-af71-02bd6d8da3f9_864x513.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></figure></div><p>GitHub Copilot is more popular in enterprise environments, as it comes from a trusted vendor, Microsoft. It supports multi-file changes from prompts, code explanations, and more. I&#8217;ve found it works best when given very specific direction and does not perform as well as Cursor at more general instructions. For example, when I asked for a new feature without providing context, Copilot re-created components of my app that already existed, whereas Cursor modified my existing files directly.</p><p>Two tools I haven&#8217;t spent as much time with but people are excited about are Windsurf and Zed. Windsurf is another IDE that can suggest multi-line changes to files and suggest commands such as moving files on your behalf. It excels at working on larger, more complex codebases. Zed is a highly performant editor built with a variety of productivity features such as prompt libraries, slash commands, and keyboard shortcuts for common actions like applying AI-generated code.</p><h2><strong>Building your prototype</strong></h2><p>Now that we&#8217;re familiar with the basic tools, let&#8217;s build some prototypes. The two most common prototyping use cases for product managers are:</p><ol><li><p>Converting an existing design to a functional prototype</p></li><li><p>Building an idea into a prototype from scratch</p></li></ol><h2><strong>Converting a design to a functional prototype</strong></h2><p>Let&#8217;s turn the following design for Airbnb&#8217;s home page into a working prototype. Say you want to use this prototype to explore a new feature, such as a price filter.</p><p>Here&#8217;s our initial design:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xzDd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb19957ac-5e69-4558-aafe-e9b8e67be8c3_1024x473.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xzDd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb19957ac-5e69-4558-aafe-e9b8e67be8c3_1024x473.webp 424w, https://substackcdn.com/image/fetch/$s_!xzDd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb19957ac-5e69-4558-aafe-e9b8e67be8c3_1024x473.webp 848w, https://substackcdn.com/image/fetch/$s_!xzDd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb19957ac-5e69-4558-aafe-e9b8e67be8c3_1024x473.webp 1272w, https://substackcdn.com/image/fetch/$s_!xzDd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb19957ac-5e69-4558-aafe-e9b8e67be8c3_1024x473.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xzDd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb19957ac-5e69-4558-aafe-e9b8e67be8c3_1024x473.webp" width="800" height="370" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b19957ac-5e69-4558-aafe-e9b8e67be8c3_1024x473.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:370,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!xzDd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb19957ac-5e69-4558-aafe-e9b8e67be8c3_1024x473.webp 424w, https://substackcdn.com/image/fetch/$s_!xzDd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb19957ac-5e69-4558-aafe-e9b8e67be8c3_1024x473.webp 848w, https://substackcdn.com/image/fetch/$s_!xzDd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb19957ac-5e69-4558-aafe-e9b8e67be8c3_1024x473.webp 1272w, https://substackcdn.com/image/fetch/$s_!xzDd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb19957ac-5e69-4558-aafe-e9b8e67be8c3_1024x473.webp 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>I chose Bolt for this task, as it&#8217;s better at building off a pre-existing design and we don&#8217;t need the backend database provided by Replit. Here&#8217;s a prompt I used (which you can copy and paste). Make sure to include a screenshot of the design!</p><p><em>&#8220;Build a prototype to match this design. Match it exactly.&#8221;</em></p><p>Here&#8217;s how this experience looks in Bolt:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rnJR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F000e35d0-08fd-471b-9f22-a12adae2b37f_1080x641.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rnJR!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F000e35d0-08fd-471b-9f22-a12adae2b37f_1080x641.gif 424w, https://substackcdn.com/image/fetch/$s_!rnJR!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F000e35d0-08fd-471b-9f22-a12adae2b37f_1080x641.gif 848w, https://substackcdn.com/image/fetch/$s_!rnJR!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F000e35d0-08fd-471b-9f22-a12adae2b37f_1080x641.gif 1272w, https://substackcdn.com/image/fetch/$s_!rnJR!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F000e35d0-08fd-471b-9f22-a12adae2b37f_1080x641.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rnJR!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F000e35d0-08fd-471b-9f22-a12adae2b37f_1080x641.gif" width="1080" height="641" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/000e35d0-08fd-471b-9f22-a12adae2b37f_1080x641.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:641,&quot;width&quot;:1080,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;GIF&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="GIF" title="GIF" srcset="https://substackcdn.com/image/fetch/$s_!rnJR!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F000e35d0-08fd-471b-9f22-a12adae2b37f_1080x641.gif 424w, https://substackcdn.com/image/fetch/$s_!rnJR!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F000e35d0-08fd-471b-9f22-a12adae2b37f_1080x641.gif 848w, https://substackcdn.com/image/fetch/$s_!rnJR!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F000e35d0-08fd-471b-9f22-a12adae2b37f_1080x641.gif 1272w, https://substackcdn.com/image/fetch/$s_!rnJR!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F000e35d0-08fd-471b-9f22-a12adae2b37f_1080x641.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></figure></div><p>Next, we&#8217;ll add our new price filter feature. Notice in the prompt below how I describe every feature in detail. One pro tip with prompting these tools is to be hyperspecific when describing changes for your subsequent prompts, as it helps the AI pinpoint what should change.</p><p><em>&#8220;Implement an inline price filter as a component of the search bar. It should appear next to &#8216;Add guests&#8217; in its own section.</em></p><p><em>Selecting the input should pop up a price filter with minimum and maximum values. The background of the pop-up should be white and should cover elements beneath it.&#8221;</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!O3t4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6862d7f0-e5c6-4865-9716-69d171d5ceaa_3202x1920.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!O3t4!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6862d7f0-e5c6-4865-9716-69d171d5ceaa_3202x1920.gif 424w, https://substackcdn.com/image/fetch/$s_!O3t4!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6862d7f0-e5c6-4865-9716-69d171d5ceaa_3202x1920.gif 848w, https://substackcdn.com/image/fetch/$s_!O3t4!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6862d7f0-e5c6-4865-9716-69d171d5ceaa_3202x1920.gif 1272w, https://substackcdn.com/image/fetch/$s_!O3t4!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6862d7f0-e5c6-4865-9716-69d171d5ceaa_3202x1920.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!O3t4!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6862d7f0-e5c6-4865-9716-69d171d5ceaa_3202x1920.gif" width="3202" height="1920" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6862d7f0-e5c6-4865-9716-69d171d5ceaa_3202x1920.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1920,&quot;width&quot;:3202,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;GIF&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="GIF" title="GIF" srcset="https://substackcdn.com/image/fetch/$s_!O3t4!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6862d7f0-e5c6-4865-9716-69d171d5ceaa_3202x1920.gif 424w, https://substackcdn.com/image/fetch/$s_!O3t4!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6862d7f0-e5c6-4865-9716-69d171d5ceaa_3202x1920.gif 848w, https://substackcdn.com/image/fetch/$s_!O3t4!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6862d7f0-e5c6-4865-9716-69d171d5ceaa_3202x1920.gif 1272w, https://substackcdn.com/image/fetch/$s_!O3t4!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6862d7f0-e5c6-4865-9716-69d171d5ceaa_3202x1920.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></figure></div><p>This is a great starting point. Let&#8217;s extend this feature with a slider for the minimum price.</p><p><em>&#8220;Can you add a price slider? It should have a blue line and a black node. Sliding the node should modify the minimum price.&#8221;</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tPZK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F714f13e1-1534-4008-bf6f-1520264cdf4f_3218x1934.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tPZK!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F714f13e1-1534-4008-bf6f-1520264cdf4f_3218x1934.gif 424w, https://substackcdn.com/image/fetch/$s_!tPZK!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F714f13e1-1534-4008-bf6f-1520264cdf4f_3218x1934.gif 848w, https://substackcdn.com/image/fetch/$s_!tPZK!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F714f13e1-1534-4008-bf6f-1520264cdf4f_3218x1934.gif 1272w, https://substackcdn.com/image/fetch/$s_!tPZK!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F714f13e1-1534-4008-bf6f-1520264cdf4f_3218x1934.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tPZK!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F714f13e1-1534-4008-bf6f-1520264cdf4f_3218x1934.gif" width="3218" height="1934" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/714f13e1-1534-4008-bf6f-1520264cdf4f_3218x1934.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1934,&quot;width&quot;:3218,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;GIF&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="GIF" title="GIF" srcset="https://substackcdn.com/image/fetch/$s_!tPZK!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F714f13e1-1534-4008-bf6f-1520264cdf4f_3218x1934.gif 424w, https://substackcdn.com/image/fetch/$s_!tPZK!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F714f13e1-1534-4008-bf6f-1520264cdf4f_3218x1934.gif 848w, https://substackcdn.com/image/fetch/$s_!tPZK!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F714f13e1-1534-4008-bf6f-1520264cdf4f_3218x1934.gif 1272w, https://substackcdn.com/image/fetch/$s_!tPZK!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F714f13e1-1534-4008-bf6f-1520264cdf4f_3218x1934.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></figure></div><p>We now have a functional initial prototype of your product idea within 10 minutes! Without any coding skill. Incredible. We could even continue to improve this prototype filter (e.g. showing listings updated in real time as you adjust the price). Check out the prototype&nbsp;<a href="https://peaceful-shortbread-751d61.netlify.app/">here</a>.</p><h2><strong>Building a prototype from scratch</strong></h2><p>If you&#8217;re like me, your design skills are probably not good enough to create the initial design we used in the prior example. Luckily, you can build a prototype using existing patterns and components from free and publicly available design systems like&nbsp;<a href="https://tailwindcss.com/">Tailwind</a>&nbsp;or&nbsp;<a href="https://ui.shadcn.com/">Shadcn UI</a>.</p><p>Let&#8217;s build a quick CRM with Bolt, then add a new feature to it. Let&#8217;s say we&#8217;re considering adding a feature that automates email outreach directly from our CRM and want to gather customer feedback about this feature before building it, by showing potential users a prototype of what it might look like.</p><p>We can quickly put together a v1 with the following prompts:</p><p><em>&#8220;Create a comprehensive customer relationship management (CRM) system.&#8221;</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!df3N!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa128cc36-8785-4d84-97c6-aa74059243c6_1024x590.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!df3N!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa128cc36-8785-4d84-97c6-aa74059243c6_1024x590.webp 424w, https://substackcdn.com/image/fetch/$s_!df3N!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa128cc36-8785-4d84-97c6-aa74059243c6_1024x590.webp 848w, https://substackcdn.com/image/fetch/$s_!df3N!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa128cc36-8785-4d84-97c6-aa74059243c6_1024x590.webp 1272w, https://substackcdn.com/image/fetch/$s_!df3N!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa128cc36-8785-4d84-97c6-aa74059243c6_1024x590.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!df3N!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa128cc36-8785-4d84-97c6-aa74059243c6_1024x590.webp" width="800" height="461" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a128cc36-8785-4d84-97c6-aa74059243c6_1024x590.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:461,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!df3N!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa128cc36-8785-4d84-97c6-aa74059243c6_1024x590.webp 424w, https://substackcdn.com/image/fetch/$s_!df3N!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa128cc36-8785-4d84-97c6-aa74059243c6_1024x590.webp 848w, https://substackcdn.com/image/fetch/$s_!df3N!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa128cc36-8785-4d84-97c6-aa74059243c6_1024x590.webp 1272w, https://substackcdn.com/image/fetch/$s_!df3N!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa128cc36-8785-4d84-97c6-aa74059243c6_1024x590.webp 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>Again, let&#8217;s take a moment to pause here. We just created a working prototype of a CRM in less than five minutes&#8212;something that would have previously taken weeks of an engineer&#8217;s time. Unbelievable.</p><p>Let&#8217;s keep going and see how we add a new feature.</p><p><em>&#8220;Please implement a mock AI email writer. This should be accessible from the left nav.&#8221;</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EPtQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc61c29eb-4947-43af-a4c6-70497f745483_1080x641.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EPtQ!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc61c29eb-4947-43af-a4c6-70497f745483_1080x641.gif 424w, https://substackcdn.com/image/fetch/$s_!EPtQ!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc61c29eb-4947-43af-a4c6-70497f745483_1080x641.gif 848w, https://substackcdn.com/image/fetch/$s_!EPtQ!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc61c29eb-4947-43af-a4c6-70497f745483_1080x641.gif 1272w, https://substackcdn.com/image/fetch/$s_!EPtQ!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc61c29eb-4947-43af-a4c6-70497f745483_1080x641.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EPtQ!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc61c29eb-4947-43af-a4c6-70497f745483_1080x641.gif" width="1080" height="641" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c61c29eb-4947-43af-a4c6-70497f745483_1080x641.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:641,&quot;width&quot;:1080,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;GIF&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="GIF" title="GIF" srcset="https://substackcdn.com/image/fetch/$s_!EPtQ!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc61c29eb-4947-43af-a4c6-70497f745483_1080x641.gif 424w, https://substackcdn.com/image/fetch/$s_!EPtQ!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc61c29eb-4947-43af-a4c6-70497f745483_1080x641.gif 848w, https://substackcdn.com/image/fetch/$s_!EPtQ!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc61c29eb-4947-43af-a4c6-70497f745483_1080x641.gif 1272w, https://substackcdn.com/image/fetch/$s_!EPtQ!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc61c29eb-4947-43af-a4c6-70497f745483_1080x641.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></figure></div><p>Again, less than five minutes to be able to play with a new feature idea. Just think about how many ideas you can explore and how quickly you can bring them to market. AI prototyping tools have been available for less than six months and have already absolutely changed the speed at which teams can ship.</p><p>Now we can take our prototype and get customers&#8217; direct feedback without wasting time developing an initial version. This approach can speed up your discovery process by getting interactive examples in your customers&#8217; hands as early as possible.</p><p>Each AI tool will have very different outcomes based on their default settings and how specific you are. Here&#8217;s the exact same example with the same prompts using v0:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!o4PH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F691f2710-81c4-4b2e-8b55-5a09150a4445_1024x562.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!o4PH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F691f2710-81c4-4b2e-8b55-5a09150a4445_1024x562.webp 424w, https://substackcdn.com/image/fetch/$s_!o4PH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F691f2710-81c4-4b2e-8b55-5a09150a4445_1024x562.webp 848w, https://substackcdn.com/image/fetch/$s_!o4PH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F691f2710-81c4-4b2e-8b55-5a09150a4445_1024x562.webp 1272w, https://substackcdn.com/image/fetch/$s_!o4PH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F691f2710-81c4-4b2e-8b55-5a09150a4445_1024x562.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!o4PH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F691f2710-81c4-4b2e-8b55-5a09150a4445_1024x562.webp" width="800" height="439" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/691f2710-81c4-4b2e-8b55-5a09150a4445_1024x562.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:439,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!o4PH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F691f2710-81c4-4b2e-8b55-5a09150a4445_1024x562.webp 424w, https://substackcdn.com/image/fetch/$s_!o4PH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F691f2710-81c4-4b2e-8b55-5a09150a4445_1024x562.webp 848w, https://substackcdn.com/image/fetch/$s_!o4PH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F691f2710-81c4-4b2e-8b55-5a09150a4445_1024x562.webp 1272w, https://substackcdn.com/image/fetch/$s_!o4PH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F691f2710-81c4-4b2e-8b55-5a09150a4445_1024x562.webp 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>Common use cases and prompt templates</strong></h2><p>Here are a few good templates you can use to get started with each of the tools I&#8217;ve highlighted:</p><h4><strong>Task #1:&nbsp;</strong>Build a prototype from an existing Figma design</h4><p><strong>Prompt:</strong></p><p><code>Build a prototype to match this design. Match it exactly. Use Tailwindcss.</code></p><p><code>Match styles, fonts, spacing, and colors.</code></p><p><code>[Include a single screenshot from Figma]</code></p><p><strong>Tool:</strong>&nbsp;Bolt</p><p><strong>Example:</strong>&nbsp;<a href="https://spectacular-jelly-78231b.netlify.app/">Deployment manager</a></p>]]></content:encoded></item></channel></rss>