<?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]]></title><description><![CDATA[The product growth guy. Helping PMs, product leaders, and aspiring PMs succeed]]></description><link>https://news.adityeah.in</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</title><link>https://news.adityeah.in</link></image><generator>Substack</generator><lastBuildDate>Sun, 10 May 2026 11:12:37 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[The Ultimate Guide to Product Discovery]]></title><description><![CDATA[Product Discovery is by far the most critical area for a Product Manager.]]></description><link>https://news.adityeah.in/p/the-ultimate-guide-to-product-discovery</link><guid isPermaLink="false">https://news.adityeah.in/p/the-ultimate-guide-to-product-discovery</guid><dc:creator><![CDATA[adityeah]]></dc:creator><pubDate>Thu, 05 Jun 2025 10:48:46 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/2e931093-e2ad-4054-b544-34a8f45d0185_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_!ElnQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f113504-cfbd-4968-ae24-d337c45279ac_2831x1563.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ElnQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f113504-cfbd-4968-ae24-d337c45279ac_2831x1563.png 424w, https://substackcdn.com/image/fetch/$s_!ElnQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f113504-cfbd-4968-ae24-d337c45279ac_2831x1563.png 848w, https://substackcdn.com/image/fetch/$s_!ElnQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f113504-cfbd-4968-ae24-d337c45279ac_2831x1563.png 1272w, https://substackcdn.com/image/fetch/$s_!ElnQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f113504-cfbd-4968-ae24-d337c45279ac_2831x1563.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ElnQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f113504-cfbd-4968-ae24-d337c45279ac_2831x1563.png" width="1456" height="804" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9f113504-cfbd-4968-ae24-d337c45279ac_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;:3995020,&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/171132840?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f113504-cfbd-4968-ae24-d337c45279ac_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_!ElnQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f113504-cfbd-4968-ae24-d337c45279ac_2831x1563.png 424w, https://substackcdn.com/image/fetch/$s_!ElnQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f113504-cfbd-4968-ae24-d337c45279ac_2831x1563.png 848w, https://substackcdn.com/image/fetch/$s_!ElnQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f113504-cfbd-4968-ae24-d337c45279ac_2831x1563.png 1272w, https://substackcdn.com/image/fetch/$s_!ElnQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f113504-cfbd-4968-ae24-d337c45279ac_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>Product Discovery is by far the most critical area for a Product Manager.</p><p>But, it is largely misunderstood. Teams waste time and energy delivering ideas that fail to drive the outcomes they expect.</p><p>Too often, teams spend months building features that fail to meet user needs or drive business impact. If you&#8217;ve ever launched something that barely got used, you already know why Product Discovery matters.</p><p>In this Product Discovery 101 guide, you&#8217;ll learn:</p><ul><li><p>What Product Discovery is</p></li><li><p>Why Product Discovery is important</p></li><li><p>The difference between Continuous and Initial Product Discovery</p></li><li><p>How to apply Product Discovery: techniques, frameworks, and tools</p></li><li><p>Pros and cons of Jira Product Discovery</p></li><li><p>Where to find Product Discovery courses, templates, and resources</p></li></ul><h2><strong>1. Why do We Need Product Discovery?</strong></h2><h3>1.1 Managing risks</h3><p>Let me tell you a secret: In product management, most ideas won&#8217;t work as expected. As Marty Cagan says in&nbsp;<a href="https://www.amazon.com/INSPIRED-Create-Tech-Products-Customers/dp/1119387507?crid=1OT0TDVI95HIT&amp;keywords=inspired&amp;qid=1675327499&amp;sprefix=inspired,aps,208&amp;sr=8-1&amp;linkCode=sl1&amp;tag=huryn09-20&amp;linkId=825b8b441e37ff8bc6ba24935df12f64&amp;language=en_US&amp;ref_=as_li_ss_tl">Inspired</a>:</p><blockquote><p><em>&#8222;The first truth is that&nbsp;<strong>at least half of your ideas are just not going to work</strong>&#8221;</em></p></blockquote><p>Good teams assume at least three-quarters of their ideas won&#8217;t perform as they hope.</p><p>But why does it happen?</p><p>Product management is, at its heart, about&nbsp;managing risk. And for every product, 5 essential risks can materialize:</p><ul><li><p><strong>Value Risk</strong>: Will this idea truly create value for customers?</p></li><li><p><strong>Usability Risk</strong>: Will users figure out how to use it?</p></li><li><p><strong>Viability Risk</strong>: Can our business support it?</p></li><li><p><strong>Feasibility Risk</strong>: Can we build it with our current technology?</p></li><li><p><strong>Ethical Risk</strong>: Should we build it at all? Are there ethical considerations?</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_!_jrm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f8d4427-fe6c-4906-adc3-c6583ab287f6_977x406.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_jrm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f8d4427-fe6c-4906-adc3-c6583ab287f6_977x406.webp 424w, https://substackcdn.com/image/fetch/$s_!_jrm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f8d4427-fe6c-4906-adc3-c6583ab287f6_977x406.webp 848w, https://substackcdn.com/image/fetch/$s_!_jrm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f8d4427-fe6c-4906-adc3-c6583ab287f6_977x406.webp 1272w, https://substackcdn.com/image/fetch/$s_!_jrm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f8d4427-fe6c-4906-adc3-c6583ab287f6_977x406.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_jrm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f8d4427-fe6c-4906-adc3-c6583ab287f6_977x406.webp" width="800" height="332" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2f8d4427-fe6c-4906-adc3-c6583ab287f6_977x406.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:332,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Product Discovery&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="Product Discovery" title="Product Discovery" srcset="https://substackcdn.com/image/fetch/$s_!_jrm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f8d4427-fe6c-4906-adc3-c6583ab287f6_977x406.webp 424w, https://substackcdn.com/image/fetch/$s_!_jrm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f8d4427-fe6c-4906-adc3-c6583ab287f6_977x406.webp 848w, https://substackcdn.com/image/fetch/$s_!_jrm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f8d4427-fe6c-4906-adc3-c6583ab287f6_977x406.webp 1272w, https://substackcdn.com/image/fetch/$s_!_jrm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f8d4427-fe6c-4906-adc3-c6583ab287f6_977x406.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>Addressing these questions <strong>before</strong> you code helps avoid the costly trap of building the wrong thing.</p><h3>1.2 Learning by delivering</h3><p>Many teams adopt Agile frameworks to deliver software iteratively and adapt quickly.</p><p>For example, in Scrum, we have a Sprint Review. During this workshop, we discuss the progress with the stakeholders and decide how to adapt:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!orNL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2912df4b-b636-42d9-b86e-a02a98b62436_1024x335.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!orNL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2912df4b-b636-42d9-b86e-a02a98b62436_1024x335.webp 424w, https://substackcdn.com/image/fetch/$s_!orNL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2912df4b-b636-42d9-b86e-a02a98b62436_1024x335.webp 848w, https://substackcdn.com/image/fetch/$s_!orNL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2912df4b-b636-42d9-b86e-a02a98b62436_1024x335.webp 1272w, https://substackcdn.com/image/fetch/$s_!orNL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2912df4b-b636-42d9-b86e-a02a98b62436_1024x335.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!orNL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2912df4b-b636-42d9-b86e-a02a98b62436_1024x335.webp" width="800" height="262" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2912df4b-b636-42d9-b86e-a02a98b62436_1024x335.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:262,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Learning by delivering&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="Learning by delivering" title="Learning by delivering" srcset="https://substackcdn.com/image/fetch/$s_!orNL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2912df4b-b636-42d9-b86e-a02a98b62436_1024x335.webp 424w, https://substackcdn.com/image/fetch/$s_!orNL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2912df4b-b636-42d9-b86e-a02a98b62436_1024x335.webp 848w, https://substackcdn.com/image/fetch/$s_!orNL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2912df4b-b636-42d9-b86e-a02a98b62436_1024x335.webp 1272w, https://substackcdn.com/image/fetch/$s_!orNL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2912df4b-b636-42d9-b86e-a02a98b62436_1024x335.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>But what will happen if we throw random ideas into the Product Backlog?</p><p>Some might work, but most won&#8217;t. This is "learning by delivering." Unfortunately, this approach results in waste and rework.</p><p>Some might say it&#8217;s not a problem, as the Sprint is often 1-2 weeks long.</p><p>But this will happen every Sprint. Every Sprint, the product team selects ideas, implements them, and delivers a production-ready increment to discover those were not good ideas.</p><p>And the best ideas might not even be on the list.</p><p>So, we&#8217;d like to understand:</p><ul><li><p>How can we come up with better ideas?</p></li><li><p>How can we test those ideas before the implementation?</p></li></ul><p>And the answer is Product Discovery.</p><h2><strong>2. What is Continuous Product Discovery?</strong></h2><p>Continuous Product Discovery is a special type of Product Discovery for an existing product. It&#8217;s all about regularly exploring opportunities and identifying and testing your assumptions.</p><p>Instead of a single, upfront research phase, you keep the discovery going in parallel with delivery.</p><h3>2.1 Continuous Discovery and Continuous Delivery</h3><p>You might have heard about Dual-Track Development&nbsp;or Dual-Track Agile. It simply means having two streams running in parallel:</p><ul><li><p><strong>Continuous Discovery:</strong>&nbsp;Discover and validate what product to build.</p></li><li><p><strong>Continuous Delivery:</strong>&nbsp;Implement and deliver the validated product to the market</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_!Xw42!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b4df37e-d6da-4004-9589-c7764a3db372_922x369.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Xw42!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b4df37e-d6da-4004-9589-c7764a3db372_922x369.webp 424w, https://substackcdn.com/image/fetch/$s_!Xw42!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b4df37e-d6da-4004-9589-c7764a3db372_922x369.webp 848w, https://substackcdn.com/image/fetch/$s_!Xw42!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b4df37e-d6da-4004-9589-c7764a3db372_922x369.webp 1272w, https://substackcdn.com/image/fetch/$s_!Xw42!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b4df37e-d6da-4004-9589-c7764a3db372_922x369.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Xw42!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b4df37e-d6da-4004-9589-c7764a3db372_922x369.webp" width="800" height="320" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5b4df37e-d6da-4004-9589-c7764a3db372_922x369.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:320,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Continuous Discovery and Continuous Delivery&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="Continuous Discovery and Continuous Delivery" title="Continuous Discovery and Continuous Delivery" srcset="https://substackcdn.com/image/fetch/$s_!Xw42!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b4df37e-d6da-4004-9589-c7764a3db372_922x369.webp 424w, https://substackcdn.com/image/fetch/$s_!Xw42!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b4df37e-d6da-4004-9589-c7764a3db372_922x369.webp 848w, https://substackcdn.com/image/fetch/$s_!Xw42!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b4df37e-d6da-4004-9589-c7764a3db372_922x369.webp 1272w, https://substackcdn.com/image/fetch/$s_!Xw42!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b4df37e-d6da-4004-9589-c7764a3db372_922x369.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>What's important here is that this is not a waterfall. Some team members talk to the customers, explore people's problems, brainstorm solutions, identify assumptions, and perform experiments. At the same time, the team implements and delivers validated ideas to the market.</p><blockquote><p>By testing ideas early, you dramatically reduce waste and rework. Product Discovery results in a validated Product Backlog. In particular, high-risk assumptions are tested upfront.</p></blockquote><h3>2.2 The Product Trio</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!60rf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27e123e3-3bae-4bbc-84d9-67bddd070a7e_1024x489.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!60rf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27e123e3-3bae-4bbc-84d9-67bddd070a7e_1024x489.webp 424w, https://substackcdn.com/image/fetch/$s_!60rf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27e123e3-3bae-4bbc-84d9-67bddd070a7e_1024x489.webp 848w, https://substackcdn.com/image/fetch/$s_!60rf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27e123e3-3bae-4bbc-84d9-67bddd070a7e_1024x489.webp 1272w, https://substackcdn.com/image/fetch/$s_!60rf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27e123e3-3bae-4bbc-84d9-67bddd070a7e_1024x489.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!60rf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27e123e3-3bae-4bbc-84d9-67bddd070a7e_1024x489.webp" width="800" height="382" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/27e123e3-3bae-4bbc-84d9-67bddd070a7e_1024x489.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:382,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;The Product Trio, as defined in Continuous Discovery Habits by Teresa Torres&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="The Product Trio, as defined in Continuous Discovery Habits by Teresa Torres" title="The Product Trio, as defined in Continuous Discovery Habits by Teresa Torres" srcset="https://substackcdn.com/image/fetch/$s_!60rf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27e123e3-3bae-4bbc-84d9-67bddd070a7e_1024x489.webp 424w, https://substackcdn.com/image/fetch/$s_!60rf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27e123e3-3bae-4bbc-84d9-67bddd070a7e_1024x489.webp 848w, https://substackcdn.com/image/fetch/$s_!60rf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27e123e3-3bae-4bbc-84d9-67bddd070a7e_1024x489.webp 1272w, https://substackcdn.com/image/fetch/$s_!60rf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27e123e3-3bae-4bbc-84d9-67bddd070a7e_1024x489.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>There is a common misconception. Some say that the Product Manager decides what to build, and Engineers and designers should focus on how to build it.</p><p>Have you heard that before?</p><p>It hurts my ears because Product Discovery is not a task for a single person. I deeply believe that instead of building those silos and stage gates, we should embrace a collaborative approach.</p><p>In&nbsp;<a href="https://www.amazon.com/Continuous-Discovery-Habits-Discover-Products/dp/1736633309?crid=2BIM74R7BJ1ZS&amp;keywords=Continuous+Discovery+Habits&amp;qid=1675327977&amp;sprefix=continuous+discovery+habits,aps,165&amp;sr=8-1&amp;linkCode=sl1&amp;tag=huryn09-20&amp;linkId=86e1320286a6b3c98bb89147a38fe2ea&amp;language=en_US&amp;ref_=as_li_ss_tl">Continuous Discovery Habits</a>, Teresa Torres introduced the concept of a Product Trio: Product Manager, Product Designer, and Engineer working together. This will help you build a shared understanding and stay open to different perspectives.</p><p>In particular, I have repeatedly found that the best ideas often come from my engineers. They know what&#8217;s technically possible.</p><blockquote><p>Tip: Please remember that the&nbsp;Product Trio is not a rigid framework. It&#8217;s the default recommendation that can expand and contract. For example, you might include a Product Marketing Manager or exclude a Product Designer for an API product.</p></blockquote><h3>2.3 Inside Continuous Product Discovery</h3><p>Think of Continuous Product Discovery as a series of iterative cycles, often visualized with the Double Diamond model:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wxlx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe09139-b161-4fcb-9e02-27c341379b8b_1024x570.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wxlx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe09139-b161-4fcb-9e02-27c341379b8b_1024x570.webp 424w, https://substackcdn.com/image/fetch/$s_!wxlx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe09139-b161-4fcb-9e02-27c341379b8b_1024x570.webp 848w, https://substackcdn.com/image/fetch/$s_!wxlx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe09139-b161-4fcb-9e02-27c341379b8b_1024x570.webp 1272w, https://substackcdn.com/image/fetch/$s_!wxlx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe09139-b161-4fcb-9e02-27c341379b8b_1024x570.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wxlx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe09139-b161-4fcb-9e02-27c341379b8b_1024x570.webp" width="800" height="445" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5fe09139-b161-4fcb-9e02-27c341379b8b_1024x570.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:445,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Continuous Product Discovery and the Double Diamond&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="Continuous Product Discovery and the Double Diamond" title="Continuous Product Discovery and the Double Diamond" srcset="https://substackcdn.com/image/fetch/$s_!wxlx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe09139-b161-4fcb-9e02-27c341379b8b_1024x570.webp 424w, https://substackcdn.com/image/fetch/$s_!wxlx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe09139-b161-4fcb-9e02-27c341379b8b_1024x570.webp 848w, https://substackcdn.com/image/fetch/$s_!wxlx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe09139-b161-4fcb-9e02-27c341379b8b_1024x570.webp 1272w, https://substackcdn.com/image/fetch/$s_!wxlx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe09139-b161-4fcb-9e02-27c341379b8b_1024x570.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>Tip: Critically, Product Discovery is not a linear process. For example, you can loop back at any time if an experiment fails or you need more research.</p><p>Here, we explore the problem space to understand and define opportunities (problems, needs, desires) that, when solved, will drive the desired outcomes.</p><p>The two stages of divergent and convergent thinking:</p><ul><li><p><strong>Stage 1: Explore</strong></p><ul><li><p>Performing&nbsp;customer interviews&nbsp;(e.g., weekly)</p></li><li><p>Interviewing stakeholders</p></li><li><p>Learning from usage analytics (collecting and analyzing data on how users interact with a product or service, e.g., Pendo.io)</p></li><li><p>Exploring data analytics (analyzing large datasets to uncover trends, patterns, and relationships, e.g., Microsoft Power BI)</p></li><li><p>Leveraging&nbsp;other sources of insights in Product Discovery: surveys, market trends, SEO, and SEM reporting</p></li></ul></li><li><p><strong>Stage 2: Define</strong></p><ul><li><p>Mapping opportunities (e.g., Opportunity Solution Tree by Teresa Torres)</p></li><li><p>Prioritizing opportunities (e.g., Opportunity Score by Dan Olsen, ICE score)</p></li></ul></li></ul><h4><strong>The Right Diamond</strong></h4><p>Here, we explore the solution space to identify the right ideas to build.</p><p>The two stages of divergent and convergent thinking:</p><ul><li><p><strong>Stage 3: Ideate</strong></p><ul><li><p>Brainstorming solutions to identified opportunities</p></li><li><p>Formulating testable assumptions related to those ideas</p></li></ul></li><li><p><strong>Stage 4: Test</strong></p><ul><li><p>Perform&nbsp;experiments to prove or disprove identified assumptions</p></li></ul></li></ul><h4><strong>Continuous Product Discovery Example</strong></h4><p>In this example, we started with the desired outcome of increasing customer engagement for a video streaming platform by 20%. The team decided to map their steps with the Opportunity Solution Tree.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!F-q-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5393e230-5f17-4cb1-980e-e543d2bdab54_1024x433.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!F-q-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5393e230-5f17-4cb1-980e-e543d2bdab54_1024x433.webp 424w, https://substackcdn.com/image/fetch/$s_!F-q-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5393e230-5f17-4cb1-980e-e543d2bdab54_1024x433.webp 848w, https://substackcdn.com/image/fetch/$s_!F-q-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5393e230-5f17-4cb1-980e-e543d2bdab54_1024x433.webp 1272w, https://substackcdn.com/image/fetch/$s_!F-q-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5393e230-5f17-4cb1-980e-e543d2bdab54_1024x433.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!F-q-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5393e230-5f17-4cb1-980e-e543d2bdab54_1024x433.webp" width="800" height="338" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5393e230-5f17-4cb1-980e-e543d2bdab54_1024x433.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:338,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;The Opportunity Solution Tree, as defined in Continuous Discovery Habits by Teresa Torres&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="The Opportunity Solution Tree, as defined in Continuous Discovery Habits by Teresa Torres" title="The Opportunity Solution Tree, as defined in Continuous Discovery Habits by Teresa Torres" srcset="https://substackcdn.com/image/fetch/$s_!F-q-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5393e230-5f17-4cb1-980e-e543d2bdab54_1024x433.webp 424w, https://substackcdn.com/image/fetch/$s_!F-q-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5393e230-5f17-4cb1-980e-e543d2bdab54_1024x433.webp 848w, https://substackcdn.com/image/fetch/$s_!F-q-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5393e230-5f17-4cb1-980e-e543d2bdab54_1024x433.webp 1272w, https://substackcdn.com/image/fetch/$s_!F-q-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5393e230-5f17-4cb1-980e-e543d2bdab54_1024x433.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><strong>Stage 1, Stage 2: Explore and Define</strong></p><p>After interviewing customers, analyzing product analytics, and talking to support and customer success, the Product Trio identified opportunities and child opportunities related to the desired outcome, e.g.:</p><ul><li><p>I can&#8217;t find anything to watch,</p></li><li><p>I can&#8217;t figure out how to search for a specific show).</p></li></ul><p>Next, they prioritized opportunities that are important for the users, where their satisfaction with their ability to achieve a specific outcome was low.</p><p><strong>Stage 3: Ideate</strong></p><p>After prioritizing opportunities, everyone on the Product Trio brainstormed individually. The team members met to discuss their ideas.</p><p>They immediately rejected a few ideas for one of the opportunities (&#8220;I can&#8217;t figure out how to search for a specific show&#8221;). The two most promising ideas left were:</p><ul><li><p>Displaying a search box,</p></li><li><p>Displaying recommended shows.</p></li></ul><p><strong>Stage 4: Test</strong></p><p>The team used User Story Mapping to identify assumptions related to value, usability, and feasibility. They identified some as risky and planned experiments to test those assumptions.</p><p>For example, they created a user prototype in Figma to test whether users understand how a search box works. They gave selected users a task to accomplish, tracked every user's click, and assumed the assumption was correct if at least 70% of the users would complete their task on the first attempt.</p><p>The test was successful, so there was no need to consider alternative solutions or talk to the users again.</p><p>Previously, the Product Manager ensured with the stakeholders the the solution would also work for the business (she talked to CSM, Marketing, and Sales).</p><p>A few days later, the engineers selected this idea for implementation.</p><div><hr></div><h2>3. What is Initial Product Discovery?</h2><p>Initial Product Discovery comes into play when creating a new product.</p><p>In this phase, you define your&nbsp;Product Vision, draft a Business Model, and identify the right market. You&#8217;re not worrying yet about continuous iteration.</p><p>You&#8217;re trying to figure out if there&#8217;s a market at all.</p><p>Initial Product Discovery follows a very similar workflow with different activities possible in each stage:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QQSp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48e10339-24ff-4a4e-9537-344ebc3d8ecb_1024x573.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QQSp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48e10339-24ff-4a4e-9537-344ebc3d8ecb_1024x573.webp 424w, https://substackcdn.com/image/fetch/$s_!QQSp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48e10339-24ff-4a4e-9537-344ebc3d8ecb_1024x573.webp 848w, https://substackcdn.com/image/fetch/$s_!QQSp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48e10339-24ff-4a4e-9537-344ebc3d8ecb_1024x573.webp 1272w, https://substackcdn.com/image/fetch/$s_!QQSp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48e10339-24ff-4a4e-9537-344ebc3d8ecb_1024x573.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QQSp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48e10339-24ff-4a4e-9537-344ebc3d8ecb_1024x573.webp" width="800" height="448" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/48e10339-24ff-4a4e-9537-344ebc3d8ecb_1024x573.webp&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;&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_!QQSp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48e10339-24ff-4a4e-9537-344ebc3d8ecb_1024x573.webp 424w, https://substackcdn.com/image/fetch/$s_!QQSp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48e10339-24ff-4a4e-9537-344ebc3d8ecb_1024x573.webp 848w, https://substackcdn.com/image/fetch/$s_!QQSp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48e10339-24ff-4a4e-9537-344ebc3d8ecb_1024x573.webp 1272w, https://substackcdn.com/image/fetch/$s_!QQSp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48e10339-24ff-4a4e-9537-344ebc3d8ecb_1024x573.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><blockquote><p>Again, there is no &#8220;Product Discovery Process,&#8221; but rather a series of iterative cycles.</p></blockquote><h2>4. Jira Product Discovery: Pros &amp; Cons</h2><p>If you work with Jira, you might have heard about Jira Product Discovery. It offers some handy features like a Now-Next-Later roadmap, which is a perfect choice for visualizing big-picture plans:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!d7mf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f467ac3-14ff-4dcb-831c-d3096b0dbe11_1024x429.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!d7mf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f467ac3-14ff-4dcb-831c-d3096b0dbe11_1024x429.webp 424w, https://substackcdn.com/image/fetch/$s_!d7mf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f467ac3-14ff-4dcb-831c-d3096b0dbe11_1024x429.webp 848w, https://substackcdn.com/image/fetch/$s_!d7mf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f467ac3-14ff-4dcb-831c-d3096b0dbe11_1024x429.webp 1272w, https://substackcdn.com/image/fetch/$s_!d7mf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f467ac3-14ff-4dcb-831c-d3096b0dbe11_1024x429.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!d7mf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f467ac3-14ff-4dcb-831c-d3096b0dbe11_1024x429.webp" width="800" height="335" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0f467ac3-14ff-4dcb-831c-d3096b0dbe11_1024x429.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:335,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;JIRA Product Discovery&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="JIRA Product Discovery" title="JIRA Product Discovery" srcset="https://substackcdn.com/image/fetch/$s_!d7mf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f467ac3-14ff-4dcb-831c-d3096b0dbe11_1024x429.webp 424w, https://substackcdn.com/image/fetch/$s_!d7mf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f467ac3-14ff-4dcb-831c-d3096b0dbe11_1024x429.webp 848w, https://substackcdn.com/image/fetch/$s_!d7mf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f467ac3-14ff-4dcb-831c-d3096b0dbe11_1024x429.webp 1272w, https://substackcdn.com/image/fetch/$s_!d7mf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f467ac3-14ff-4dcb-831c-d3096b0dbe11_1024x429.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>But JIRA Product Discovery misses the critical aspects of Continuous Product Discovery and encourages some bad practices:</p><ul><li><p>No built-in way to map opportunities</p></li><li><p>No straightforward way to plan experiments</p></li></ul><blockquote><p>Some try to hack it, but I have a strong opinion: it&#8217;s not a Continuous Product Discovery tool. You will do much better creating the Opportunity Solution Tree in tools like Miro, Notion, or FigJam.</p></blockquote><h2>Recommended Books on Product Discovery</h2><p>The two most important titles every product person should read:</p><ul><li><p><a href="https://www.amazon.com/INSPIRED-Create-Tech-Products-Customers/dp/1119387507?crid=1OT0TDVI95HIT&amp;keywords=inspired&amp;qid=1675327499&amp;sprefix=inspired,aps,208&amp;sr=8-1&amp;linkCode=sl1&amp;tag=huryn09-20&amp;linkId=825b8b441e37ff8bc6ba24935df12f64&amp;language=en_US&amp;ref_=as_li_ss_tl">Inspired</a>&nbsp;by Marty Cagan</p></li><li><p><a href="https://www.amazon.com/Continuous-Discovery-Habits-Discover-Products/dp/1736633309?crid=2BIM74R7BJ1ZS&amp;keywords=Continuous+Discovery+Habits&amp;qid=1675327977&amp;sprefix=continuous+discovery+habits,aps,165&amp;sr=8-1&amp;linkCode=sl1&amp;tag=huryn09-20&amp;linkId=86e1320286a6b3c98bb89147a38fe2ea&amp;language=en_US&amp;ref_=as_li_ss_tl">Continuous Discovery Habits</a>&nbsp;by Teresa Torres</p></li></ul><h2>Final Thoughts</h2><p>Product Discovery doesn&#8217;t have to be complicated. The key is to stay curious about your users, test ideas early, and collaborate with your team to build solutions people actually want.</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[Why Your User Persona Might Be Fiction—and What It’s Costing You?]]></title><description><![CDATA[Every product team loves a well-crafted persona: a neat profile that neatly summarizes who they&#8217;re designing for.]]></description><link>https://news.adityeah.in/p/why-your-user-persona-might-be-fiction-and-what-its-costing-you</link><guid isPermaLink="false">https://news.adityeah.in/p/why-your-user-persona-might-be-fiction-and-what-its-costing-you</guid><dc:creator><![CDATA[adityeah]]></dc:creator><pubDate>Mon, 21 Apr 2025 15:01:57 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/c83d3aec-6870-43f5-9129-f8b2b1f7a472_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_!9yIZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ce4c1fb-416b-4b1d-9777-7eb91e530f68_2831x1563.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9yIZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ce4c1fb-416b-4b1d-9777-7eb91e530f68_2831x1563.png 424w, https://substackcdn.com/image/fetch/$s_!9yIZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ce4c1fb-416b-4b1d-9777-7eb91e530f68_2831x1563.png 848w, https://substackcdn.com/image/fetch/$s_!9yIZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ce4c1fb-416b-4b1d-9777-7eb91e530f68_2831x1563.png 1272w, https://substackcdn.com/image/fetch/$s_!9yIZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ce4c1fb-416b-4b1d-9777-7eb91e530f68_2831x1563.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9yIZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ce4c1fb-416b-4b1d-9777-7eb91e530f68_2831x1563.png" width="1456" height="804" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5ce4c1fb-416b-4b1d-9777-7eb91e530f68_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;:4181708,&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/171132836?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ce4c1fb-416b-4b1d-9777-7eb91e530f68_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_!9yIZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ce4c1fb-416b-4b1d-9777-7eb91e530f68_2831x1563.png 424w, https://substackcdn.com/image/fetch/$s_!9yIZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ce4c1fb-416b-4b1d-9777-7eb91e530f68_2831x1563.png 848w, https://substackcdn.com/image/fetch/$s_!9yIZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ce4c1fb-416b-4b1d-9777-7eb91e530f68_2831x1563.png 1272w, https://substackcdn.com/image/fetch/$s_!9yIZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ce4c1fb-416b-4b1d-9777-7eb91e530f68_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>Every product team loves a well-crafted persona: a neat profile that neatly summarizes who they&#8217;re designing for. But all too often, that persona is less &#8220;real user&#8221; and more &#8220;wishful thinking.&#8221; We scribble down demographic details&#8212;age, family status, job title&#8212;and voil&#224;: our roadmap is set, our designs are approved, and our marketing copy writes itself. Yet these static snapshots can mask the messy, unpredictable realities of people&#8217;s lives. When those realities emerge, it can feel like the rug has been pulled out from underneath your roadmap.</p><h2><strong>&#128204; Case Study: The &#8220;Ideal&#8221; Indian Teacher Persona</strong></h2><p>A few years ago, I consulted in a major EdTech in India. Their target user was crystal clear on paper:</p><blockquote><blockquote><p><strong>Name:</strong> &#8220;Priya&#8221;<br><strong>Age:</strong> 35<br><strong>Family:</strong> Married with two kids, ages 4 and 7<br><strong>Job:</strong> Government school teacher in a Tier&#8209;3 town<br><strong>Lifestyle:</strong> Supportive husband and in&#8209;laws help with childcare<br><strong>Motivation:</strong> Eager to adopt new classroom tools</p></blockquote></blockquote><p>To anyone glancing at these bullet points, Priya seemed like a dream user: mature enough to understand pedagogy, curious enough to embrace innovation, and well&#8209;supported enough to find the time. It felt like we had struck gold&#8212;or so we thought.</p><h2><strong>&#128269; Uncovering the Reality: Primary Research Insights</strong></h2><p>When we finally sat down with real teachers, everything about our Priya persona began to unravel.</p><p><strong>AssumptionRealityAge: Mid&#8209;30s</strong>Most women teaching with kids aged 4&nbsp;and&nbsp;7 are actually in their late 20s&#8212;early marriage and early careers are common.<strong>Supportive Home Life</strong>Instead of help, many teachers return home to a &#8220;second shift&#8221; of cooking, cleaning, and childcare&#8212;no in&#8209;laws in sight.<strong>Job by Choice</strong>Teaching is often a necessity&#8212;a steady salary that fits within societal expectations, not a passion project.<strong>Tech Curiosity</strong>Complex tools threaten classroom authority. If students master a tool faster, the teacher&#8217;s role feels undermined.<strong>Leisurely Learning Time</strong>There are no 30&#8209;minute coffee breaks. Any &#8220;learning&#8221; has to happen in stolen 5&#8209;minute windows between classes and chores.</p><h3><strong>Key Takeaways</strong></h3><ol><li><p><strong>Misaligned Motivations:</strong> Teaching isn&#8217;t &#8220;fun.&#8221; It&#8217;s a job that fits cultural and financial needs.</p></li><li><p><strong>Scarce Time &amp; Energy:</strong> At best, a five&#8209;minute gap to explore a new feature&#8212;never a half&#8209;hour deep dive.</p></li><li><p><strong>Authority Preservation:</strong> Tools must reinforce the teacher as the expert, not expose them to potential embarrassment.</p></li></ol><h2><strong>&#128165; What It Broke</strong></h2><p>The original persona had shaped everything:</p><ul><li><p>&#9997;&#65039;&nbsp;<strong>Copy assumed curiosity.</strong></p></li><li><p>&#129517;&nbsp;<strong>Onboarding assumed available time.</strong></p></li><li><p>&#128295;&nbsp;<strong>Feature complexity assumed confidence.</strong></p></li></ul><p>Once we saw the reality, we had to reframe everything:</p><ul><li><p><strong>Simplify interfaces</strong>&#8212;no learning curve, no ambiguity.</p></li><li><p><strong>Design for low attention spans</strong>&#8212;5-minute windows, not 30-minute explorations.</p></li><li><p><strong>Reinforce teacher authority</strong>&#8212;tools had to feel like&nbsp;<em>enhancements</em>, not risks.</p></li></ul><p>What we had built made sense for the imagined persona. But for the real one, it added stress.</p><h2><strong>&#129517; The Real Lesson</strong></h2><p>Most teams don&#8217;t ignore users&#8212;they just&nbsp;<em>rush to define them</em>. And once a persona is blessed, it becomes gospel.</p><p>Here&#8217;s the blind spot:</p><p>&#9888;&#65039;&nbsp;<strong>Teams guess their way into personas. Then build real products on imaginary users.</strong></p><p>&#9888;&#65039;&nbsp;<strong>They focus on surface traits&#8212;age, job title, family&#8212;without understanding what life actually feels like.</strong></p><p>&#9888;&#65039;&nbsp;<strong>And once a persona is socialized, it becomes sticky. Even when the truth emerges, changing course feels hard.</strong></p><p>&#128073; A persona is not a user. It&#8217;s a hypothesis.</p><p>&#128073; A real persona includes&nbsp;<em>constraints, context, and coping strategies</em>.</p><p>&#128073; The job of the product team is to&nbsp;<em>stay curious</em>&#8212;especially after the first draft.</p><h2><strong>Wrapping It Up</strong></h2><p>It&#8217;s easy to fall in love with a persona that sounds good in a slide deck. But product decisions don&#8217;t happen in the abstract&#8212;they hit the ground in real people&#8217;s lives.</p><p>When you skip context, you don&#8217;t just miss nuance&#8212;you risk building&nbsp;<em>entirely for the wrong person</em>.</p><p>So treat personas as living documents. Pressure-test them. Revisit them often. Because the cost of getting them wrong shows up where it hurts most: in adoption, trust, and usability.</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[Technical Jargon for Product Managers: A Guide to Feeling Confident in 2025]]></title><description><![CDATA[One of the most common insecurities for product managers (PMs) is their technical skills.]]></description><link>https://news.adityeah.in/p/technical-jargon-for-product-managers-a-guide-to-feeling-confident-in-2025</link><guid isPermaLink="false">https://news.adityeah.in/p/technical-jargon-for-product-managers-a-guide-to-feeling-confident-in-2025</guid><dc:creator><![CDATA[adityeah]]></dc:creator><pubDate>Tue, 11 Feb 2025 16:54:32 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/a551e83b-5a0f-4ae7-8686-8bd81950eca8_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_!6ApF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdcd4725-3c4b-4c01-8606-ab68320cdda3_2831x1563.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6ApF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdcd4725-3c4b-4c01-8606-ab68320cdda3_2831x1563.png 424w, https://substackcdn.com/image/fetch/$s_!6ApF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdcd4725-3c4b-4c01-8606-ab68320cdda3_2831x1563.png 848w, https://substackcdn.com/image/fetch/$s_!6ApF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdcd4725-3c4b-4c01-8606-ab68320cdda3_2831x1563.png 1272w, https://substackcdn.com/image/fetch/$s_!6ApF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdcd4725-3c4b-4c01-8606-ab68320cdda3_2831x1563.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6ApF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdcd4725-3c4b-4c01-8606-ab68320cdda3_2831x1563.png" width="1456" height="804" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fdcd4725-3c4b-4c01-8606-ab68320cdda3_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;:185449,&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/171132832?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdcd4725-3c4b-4c01-8606-ab68320cdda3_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_!6ApF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdcd4725-3c4b-4c01-8606-ab68320cdda3_2831x1563.png 424w, https://substackcdn.com/image/fetch/$s_!6ApF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdcd4725-3c4b-4c01-8606-ab68320cdda3_2831x1563.png 848w, https://substackcdn.com/image/fetch/$s_!6ApF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdcd4725-3c4b-4c01-8606-ab68320cdda3_2831x1563.png 1272w, https://substackcdn.com/image/fetch/$s_!6ApF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdcd4725-3c4b-4c01-8606-ab68320cdda3_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>One of the most common insecurities for product managers (PMs) is their technical skills. While you don&#8217;t need to be an engineer, having a solid understanding of how software works can help you communicate effectively with your team, manage risks, and make better product decisions. Let&#8217;s break down the technical jargon and concepts you need to know to feel more confident in 2025 and beyond.</p><div><hr></div><h2><strong>How Internet Software Works: The Core Components</strong></h2><p>All internet-based software products follow the same foundational architecture. They consist of three main components:</p><ol><li><p><strong>Client</strong>: This is what your users interact with directly. Examples include websites, mobile apps, smart devices like Tesla cars, or even smart fridges.</p></li><li><p><strong>Server</strong>: This is the brain of the operation. It processes requests from the client, fetches or stores data, and performs actions like syncing your Google Calendar.</p></li><li><p><strong>Database</strong>: This is where all the data is permanently stored. Think of it as the filing cabinet for your application.</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_!0pT5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92b32349-126b-4e0b-a214-189d7a018434_906x500.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0pT5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92b32349-126b-4e0b-a214-189d7a018434_906x500.png 424w, https://substackcdn.com/image/fetch/$s_!0pT5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92b32349-126b-4e0b-a214-189d7a018434_906x500.png 848w, https://substackcdn.com/image/fetch/$s_!0pT5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92b32349-126b-4e0b-a214-189d7a018434_906x500.png 1272w, https://substackcdn.com/image/fetch/$s_!0pT5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92b32349-126b-4e0b-a214-189d7a018434_906x500.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0pT5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92b32349-126b-4e0b-a214-189d7a018434_906x500.png" width="800" height="442" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/92b32349-126b-4e0b-a214-189d7a018434_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;: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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!0pT5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92b32349-126b-4e0b-a214-189d7a018434_906x500.png 424w, https://substackcdn.com/image/fetch/$s_!0pT5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92b32349-126b-4e0b-a214-189d7a018434_906x500.png 848w, https://substackcdn.com/image/fetch/$s_!0pT5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92b32349-126b-4e0b-a214-189d7a018434_906x500.png 1272w, https://substackcdn.com/image/fetch/$s_!0pT5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92b32349-126b-4e0b-a214-189d7a018434_906x500.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Each of these components can be broken down into smaller, more specialized parts. Building scalable, well-organized software requires careful planning and execution. Let&#8217;s dive deeper into each of these components.</p><div><hr></div><h2><strong>Frontend: What Users See and Interact With</strong></h2><p>The&nbsp;<strong>frontend</strong>&nbsp;is the part of the application that users interact with directly. It&#8217;s the code that runs on the user&#8217;s device, whether it&#8217;s a browser, a mobile app, or a smart device. Frontend development involves creating intuitive, responsive, and visually appealing interfaces.</p><h3><strong>Key Technologies in Frontend Development</strong></h3><ul><li><p><strong>HTML (HyperText Markup Language)</strong>: This defines the structure of a webpage. It outlines where elements like headings, paragraphs, and buttons appear.</p></li><li><p><strong>CSS (Cascading Style Sheets)</strong>: This controls the styling of the page, including fonts, colors, spacing, and layouts.</p></li><li><p><strong>JavaScript (JS)</strong>: This adds interactivity to the page. For example, it allows animations to play, forms to be submitted, or new data to be loaded without refreshing the page.</p></li></ul><h3><strong>Frontend Frameworks</strong></h3><p>As web applications have grown more complex, developers have turned to frameworks to streamline their work. These frameworks provide pre-built tools and components, making it easier to organize code and build scalable applications. Popular frontend frameworks include:</p><ul><li><p><strong>React</strong>: Developed by Facebook, React is widely used for building dynamic user interfaces.</p></li><li><p><strong>Vue</strong>: Known for its simplicity and flexibility, Vue is a great choice for smaller projects or teams.</p></li><li><p><strong>Angular</strong>: A robust framework maintained by Google, Angular is ideal for large-scale enterprise applications.</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_!Rkzq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4e7529f-08f8-44b3-aebb-d6de7c28315f_1024x565.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Rkzq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4e7529f-08f8-44b3-aebb-d6de7c28315f_1024x565.png 424w, https://substackcdn.com/image/fetch/$s_!Rkzq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4e7529f-08f8-44b3-aebb-d6de7c28315f_1024x565.png 848w, https://substackcdn.com/image/fetch/$s_!Rkzq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4e7529f-08f8-44b3-aebb-d6de7c28315f_1024x565.png 1272w, https://substackcdn.com/image/fetch/$s_!Rkzq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4e7529f-08f8-44b3-aebb-d6de7c28315f_1024x565.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Rkzq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4e7529f-08f8-44b3-aebb-d6de7c28315f_1024x565.png" width="800" height="441" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e4e7529f-08f8-44b3-aebb-d6de7c28315f_1024x565.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:441,&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_!Rkzq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4e7529f-08f8-44b3-aebb-d6de7c28315f_1024x565.png 424w, https://substackcdn.com/image/fetch/$s_!Rkzq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4e7529f-08f8-44b3-aebb-d6de7c28315f_1024x565.png 848w, https://substackcdn.com/image/fetch/$s_!Rkzq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4e7529f-08f8-44b3-aebb-d6de7c28315f_1024x565.png 1272w, https://substackcdn.com/image/fetch/$s_!Rkzq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4e7529f-08f8-44b3-aebb-d6de7c28315f_1024x565.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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 Frontend and Backend Communicate</strong></h3><p>The frontend communicates with the backend using&nbsp;<strong>HTTP requests</strong>. These requests are sent to specific&nbsp;<strong>endpoints</strong>&nbsp;(like a mailbox) on the server. Common types of HTTP requests include:</p><ul><li><p><strong>GET</strong>: Retrieve information (e.g., loading a user&#8217;s profile).</p></li><li><p><strong>POST</strong>: Submit information (e.g., creating a new account).</p></li><li><p><strong>PATCH/PUT</strong>: Update information (e.g., changing a user&#8217;s password).</p></li><li><p><strong>DELETE</strong>: Remove information (e.g., deleting a post).</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_!SWCf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3e8d4aa-133b-45de-a90f-178a1ae19a86_1024x409.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SWCf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3e8d4aa-133b-45de-a90f-178a1ae19a86_1024x409.png 424w, https://substackcdn.com/image/fetch/$s_!SWCf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3e8d4aa-133b-45de-a90f-178a1ae19a86_1024x409.png 848w, https://substackcdn.com/image/fetch/$s_!SWCf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3e8d4aa-133b-45de-a90f-178a1ae19a86_1024x409.png 1272w, https://substackcdn.com/image/fetch/$s_!SWCf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3e8d4aa-133b-45de-a90f-178a1ae19a86_1024x409.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SWCf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3e8d4aa-133b-45de-a90f-178a1ae19a86_1024x409.png" width="800" height="320" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f3e8d4aa-133b-45de-a90f-178a1ae19a86_1024x409.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:320,&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_!SWCf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3e8d4aa-133b-45de-a90f-178a1ae19a86_1024x409.png 424w, https://substackcdn.com/image/fetch/$s_!SWCf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3e8d4aa-133b-45de-a90f-178a1ae19a86_1024x409.png 848w, https://substackcdn.com/image/fetch/$s_!SWCf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3e8d4aa-133b-45de-a90f-178a1ae19a86_1024x409.png 1272w, https://substackcdn.com/image/fetch/$s_!SWCf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3e8d4aa-133b-45de-a90f-178a1ae19a86_1024x409.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>Backend: The Engine Behind the Scenes</strong></h2><p>The&nbsp;<strong>backend</strong>&nbsp;is where the magic happens. It&#8217;s the part of the application that users don&#8217;t see but is critical for processing data, handling business logic, and ensuring everything runs smoothly. Backend code is not distributed to users&#8212;it runs on servers hosted in the cloud.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!eNr6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ac580c4-7951-4b65-a4db-f4780cbff3ed_1024x565.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eNr6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ac580c4-7951-4b65-a4db-f4780cbff3ed_1024x565.png 424w, https://substackcdn.com/image/fetch/$s_!eNr6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ac580c4-7951-4b65-a4db-f4780cbff3ed_1024x565.png 848w, https://substackcdn.com/image/fetch/$s_!eNr6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ac580c4-7951-4b65-a4db-f4780cbff3ed_1024x565.png 1272w, https://substackcdn.com/image/fetch/$s_!eNr6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ac580c4-7951-4b65-a4db-f4780cbff3ed_1024x565.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eNr6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ac580c4-7951-4b65-a4db-f4780cbff3ed_1024x565.png" width="800" height="441" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0ac580c4-7951-4b65-a4db-f4780cbff3ed_1024x565.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:441,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Backend&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="Backend" title="Backend" srcset="https://substackcdn.com/image/fetch/$s_!eNr6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ac580c4-7951-4b65-a4db-f4780cbff3ed_1024x565.png 424w, https://substackcdn.com/image/fetch/$s_!eNr6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ac580c4-7951-4b65-a4db-f4780cbff3ed_1024x565.png 848w, https://substackcdn.com/image/fetch/$s_!eNr6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ac580c4-7951-4b65-a4db-f4780cbff3ed_1024x565.png 1272w, https://substackcdn.com/image/fetch/$s_!eNr6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ac580c4-7951-4b65-a4db-f4780cbff3ed_1024x565.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>Cloud Hosting Providers</strong></h3><p>Most modern backend systems are hosted on cloud platforms like:</p><ul><li><p><strong>Amazon Web Services (AWS)</strong>: The most widely used cloud provider, offering services like EC2 (servers), S3 (file storage), and Lambda (serverless functions).</p></li><li><p><strong>Google Cloud Platform (GCP)</strong>: Known for its data analytics and machine learning capabilities.</p></li><li><p><strong>Microsoft Azure</strong>: A popular choice for enterprises, especially those already using Microsoft products.</p></li></ul><p>These platforms allow you to rent computing resources like servers, databases, and storage, which can be scaled up or down based on demand.</p><h3><strong>Key Backend Components</strong></h3><ul><li><p><strong>API Gateways</strong>: Act as the front door to your backend, routing incoming requests to the appropriate services.</p></li><li><p><strong>Caches</strong>: Temporary storage for frequently accessed data, speeding up response times.</p></li><li><p><strong>Queues</strong>: Help manage high volumes of requests by storing them until they can be processed.</p></li><li><p><strong>Content Delivery Networks (CDNs)</strong>: Store static files like images and videos in multiple locations worldwide to reduce load times for users.</p></li></ul><h2><strong>Scaling: Handling Growth Without Breaking</strong></h2><p>As your product grows, so does the demand on your backend.&nbsp;<strong>Scaling</strong>&nbsp;is the process of adding resources to handle increased traffic and ensure your application remains fast and reliable.</p><h3><strong>Types of Scaling</strong></h3><ol><li><p><strong>Horizontal Scaling</strong>: Adding more machines to distribute the load. For example, going from 1 server to 10 servers.</p></li><li><p><strong>Vertical Scaling</strong>: Upgrading existing machines with better hardware, such as more memory or faster processors.</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_!URko!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee46b47-113f-46d2-8994-bea0854d4549_1024x565.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!URko!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee46b47-113f-46d2-8994-bea0854d4549_1024x565.png 424w, https://substackcdn.com/image/fetch/$s_!URko!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee46b47-113f-46d2-8994-bea0854d4549_1024x565.png 848w, https://substackcdn.com/image/fetch/$s_!URko!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee46b47-113f-46d2-8994-bea0854d4549_1024x565.png 1272w, https://substackcdn.com/image/fetch/$s_!URko!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee46b47-113f-46d2-8994-bea0854d4549_1024x565.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!URko!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee46b47-113f-46d2-8994-bea0854d4549_1024x565.png" width="800" height="441" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eee46b47-113f-46d2-8994-bea0854d4549_1024x565.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:441,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Scaling&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="Scaling" title="Scaling" srcset="https://substackcdn.com/image/fetch/$s_!URko!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee46b47-113f-46d2-8994-bea0854d4549_1024x565.png 424w, https://substackcdn.com/image/fetch/$s_!URko!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee46b47-113f-46d2-8994-bea0854d4549_1024x565.png 848w, https://substackcdn.com/image/fetch/$s_!URko!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee46b47-113f-46d2-8994-bea0854d4549_1024x565.png 1272w, https://substackcdn.com/image/fetch/$s_!URko!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee46b47-113f-46d2-8994-bea0854d4549_1024x565.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>Challenges of Scaling</strong></h3><p>Scaling isn&#8217;t just about adding more resources&#8212;it&#8217;s about ensuring the entire system can handle the increased load. Common challenges include:</p><ul><li><p><strong>Bottlenecks</strong>: One component (e.g., the database) may become a bottleneck if it can&#8217;t handle the increased traffic.</p></li><li><p><strong>Cost</strong>: Scaling can become expensive, so it&#8217;s important to optimize resources.</p></li><li><p><strong>Complexity</strong>: As you add more components, the system becomes harder to manage.</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_!hCy8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F289f2913-8abc-4a8e-a441-c1ea3f405b83_1024x565.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hCy8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F289f2913-8abc-4a8e-a441-c1ea3f405b83_1024x565.png 424w, https://substackcdn.com/image/fetch/$s_!hCy8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F289f2913-8abc-4a8e-a441-c1ea3f405b83_1024x565.png 848w, https://substackcdn.com/image/fetch/$s_!hCy8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F289f2913-8abc-4a8e-a441-c1ea3f405b83_1024x565.png 1272w, https://substackcdn.com/image/fetch/$s_!hCy8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F289f2913-8abc-4a8e-a441-c1ea3f405b83_1024x565.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hCy8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F289f2913-8abc-4a8e-a441-c1ea3f405b83_1024x565.png" width="800" height="441" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/289f2913-8abc-4a8e-a441-c1ea3f405b83_1024x565.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:441,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Scaling challenges&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="Scaling challenges" title="Scaling challenges" srcset="https://substackcdn.com/image/fetch/$s_!hCy8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F289f2913-8abc-4a8e-a441-c1ea3f405b83_1024x565.png 424w, https://substackcdn.com/image/fetch/$s_!hCy8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F289f2913-8abc-4a8e-a441-c1ea3f405b83_1024x565.png 848w, https://substackcdn.com/image/fetch/$s_!hCy8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F289f2913-8abc-4a8e-a441-c1ea3f405b83_1024x565.png 1272w, https://substackcdn.com/image/fetch/$s_!hCy8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F289f2913-8abc-4a8e-a441-c1ea3f405b83_1024x565.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>Tools for Scaling</strong></h3><ul><li><p><strong>Pub/Sub</strong>: A messaging system where one server publishes a message, and others subscribe to it.</p></li><li><p><strong>Kubernetes</strong>: A tool for automating the deployment and management of containers (packaged applications).</p></li><li><p><strong>Batching</strong>: Grouping multiple requests together to improve efficiency.</p></li><li><p><strong>Rate Limiting</strong>: Controlling the number of requests a user or service can make in a given time period.</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_!koKm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9692961e-8d9d-4720-bc81-db667af33672_1024x565.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!koKm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9692961e-8d9d-4720-bc81-db667af33672_1024x565.png 424w, https://substackcdn.com/image/fetch/$s_!koKm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9692961e-8d9d-4720-bc81-db667af33672_1024x565.png 848w, https://substackcdn.com/image/fetch/$s_!koKm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9692961e-8d9d-4720-bc81-db667af33672_1024x565.png 1272w, https://substackcdn.com/image/fetch/$s_!koKm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9692961e-8d9d-4720-bc81-db667af33672_1024x565.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!koKm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9692961e-8d9d-4720-bc81-db667af33672_1024x565.png" width="800" height="441" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9692961e-8d9d-4720-bc81-db667af33672_1024x565.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:441,&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_!koKm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9692961e-8d9d-4720-bc81-db667af33672_1024x565.png 424w, https://substackcdn.com/image/fetch/$s_!koKm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9692961e-8d9d-4720-bc81-db667af33672_1024x565.png 848w, https://substackcdn.com/image/fetch/$s_!koKm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9692961e-8d9d-4720-bc81-db667af33672_1024x565.png 1272w, https://substackcdn.com/image/fetch/$s_!koKm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9692961e-8d9d-4720-bc81-db667af33672_1024x565.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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 Backend Terms Every PM Should Know</strong></h2><ul><li><p><strong>Pubsub:</strong>&nbsp;A queue. A message is sent in to the queue (published) and one or more servers can receive it (subscribe)</p></li><li><p><strong>EC2:&nbsp;</strong>A product offered by AWS to run a server (Elastic Compute Capacity)</p></li><li><p><strong>S3:&nbsp;</strong>A product offered by AWS to store files (Simple Storage Service)</p></li><li><p><strong>SQS:&nbsp;</strong>A product offered by AWS to run a queue (Simple Queue Service)</p></li><li><p><strong>SES:&nbsp;</strong>A product offered by AWS to send emails (Simple Email Service)</p></li><li><p><strong>Lambda:&nbsp;</strong>A product offered by AWS to rent a server for a very short period of time</p></li><li><p><strong>Containers:&nbsp;</strong>Document everything you need to run your application in one file</p></li><li><p><strong>Kubernetes:&nbsp;</strong>Deploy a container to a server and manage all your servers automatically</p></li><li><p><strong>Batching:&nbsp;</strong>Grouping requests together instead of sending them one at a time</p></li><li><p><strong>Rate limit:&nbsp;</strong>The maximum number of requests that can be processed in some duration</p></li><li><p><strong>Microservice:&nbsp;</strong>A set of resources (server, database, queue) that are built to do a specific task, like handling billing, notifications, recommendations, etc.</p></li></ul><h2><strong>Why This Matters for Product Managers</strong></h2><p>Understanding these technical concepts isn&#8217;t about replacing your engineering team&#8212;it&#8217;s about empowering yourself to:</p><ul><li><p><strong>Communicate Effectively</strong>: Speak the same language as your engineers and align on goals.</p></li><li><p><strong>Manage Risk</strong>: Identify potential technical challenges early in the product development process.</p></li><li><p><strong>Make Informed Decisions</strong>: Evaluate trade-offs between different technical approaches.</p></li></ul>]]></content:encoded></item><item><title><![CDATA[What's a Relational Database?]]></title><description><![CDATA[The TL;DR]]></description><link>https://news.adityeah.in/p/whats-a-relational-database</link><guid isPermaLink="false">https://news.adityeah.in/p/whats-a-relational-database</guid><dc:creator><![CDATA[adityeah]]></dc:creator><pubDate>Mon, 10 Feb 2025 14:54:13 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/45a1694c-7960-4601-a61c-39cff8086da2_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_!1ONk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb59c59-de3c-4e74-a670-2d8bca074f86_2831x1563.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1ONk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb59c59-de3c-4e74-a670-2d8bca074f86_2831x1563.png 424w, https://substackcdn.com/image/fetch/$s_!1ONk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb59c59-de3c-4e74-a670-2d8bca074f86_2831x1563.png 848w, https://substackcdn.com/image/fetch/$s_!1ONk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb59c59-de3c-4e74-a670-2d8bca074f86_2831x1563.png 1272w, https://substackcdn.com/image/fetch/$s_!1ONk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb59c59-de3c-4e74-a670-2d8bca074f86_2831x1563.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1ONk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb59c59-de3c-4e74-a670-2d8bca074f86_2831x1563.png" width="1456" height="804" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/adb59c59-de3c-4e74-a670-2d8bca074f86_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;:136638,&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/171132828?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb59c59-de3c-4e74-a670-2d8bca074f86_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_!1ONk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb59c59-de3c-4e74-a670-2d8bca074f86_2831x1563.png 424w, https://substackcdn.com/image/fetch/$s_!1ONk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb59c59-de3c-4e74-a670-2d8bca074f86_2831x1563.png 848w, https://substackcdn.com/image/fetch/$s_!1ONk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb59c59-de3c-4e74-a670-2d8bca074f86_2831x1563.png 1272w, https://substackcdn.com/image/fetch/$s_!1ONk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb59c59-de3c-4e74-a670-2d8bca074f86_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><h2><strong>The TL;DR</strong></h2><p>A relational database is sort of like Excel, but for developers: it&#8217;s how applications store and analyze data.&nbsp;&nbsp;</p><ul><li><p>Relational databases like MySQL and PostgreSQL are the&nbsp;<strong>default software for storing data</strong></p></li><li><p>Relational DBs are&nbsp;<strong>all about schemas</strong>: rules for how data is stored and organized</p></li><li><p>Inserting data into relational DBs follows the&nbsp;<strong>ACID specification</strong></p></li><li><p><strong>SQL</strong>&nbsp;is a type of programming language that lets you&nbsp;<strong>pull and analyze</strong>&nbsp;the data in your relational DB</p></li></ul><p>Relational DBs power at least part of almost every single application that you use in your day to day. So read this.</p><h2><strong>What&#8217;s a relational database?</strong></h2><p><strong>&#8594; First: what&#8217;s a database in general</strong></p><p>A database is just a place to store data; even Excel is technically a database. But when developers talk about databases, they&#8217;re usually referring to&nbsp;<em>specialized software</em>&nbsp;that&#8217;s used to store data from&nbsp;<em>applications</em>. When you sign up for Facebook, a new entry gets added to Facebook&#8217;s users database with a bunch of information about you; every time you sign in after that, that data gets pulled and used (this is part of&nbsp;<a href="https://technically.substack.com/p/whats-an-api">what a backend is</a>).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TzY5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bbb4b86-0b71-48f2-a347-afcf38a70054_901x1024.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TzY5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bbb4b86-0b71-48f2-a347-afcf38a70054_901x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!TzY5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bbb4b86-0b71-48f2-a347-afcf38a70054_901x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!TzY5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bbb4b86-0b71-48f2-a347-afcf38a70054_901x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!TzY5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bbb4b86-0b71-48f2-a347-afcf38a70054_901x1024.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TzY5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bbb4b86-0b71-48f2-a347-afcf38a70054_901x1024.webp" width="800" height="909" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5bbb4b86-0b71-48f2-a347-afcf38a70054_901x1024.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:909,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;What a database does?&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="What a database does?" title="What a database does?" srcset="https://substackcdn.com/image/fetch/$s_!TzY5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bbb4b86-0b71-48f2-a347-afcf38a70054_901x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!TzY5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bbb4b86-0b71-48f2-a347-afcf38a70054_901x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!TzY5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bbb4b86-0b71-48f2-a347-afcf38a70054_901x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!TzY5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bbb4b86-0b71-48f2-a347-afcf38a70054_901x1024.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>There are thousands of different databases out there, all optimized for different types of applications, some free and some paid. Some popular ones you might have heard of: MySQL, PostgreSQL, and MongoDB.&nbsp;</p><blockquote><p>&#128680;&nbsp;<strong>Confusion Alert</strong>&nbsp;&#128680;</p><p>People use &#8220;database&#8221; to refer to a lot of different things: most of the time it&#8217;s our topic (programmatically accessed data stores), but you might also hear about &#8220;my database of top CEOs&#8221; or something like that, which is probably a spreadsheet. Just listen for the context and you should be fine.&nbsp;</p><p>&#128680;&nbsp;<strong>Confusion Alert</strong>&nbsp;&#128680;</p></blockquote><p><strong>&#8594; Second: what&#8217;s a relational database</strong></p><p>Relational databases are the most popular kind of DBs, and they&#8217;re pretty simple: they add&nbsp;<strong>rigidity and rules</strong>&nbsp;around how data is stored. To understand what that means, let&#8217;s imagine we&#8217;re moving across the country (<em>yes</em>&nbsp;I&#8217;m still crying,&nbsp;<em>no</em>&nbsp;I don&#8217;t want to talk about it). You&#8217;ve got a ton of stuff in your house: clothes, furniture, random keychains that you can&#8217;t let go of, and kitchenware, among other things. How do you store / pack all of that?</p><ul><li><p>You could throw everything in random boxes, like back in college&nbsp;</p></li></ul><p><em>or</em></p><ul><li><p>You could organize things by size or category, and pack and label specific boxes</p></li></ul><p>There&#8217;s a&nbsp;<strong>clear tradeoff</strong>&nbsp;here between speed and efficiency. Packing properly takes a lot more time, but allows you to make better use of space and more easily find your stuff later. It turns out that databases have the exactly same tradeoff, and relational DBs are like packing properly instead of throwing stuff in.&nbsp;</p><p>In relational databases, you specify everything about your data up front:&nbsp;</p><ul><li><p>What type it is (text, number, yes/no, etc.)</p></li><li><p>How it&#8217;s organized (different tables, how those tables are related to each other, etc.)</p></li><li><p>Names for everything (columns)</p></li></ul><p>All of this together is called a&nbsp;<strong>schema</strong>, and it&#8217;s the basis of relational DBs. But why are they called relational?</p><h2><strong>Relations, take 2</strong></h2><p>A relational database is called what it is because of the&nbsp;<em>relationships it models&nbsp;</em>between your data.</p><p>In a relational DB, data is organized into&nbsp;<strong>tables with rows and columns</strong>: you might have a table for data about your app&#8217;s users, as well as a table for your app&#8217;s orders. Those tables are related, because each order has a user that made that order. Big applications can have&nbsp;<strong>hundreds or thousands of those tables</strong>, and you need to define the relations between them for it to work well.&nbsp;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VTCH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2c53699-aec9-4ced-8e52-f72119241b23_946x1024.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VTCH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2c53699-aec9-4ced-8e52-f72119241b23_946x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!VTCH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2c53699-aec9-4ced-8e52-f72119241b23_946x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!VTCH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2c53699-aec9-4ced-8e52-f72119241b23_946x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!VTCH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2c53699-aec9-4ced-8e52-f72119241b23_946x1024.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VTCH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2c53699-aec9-4ced-8e52-f72119241b23_946x1024.webp" width="800" height="866" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a2c53699-aec9-4ced-8e52-f72119241b23_946x1024.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:866,&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_!VTCH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2c53699-aec9-4ced-8e52-f72119241b23_946x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!VTCH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2c53699-aec9-4ced-8e52-f72119241b23_946x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!VTCH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2c53699-aec9-4ced-8e52-f72119241b23_946x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!VTCH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2c53699-aec9-4ced-8e52-f72119241b23_946x1024.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>In this diagram (and, I&#8217;m guessing, in Amazon&#8217;s internal systems) there&#8217;s a users table and an orders table: the&nbsp;<em>relation</em>&nbsp;between those tables is that each order has one user who created it.&nbsp;</p><p>There&#8217;s a good reason why things are designed this way instead of throwing all of your data into one giant table: it makes inserting and pulling data&nbsp;<em>way&nbsp;</em>easier and more efficient. In the early days of the internet, when this technology was just starting out, it was&nbsp;<em>incredibly</em>&nbsp;expensive to store and retrieve data. So people spent a ton of time on optimizing it: making sure the same data is never stored twice (this is called&nbsp;<strong>normalization</strong>), finding the most efficient way to store different data types, and all of these low level things that are beyond my pay grade.&nbsp;</p><h2><strong>Transactions and SQL</strong></h2><p>Just in case there weren&#8217;t enough acronyms yet, I gotchu.</p><p><strong>&#8594; ACID transactions</strong></p><p>Modern software applications need to be&nbsp;<em>fast</em>&nbsp;and make few or no mistakes. Facebook can&#8217;t mess up your login, or mistake you for another user: that&#8217;s why relational DBs have special features around&nbsp;<strong>transactions</strong>. A transaction is just an interaction with the database, either&nbsp;<strong>inserting data</strong>&nbsp;into it or&nbsp;<strong>querying and pulling</strong>&nbsp;data from it. Transactions can go wrong&nbsp;<em>all the time</em>&nbsp;for a ton of different reasons, but there&#8217;s&nbsp;<em>a body of standards called ACID</em>&nbsp;(broooo) that helps avoid them.&nbsp;</p><p>The specifics of ACID aren&#8217;t too important. Just keep in mind that if you see a phrase like &#8220;ACID compliant transactions&#8221; it&#8217;s referring to these standards.</p><p><strong>&#8594; SQL</strong></p><p>Pulling data from a database is called querying, and there&#8217;s a series of special programming languages that let you do that called Structured Query Language (SQL). There are all different types and flavors of SQL (depending on which relational DB you&#8217;re using), but they&#8217;re all pretty similar. A typical SQL statement might look like this:</p><pre><code>&#9;&#9;&#9;&#9;
&#9;&#9;&#9;&#9;&#9;SELECT 
    first_name,
    last_name,
    address,
    last_order_date
FROM users
WHERE signup_date &gt; '2019-01-01'
&#9;&#9;&#9;&#9;
&#9;&#9;&#9;</code></pre><p>SQL is pretty human readable &#8211; even if you don&#8217;t know it, you can guess what we&#8217;re doing here &#8211; and it&#8217;s a really useful thing for everyone to know, even if you&#8217;re not en engineer.&nbsp;</p><blockquote><p>&#9749;&#65039;&nbsp;<strong>Dev Culture</strong>&nbsp;&#9749;&#65039;</p><p>Software developers need to know basic SQL for building their apps, but the&nbsp;<em>biggest</em>&nbsp;SQL experts are usually Data Scientists and Analysts: their entire days (I was one!) are spent querying and manipulating data from databases. For that and a few other reasons, some developers treat SQL as a second-tier, not &#8220;real&#8221; programming language.</p><p>&#9749;&#65039;&nbsp;<strong>Dev Culture</strong>&nbsp;&#9749;&#65039;</p></blockquote>]]></content:encoded></item><item><title><![CDATA[The Beginner's Guide to Databases]]></title><description><![CDATA[Databases are the unsung heroes of modern technology.]]></description><link>https://news.adityeah.in/p/the-beginners-guide-to-databases</link><guid isPermaLink="false">https://news.adityeah.in/p/the-beginners-guide-to-databases</guid><dc:creator><![CDATA[adityeah]]></dc:creator><pubDate>Sun, 02 Feb 2025 14:11:29 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/efaf7ef5-447e-41eb-a2eb-6ea40826ab6a_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_!oxTP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac5ffdec-d660-43ef-b4a7-0bbcebe58694_2831x1563.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oxTP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac5ffdec-d660-43ef-b4a7-0bbcebe58694_2831x1563.png 424w, https://substackcdn.com/image/fetch/$s_!oxTP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac5ffdec-d660-43ef-b4a7-0bbcebe58694_2831x1563.png 848w, https://substackcdn.com/image/fetch/$s_!oxTP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac5ffdec-d660-43ef-b4a7-0bbcebe58694_2831x1563.png 1272w, https://substackcdn.com/image/fetch/$s_!oxTP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac5ffdec-d660-43ef-b4a7-0bbcebe58694_2831x1563.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oxTP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac5ffdec-d660-43ef-b4a7-0bbcebe58694_2831x1563.png" width="1456" height="804" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ac5ffdec-d660-43ef-b4a7-0bbcebe58694_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;:200652,&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/171132826?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac5ffdec-d660-43ef-b4a7-0bbcebe58694_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_!oxTP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac5ffdec-d660-43ef-b4a7-0bbcebe58694_2831x1563.png 424w, https://substackcdn.com/image/fetch/$s_!oxTP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac5ffdec-d660-43ef-b4a7-0bbcebe58694_2831x1563.png 848w, https://substackcdn.com/image/fetch/$s_!oxTP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac5ffdec-d660-43ef-b4a7-0bbcebe58694_2831x1563.png 1272w, https://substackcdn.com/image/fetch/$s_!oxTP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac5ffdec-d660-43ef-b4a7-0bbcebe58694_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>Databases are the unsung heroes of modern technology. They power everything from your favorite social media apps to the analytics dashboards that businesses rely on for decision-making. But with over 300+ databases available, each designed for specific use cases, choosing the right one can feel overwhelming. Whether you're a&nbsp; seasoned developer or an aspiring PM, understanding databases is crucial for building efficient, scalable, and reliable systems.</p><p>In this guide, we&#8217;ll explore databases in depth, using relatable metaphors, real-world examples, and clear explanations to help you understand how they work, why they matter, and how to choose the right one for your needs.</p><h2><strong>The Flour Metaphor: Databases as Ingredients</strong></h2><p>Let&#8217;s start with a metaphor:&nbsp;<strong>baking bread</strong>.</p><p>When baking, the type of flour you use determines the texture, flavor, and structure of your bread. High-protein flour (like bread flour) creates a chewy, dense loaf, perfect for pizza or bagels. Low-protein flour (like cake flour) makes light, flaky pastries. All-purpose flour works for everything, but it&#8217;s not ideal for specialized recipes.</p><p>Databases are like flour. Each one is designed for specific use cases. You&nbsp;<em>can</em> use any database for anything, but choosing the right one ensures the best possible <s>bread</s> outcome. To understand which database to use, ask two key questions:</p><ol><li><p><strong>What does the data look like?</strong></p></li><li><p><strong>What do you need to do with it?</strong></p></li></ol><p>Let&#8217;s break these down.</p><h2><strong>1. What Does the Data Look Like?</strong></h2><p>Databases are optimized for specific types of data. While you can store any piece of data in any database, the way data is inserted and retrieved matters most. Postgres is relational, but supports big blobs of text. Nothing is stopping you from storing your user data in&nbsp;Elastic. Nevertheless, many databases are designed with specific&nbsp;<em>types</em>&nbsp;or&nbsp;<em>shapes</em>&nbsp;of data in mind.</p><p>Here&#8217;s a closer look at how data shape influences database choice:</p><h3><strong>Structured Data</strong></h3><ul><li><p><strong>What it is:</strong>&nbsp;Data with a clear, predefined schema (e.g., tables with rows and columns).</p></li><li><p><strong>Example:</strong>&nbsp;User profiles, orders, or inventory.</p></li><li><p><strong>Best databases:</strong>&nbsp;Relational databases like&nbsp;<strong>Postgres</strong>,&nbsp;<strong>MySQL</strong>, or&nbsp;<strong>MSSQL</strong>.</p></li></ul><h3><strong>Unstructured or Semi-Structured Data</strong></h3><ul><li><p><strong>What it is:</strong>&nbsp;Data without a fixed schema (e.g., JSON documents, logs, or social media posts).</p></li><li><p><strong>Example:</strong>&nbsp;Tweets, sensor data, or product reviews.</p></li><li><p><strong>Best databases:</strong>&nbsp;NoSQL databases like&nbsp;<strong>MongoDB</strong>,&nbsp;<strong>Cassandra</strong>, or&nbsp;<strong>Elasticsearch</strong>.</p></li></ul><h3><strong>Interconnected Data</strong></h3><ul><li><p><strong>What it is:</strong>&nbsp;Data with complex relationships (e.g., social networks, recommendation engines).</p></li><li><p><strong>Example:</strong>&nbsp;Friend connections on Facebook or product recommendations on Amazon.</p></li><li><p><strong>Best databases:</strong>&nbsp;Graph databases like&nbsp;<strong>Neo4J</strong>.</p></li></ul><h3><strong>Time-Series Data</strong></h3><ul><li><p><strong>What it is:</strong>&nbsp;Data indexed by time (e.g., stock prices, sensor readings).</p></li><li><p><strong>Example:</strong>&nbsp;Hourly temperature data or daily financial transactions.</p></li><li><p><strong>Best databases:</strong>&nbsp;Time-series databases like&nbsp;<strong>InfluxDB</strong>&nbsp;or&nbsp;<strong>TimescaleDB</strong>.</p></li></ul><h2><strong>2. What Do You Need to Do with the Data?</strong></h2><p>Different types of data &#8211; and even similar types of data for different use cases &#8211; get used in different ways. How you use the data determines the database you need. Here are some common use cases and the databases that excel in them:</p><h3><strong>OLTP (Online Transactional Processing)</strong></h3><p>These are the databases that you use for the core data in your application, think your user data. Data is being read and inserted constantly. Queries are usually small and quick. Data integrity is key.</p><ul><li><p><strong>What it is:</strong>&nbsp;Real-time, transactional data processing (e.g., user actions, payments).</p></li><li><p><strong>Example:</strong>&nbsp;Adding items to a shopping cart or updating a user profile.</p></li><li><p><strong>Best databases:</strong>&nbsp;Relational databases like&nbsp;<strong>Postgres</strong>&nbsp;or&nbsp;<strong>MySQL</strong>.</p></li></ul><h3><strong>OLAP (Online Analytical Processing)</strong></h3><p>These are the databases that you use for analytics and data science, think Snowflake etc. Data is being read and inserted sporadically. Queries are usually large and complex.&nbsp;</p><ul><li><p><strong>What it is:</strong>&nbsp;Complex queries on large datasets for analytics or business intelligence.</p></li><li><p><strong>Example:</strong>&nbsp;Calculating monthly revenue or analyzing user behavior.</p></li><li><p><strong>Best databases:</strong>&nbsp;Data warehouses like&nbsp;<strong>Snowflake</strong>,&nbsp;<strong>BigQuery</strong>, or&nbsp;<strong>Redshift</strong>.</p></li></ul><h3><strong>Operational Use Cases</strong></h3><ul><li><p><strong>What it is:</strong>&nbsp;Logs, monitoring, caching, or internal processes.</p></li><li><p><strong>Example:</strong>&nbsp;Storing server logs or managing user sessions.</p></li><li><p><strong>Best databases:</strong>&nbsp;<strong>Elasticsearch</strong>&nbsp;for logs,&nbsp;<strong>Redis</strong>&nbsp;for caching, or&nbsp;<strong>Prometheus</strong>&nbsp;for monitoring.</p></li></ul><p>The fact that users of the database need to do different things with the data inside of it necessitates storing said data differently.&nbsp;</p><p>OLTP vs. OLAP is one example, but there are many different ways to break down those use cases. Some databases have special UIs on top for analysis (like Kibana and Elastic). Others are built for massive scale from the start. Some are made to handle&nbsp;<em>many</em>&nbsp;different situations decently well. No matter what database you&#8217;re dealing with, thinking about what&nbsp;<em>kind</em>&nbsp;of data it stores and&nbsp;<em>how</em>&nbsp;you need to use that data is the key to understanding each.</p><h2><strong>3 major categories of databases and what they do</strong></h2><p>Crude as it may be, I find it useful to think of 3 major categories of databases. Some databases can overlap and cross categories. For example, there are NoSQL databases built for powering your app, but there are also NoSQL databases meant for in-memory stuff (e.g. Redis is technically NoSQL). Here are the major ones:</p><ol><li><p><strong>Databases that power a user-facing app</strong>&nbsp;&#8211; production databases that store the data you need for your app to run.</p></li><li><p><strong>Databases that power analytics&nbsp;</strong>&#8211; databases for analysis, machine learning, and anything a data team does.</p></li><li><p><strong>Databases that power operations&nbsp;</strong>&#8211; databases for monitoring, logs, security, and any internal processes that enable the above.</p></li></ol><p>Let&#8217;s run through each category and cover a few examples for each.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_-Hq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb49fd14f-1a51-4d98-9fe2-406b7974a480_1024x668.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_-Hq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb49fd14f-1a51-4d98-9fe2-406b7974a480_1024x668.webp 424w, https://substackcdn.com/image/fetch/$s_!_-Hq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb49fd14f-1a51-4d98-9fe2-406b7974a480_1024x668.webp 848w, https://substackcdn.com/image/fetch/$s_!_-Hq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb49fd14f-1a51-4d98-9fe2-406b7974a480_1024x668.webp 1272w, https://substackcdn.com/image/fetch/$s_!_-Hq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb49fd14f-1a51-4d98-9fe2-406b7974a480_1024x668.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_-Hq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb49fd14f-1a51-4d98-9fe2-406b7974a480_1024x668.webp" width="800" height="522" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b49fd14f-1a51-4d98-9fe2-406b7974a480_1024x668.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:522,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Types of Databases&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="Types of Databases" title="Types of Databases" srcset="https://substackcdn.com/image/fetch/$s_!_-Hq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb49fd14f-1a51-4d98-9fe2-406b7974a480_1024x668.webp 424w, https://substackcdn.com/image/fetch/$s_!_-Hq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb49fd14f-1a51-4d98-9fe2-406b7974a480_1024x668.webp 848w, https://substackcdn.com/image/fetch/$s_!_-Hq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb49fd14f-1a51-4d98-9fe2-406b7974a480_1024x668.webp 1272w, https://substackcdn.com/image/fetch/$s_!_-Hq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb49fd14f-1a51-4d98-9fe2-406b7974a480_1024x668.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>1. Databases That Power User-Facing Apps</strong></h2><p>Databases that power a user-facing app &#8211; often referred to as&nbsp;production databases&nbsp;or production data stores &#8211; are where developers store and query whatever data their app needs to run. Any&nbsp;&#8220;data&#8221; you&#8217;re seeing on your screen&nbsp;sits here.</p><ul><li><p><strong>If you&#8217;re Twitter</strong>: tweets, user profiles, trending topics, DMs</p></li><li><p><strong>If you&#8217;re Gmail</strong>: emails, settings, spam filters</p></li><li><p><strong>If you&#8217;re Amazon</strong>: orders, users, credit cards</p></li></ul><p>Production databases are built to support small and quick queries. The most important thing is data integrity and reliability &#8211; you don&#8217;t want to lose an order or a credit card.</p><h3><strong>A. User-facing DBs / Relational Databases</strong></h3><ol><li><p><strong>Relational databases:</strong>&nbsp;are the database OGs. They&#8217;ve been around for pretty much as long as databases have been around, and are the default choice today for storing the basic data your application needs to run. Data is stored in a&nbsp;<strong>very structured</strong> format with rigid definitions of tables, columns, and how tables relate to each other; that way, queries can run quickly and reliably.</p></li><li><p><strong><a href="https://www.postgresql.org/">Postgres</a></strong>&nbsp;is an open source relational database initially released back in 1997. It&#8217;s one of the standard &#8220;boilerplate&#8221; choices for teams getting started on a new app. You can run Postgres yourself on a server, or pay someone like Amazon to&nbsp;<a href="https://aws.amazon.com/rds/postgresql/">run it for you</a>.</p></li><li><p><strong><a href="https://www.mysql.com/">MySQL</a></strong>&nbsp;is also an open source relational database, initially released in 1995. It&#8217;s the other database most teams reach for, although since Oracle bought Sun (and ergo MySQL), there are legal ramifications to&nbsp;<em>modifying</em>&nbsp;the MySQL code for commercial use. In terms of MySQL vs. Postgres, the short story is that they&#8217;re very, very similar but have&nbsp;<a href="https://kinsta.com/blog/postgresql-vs-mysql">a few important differences</a> with how they handle data types, storage engines, and a few other things.</p></li><li><p><strong><a href="https://www.microsoft.com/en-us/sql-server">MSSQL</a></strong> is Microsoft&#8217;s proprietary SQL database. It&#8217;s popular among very large companies but not for smaller startups.</p></li><li><p><strong><a href="https://retool.com/blog/why-is-oracle-worth-260b/">Oracle</a></strong> was the first commercial relational database ever. Today it&#8217;s got the reputation of being the slowest moving company in California, but nevertheless powers the apps of tons and tons of Fortune 50 companies. Like MSSQL, this is a database for massive organizations and not startups.</p></li><li><p><strong><a href="https://mariadb.org/">MariaDB</a></strong> is another open source relational database, from the original creators of MySQL. They (in a somewhat cheeky fashion) seem to be pretty pissed about Oracle limiting contributions to MySQL, so they focus on how open the community is and how the software will never require a license.</p></li><li><p><strong><a href="https://www.sqlite.org/index.html">SQLite</a></strong>&nbsp;is a software library that lets you run a small database inside of your application. It&#8217;s used in one way or another in tons and tons of apps, usually as an intermediate database as opposed to a core production store. The website says it&#8217;s on every single Android, iPhone, etc.</p></li></ol><h3><strong>B. User-facing DBs / NoSQL Databases</strong></h3><ol><li><p><strong>NoSQL:</strong> databases remove the structure and rigidity from relational databases, and let you just dump data in there and worry about how it looks later. There are NoSQL databases for all different categories of database (analytics, operational) but these here are for production, user-facing use.</p></li><li><p><strong>MongoDB</strong>&nbsp;popularized the NoSQL moniker and is the default choice if you&#8217;re looking for a NoSQL database to power your app. Their cloud product,&nbsp;<a href="https://www.mongodb.com/atlas/database">Atlas</a>, is the&nbsp;AWS RDS equivalent for basic NoSQL.&nbsp;</p></li><li><p><strong><a href="https://cassandra.apache.org/_/index.html">Cassandra</a>&nbsp;</strong>is a NoSQL database built for really big companies who need to store lots of data and retrieve it fast. Unlike MongoDB, which is built as a&nbsp;<em>document</em>&nbsp;database, Cassandra is oriented more around a&nbsp;<em>columnar</em>&nbsp;setup, which means data is stored in entire columns (like Snowflake, actually). Using Cassandra feels a lot more like using a relational database. Thank you to&nbsp;<a href="https://open.substack.com/users/135589200-neo-kim?utm_source=mentions">Neo Kim </a>from the <a href="https://open.substack.com/pub/systemdesignone">System Design Newsletter </a>for pointing out that Cassandra is actually technically not a <em>columnar</em>&nbsp;data store, but instead implements the concept of a&nbsp;<em>wide column family</em>, which is slightly different.</p></li><li><p><strong><a href="https://aws.amazon.com/dynamodb/">DynamoDB</a></strong> is AWS&#8217;s proprietary NoSQL database.&nbsp;</p></li><li><p><strong><a href="https://firebase.google.com/">Firebase</a></strong>&nbsp;is a series of tools (acquired by Google back in the day) for building apps, targeted at smaller teams and focusing on simplicity. Their database is called&nbsp;<a href="https://firebase.google.com/docs/firestore">Firestore</a>&nbsp;and it&#8217;s a really popular option for a quick, just-get-me-started kind of DB.&nbsp;</p></li></ol><h3><strong>C. User-facing DBs / Graph Databases</strong></h3><p>Every company&#8217;s data is different, and for some it makes the most sense to model things as a sort of graph of interconnected nodes. Facebook famously&nbsp;<a href="https://engineering.fb.com/2013/06/25/core-data/tao-the-power-of-the-graph/">runs their social graph</a>&nbsp;on an in house graph database called Tao. The use cases for graph DBs are mostly user-facing, but they&#8217;re sometimes useful for analytical purposes too.</p><ol><li><p><strong><a href="https://neo4j.com/">Neo4J</a></strong>&nbsp;is the most popular graph database. It&#8217;s open source but if you&#8217;re going to scale it up, you&#8217;ll need to talk to them about their enterprise license. Data in Neo4J is represented as nodes, and nodes can be connected to each other in different ways. Cyper is the name of their SQL-esque language for querying the graph.</p></li></ol><h2><strong>2. Databases that power analytics</strong></h2><p>What a data team needs from their database is&nbsp;<em>very different</em>&nbsp;from developers working on an app. For data science and analytics work, the data you store is often redundant, there&#8217;s&nbsp;<em>tons</em>&nbsp;of it, and your queries join data from multiple tables at once. Data usually gets queried by someone sitting at a computer doing research, or a system building a pipeline, and gets inserted at regular intervals (twice a day, something like that).&nbsp;</p><h3><strong>A. Analytical DBs / Data Warehouses</strong></h3><p>Data warehouses&nbsp;are (usually) relational databases for storing analytical data, like what your users have been doing, revenue by month, things like that. They&#8217;re optimized for big, long, multi-table queries. They&#8217;re usually relational databases in nature, although the implementation details can vary.</p><ol><li><p><strong>Snowflake&nbsp;</strong>is a cloud data warehouse for analytics. It&#8217;s columnar, which means that data is stored (under the hood) in entire columns instead of rows; this makes large analytical queries faster, so it&#8217;s a common choice for how to build analytical DBs.</p></li><li><p><strong><a href="https://cloud.google.com/bigquery">BigQuery</a>&nbsp;</strong>is also a cloud data warehouse for analytics. It&#8217;s very similar to Snowflake.</p></li><li><p><strong><a href="https://aws.amazon.com/redshift/">Redshift</a>&nbsp;</strong>is also a cloud data warehouse for analytics. It&#8217;s very similar to Snowflake and BigQuery.</p></li><li><p><strong><a href="https://clickhouse.com/">Clickhouse</a>&nbsp;</strong>is an open source (!) data warehouse for analytics. It was originally developed at Yandex, and is getting more popular.</p></li></ol><blockquote><p><strong>&#129300; Why can&#8217;t I use Postgres as a data warehouse?</strong></p><p>You can, people did for a long time, and some still do. But modern cloud data warehouses are just waaaaay faster for large queries on meaningful quantities of data. This is the thing about databases: you can use anything for anything, but there comes a point where you need a specialized tool for the job.</p></blockquote><h3><strong>B. Analytical DBs / Data Lakes</strong></h3><ol><li><p>Data Lakes are basically giant data safes. You throw whatever you want in there &#8211; structured, unstructured, big, small, organized, disorganized, whatever &#8211; and then worry about structure when it&#8217;s time to get the data out. Contrast that with a data warehouse, which like a relational database, has rigid structure around tables, columns, and data types.</p></li><li><p><strong><a href="https://aws.amazon.com/s3/">S3</a></strong>&nbsp;is AWS&#8217;s object storage solution &#8211; usually used for storing things like images and videos for applications &#8211; but is also commonly used as a data lake. You can&#8217;t &#8220;query&#8221; S3 in the way that you can a database, so you need to use a layer on top (like AWS&#8217;s&nbsp;<a href="https://aws.amazon.com/lake-formation/">Lake Formation</a>) to intermediate.</p></li><li><p><strong>Databricks</strong>, a company that I wrote about back in the day, sells a product they call &#8220;the lakehouse platform.&#8221; Under several layers of caked marketing makeup, it&#8217;s an&nbsp;<a href="https://www.databricks.com/product/delta-lake-on-databricks">open source data lake and storage layer</a>&nbsp;built to resemble a sort of data warehouse; they&#8217;re trying to blur the distinction between the two.</p></li></ol><p>Though it&#8217;s unlikely you&#8217;ll see it in production today,&nbsp;<strong><a href="https://hadoop.apache.org/docs/r1.2.1/hdfs_design.html">HDFS</a>&nbsp;</strong>was a highly popular way to build a data lake before the cloud data warehouse era. It&#8217;s powered by Hadoop, one of the original frameworks for performing distributed computations on large groups of data. It was/is notorious for being very, very hard to set up and run.</p><h3><strong>C. Analytical DBs / GIS Databases</strong></h3><p>This is a bit of a niche one, but worth mentioning: there&#8217;s a class of databases (or in some cases, database&nbsp;<em>extensions</em>) that are purpose built for working with&nbsp;<strong>geographical data</strong>. GIS stands for Geographic Information System. In terms of the actual data being stored here, it can be anything from points and lines to complex 3D data; structures that don&#8217;t map (no pun intended) well to traditional database schemas.</p><ol><li><p><strong><a href="https://postgis.net/">PostGIS</a></strong> is a PostgreSQL extension for storing and working with geographical data. It&#8217;s a combination of features for storage, analysis (special geographical functions like intersections, measuring distances, etc.), and other miscellaneous stuff like geocoding.</p></li><li><p><strong><a href="https://www.kinetica.com/">Kinetica</a></strong> is an enterprise-focused database for storing geospatial and time series data.</p></li><li><p><strong><a href="https://www.oracle.com/database/spatial/">Oracle Spatial Database</a>&nbsp;</strong>is also an enterprise-focused database for storing geospatial data, from our friends at big red.</p></li></ol><h2><strong>Databases that power operations</strong></h2><p>This is the category you&#8217;ll probably encounter&nbsp;<em>least</em>&nbsp;if you&#8217;re not an engineer. The 3rd category of databases covers data stores that developers use to power internal operations: monitoring application performance, storing logs and security information, improving application speed, or even intermediate layers between other databases.</p><h3><strong>Operational DBs / Key Value Stores</strong></h3><p>While pretty much all of the databases we&#8217;ve covered so far store&nbsp;<em>permanent data&nbsp;</em>&#8211;&nbsp;saved on a harddrive&nbsp;&#8211; there&#8217;s a class of databases that only keeps data&nbsp;<em>in memory</em>. They&#8217;re meant for ephemeral data that you need to store and use quickly, but you don&#8217;t mind if it disappears down the road. These databases are called key value stores (or KV stores) because the way they store data is like a dictionary, where each entry has a key.</p><ol><li><p><strong><a href="https://redis.com/">Redis</a></strong>&nbsp;is the OG key value store. It&#8217;s an in memory database that teams use for a bunch of different stuff: building&nbsp;caches, managing&nbsp;authentication sessions, chat and messaging, and any other use cases that prioritize real time, very quick data retrieval. Redis is open source but you can also pay them to host it for you.</p></li><li><p><strong><a href="https://www.singlestore.com/">SingleStore</a></strong>&nbsp;(FKA MemSQL) is an in memory database like Redis, more focused on general purpose kinds of workloads than typical in memory database use cases.</p></li></ol><h3><strong>Operational DBs / Time Series Databases</strong></h3><p>Time series databases are DBs built specifically for storing data on some sort of time frame: daily financial data, second-by-second sensor readings, hour-by-hour health checks on your servers, anything like that.&nbsp;</p><ol><li><p><strong><a href="https://www.timescale.com/">Timescale</a></strong> is an extension to Postgres, sold as an independent cloud hosted database. It takes everyone&#8217;s favorite relational database and adds special time-series specific functionality like automatic partitioning and query optimizations.</p></li><li><p><strong><a href="https://prometheus.io/">Prometheus</a>&nbsp;</strong>is an open source time series database with built in alerting and visualization.</p></li><li><p><strong><a href="https://www.influxdata.com/">InfluxDB</a></strong>&nbsp;is also an open source time series database.</p></li></ol><h3><strong>Operational DBs / Logs and Search Databases</strong></h3><ol><li><p><strong>Elastic&nbsp;</strong>is a NoSQL database built for storing and searching through logs, or very granular records of server performance, API requests, and internal stuff like that. Elasticsearch is commonly used with Kibana, its sister data visualization tool.</p></li><li><p><strong><a href="https://solr.apache.org/">Solr</a></strong>&nbsp;is also a NoSQL database built for storing and searching through logs.</p></li></ol>]]></content:encoded></item><item><title><![CDATA[How do product analytics work?]]></title><description><![CDATA[Product analytics &#8211; what the hell is it?]]></description><link>https://news.adityeah.in/p/how-do-product-analytics-work</link><guid isPermaLink="false">https://news.adityeah.in/p/how-do-product-analytics-work</guid><dc:creator><![CDATA[adityeah]]></dc:creator><pubDate>Thu, 30 Jan 2025 04:35:29 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/509c5e03-f25d-4d68-9177-25d0843d8bff_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_!3UGc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfdc5363-d440-403e-b8eb-82d6916d9882_2831x1563.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3UGc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfdc5363-d440-403e-b8eb-82d6916d9882_2831x1563.png 424w, https://substackcdn.com/image/fetch/$s_!3UGc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfdc5363-d440-403e-b8eb-82d6916d9882_2831x1563.png 848w, https://substackcdn.com/image/fetch/$s_!3UGc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfdc5363-d440-403e-b8eb-82d6916d9882_2831x1563.png 1272w, https://substackcdn.com/image/fetch/$s_!3UGc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfdc5363-d440-403e-b8eb-82d6916d9882_2831x1563.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3UGc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfdc5363-d440-403e-b8eb-82d6916d9882_2831x1563.png" width="1456" height="804" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cfdc5363-d440-403e-b8eb-82d6916d9882_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;:179210,&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/171132825?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfdc5363-d440-403e-b8eb-82d6916d9882_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_!3UGc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfdc5363-d440-403e-b8eb-82d6916d9882_2831x1563.png 424w, https://substackcdn.com/image/fetch/$s_!3UGc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfdc5363-d440-403e-b8eb-82d6916d9882_2831x1563.png 848w, https://substackcdn.com/image/fetch/$s_!3UGc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfdc5363-d440-403e-b8eb-82d6916d9882_2831x1563.png 1272w, https://substackcdn.com/image/fetch/$s_!3UGc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfdc5363-d440-403e-b8eb-82d6916d9882_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>Product analytics &#8211; what the hell is it? Why is Amplitude a public company? What do product managers even do?</p><p>This post will dive into how companies analyze what their users are doing in their product. We&#8217;ll cover what kinds of questions teams want answers to, how the data gets generated and moved, and what tools are out there to simplify things.</p><h2><strong>It all starts with decision making</strong></h2><p>The wonderful world of product analytics starts with knowledge, or at least the eternal yet fleeting desire for it. Startups and large companies alike want&nbsp;<strong>visibility</strong>&nbsp;into how their users use their digital products. They&#8217;re looking to understand things like:</p><ul><li><p>What are our most popular features?</p></li><li><p>Which pages on our website convert the best?</p></li><li><p>What areas of our product experience are confusing?</p></li><li><p>What are common paths that users take to accomplish something?</p></li></ul><p>Armed with this information, product teams can make educated decisions on what they should be&nbsp;<strong>improving and building</strong>. These kinds of analytics can also help catch bugs: if the number of users visiting a page drops precipitously one day, chances are something is wrong with that page, and needs fixing (or your analytics are broken &#128527;).&nbsp;</p><h3><strong>Product funnels</strong></h3><p>Product and growth teams like to use the concept of a&nbsp;<strong>funnel</strong>&nbsp;to visualize the paths that a user takes through the product. The funnel is wider on top &#8211; representing actions that&nbsp;<em>a lot of people</em>&nbsp;take, like visiting a website, and narrower on the bottom, representing actions that&nbsp;<em>fewer people</em>&nbsp;take, like signing up for the product and using it.&nbsp;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!n-lp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F462408a1-9795-4795-9132-39528f1aa58c_1024x603.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!n-lp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F462408a1-9795-4795-9132-39528f1aa58c_1024x603.webp 424w, https://substackcdn.com/image/fetch/$s_!n-lp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F462408a1-9795-4795-9132-39528f1aa58c_1024x603.webp 848w, https://substackcdn.com/image/fetch/$s_!n-lp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F462408a1-9795-4795-9132-39528f1aa58c_1024x603.webp 1272w, https://substackcdn.com/image/fetch/$s_!n-lp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F462408a1-9795-4795-9132-39528f1aa58c_1024x603.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!n-lp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F462408a1-9795-4795-9132-39528f1aa58c_1024x603.webp" width="800" height="471" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/462408a1-9795-4795-9132-39528f1aa58c_1024x603.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:471,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Product Funnel&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="Product Funnel" title="Product Funnel" srcset="https://substackcdn.com/image/fetch/$s_!n-lp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F462408a1-9795-4795-9132-39528f1aa58c_1024x603.webp 424w, https://substackcdn.com/image/fetch/$s_!n-lp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F462408a1-9795-4795-9132-39528f1aa58c_1024x603.webp 848w, https://substackcdn.com/image/fetch/$s_!n-lp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F462408a1-9795-4795-9132-39528f1aa58c_1024x603.webp 1272w, https://substackcdn.com/image/fetch/$s_!n-lp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F462408a1-9795-4795-9132-39528f1aa58c_1024x603.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>Each stage of the funnel (except the top one) has a&nbsp;<strong>conversion rate</strong>&nbsp;representing the percentage of people in the previous bucket that made it to the current step. Teams try to benchmark their conversion rates against other products to get a sense of whether they are too low (or hopefully, too high).</p><p>&#128680;&nbsp;<strong>Confusion Alert&nbsp;</strong>&#128680;</p><p>Even though it&#8217;s referred to as&nbsp;<em>product</em>&nbsp;analytics, this area has blurry overlap with&nbsp;<em>marketing</em>&nbsp;data. Growth funnels can include data on website visits, and which sources (referrals, organic search, etc.) are driving quality leads. Who is responsible for using this data varies; just don&#8217;t be surprised if you see traffic-related information &#8211; what you&#8217;d normally consider marketing &#8211; in this post.</p><p>&#128680;&nbsp;<strong>Confusion Alert&nbsp;</strong>&#128680;</p><h3><strong>User research and session recording</strong></h3><p>Numbers can only go so far in giving product teams a good sense of what their users are actually doing in the product. Sometimes, you just need to&nbsp;<strong>see</strong>&nbsp;how they navigate around and do their tasks. Traditionally,&nbsp;<strong>user research</strong>&nbsp;teams would find prospective or existing users, and actually observe them accomplishing common tasks in your app. For example, the user research team at Microsoft might pay users to join a study and ask them to build a basic financial model in Excel; they&#8217;ll pay close attention to exactly what the users do and what problems they run into.</p><p>More recently, tools like&nbsp;<a href="https://www.fullstory.com/">FullStory</a>&nbsp;have popped up, which allow teams to literally&nbsp;<strong>record</strong>&nbsp;what users are doing in the product during their day to day, making all of this significantly easier. More on these tools later.</p><h2><strong>How it all works under the hood?</strong></h2><p>As with all things data, it&#8217;s a pain in the ass to arm your company with the data to&nbsp;<em>answer</em>&nbsp;all of the questions product teams have. You need to instrument your product to &#8220;record&#8221; what users are doing, get that data into your warehouse, transform it into a format that&#8217;s useful for analysis, and then build visualizations that give you the information you want.&nbsp;</p><p>This section will walk through how that&#8217;s done, and the next will cover newer tools that are making things easier than they were.</p><p><em>Note: most tech companies today are using event-driven architectures like the one we&#8217;re about to describe. But there are other, worse ways of doing this.</em></p><h3><strong>Instrumenting the product</strong></h3><p>Step one is to actually create the data. And doing this is fairly simple, albeit custom: you just send what&#8217;s called an&nbsp;<strong>event</strong>&nbsp;any time a user does something in the product. Suppose we&#8217;d like to record every time a user clicks on the &#8220;save changes&#8221; button when editing their profile. We&#8217;d fire an event like this:</p><pre><code>&#9;&#9;&#9;&#9;
&#9;&#9;&#9;&#9;&#9;analytics.track(
  {
    event_name: &#8220;save_changes_button_clicked&#8221;,
    timestamp: &#8220;2022-03-09 23:45:33&#8221;,
    context_page: &#8220;/profile/edit&#8221;,
    user_id: &#8220;239hg72eyrhdaadgdg99277hd7ve88d&#8221;
  }
)
&#9;&#9;&#9;&#9;
&#9;&#9;&#9;</code></pre><p>The event gets a name, a timestamp, and some metadata: in this case, the context in which it took place (on the edit profile page), and the ID of the user who took the action.</p><p>Fun fact, you don&#8217;t need to take my word for this. If you&#8217;re logged into a SaaS product on your computer right now, open up your developer tools (&#8984; + Option + C for chrome) and click on the &#8220;network&#8221; tab. Click on any button or link in the app, and you should see some events showing up at the bottom.&nbsp;</p><blockquote><p><strong>&#128269; Deeper Look</strong><em><strong>&nbsp;</strong></em><strong>&#128269;</strong></p><p>The logistics of sending these events gets interesting. Most companies send them client side, e.g. right from your browser. But if you&#8217;re using an ad blocker, that blocks any client side JavaScript from hitting external servers, which renders these events useless. For that reason, some companies will set up a proxy server and send these events from their backend; more work, but it avoids the ad blocker problem.</p><p><strong>&#128269; Deeper Look</strong><em><strong>&nbsp;</strong></em><strong>&#128269;</strong></p></blockquote><p>These events get created and fired for pretty much anything you do in the product, and later get assembled into useful insights. But first, the data needs to be stored somewhere.</p><h3><strong>Getting the data into the warehouse</strong></h3><p>This is where things start to get complicated. Once the event gets &#8220;fired&#8221; where does it go?&nbsp;</p><p>These days, the state of the art is to put it straight into your&nbsp;data warehouse. There are a few ways to do that. You can build it yourself &#8211; you&#8217;d need to build a system that parses the event data and inserts it into&nbsp;Snowflake, BigQuery, etc.&nbsp;via SQL &#8211; or, more commonly, use a third party tool like&nbsp;Segment&nbsp;or&nbsp;<a href="https://posthog.com/">PostHog</a>&nbsp;to do it for you.&nbsp;</p><p>The end &#8220;product&#8221; is usually a bunch of tables in your warehouse, one for each type of event. You&#8217;ll have a table called `clicked_save_changes`, one called `edited_profile`, and so on and so forth. Sometimes these events will get aggregated into a big events table called, well, `events`. Each one of these tables will have columns for the important data: the time the event happened, which user did it, what page it happened on, etc.</p><p>Now we&#8217;re getting somewhere!</p><h3><strong>Transforming the data into something useful</strong></h3><p>A bunch of raw events aren&#8217;t exactly useful for a product manager, even if they&nbsp;<em>can</em>&nbsp;write SQL. How am I supposed to know what my funnel looks like when I&#8217;m working with a bunch of random events? The next step in the process is to&nbsp;<strong>transform</strong>&nbsp;the event data into aggregated, more useful information.</p><p>Transforming data today just means writing some SQL that takes these events and filters and aggregates them. For a concrete example, imagine we&#8217;re trying to find the most popular &#8220;page&#8221; in our product, and look at how many users visit each page on a weekly basis. The raw event data looks like this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!etxa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc531be70-4115-4711-b849-1813eb2f98a6_1024x356.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!etxa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc531be70-4115-4711-b849-1813eb2f98a6_1024x356.webp 424w, https://substackcdn.com/image/fetch/$s_!etxa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc531be70-4115-4711-b849-1813eb2f98a6_1024x356.webp 848w, https://substackcdn.com/image/fetch/$s_!etxa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc531be70-4115-4711-b849-1813eb2f98a6_1024x356.webp 1272w, https://substackcdn.com/image/fetch/$s_!etxa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc531be70-4115-4711-b849-1813eb2f98a6_1024x356.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!etxa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc531be70-4115-4711-b849-1813eb2f98a6_1024x356.webp" width="800" height="278" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c531be70-4115-4711-b849-1813eb2f98a6_1024x356.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:278,&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_!etxa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc531be70-4115-4711-b849-1813eb2f98a6_1024x356.webp 424w, https://substackcdn.com/image/fetch/$s_!etxa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc531be70-4115-4711-b849-1813eb2f98a6_1024x356.webp 848w, https://substackcdn.com/image/fetch/$s_!etxa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc531be70-4115-4711-b849-1813eb2f98a6_1024x356.webp 1272w, https://substackcdn.com/image/fetch/$s_!etxa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc531be70-4115-4711-b849-1813eb2f98a6_1024x356.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>But we want the data to look like this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NGfN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80e5db18-48fc-4793-a587-4983adaab0d4_1024x312.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NGfN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80e5db18-48fc-4793-a587-4983adaab0d4_1024x312.webp 424w, https://substackcdn.com/image/fetch/$s_!NGfN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80e5db18-48fc-4793-a587-4983adaab0d4_1024x312.webp 848w, https://substackcdn.com/image/fetch/$s_!NGfN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80e5db18-48fc-4793-a587-4983adaab0d4_1024x312.webp 1272w, https://substackcdn.com/image/fetch/$s_!NGfN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80e5db18-48fc-4793-a587-4983adaab0d4_1024x312.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NGfN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80e5db18-48fc-4793-a587-4983adaab0d4_1024x312.webp" width="800" height="244" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/80e5db18-48fc-4793-a587-4983adaab0d4_1024x312.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:244,&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_!NGfN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80e5db18-48fc-4793-a587-4983adaab0d4_1024x312.webp 424w, https://substackcdn.com/image/fetch/$s_!NGfN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80e5db18-48fc-4793-a587-4983adaab0d4_1024x312.webp 848w, https://substackcdn.com/image/fetch/$s_!NGfN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80e5db18-48fc-4793-a587-4983adaab0d4_1024x312.webp 1272w, https://substackcdn.com/image/fetch/$s_!NGfN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80e5db18-48fc-4793-a587-4983adaab0d4_1024x312.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 do that, we write a bunch of SQL (I will spare you the logistics). State of the art today is to use something like&nbsp;dbt&nbsp;to do this. This is usually the responsibility of the data team, and they will work with business stakeholders like the product team to figure out what these transformations should actually look like.</p><p>SQL isn&#8217;t necessarily the ideal tool for analyzing event data like this. While we do eventually want to aggregate a lot of this data into rollup tables like the above, sometimes explorations into why users are doing a particular action requires&nbsp;<strong>diving into the granular events themselves</strong>. Writing custom SQL queries for these over and over again, and analyzing the results tabularly,&nbsp;<a href="https://motifanalytics.medium.com/the-missing-tool-for-data-exploration-dd8cf8d4921e">is a nightmare</a>. In other words, there are still many open questions as to how this type of data should be analyzed most effectively.&nbsp;</p><h3><strong>Visualization, BI, and exploration</strong></h3><p>Once the data is in the format we want it in, we&#8217;ll want to get it into a chart of some sort. There are&nbsp;<em>tons</em>&nbsp;of ways to do this, from&nbsp;<a href="https://www.metabase.com/">Metabase</a>&nbsp;to&nbsp;<a href="https://retool.com/">Retool</a>&nbsp;to&nbsp;<a href="https://hex.tech/">Hex</a>&nbsp;to homegrown solutions. Even&nbsp;<a href="https://www.looker.com/">Looker</a>, before it was all but&nbsp;<a href="https://www.reddit.com/r/Looker/comments/t5jpwk/google_cloud_just_laid_off_the_entirety_of/">destroyed by acquirer Google</a>, was a tool that teams used for this, among other things. You&#8217;ll usually end up with a series of graphs that update regularly and show you the metrics you care about.</p><p>The final product isn&#8217;t&nbsp;<em>always</em>&nbsp;a static graph, though. More and more, data teams are working on ways to&nbsp;<strong>empower</strong> non-technical stakeholders to explore data themselves and answer their own questions.&nbsp;</p><h2><strong>Tools for product analytics</strong></h2><p>As you can (hopefully) tell, there&#8217;s a lot that goes into that graph showing you how many users your product has, from raw events to transformation and visualization. Though most modern companies will do&nbsp;<em>something</em>&nbsp;like what&#8217;s outlined above, there are better and better tools on the market that automate pieces of this process and make them more accessible for non-technical teams.&nbsp;</p><p>There is no substitute for a good data team, and there are&nbsp;<em>always</em>&nbsp;going to be questions that are too deep for SaaS tools to help you answer. That&#8217;s why even if you use some of the tools below, chances are you will still have a data team working on the steps outlined above. There are, of course, many many more tools I haven&#8217;t mentioned here &#8211; leave a comment with any of your favorites.</p><h3><strong>Segment &#8211; instrumentation and routing</strong></h3><p>Segment helps with multiple parts of the process, from a library for tracking events to routing those events to your warehouse (and other destinations).&nbsp;</p><p>Segment&nbsp;<a href="https://techcrunch.com/2020/10/12/twilios-3-2b-segment-acquisition-about-helping-developers-build-data-fueled-apps/">was acquired by Twilio</a>&nbsp;in 2020, so things are a bit up in the air there.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_o_u!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc80c936d-0c02-4fe5-a142-27d8a40089e7_1024x886.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_o_u!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc80c936d-0c02-4fe5-a142-27d8a40089e7_1024x886.webp 424w, https://substackcdn.com/image/fetch/$s_!_o_u!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc80c936d-0c02-4fe5-a142-27d8a40089e7_1024x886.webp 848w, https://substackcdn.com/image/fetch/$s_!_o_u!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc80c936d-0c02-4fe5-a142-27d8a40089e7_1024x886.webp 1272w, https://substackcdn.com/image/fetch/$s_!_o_u!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc80c936d-0c02-4fe5-a142-27d8a40089e7_1024x886.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_o_u!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc80c936d-0c02-4fe5-a142-27d8a40089e7_1024x886.webp" width="800" height="692" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c80c936d-0c02-4fe5-a142-27d8a40089e7_1024x886.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:692,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Segment&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="Segment" title="Segment" srcset="https://substackcdn.com/image/fetch/$s_!_o_u!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc80c936d-0c02-4fe5-a142-27d8a40089e7_1024x886.webp 424w, https://substackcdn.com/image/fetch/$s_!_o_u!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc80c936d-0c02-4fe5-a142-27d8a40089e7_1024x886.webp 848w, https://substackcdn.com/image/fetch/$s_!_o_u!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc80c936d-0c02-4fe5-a142-27d8a40089e7_1024x886.webp 1272w, https://substackcdn.com/image/fetch/$s_!_o_u!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc80c936d-0c02-4fe5-a142-27d8a40089e7_1024x886.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>Amplitude &#8211; visualization and exploration</strong></h3><p>Amplitude is a data visualization platform made specifically for events. You can ingest your product events and build charts, dashboards, etc. It&#8217;s made mostly for non-technical teams, so you don&#8217;t need to write SQL to analyze your data; but as mentioned above, using SQL to analyze event streams isn&#8217;t exactly a walk in the park. Personally, I like using Amplitude for questions on the simpler side of things.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Kew0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd862e9bd-7817-4810-bdbf-19c34aefb4f0_1024x863.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Kew0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd862e9bd-7817-4810-bdbf-19c34aefb4f0_1024x863.webp 424w, https://substackcdn.com/image/fetch/$s_!Kew0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd862e9bd-7817-4810-bdbf-19c34aefb4f0_1024x863.webp 848w, https://substackcdn.com/image/fetch/$s_!Kew0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd862e9bd-7817-4810-bdbf-19c34aefb4f0_1024x863.webp 1272w, https://substackcdn.com/image/fetch/$s_!Kew0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd862e9bd-7817-4810-bdbf-19c34aefb4f0_1024x863.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Kew0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd862e9bd-7817-4810-bdbf-19c34aefb4f0_1024x863.webp" width="800" height="674" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d862e9bd-7817-4810-bdbf-19c34aefb4f0_1024x863.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:674,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Amplitude&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="Amplitude" title="Amplitude" srcset="https://substackcdn.com/image/fetch/$s_!Kew0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd862e9bd-7817-4810-bdbf-19c34aefb4f0_1024x863.webp 424w, https://substackcdn.com/image/fetch/$s_!Kew0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd862e9bd-7817-4810-bdbf-19c34aefb4f0_1024x863.webp 848w, https://substackcdn.com/image/fetch/$s_!Kew0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd862e9bd-7817-4810-bdbf-19c34aefb4f0_1024x863.webp 1272w, https://substackcdn.com/image/fetch/$s_!Kew0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd862e9bd-7817-4810-bdbf-19c34aefb4f0_1024x863.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>The nice thing about Amplitude is it lets you avoid the&nbsp;<em>transformation</em>&nbsp;step for certain questions. E.g. If you want to know what the most popular pages visited in your product are, you can just do that in the Amplitude UI, instead of needing your data team to build a table with that information. As mentioned though, for more complex explorations, this is probably not the tool.</p><h3><strong>FullStory / HotJar &#8211; session recording</strong></h3><p><a href="https://www.fullstory.com/">FullStory</a>&nbsp;and&nbsp;<a href="https://www.hotjar.com/">HotJar</a>&nbsp;are session recording tools: they look at the actions your users take and replay them to you, like you&#8217;re watching a video of their screen. Logistically, they&#8217;re not&nbsp;<em>actually</em>&nbsp;recording a user&#8217;s screen &#8211; that would be creepy &#8211; they&#8217;re instead looking at how the user&#8217;s actions impact the HTML of the page, and then rendering what we imagine that probably looked like when the user did it.&nbsp;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QNr3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fbcd182-76c5-490a-983a-459bbb5a51a7_1024x640.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QNr3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fbcd182-76c5-490a-983a-459bbb5a51a7_1024x640.webp 424w, https://substackcdn.com/image/fetch/$s_!QNr3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fbcd182-76c5-490a-983a-459bbb5a51a7_1024x640.webp 848w, https://substackcdn.com/image/fetch/$s_!QNr3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fbcd182-76c5-490a-983a-459bbb5a51a7_1024x640.webp 1272w, https://substackcdn.com/image/fetch/$s_!QNr3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fbcd182-76c5-490a-983a-459bbb5a51a7_1024x640.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QNr3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fbcd182-76c5-490a-983a-459bbb5a51a7_1024x640.webp" width="800" height="500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1fbcd182-76c5-490a-983a-459bbb5a51a7_1024x640.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;FullStory&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="FullStory" title="FullStory" srcset="https://substackcdn.com/image/fetch/$s_!QNr3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fbcd182-76c5-490a-983a-459bbb5a51a7_1024x640.webp 424w, https://substackcdn.com/image/fetch/$s_!QNr3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fbcd182-76c5-490a-983a-459bbb5a51a7_1024x640.webp 848w, https://substackcdn.com/image/fetch/$s_!QNr3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fbcd182-76c5-490a-983a-459bbb5a51a7_1024x640.webp 1272w, https://substackcdn.com/image/fetch/$s_!QNr3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fbcd182-76c5-490a-983a-459bbb5a51a7_1024x640.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>&#8203;&#8203;Since it&#8217;s mostly HTML tagging under the hood, you can filter for things like which page a user visited, what they clicked on, etc.</p><p>I have not heard of teams building this functionality on their own, but if you know of any, leave a comment on this post!</p><h3><strong>PostHog &#8211; full stack, everything</strong></h3><p>PostHog is probably the most unique tool here, because it obviates most of the need for&nbsp;<strong>the entire</strong>&nbsp;process of building a product analytics practice. Their product extends from&nbsp;<a href="https://posthog.com/docs/integrate/ingest-live-data#capture-user-events">event capture</a>&nbsp;all the way to visualization and exploration; they even have functionality around heatmaps and session recording, something you&#8217;d normally need to use Fullstory/HotJar for. Their bet is that product analytics should all happen in one place, and that non-technical teams should be empowered to answer&nbsp;<em>almost</em>&nbsp;<em>all</em>&nbsp;of their own questions, with little or no help needed.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!t_tg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68ef8d45-83a1-42a9-ac8d-6c95d3628ca7_1024x640.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!t_tg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68ef8d45-83a1-42a9-ac8d-6c95d3628ca7_1024x640.webp 424w, https://substackcdn.com/image/fetch/$s_!t_tg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68ef8d45-83a1-42a9-ac8d-6c95d3628ca7_1024x640.webp 848w, https://substackcdn.com/image/fetch/$s_!t_tg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68ef8d45-83a1-42a9-ac8d-6c95d3628ca7_1024x640.webp 1272w, https://substackcdn.com/image/fetch/$s_!t_tg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68ef8d45-83a1-42a9-ac8d-6c95d3628ca7_1024x640.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!t_tg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68ef8d45-83a1-42a9-ac8d-6c95d3628ca7_1024x640.webp" width="800" height="500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/68ef8d45-83a1-42a9-ac8d-6c95d3628ca7_1024x640.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;FullStory&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="FullStory" title="FullStory" srcset="https://substackcdn.com/image/fetch/$s_!t_tg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68ef8d45-83a1-42a9-ac8d-6c95d3628ca7_1024x640.webp 424w, https://substackcdn.com/image/fetch/$s_!t_tg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68ef8d45-83a1-42a9-ac8d-6c95d3628ca7_1024x640.webp 848w, https://substackcdn.com/image/fetch/$s_!t_tg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68ef8d45-83a1-42a9-ac8d-6c95d3628ca7_1024x640.webp 1272w, https://substackcdn.com/image/fetch/$s_!t_tg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68ef8d45-83a1-42a9-ac8d-6c95d3628ca7_1024x640.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>PostHog supports all kinds of visualizations &#8211; like&nbsp;<a href="https://posthog.com/product/funnels">funnels</a>,&nbsp;<a href="https://posthog.com/product/user-paths">user paths</a>, etc. &#8211; specifically built for product analytics. They even have support for&nbsp;<a href="https://posthog.com/product/feature-flags">feature flags</a>, where you release a new feature to a segment of your user base to test how they react to it. Perhaps the most interesting piece of the puzzle:&nbsp;<a href="https://github.com/PostHog/posthog">PostHog is open source</a>, which means it&#8217;s completely free to run on your own infrastructure (all other products on this list are paid and expensive).</p>]]></content:encoded></item><item><title><![CDATA[How do I become a more technical Product Manager?]]></title><description><![CDATA[A technical background is a superpower for product managers.]]></description><link>https://news.adityeah.in/p/how-do-i-become-a-more-technical-product-manager</link><guid isPermaLink="false">https://news.adityeah.in/p/how-do-i-become-a-more-technical-product-manager</guid><dc:creator><![CDATA[adityeah]]></dc:creator><pubDate>Fri, 17 Jan 2025 16:20:50 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/40890815-48e2-4e06-b907-59ae0e5de937_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_!OefM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3560b32c-3e94-44e9-a1f7-42c8c8657003_2831x1563.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OefM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3560b32c-3e94-44e9-a1f7-42c8c8657003_2831x1563.png 424w, https://substackcdn.com/image/fetch/$s_!OefM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3560b32c-3e94-44e9-a1f7-42c8c8657003_2831x1563.png 848w, https://substackcdn.com/image/fetch/$s_!OefM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3560b32c-3e94-44e9-a1f7-42c8c8657003_2831x1563.png 1272w, https://substackcdn.com/image/fetch/$s_!OefM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3560b32c-3e94-44e9-a1f7-42c8c8657003_2831x1563.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OefM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3560b32c-3e94-44e9-a1f7-42c8c8657003_2831x1563.png" width="1456" height="804" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3560b32c-3e94-44e9-a1f7-42c8c8657003_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;:213149,&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/171132824?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3560b32c-3e94-44e9-a1f7-42c8c8657003_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_!OefM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3560b32c-3e94-44e9-a1f7-42c8c8657003_2831x1563.png 424w, https://substackcdn.com/image/fetch/$s_!OefM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3560b32c-3e94-44e9-a1f7-42c8c8657003_2831x1563.png 848w, https://substackcdn.com/image/fetch/$s_!OefM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3560b32c-3e94-44e9-a1f7-42c8c8657003_2831x1563.png 1272w, https://substackcdn.com/image/fetch/$s_!OefM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3560b32c-3e94-44e9-a1f7-42c8c8657003_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>A technical background is a superpower for product managers. You&#8217;ll make better decisions, understand trade-offs, make more accurate estimates, and communicate with engineers with more confidence, while also creating more career opportunities for yourself. And now that AI is increasingly infused into products, it&#8217;s even more important that product managers understand the basics.</p><p>Building a strong foundation of technical skills improves your ability to bridge technical and business domains, uncover implementation issues before they&#8217;re in production, and improve your working relationships with your technical counterparts. This quick guide will help get you up to speed and start building your skills with hands-on practice.</p><h2><strong>Application architecture and APIs</strong></h2><p>Almost every software product is built with the same three parts:</p><ul><li><p>a client,</p></li><li><p>a server, and</p></li><li><p>a database.</p><p>Things can get a lot more complicated as you grow, but these fundamental ideas stay the same.<br>The client is your website or app that&#8217;s used by the end user.<br>The server processes requests from the client.<br>The database is your permanent storage of data.</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_!SCWB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6400aeba-75ee-4eef-810f-5175ee0071b4_906x500.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SCWB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6400aeba-75ee-4eef-810f-5175ee0071b4_906x500.png 424w, https://substackcdn.com/image/fetch/$s_!SCWB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6400aeba-75ee-4eef-810f-5175ee0071b4_906x500.png 848w, https://substackcdn.com/image/fetch/$s_!SCWB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6400aeba-75ee-4eef-810f-5175ee0071b4_906x500.png 1272w, https://substackcdn.com/image/fetch/$s_!SCWB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6400aeba-75ee-4eef-810f-5175ee0071b4_906x500.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SCWB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6400aeba-75ee-4eef-810f-5175ee0071b4_906x500.png" width="800" height="442" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6400aeba-75ee-4eef-810f-5175ee0071b4_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;API&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="API" title="API" srcset="https://substackcdn.com/image/fetch/$s_!SCWB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6400aeba-75ee-4eef-810f-5175ee0071b4_906x500.png 424w, https://substackcdn.com/image/fetch/$s_!SCWB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6400aeba-75ee-4eef-810f-5175ee0071b4_906x500.png 848w, https://substackcdn.com/image/fetch/$s_!SCWB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6400aeba-75ee-4eef-810f-5175ee0071b4_906x500.png 1272w, https://substackcdn.com/image/fetch/$s_!SCWB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6400aeba-75ee-4eef-810f-5175ee0071b4_906x500.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Your client communicates with your server through an application programming interface, or API.</p><h2><strong>What is an API?</strong></h2><p>For most software product managers, we&#8217;re talking about web APIs. This is the front door to your server that allows other applications to access data or trigger events.</p><p>APIs are everywhere&#8212;<a href="https://developers.facebook.com/docs/#">Meta</a>,&nbsp;<a href="https://www.etsy.com/developers/documentation/getting_started/api_basics">Etsy</a>,&nbsp;<a href="https://openai.com/product">OpenAI</a>,&nbsp;<a href="https://developer.citi.com/">your bank</a>,&nbsp;<a href="https://open.epic.com/">your doctor</a>,&nbsp;<a href="https://openweathermap.org/api">the weather</a>. These kinds of public APIs are meant to be used by developers outside of the company that built them. Anyone who has permission can start making API calls to get data, submit new information, or even interact with AI.&nbsp;</p><p>APIs can also be private. These are intended to be used only within that application or product (versus by third parties).</p><p>As a quick example, let&#8217;s look at how Airbnb might fetch listings to show you when you search for Toronto.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JLeU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03c0ef25-ab1c-4172-a86a-a06c359354df_906x500.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JLeU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03c0ef25-ab1c-4172-a86a-a06c359354df_906x500.png 424w, https://substackcdn.com/image/fetch/$s_!JLeU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03c0ef25-ab1c-4172-a86a-a06c359354df_906x500.png 848w, https://substackcdn.com/image/fetch/$s_!JLeU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03c0ef25-ab1c-4172-a86a-a06c359354df_906x500.png 1272w, https://substackcdn.com/image/fetch/$s_!JLeU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03c0ef25-ab1c-4172-a86a-a06c359354df_906x500.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JLeU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03c0ef25-ab1c-4172-a86a-a06c359354df_906x500.png" width="800" height="442" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/03c0ef25-ab1c-4172-a86a-a06c359354df_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;API 2&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="API 2" title="API 2" srcset="https://substackcdn.com/image/fetch/$s_!JLeU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03c0ef25-ab1c-4172-a86a-a06c359354df_906x500.png 424w, https://substackcdn.com/image/fetch/$s_!JLeU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03c0ef25-ab1c-4172-a86a-a06c359354df_906x500.png 848w, https://substackcdn.com/image/fetch/$s_!JLeU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03c0ef25-ab1c-4172-a86a-a06c359354df_906x500.png 1272w, https://substackcdn.com/image/fetch/$s_!JLeU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03c0ef25-ab1c-4172-a86a-a06c359354df_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>Breaking this down, we can see that:</p><ol><li><p>The client sends a request to&nbsp;<em><strong>listings&nbsp;</strong></em>at the URL&nbsp;<em><strong>api.airbnb.com&nbsp;</strong></em>and specifies the location as&nbsp;<em><strong>Toronto</strong></em></p></li><li><p>The server gets the listings in Toronto from the database</p></li><li><p>The database returns listings to the server</p></li><li><p>The server returns listings to the client</p></li></ol><h2><strong>Wait, so what exactly is the API?</strong></h2><p>Is the API the server? Kind of. As we said above, the API is the server&#8217;s front door&#8212;it&#8217;s the set of actions that are available to clients. The API (hosted on a server) will either process the request itself or pass it downstream to be processed.</p><p>Going back to our Airbnb example, in addition to fetching Listings, you could imagine the API also allows a client to access Users, Bookings, Prices, and more. We commonly call these&nbsp;<strong>endpoints</strong>&nbsp;or&nbsp;<strong>resources</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_!9YeX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8625280c-6321-4939-a900-6d838908a1b9_906x500.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9YeX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8625280c-6321-4939-a900-6d838908a1b9_906x500.png 424w, https://substackcdn.com/image/fetch/$s_!9YeX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8625280c-6321-4939-a900-6d838908a1b9_906x500.png 848w, https://substackcdn.com/image/fetch/$s_!9YeX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8625280c-6321-4939-a900-6d838908a1b9_906x500.png 1272w, https://substackcdn.com/image/fetch/$s_!9YeX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8625280c-6321-4939-a900-6d838908a1b9_906x500.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9YeX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8625280c-6321-4939-a900-6d838908a1b9_906x500.png" width="800" height="442" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8625280c-6321-4939-a900-6d838908a1b9_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;API 3&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="API 3" title="API 3" srcset="https://substackcdn.com/image/fetch/$s_!9YeX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8625280c-6321-4939-a900-6d838908a1b9_906x500.png 424w, https://substackcdn.com/image/fetch/$s_!9YeX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8625280c-6321-4939-a900-6d838908a1b9_906x500.png 848w, https://substackcdn.com/image/fetch/$s_!9YeX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8625280c-6321-4939-a900-6d838908a1b9_906x500.png 1272w, https://substackcdn.com/image/fetch/$s_!9YeX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8625280c-6321-4939-a900-6d838908a1b9_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 take a look at another example: OpenAI. OpenAI supports a wide range of actions via their API. You can create images, transcribe audio, and get chat responses. Here&#8217;s what their API endpoints look like:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!q1gC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc19b3a54-8666-410e-b381-3605bdbfcad2_906x500.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!q1gC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc19b3a54-8666-410e-b381-3605bdbfcad2_906x500.png 424w, https://substackcdn.com/image/fetch/$s_!q1gC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc19b3a54-8666-410e-b381-3605bdbfcad2_906x500.png 848w, https://substackcdn.com/image/fetch/$s_!q1gC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc19b3a54-8666-410e-b381-3605bdbfcad2_906x500.png 1272w, https://substackcdn.com/image/fetch/$s_!q1gC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc19b3a54-8666-410e-b381-3605bdbfcad2_906x500.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!q1gC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc19b3a54-8666-410e-b381-3605bdbfcad2_906x500.png" width="800" height="442" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c19b3a54-8666-410e-b381-3605bdbfcad2_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;API 4&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="API 4" title="API 4" srcset="https://substackcdn.com/image/fetch/$s_!q1gC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc19b3a54-8666-410e-b381-3605bdbfcad2_906x500.png 424w, https://substackcdn.com/image/fetch/$s_!q1gC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc19b3a54-8666-410e-b381-3605bdbfcad2_906x500.png 848w, https://substackcdn.com/image/fetch/$s_!q1gC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc19b3a54-8666-410e-b381-3605bdbfcad2_906x500.png 1272w, https://substackcdn.com/image/fetch/$s_!q1gC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc19b3a54-8666-410e-b381-3605bdbfcad2_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>OpenAI has organized their API into a few groups&#8212;images, chat, and audio. Within each, there are a few endpoints that allow you to take different actions.</p><h2><strong>What are some common patterns with APIs?</strong></h2><p>Once you understand a few basic patterns with APIs, you&#8217;ll be able to breeze through technical documentation in no time.</p><p>First, there are three main types of APIs:</p><ul><li><p><strong>SOAP:</strong>&nbsp;This is a legacy design, still used mostly in health care and financial services.</p></li><li><p><strong>REST:</strong>&nbsp;This is the most popular design pattern; we&#8217;ll get into more details below.</p></li><li><p><strong>GraphQL:</strong>&nbsp;This is a newer design created at Meta, most commonly used in private APIs within your own application. It uses the same request types but in different ways.</p></li></ul><p>As mentioned, REST is by far the most popular design for APIs. It supports many different request types, but there are two we&#8217;ll focus on today&#8212;GET and POST.</p><h4><strong>GET requests</strong></h4><p>GET requests do what you think they would: get stuff. Every time you open a web page, your browser sends a GET request to the server at the URL you&#8217;ve entered and the server returns some content to be rendered.</p><p>In its simplest form, this content can be an HTML file that your browser displays, or it can be a more complex format that needs to be interpreted, like JSON.</p><p>Let&#8217;s update our Airbnb example above to specify the request type.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!M1Fl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05bd0cc8-76a8-4e85-a9a4-3383b1789803_906x500.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!M1Fl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05bd0cc8-76a8-4e85-a9a4-3383b1789803_906x500.png 424w, https://substackcdn.com/image/fetch/$s_!M1Fl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05bd0cc8-76a8-4e85-a9a4-3383b1789803_906x500.png 848w, https://substackcdn.com/image/fetch/$s_!M1Fl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05bd0cc8-76a8-4e85-a9a4-3383b1789803_906x500.png 1272w, https://substackcdn.com/image/fetch/$s_!M1Fl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05bd0cc8-76a8-4e85-a9a4-3383b1789803_906x500.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!M1Fl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05bd0cc8-76a8-4e85-a9a4-3383b1789803_906x500.png" width="800" height="442" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/05bd0cc8-76a8-4e85-a9a4-3383b1789803_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_!M1Fl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05bd0cc8-76a8-4e85-a9a4-3383b1789803_906x500.png 424w, https://substackcdn.com/image/fetch/$s_!M1Fl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05bd0cc8-76a8-4e85-a9a4-3383b1789803_906x500.png 848w, https://substackcdn.com/image/fetch/$s_!M1Fl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05bd0cc8-76a8-4e85-a9a4-3383b1789803_906x500.png 1272w, https://substackcdn.com/image/fetch/$s_!M1Fl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05bd0cc8-76a8-4e85-a9a4-3383b1789803_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>Now we can see that we&#8217;re sending a&nbsp;<em><strong>GET</strong></em>&nbsp;request to the&nbsp;<em><strong>/listings</strong></em>&nbsp;endpoint. We also specified that we only want listings in&nbsp;<em><strong>Toronto</strong></em>.</p><p>Let&#8217;s break the request down into its components:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!b8AY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f264870-e7bb-42a0-96e8-9001a9808ada_906x500.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!b8AY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f264870-e7bb-42a0-96e8-9001a9808ada_906x500.png 424w, https://substackcdn.com/image/fetch/$s_!b8AY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f264870-e7bb-42a0-96e8-9001a9808ada_906x500.png 848w, https://substackcdn.com/image/fetch/$s_!b8AY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f264870-e7bb-42a0-96e8-9001a9808ada_906x500.png 1272w, https://substackcdn.com/image/fetch/$s_!b8AY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f264870-e7bb-42a0-96e8-9001a9808ada_906x500.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!b8AY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f264870-e7bb-42a0-96e8-9001a9808ada_906x500.png" width="800" height="442" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1f264870-e7bb-42a0-96e8-9001a9808ada_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_!b8AY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f264870-e7bb-42a0-96e8-9001a9808ada_906x500.png 424w, https://substackcdn.com/image/fetch/$s_!b8AY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f264870-e7bb-42a0-96e8-9001a9808ada_906x500.png 848w, https://substackcdn.com/image/fetch/$s_!b8AY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f264870-e7bb-42a0-96e8-9001a9808ada_906x500.png 1272w, https://substackcdn.com/image/fetch/$s_!b8AY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f264870-e7bb-42a0-96e8-9001a9808ada_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><ol><li><p><strong>Base URL:</strong> The &#8220;home&#8221; for all API endpoints</p></li><li><p><strong>Endpoint:</strong>&nbsp;The specific resource we want to access</p></li><li><p><strong>Query parameter:</strong>&nbsp;Additional data passed in with our requests<br><br></p><h4><strong>POST requests</strong></h4><p>POST requests are used to submit new data to the server. For example, we would use a POST request on Open AI&#8217;s&nbsp;<em><strong>/images/generations</strong></em>&nbsp;endpoint to create a new image.&nbsp;</p><p>We would also include a&nbsp;<em><strong>body</strong></em>&nbsp;with the request, which contains data to be processed by the server. Here&#8217;s what that might look like:</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_!nOpM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa55aa0cd-39ba-4482-b0d5-2c2e1617cb64_906x500.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nOpM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa55aa0cd-39ba-4482-b0d5-2c2e1617cb64_906x500.png 424w, https://substackcdn.com/image/fetch/$s_!nOpM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa55aa0cd-39ba-4482-b0d5-2c2e1617cb64_906x500.png 848w, https://substackcdn.com/image/fetch/$s_!nOpM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa55aa0cd-39ba-4482-b0d5-2c2e1617cb64_906x500.png 1272w, https://substackcdn.com/image/fetch/$s_!nOpM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa55aa0cd-39ba-4482-b0d5-2c2e1617cb64_906x500.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nOpM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa55aa0cd-39ba-4482-b0d5-2c2e1617cb64_906x500.png" width="800" height="442" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a55aa0cd-39ba-4482-b0d5-2c2e1617cb64_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_!nOpM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa55aa0cd-39ba-4482-b0d5-2c2e1617cb64_906x500.png 424w, https://substackcdn.com/image/fetch/$s_!nOpM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa55aa0cd-39ba-4482-b0d5-2c2e1617cb64_906x500.png 848w, https://substackcdn.com/image/fetch/$s_!nOpM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa55aa0cd-39ba-4482-b0d5-2c2e1617cb64_906x500.png 1272w, https://substackcdn.com/image/fetch/$s_!nOpM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa55aa0cd-39ba-4482-b0d5-2c2e1617cb64_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>As long as we have access, OpenAI will respond to this request with the cutest baby sea otter you&#8217;ve ever seen.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!93Kj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a71ed68-8f16-4dab-b908-d7a18b33d11e_1024x1024.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!93Kj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a71ed68-8f16-4dab-b908-d7a18b33d11e_1024x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!93Kj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a71ed68-8f16-4dab-b908-d7a18b33d11e_1024x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!93Kj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a71ed68-8f16-4dab-b908-d7a18b33d11e_1024x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!93Kj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a71ed68-8f16-4dab-b908-d7a18b33d11e_1024x1024.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!93Kj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a71ed68-8f16-4dab-b908-d7a18b33d11e_1024x1024.jpeg" width="800" height="800" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4a71ed68-8f16-4dab-b908-d7a18b33d11e_1024x1024.jpeg&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;Sea Otter&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="Sea Otter" title="Sea Otter" srcset="https://substackcdn.com/image/fetch/$s_!93Kj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a71ed68-8f16-4dab-b908-d7a18b33d11e_1024x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!93Kj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a71ed68-8f16-4dab-b908-d7a18b33d11e_1024x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!93Kj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a71ed68-8f16-4dab-b908-d7a18b33d11e_1024x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!93Kj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a71ed68-8f16-4dab-b908-d7a18b33d11e_1024x1024.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>Remember that text-to-speech example with an AI-generated voice that we got from OpenAI&#8217;s API? Well, that was a POST request.</p><p>To generate this, we sent a POST request to&nbsp;<em><strong>https://api.openai.com/v1/audio/speech&nbsp;</strong></em>with the following body:</p><pre><code>&#9;&#9;&#9;&#9;
&#9;&#9;&#9;&#9;&#9;{
    "model": "tts-1",
    "input": "Did you know subscribers to Lenny's Newsletter get exclusive discounts with partners? Pretty cool! And there's a Slack channel!",
    "voice": "alloy"
  }
&#9;&#9;&#9;&#9;
&#9;&#9;&#9;</code></pre><p>In response to this request, the API sends back an MP3 file with the text-to-speech phrase.</p><h2><strong>How can I practice?</strong></h2><p>Want to try a request for yourself? Follow along to generate your own images using DALL-E and OpenAI&#8217;s API.</p><ol><li><p>Sign up for an API account at&nbsp;<a href="https://platform.openai.com/signup">https://platform.openai.com/signup&nbsp;</a></p></li><li><p>Navigate to API Keys. Verify your account and create your first API key. Make sure you copy it!</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_!bCNR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea10238-09d5-4e2b-8ff2-d919220c522d_1024x426.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bCNR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea10238-09d5-4e2b-8ff2-d919220c522d_1024x426.jpeg 424w, https://substackcdn.com/image/fetch/$s_!bCNR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea10238-09d5-4e2b-8ff2-d919220c522d_1024x426.jpeg 848w, https://substackcdn.com/image/fetch/$s_!bCNR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea10238-09d5-4e2b-8ff2-d919220c522d_1024x426.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!bCNR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea10238-09d5-4e2b-8ff2-d919220c522d_1024x426.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bCNR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea10238-09d5-4e2b-8ff2-d919220c522d_1024x426.jpeg" width="800" height="333" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9ea10238-09d5-4e2b-8ff2-d919220c522d_1024x426.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:333,&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_!bCNR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea10238-09d5-4e2b-8ff2-d919220c522d_1024x426.jpeg 424w, https://substackcdn.com/image/fetch/$s_!bCNR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea10238-09d5-4e2b-8ff2-d919220c522d_1024x426.jpeg 848w, https://substackcdn.com/image/fetch/$s_!bCNR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea10238-09d5-4e2b-8ff2-d919220c522d_1024x426.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!bCNR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea10238-09d5-4e2b-8ff2-d919220c522d_1024x426.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><ol start="3"><li><p>Using&nbsp;<a href="https://www.postman.com/">Postman</a>&nbsp;or a web-based API request tool (<a href="https://stackblitz.com/edit/github-18edst?embed=1&amp;file=README.md&amp;hideExplorer=1&amp;view=preview">here&#8217;s a free one</a>), make a POST request to&nbsp;<strong><a href="https://api.openai.com/v1/images/generations">https://api.openai.com/v1/images/generations</a></strong></p></li><li><p>Add the following Headers</p><ol><li><p>Authorization: Bearer [your-api-key]</p></li><li><p>Content-Type: application/json</p></li></ol></li></ol><ol start="5"><li><p>Add the following body in JSON</p></li></ol><pre><code>&#9;&#9;&#9;&#9;
&#9;&#9;&#9;&#9;&#9;{
    "model": "dall-e-3",
    "prompt": "A cute baby sea otter",
    "n": 1,
    "size": "1024x1024"
  }
&#9;&#9;&#9;&#9;
&#9;&#9;&#9;</code></pre><ol start="6"><li><p>Send your request!</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_!RMew!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5392ffc-c274-4a84-9e68-574a32451a43_1024x554.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RMew!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5392ffc-c274-4a84-9e68-574a32451a43_1024x554.png 424w, https://substackcdn.com/image/fetch/$s_!RMew!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5392ffc-c274-4a84-9e68-574a32451a43_1024x554.png 848w, https://substackcdn.com/image/fetch/$s_!RMew!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5392ffc-c274-4a84-9e68-574a32451a43_1024x554.png 1272w, https://substackcdn.com/image/fetch/$s_!RMew!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5392ffc-c274-4a84-9e68-574a32451a43_1024x554.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RMew!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5392ffc-c274-4a84-9e68-574a32451a43_1024x554.png" width="800" height="433" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c5392ffc-c274-4a84-9e68-574a32451a43_1024x554.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:433,&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_!RMew!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5392ffc-c274-4a84-9e68-574a32451a43_1024x554.png 424w, https://substackcdn.com/image/fetch/$s_!RMew!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5392ffc-c274-4a84-9e68-574a32451a43_1024x554.png 848w, https://substackcdn.com/image/fetch/$s_!RMew!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5392ffc-c274-4a84-9e68-574a32451a43_1024x554.png 1272w, https://substackcdn.com/image/fetch/$s_!RMew!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5392ffc-c274-4a84-9e68-574a32451a43_1024x554.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>]]></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><item><title><![CDATA[What Is API-First? Unveiling the Technical and Business Perspectives]]></title><description><![CDATA[In today&#8217;s fast-evolving tech landscape, the API-first approach is making waves across industries.]]></description><link>https://news.adityeah.in/p/what-is-api-first-unveiling-the-technical-and-business-perspectives</link><guid isPermaLink="false">https://news.adityeah.in/p/what-is-api-first-unveiling-the-technical-and-business-perspectives</guid><dc:creator><![CDATA[adityeah]]></dc:creator><pubDate>Wed, 15 Jan 2025 16:02:44 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/7a22ca26-f3fa-4e24-9b47-79967f2ca76f_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_!RD0p!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbee1287c-887f-4a61-b73b-0ff250a843f5_2831x1563.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RD0p!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbee1287c-887f-4a61-b73b-0ff250a843f5_2831x1563.png 424w, https://substackcdn.com/image/fetch/$s_!RD0p!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbee1287c-887f-4a61-b73b-0ff250a843f5_2831x1563.png 848w, https://substackcdn.com/image/fetch/$s_!RD0p!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbee1287c-887f-4a61-b73b-0ff250a843f5_2831x1563.png 1272w, https://substackcdn.com/image/fetch/$s_!RD0p!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbee1287c-887f-4a61-b73b-0ff250a843f5_2831x1563.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RD0p!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbee1287c-887f-4a61-b73b-0ff250a843f5_2831x1563.png" width="1456" height="804" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bee1287c-887f-4a61-b73b-0ff250a843f5_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;:179695,&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/171132822?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbee1287c-887f-4a61-b73b-0ff250a843f5_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_!RD0p!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbee1287c-887f-4a61-b73b-0ff250a843f5_2831x1563.png 424w, https://substackcdn.com/image/fetch/$s_!RD0p!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbee1287c-887f-4a61-b73b-0ff250a843f5_2831x1563.png 848w, https://substackcdn.com/image/fetch/$s_!RD0p!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbee1287c-887f-4a61-b73b-0ff250a843f5_2831x1563.png 1272w, https://substackcdn.com/image/fetch/$s_!RD0p!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbee1287c-887f-4a61-b73b-0ff250a843f5_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&#8217;s fast-evolving tech landscape, the API-first approach is making waves across industries. This isn&#8217;t just a trend&#8212;it&#8217;s a transformative strategy that&#8217;s reshaping how companies design, develop, and deliver software solutions. The data speaks for itself: more than 60 API-first companies in 2022 raised $50 million or more in funding, while API-first businesses collectively raised $14 billion. By 2030, experts predict that we&#8217;ll see around <strong>1.7 billion active APIs</strong>, underlining their central role in the digital economy.</p><p>But what does &#8220;API-first&#8221; actually mean? Why is it so important for businesses today? And how can adopting this approach give organizations a competitive edge? Let&#8217;s dive into the technical and business dimensions of API-first development and uncover why it&#8217;s becoming a cornerstone of modern software architecture.</p><h3><strong>What Does API-First Mean?</strong></h3><p>To understand the API-first approach, it&#8217;s essential to grasp the concept of an API itself. An API, or <strong>Application Programming Interface</strong>, is a set of rules and protocols that allows different software applications to communicate with each other. APIs are like the bridges connecting apps, enabling them to exchange data and work together.</p><p>One of the most familiar examples is <strong>social media logins</strong>. Ever used a website that allows you to log in using Google, Facebook, or Apple? That&#8217;s an API at work, seamlessly connecting your social media account to the website you&#8217;re accessing.</p><p>In the API-first development model, APIs aren&#8217;t treated as afterthoughts. Instead, they are prioritized from the very beginning of the development process. This approach is rooted in the idea that APIs should be at the core of how software is designed and built, ensuring that applications are not just functional but also scalable, interoperable, and ready for 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_!oBHl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8382ee86-c3b9-4f16-8cb3-5c2da9afecf7_1024x564.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oBHl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8382ee86-c3b9-4f16-8cb3-5c2da9afecf7_1024x564.png 424w, https://substackcdn.com/image/fetch/$s_!oBHl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8382ee86-c3b9-4f16-8cb3-5c2da9afecf7_1024x564.png 848w, https://substackcdn.com/image/fetch/$s_!oBHl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8382ee86-c3b9-4f16-8cb3-5c2da9afecf7_1024x564.png 1272w, https://substackcdn.com/image/fetch/$s_!oBHl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8382ee86-c3b9-4f16-8cb3-5c2da9afecf7_1024x564.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oBHl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8382ee86-c3b9-4f16-8cb3-5c2da9afecf7_1024x564.png" width="800" height="441" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8382ee86-c3b9-4f16-8cb3-5c2da9afecf7_1024x564.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:441,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;API-first development and its advantages&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="API-first development and its advantages" title="API-first development and its advantages" srcset="https://substackcdn.com/image/fetch/$s_!oBHl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8382ee86-c3b9-4f16-8cb3-5c2da9afecf7_1024x564.png 424w, https://substackcdn.com/image/fetch/$s_!oBHl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8382ee86-c3b9-4f16-8cb3-5c2da9afecf7_1024x564.png 848w, https://substackcdn.com/image/fetch/$s_!oBHl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8382ee86-c3b9-4f16-8cb3-5c2da9afecf7_1024x564.png 1272w, https://substackcdn.com/image/fetch/$s_!oBHl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8382ee86-c3b9-4f16-8cb3-5c2da9afecf7_1024x564.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3><strong>The API-First Approach: Technical and Business Perspectives</strong></h3><p>The API-first methodology benefits both developers and businesses. Let&#8217;s explore these advantages from two key viewpoints.</p><div><hr></div><h4><strong>1. Technical Perspective: A Developer&#8217;s Dream</strong></h4><p>From a technical standpoint, the API-first approach is about creating software that&#8217;s modular, interconnected, and future-proof. Here&#8217;s why it matters:</p><ul><li><p><strong>Seamless Integration and Connectivity</strong><br>APIs act as the glue between different software components. Whether you&#8217;re building microservices or integrating third-party platforms, APIs ensure smooth communication and data sharing. This modularity makes it easier to assemble complex systems from smaller, reusable components.</p></li><li><p><strong>Cross-Platform Compatibility</strong><br>APIs are designed to work seamlessly across devices and platforms, ensuring that software can cater to diverse user bases. Whether it&#8217;s a mobile app, a web application, or even IoT devices, APIs enable consistent experiences.</p></li><li><p><strong>Scalability and Flexibility</strong><br>As businesses grow, so do their software requirements. APIs enable developers to scale systems by adding or updating components without disrupting the entire ecosystem. This adaptability is crucial in accommodating larger user bases and evolving business needs.</p></li><li><p><strong>Enhanced User Experiences Through Data Integration</strong><br>APIs can pull data and features from various sources, creating applications that deliver richer, more dynamic user experiences. For example, a travel app can combine flight data, hotel availability, and weather forecasts&#8212;all through APIs.</p></li></ul><div><hr></div><h4><strong>2. Business Perspective: Unlocking New Opportunities</strong></h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1OFh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefff1ec4-6dd5-4028-8214-dec14288fb3a_1600x847.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1OFh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefff1ec4-6dd5-4028-8214-dec14288fb3a_1600x847.webp 424w, https://substackcdn.com/image/fetch/$s_!1OFh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefff1ec4-6dd5-4028-8214-dec14288fb3a_1600x847.webp 848w, https://substackcdn.com/image/fetch/$s_!1OFh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefff1ec4-6dd5-4028-8214-dec14288fb3a_1600x847.webp 1272w, https://substackcdn.com/image/fetch/$s_!1OFh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefff1ec4-6dd5-4028-8214-dec14288fb3a_1600x847.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1OFh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefff1ec4-6dd5-4028-8214-dec14288fb3a_1600x847.webp" width="1456" height="771" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/efff1ec4-6dd5-4028-8214-dec14288fb3a_1600x847.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:771,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:89794,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://adityeah.substack.com/i/171132822?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefff1ec4-6dd5-4028-8214-dec14288fb3a_1600x847.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1OFh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefff1ec4-6dd5-4028-8214-dec14288fb3a_1600x847.webp 424w, https://substackcdn.com/image/fetch/$s_!1OFh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefff1ec4-6dd5-4028-8214-dec14288fb3a_1600x847.webp 848w, https://substackcdn.com/image/fetch/$s_!1OFh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefff1ec4-6dd5-4028-8214-dec14288fb3a_1600x847.webp 1272w, https://substackcdn.com/image/fetch/$s_!1OFh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefff1ec4-6dd5-4028-8214-dec14288fb3a_1600x847.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>The API-first approach isn&#8217;t just a technical strategy&#8212;it&#8217;s a powerful business enabler. Companies like <strong>Stripe</strong>, <strong>Twilio</strong>, and <strong>AssemblyAI</strong> have demonstrated how API-first can drive growth and innovation. Here&#8217;s how it works:</p><ul><li><p><strong>Monetization Opportunities</strong><br>APIs can be a revenue stream in themselves. Companies can charge for API usage, offer premium features, or establish partnerships with other businesses that rely on their APIs. For instance, <strong>Stripe&#8217;s APIs</strong> power payment systems globally, generating significant revenue.</p></li><li><p><strong>Expanding Market Reach</strong><br>APIs enable third-party developers to build applications and services on top of your platform. This creates a developer ecosystem and helps your business expand its market presence. Think about how platforms like <strong>Twilio</strong> have become indispensable to developers building communication tools.</p></li><li><p><strong>Faster Time-to-Market</strong><br>With APIs, companies can reuse existing software components, reducing development time. This allows startups and businesses to bring products to market faster, staying ahead of competitors.</p></li><li><p><strong>Competitive Edge Through Integration</strong><br>In today&#8217;s software landscape, customers expect tools that integrate seamlessly with others. API-first companies are better positioned to meet this demand, providing superior integration options that attract and retain clients.</p></li><li><p><strong>Agility and Innovation</strong><br>By prioritizing APIs, companies can quickly adapt to changing market conditions. APIs enable businesses to iterate and innovate faster, ensuring they stay relevant in dynamic industries.</p></li></ul><h2><strong>Key industries for API-first development</strong></h2><p>While the API-first approach can bring value across various domains, here are sectors where this approach is especially beneficial.&nbsp;</p><h3>Healthcare</h3><p>In healthcare, APIs are crucial for bringing together multiple players and ensuring the data is shared between them in an accessible and secure manner.</p><ul><li><p>Healthcare organizations must securely transmit electronic health records (EHRs) and patient information among various providers, insurers, and systems. API-first integration ensures the&nbsp;<strong>seamless and secure exchange of medical data</strong>, improving patient care coordination.&nbsp;</p></li><li><p>More than that, APIs enable&nbsp;<strong>the integrating</strong>&nbsp;of disparate healthcare systems, such as electronic medical record (EMR) systems, telehealth platforms, and diagnostic equipment. APIs also empower developers to create&nbsp;<strong>innovative healthcare applications</strong>, including mobile health (mHealth) apps, remote patient monitoring solutions, and telemedicine platforms. These applications can transform the way patients access care and manage their health.&nbsp;</p></li></ul><p>For example, <a href="https://www.shmsolutions.in/">SmartHMS</a>, an EHR provider, offers APIs that allow healthcare organizations to integrate patient data seamlessly. This enables healthcare providers to access patient records, exchange information securely, and improve care coordination.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!91Rz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b7ad70a-785e-4912-919e-11a4693f7bb1_1600x843.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!91Rz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b7ad70a-785e-4912-919e-11a4693f7bb1_1600x843.webp 424w, https://substackcdn.com/image/fetch/$s_!91Rz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b7ad70a-785e-4912-919e-11a4693f7bb1_1600x843.webp 848w, https://substackcdn.com/image/fetch/$s_!91Rz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b7ad70a-785e-4912-919e-11a4693f7bb1_1600x843.webp 1272w, https://substackcdn.com/image/fetch/$s_!91Rz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b7ad70a-785e-4912-919e-11a4693f7bb1_1600x843.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!91Rz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b7ad70a-785e-4912-919e-11a4693f7bb1_1600x843.webp" width="1456" height="767" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8b7ad70a-785e-4912-919e-11a4693f7bb1_1600x843.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:767,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:51804,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://adityeah.substack.com/i/171132822?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b7ad70a-785e-4912-919e-11a4693f7bb1_1600x843.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!91Rz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b7ad70a-785e-4912-919e-11a4693f7bb1_1600x843.webp 424w, https://substackcdn.com/image/fetch/$s_!91Rz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b7ad70a-785e-4912-919e-11a4693f7bb1_1600x843.webp 848w, https://substackcdn.com/image/fetch/$s_!91Rz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b7ad70a-785e-4912-919e-11a4693f7bb1_1600x843.webp 1272w, https://substackcdn.com/image/fetch/$s_!91Rz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b7ad70a-785e-4912-919e-11a4693f7bb1_1600x843.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>Banking and finance</strong></h2><p>The financial industry relies heavily on data and transactions, making the API-first approach beneficial for improving services and operations.</p><ul><li><p>API-first strategies are at the heart of&nbsp;<strong>open banking</strong>&nbsp;initiatives, enabling financial institutions to expose their services and data to third-party developers securely. This encourages the creation of new financial products, and enhances customer experiences.</p></li><li><p>APIs facilitate&nbsp;<strong>real-time access to financial data</strong>, enabling customers to view account balances, conduct transactions, and receive alerts instantly. This real-time capability is essential for online banking and&nbsp;mobile banking applications.</p></li><li><p><strong>APIs can be used for fraud detection and prevention services</strong>, enhancing security in financial transactions, and enabling rapid detection of suspicious activities and help mitigate fraud risks.</p></li></ul><p>The most notable example here is, of course, <a href="https://razorpay.com/">Razorpay</a>. Razorpay's API-first approach revolutionized online payments. Its APIs enable businesses to integrate payment processing into their websites and apps seamlessly, simplifying the checkout process and enhancing the user experience.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rgEz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb2da505-d668-4e5a-88f8-4b95a6687a27_1600x861.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rgEz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb2da505-d668-4e5a-88f8-4b95a6687a27_1600x861.webp 424w, https://substackcdn.com/image/fetch/$s_!rgEz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb2da505-d668-4e5a-88f8-4b95a6687a27_1600x861.webp 848w, https://substackcdn.com/image/fetch/$s_!rgEz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb2da505-d668-4e5a-88f8-4b95a6687a27_1600x861.webp 1272w, https://substackcdn.com/image/fetch/$s_!rgEz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb2da505-d668-4e5a-88f8-4b95a6687a27_1600x861.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rgEz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb2da505-d668-4e5a-88f8-4b95a6687a27_1600x861.webp" width="1456" height="784" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fb2da505-d668-4e5a-88f8-4b95a6687a27_1600x861.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:784,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:77500,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://adityeah.substack.com/i/171132822?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb2da505-d668-4e5a-88f8-4b95a6687a27_1600x861.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!rgEz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb2da505-d668-4e5a-88f8-4b95a6687a27_1600x861.webp 424w, https://substackcdn.com/image/fetch/$s_!rgEz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb2da505-d668-4e5a-88f8-4b95a6687a27_1600x861.webp 848w, https://substackcdn.com/image/fetch/$s_!rgEz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb2da505-d668-4e5a-88f8-4b95a6687a27_1600x861.webp 1272w, https://substackcdn.com/image/fetch/$s_!rgEz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb2da505-d668-4e5a-88f8-4b95a6687a27_1600x861.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>Travel and hospitality</strong></h2><p>This industry relies on seamless customer experiences, making the API-first approach invaluable for improving services and expanding offerings.</p><ul><li><p>APIs allow travel companies to easily connect users with airlines, hotels, car rental services, and other providers,&nbsp;<strong>streamlining the booking and reservation process</strong>,&nbsp;<strong>and offering customers a one-stop-shop for travel arrangements.</strong></p></li><li><p>By leveraging APIs, travel companies can access customer data and preferences, enabling them to offer&nbsp;<strong>personalized recommendations</strong>, travel itineraries, and loyalty rewards. This personalization enhances the overall travel experience.</p></li><li><p>APIs enable&nbsp;<strong>real-time access to pricing and availability&nbsp;</strong>information. Travel companies can adjust pricing based on demand and market conditions, maximizing their revenue and competitiveness.</p></li></ul><p>Amadeus provides APIs for travel booking and reservation systems. Airlines, hotels, and travel agencies can integrate their APIs to offer comprehensive travel booking and management services, improving the traveler's experience.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sEbh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb10201b1-585c-4b40-a5d1-a52ad37beac5_1600x791.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sEbh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb10201b1-585c-4b40-a5d1-a52ad37beac5_1600x791.webp 424w, https://substackcdn.com/image/fetch/$s_!sEbh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb10201b1-585c-4b40-a5d1-a52ad37beac5_1600x791.webp 848w, https://substackcdn.com/image/fetch/$s_!sEbh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb10201b1-585c-4b40-a5d1-a52ad37beac5_1600x791.webp 1272w, https://substackcdn.com/image/fetch/$s_!sEbh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb10201b1-585c-4b40-a5d1-a52ad37beac5_1600x791.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sEbh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb10201b1-585c-4b40-a5d1-a52ad37beac5_1600x791.webp" width="1456" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b10201b1-585c-4b40-a5d1-a52ad37beac5_1600x791.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:131398,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://adityeah.substack.com/i/171132822?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb10201b1-585c-4b40-a5d1-a52ad37beac5_1600x791.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!sEbh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb10201b1-585c-4b40-a5d1-a52ad37beac5_1600x791.webp 424w, https://substackcdn.com/image/fetch/$s_!sEbh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb10201b1-585c-4b40-a5d1-a52ad37beac5_1600x791.webp 848w, https://substackcdn.com/image/fetch/$s_!sEbh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb10201b1-585c-4b40-a5d1-a52ad37beac5_1600x791.webp 1272w, https://substackcdn.com/image/fetch/$s_!sEbh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb10201b1-585c-4b40-a5d1-a52ad37beac5_1600x791.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>API-first approach and UX design</strong></h2><p>When you think about&nbsp;launching a SaaS business, you should always keep user experience (UX) at the forefront. And going for an API-first design is no exception.&nbsp;</p><p>The API-first design and development allows for a more personalized and seamless user experience. For example, by combining API functionality with thoughtful UX design you can better&nbsp;<strong>address users&#8217; needs and preferences</strong>. APIs provide the data and functionalities necessary for a feature-rich application, while UX design ensures that these features are intuitive and user-friendly.&nbsp;</p><p>UX designers can also leverage APIs to&nbsp;<strong>streamline user journeys</strong>. For example, integrating geolocation APIs can enhance the user experience by providing location-based services, such as finding nearby stores or restaurants, letting users achieve their goals much easier.</p><p>Finally, the collaboration between API development teams and UX designers promotes&nbsp;<strong>an iterative approach to product development</strong>. Developers and designers rely on user feedback, as well as on each other's insights to continuously improve the product. </p>]]></content:encoded></item></channel></rss>