<?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[HosseiNotes]]></title><description><![CDATA[AI Engineering × Product Thinking × Business Value]]></description><link>https://hosseinotes.com</link><image><url>https://substackcdn.com/image/fetch/$s_!0TaG!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e8d13a-4731-473d-a79c-edaf91625e34_848x848.png</url><title>HosseiNotes</title><link>https://hosseinotes.com</link></image><generator>Substack</generator><lastBuildDate>Thu, 16 Apr 2026 20:05:46 GMT</lastBuildDate><atom:link href="https://hosseinotes.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Hossein]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[hosseinotes@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[hosseinotes@substack.com]]></itunes:email><itunes:name><![CDATA[Hossein]]></itunes:name></itunes:owner><itunes:author><![CDATA[Hossein]]></itunes:author><googleplay:owner><![CDATA[hosseinotes@substack.com]]></googleplay:owner><googleplay:email><![CDATA[hosseinotes@substack.com]]></googleplay:email><googleplay:author><![CDATA[Hossein]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Stop Learning AI the Wrong Way]]></title><description><![CDATA[Let&#8217;s Build Customer Support the Way Real Systems Are Built]]></description><link>https://hosseinotes.com/p/stop-learning-ai-the-wrong-way</link><guid isPermaLink="false">https://hosseinotes.com/p/stop-learning-ai-the-wrong-way</guid><dc:creator><![CDATA[Hossein]]></dc:creator><pubDate>Mon, 16 Feb 2026 07:00:36 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!5MaO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbfe84e9-e98a-435e-8a49-b86f377ca2a9_1536x1024.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_!5MaO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbfe84e9-e98a-435e-8a49-b86f377ca2a9_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5MaO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbfe84e9-e98a-435e-8a49-b86f377ca2a9_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!5MaO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbfe84e9-e98a-435e-8a49-b86f377ca2a9_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!5MaO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbfe84e9-e98a-435e-8a49-b86f377ca2a9_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!5MaO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbfe84e9-e98a-435e-8a49-b86f377ca2a9_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5MaO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbfe84e9-e98a-435e-8a49-b86f377ca2a9_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bbfe84e9-e98a-435e-8a49-b86f377ca2a9_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;:1947177,&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://hosseinotes.com/i/188057218?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbfe84e9-e98a-435e-8a49-b86f377ca2a9_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_!5MaO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbfe84e9-e98a-435e-8a49-b86f377ca2a9_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!5MaO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbfe84e9-e98a-435e-8a49-b86f377ca2a9_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!5MaO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbfe84e9-e98a-435e-8a49-b86f377ca2a9_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!5MaO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbfe84e9-e98a-435e-8a49-b86f377ca2a9_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>Welcome back to HosseiNotes &#128640;</p><p>Let me say something mildly rebellious.</p><p>I don&#8217;t think most of us were taught how to learn properly.</p><p>School trained us to memorize first and apply later.</p><p>That&#8217;s backwards.</p><p>You only really understand something when you&#8217;re trying to solve a real problem.<br>When there&#8217;s friction. When something actually depends on it.</p><p>Without that?</p><p>We&#8217;re just collecting shiny tools like Pok&#233;mon cards. &#127183;&#10024;</p><p>And that&#8217;s not education. That&#8217;s decoration!</p><p>AI education right now is a perfect example.</p><p>You&#8217;re shown:</p><ul><li><p>&#8220;Here&#8217;s RAG.&#8221;</p></li><li><p>&#8220;Here&#8217;s an agent.&#8221;</p></li><li><p>&#8220;Here&#8217;s today&#8217;s trending framework.&#8221;</p></li></ul><p>Cool.</p><p>But what problem are we solving?</p><p>So instead of:</p><p>&#8220;Let&#8217;s learn RAG because LinkedIn said so&#8230;&#8221;</p><p>We&#8217;re going to solve something real:</p><p><strong>Customer support chaos! </strong>&#128293;</p><p>The messy inbox. The &#8220;where do I send this?&#8221; ping-pong.<br>The endless Tier-1 tickets that burn time and patience.</p><p>If you&#8217;ve ever looked at a support P&amp;L, you know it&#8217;s ridiculously expensive, which makes it incredibly valuable to fix. &#128188;&#128293;</p><div><hr></div><h2>Why Customer Support Matters in 2026 &#128230;</h2><p>Customer support is margin compression.</p><p>Every ticket costs:</p><ul><li><p>human time &#9203;</p></li><li><p>context switching &#129504;</p></li><li><p>SLA pressure &#128201;</p></li><li><p>internal Slack messages like &#8220;any update?&#8221; &#128556;</p></li></ul><p>And here&#8217;s the quiet truth:</p><p>&#128073; 70&#8211;80% of Tier-1 tickets are repetitive and automatable.</p><p>Password resets.<br>Billing confusion.<br>&#8220;Where&#8217;s my invoice?&#8221;<br>&#8220;I was charged twice.&#8221;</p><p>Not complex problems.</p><p>Just expensive ones.</p><p>Speed = CSAT (Customer Satisfaction).<br>CSAT = retention.<br>Retention = revenue. &#128176;</p><p>And no CFO in history has said:</p><blockquote><p>&#8220;You know what we need? Slower support!&#8221;</p></blockquote><p>Support is a cost center.</p><p>But good triage?</p><p>That turns chaos into leverage. &#128640;</p><div><hr></div><h2>What We&#8217;re Actually Building &#127959;&#65039;</h2><p>We&#8217;re not building a chatbot.</p><p>We&#8217;re building a system that evolves.</p><p>And we&#8217;re not jumping straight to<br>&#8220;multi-agent quantum hyper-graph orchestration architecture v9.3&#8221; &#129327; (when all we needed was good triage &#128513;)</p><p>We climb the mountain properly.</p><p>Here&#8217;s the journey - fast and honest:</p><ul><li><p><strong>V0</strong>: Naive classifier - one prompt, feels magical&#8230; until it breaks.</p></li><li><p><strong>V1</strong>: Chained reasoning - smaller steps, less chaos&#8230; surprisingly powerful.</p></li><li><p><strong>V2</strong>: Intelligent routing - not every ticket deserves a human.</p></li><li><p><strong>V3</strong>: Tool use - fetch real order data instead of hallucinating refunds. (Yes, that happens.)</p></li><li><p><strong>V4</strong>: Memory - because users say &#8220;I tried that already.&#8221;</p></li><li><p><strong>V5</strong>: RAG - grounded answers from real docs.</p></li><li><p><strong>V6</strong>: Evals - because vibes are not metrics.</p></li><li><p><strong>V7</strong>: Model-aware decisions - cost vs quality like grown-ups.</p></li></ul><p>We&#8217;re not learning patterns for fun.</p><p>We&#8217;re learning them because the problem demands them.</p><p>Problem first.<br>Patterns second.</p><p>Always.</p><div><hr></div><h2>And Yes - You Can Build This for $0 &#128187;</h2><p>No excuses.</p><p>You can run this locally using <strong><a href="https://ollama.com/">Ollama</a></strong> and an open source model.</p><p>Example:</p><pre><code><code>ollama run glm-5:cloud
</code></code></pre><p>Or from Python:</p><pre><code><code>from ollama import chat

response = chat(
    model='glm-5:cloud',
    messages=[{'role': 'user', 'content': 'Hello!'}],
)
print(response.message.content)
</code></code></pre><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://hosseinotes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe for free to unlock <a href="https://github.com/HosseinCodes">HosseinCodes</a>, our private code vault (including the full Customer Support series code) &#128640;</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>That&#8217;s it.</p><p>No API bill.<br>No vendor lock-in drama.<br>No &#8220;I&#8217;ll try this when procurement approves the budget.&#8221; &#128517;</p><p>If later you want hosted models? Great.</p><p>We&#8217;ll keep a LiteLLM abstraction layer so switching providers is painless.</p><p>Because again:</p><p>Models = suppliers.<br>Architecture = leverage.</p><div><hr></div><h2>The Real Point of This Series &#127919;</h2><p>This isn&#8217;t a LangChain tutorial.</p><p>It&#8217;s not &#8220;10 AI hacks to impress your manager.&#8221;</p><p>It&#8217;s not &#8220;How to build a chatbot in 7 minutes.&#8221;</p><p>It&#8217;s about building systems that survive contact with reality.</p><p>How do we:</p><ul><li><p>turn messy text into structured decisions?</p></li><li><p>reduce support costs?</p></li><li><p>increase resolution speed?</p></li><li><p>prevent hallucinated nonsense from issuing imaginary refunds? &#129534;&#10060;</p></li></ul><p>I don&#8217;t believe in memorizing APIs.</p><p>I believe in solving real problems end to end.</p><p>That&#8217;s how you build judgment.<br>That&#8217;s how you stop being impressed by shiny demos.<br>That&#8217;s how you start designing infrastructure.</p><div><hr></div><h2>What Happens Next &#128293;</h2><p>Next week, we start simple.</p><p>One prompt.<br>One classifier.</p><p>And then we improve it, iteration by iteration.</p><p>Because real systems aren&#8217;t built in one leap.<br>They&#8217;re refined until they create measurable value.</p><p>We&#8217;re not here to play with tech.</p><p>We&#8217;re here to leverage it.</p><p>See you next week. &#128640;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://hosseinotes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe for free to unlock <a href="https://github.com/HosseinCodes">HosseinCodes</a>, our private code vault (including the full Customer Support series code) &#128640;</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[Treat Model Choice Like a Business Decision]]></title><description><![CDATA[How Product-Aware Engineers Avoid LLM Vendor Lock-In]]></description><link>https://hosseinotes.com/p/treat-model-choice-like-a-business</link><guid isPermaLink="false">https://hosseinotes.com/p/treat-model-choice-like-a-business</guid><dc:creator><![CDATA[Hossein]]></dc:creator><pubDate>Sun, 08 Feb 2026 16:29:12 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!A-oK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c2a64b6-4607-4498-bccc-281e7b2fc874_1536x1024.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_!A-oK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c2a64b6-4607-4498-bccc-281e7b2fc874_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!A-oK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c2a64b6-4607-4498-bccc-281e7b2fc874_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!A-oK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c2a64b6-4607-4498-bccc-281e7b2fc874_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!A-oK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c2a64b6-4607-4498-bccc-281e7b2fc874_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!A-oK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c2a64b6-4607-4498-bccc-281e7b2fc874_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!A-oK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c2a64b6-4607-4498-bccc-281e7b2fc874_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4c2a64b6-4607-4498-bccc-281e7b2fc874_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;:1774430,&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://hosseinotes.com/i/187287159?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c2a64b6-4607-4498-bccc-281e7b2fc874_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_!A-oK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c2a64b6-4607-4498-bccc-281e7b2fc874_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!A-oK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c2a64b6-4607-4498-bccc-281e7b2fc874_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!A-oK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c2a64b6-4607-4498-bccc-281e7b2fc874_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!A-oK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c2a64b6-4607-4498-bccc-281e7b2fc874_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>Welcome back to <strong>HosseiNotes</strong>! &#128640;</p><p>Before we dive in, a quick human pause.</p><p>Some of you know I&#8217;m Iranian. With everything that&#8217;s been happening recently in Iran, the past while has been heavy &#128420;. I stepped back from writing, both here in HosseiNotes and on my LinkedIn, because for me, every Iranian feels like family.</p><p>I just want to say: I&#8217;m thinking of everyone affected, and I truly wish safety and health to people on the ground. &#10084;&#65039;</p><p>Now, back to building.</p><p>Last time we escaped the playground &#8594; plugged real API calls into code.<br>Prompts became <strong>infrastructure</strong>. Huge win. &#127881;</p><p>But almost everyone then makes <strong>the quiet killer mistake</strong> right after&#8230;</p><p>They glue their whole product to <strong>one model + one provider</strong> and go &#8220;shipped! &#9989;&#8221;</p><p>It feels clean&#8230; until reality hits &#128520;</p><div><hr></div><h3>The nasty surprises waiting in production &#128165;</h3><ul><li><p>&#128184; Pricing jumps overnight</p></li><li><p>&#9889; Latency suddenly doubles</p></li><li><p>&#128678; Rate limits bite exactly when users spike</p></li><li><p>&#128201; Model version &#8220;upgrade&#8221; quietly gets worse at your use-case</p></li><li><p>&#127942; A new model crushes yours&#8230; but you&#8217;re locked in</p></li><li><p>&#129504; Or you realize a hosted LLM no longer makes sense and you want to deploy an SLM or self-host a model instead</p></li></ul><p>That&#8217;s not just a tech choice.<br>That&#8217;s a <strong>business gamble</strong> you didn&#8217;t sign up for.</p><div><hr></div><h3>Real business juice you unlock &#128176;</h3><ul><li><p>&#128257; Swap models without sweating</p></li><li><p>&#128201; Control costs proactively (hello cheaper/faster options)</p></li><li><p>&#128737;&#65039; Survive when your main provider sneezes</p></li><li><p>&#128640; Experiment fast &amp; low-risk (&#8220;let&#8217;s A/B this new model next week&#8221;)</p></li><li><p>&#129504; Even let the app decide which model to use, based on intent, constraints, or context</p></li></ul><div><hr></div><h3>Meet LiteLLM &#128294;</h3><p>LightLLM is a <strong>provider-agnostic interface</strong> for working with LLMs. It gives you one consistent way to call models across vendors, without pulling provider-specific details into your app.</p><p>Philosophy = dead simple:<br><strong>Abstract the provider, not the product.</strong></p><p>Your app just says:<br>&#8220;Generate &#8594; here&#8217;s messages + rules&#8221;<br>No SDK drama, no vendor quirks leaking into your logic.</p><p>Here&#8217;s our Trip Advisor&#8230; now <strong>provider-agnostic</strong> style:</p><pre><code><code>from litellm import completion

model = "openai/gpt-4o-mini"

response = completion(
    model=model,
    messages=[
        {"role": "system", "content": "You are a ruthless budget travel advisor... [our full mega-prompt]"},
        {"role": "user", "content": "Weekend trip from Madrid, max &#8364;300, romantic vibe"},
    ],
    temperature=0.7,
    max_tokens=900,
    api_key="Your API Key",
)

print(response.choices[0].message.content)</code></code></pre><p>For the full implementation, visit this note&#8217;s repo here: <a href="https://github.com/HosseinCodes/provider-agnostic-trip-advisor">https://github.com/HosseinCodes/provider-agnostic-trip-advisor</a></p><p>If no access yet &#8594; ping <a href="mailto:notes@hossein.ai">notes@hossein.ai</a> with your GitHub username.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://hosseinotes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe for free to unlock <a href="https://github.com/HosseinCodes">HosseinCodes</a>, our private code vault &#128640;</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>Now, if you want to switch to Anthropic&#8217;s Claude, you only need to change this line<br>(and update your API key accordingly).</p><pre><code>model = "anthropic/claude-opus-4-6"</code></pre><p>That&#8217;s it.</p><p>Beautiful, right? </p><p>Feature-wise: identical output.<br>Architecture-wise: <strong>you just bought massive future leverage.</strong></p><p>Provider, model, key &#8594; all config now.<br>No if/else hell. No rewrite pain.</p><div><hr></div><h3><strong>Boom! this tiny seam just supercharged your AI app&#8217;s future</strong> &#128293;&#128165;</h3><p>You&#8217;ve now got a clean, powerful entry point where intelligence flows in. And because of it, you&#8217;ve unlocked massive leverage:</p><ul><li><p>&#128260; Instant model swaps - chase the hottest new LLM the second it drops</p></li><li><p>&#128184; Smarter cost plays - route to cheaper/faster options on the fly</p></li><li><p>&#128737;&#65039; Bulletproof reliability - auto-fallbacks when your main provider hiccups</p></li><li><p>&#128640; Lightning-fast experiments - A/B test models, prompts, or entire reasoning paths without rewriting a line</p></li><li><p>&#128200; Effortless scaling - add smart routing, evals, monitoring, or cost-aware orchestration later&#8230; and it all snaps in cleanly</p></li></ul><p>We&#8217;re <strong>not</strong> doing those advanced tricks <em>yet</em> but once you have that clean entry point, everything else becomes <strong>additive rocket fuel</strong>, not painful surgery.</p><p>You just turned models from a risky bet&#8230; into interchangeable tools you command.</p><div><hr></div><h3>Core mantra moving forward:</h3><p><strong>Prompts + product logic = your IP.</strong><br><strong>Models = interchangeable suppliers.</strong></p><p>Internalize that &#8594; vendor-lock-in fear disappears. Magic.</p><p>In the <strong>HosseinCodes</strong> <a href="https://github.com/HosseinCodes/provider-agnostic-trip-advisor">repo</a> I already pushed the LiteLLM version.</p><p>Clone &#8594; drop your key &#8594; play.<br>If no access yet &#8594; ping <a href="mailto:notes@hossein.ai">notes@hossein.ai</a> with your GitHub username.</p><p>Next week, we&#8217;ll start building something new together: a Customer Support Triage Engine, and along the way we&#8217;ll learn a bunch of really cool patterns that power serious AI apps.</p><p>Stay sharp. Keep shipping value.<br>See you soon! &#9996;&#65039;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://hosseinotes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe for free to unlock <a href="https://github.com/HosseinCodes">HosseinCodes</a>, our private code vault &#128640;</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></p>]]></content:encoded></item><item><title><![CDATA[Stop Prompting. Start Building: Your First AI App!]]></title><description><![CDATA[From Prompts to Products!]]></description><link>https://hosseinotes.com/p/stop-prompting-start-building-your</link><guid isPermaLink="false">https://hosseinotes.com/p/stop-prompting-start-building-your</guid><dc:creator><![CDATA[Hossein]]></dc:creator><pubDate>Sun, 28 Dec 2025 09:19:12 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/95ed5e26-2692-4497-8ac1-b6dc3c6c9e6b_2600x1332.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_!b_sy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d393c1a-13b4-4c4b-bff4-6ddd9a1dde3e_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!b_sy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d393c1a-13b4-4c4b-bff4-6ddd9a1dde3e_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!b_sy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d393c1a-13b4-4c4b-bff4-6ddd9a1dde3e_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!b_sy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d393c1a-13b4-4c4b-bff4-6ddd9a1dde3e_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!b_sy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d393c1a-13b4-4c4b-bff4-6ddd9a1dde3e_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!b_sy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d393c1a-13b4-4c4b-bff4-6ddd9a1dde3e_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7d393c1a-13b4-4c4b-bff4-6ddd9a1dde3e_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;:1930932,&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://hosseinotes.com/i/182731191?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d393c1a-13b4-4c4b-bff4-6ddd9a1dde3e_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_!b_sy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d393c1a-13b4-4c4b-bff4-6ddd9a1dde3e_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!b_sy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d393c1a-13b4-4c4b-bff4-6ddd9a1dde3e_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!b_sy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d393c1a-13b4-4c4b-bff4-6ddd9a1dde3e_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!b_sy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d393c1a-13b4-4c4b-bff4-6ddd9a1dde3e_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><strong>Welcome back to HosseiNotes! &#128640;</strong></p><p>Quick heads-up before we dive in &#128064;<br>This issue is <strong>very beginner-friendly</strong>.</p><p>If you&#8217;re already shipping AI apps in production, juggling APIs, monitoring token spend, and arguing about latency vs quality&#8230;<br>&#128073; you can safely skim (or skip) this one &#128517;</p><p>But don&#8217;t go far, <strong>advanced builds and topics are coming next</strong>. Provider abstractions, scaling patterns, SLMs, and real product architecture are right around the corner.</p><p>In our last issue of trip advisor, we took our little Trip Advisor and gave it a <strong>reality check</strong>!<br>Instead of vibes-only recommendations, we fed it a massive, carefully crafted prompt that forces it to:</p><ul><li><p>&#127782;&#65039; Check <em>real</em> weather</p></li><li><p>&#9992;&#65039; Look up <em>actual</em> flight &amp; hotel prices</p></li><li><p>&#128184; Stay <em>ruthlessly honest</em> about budgets</p></li></ul><p>No more &#8220;Sure, you can visit Paris for &#8364;200&#8221; fairy tales. &#129498;&#8205;&#9794;&#65039;&#10060;<br>That was fun.</p><p>But now&#8230; the real pivot begins &#128064;</p><div><hr></div><h2>From Playground Prompts &#8594; Real AI Applications &#127959;&#65039;</h2><p>We&#8217;re officially leaving the playground.</p><p>Prompts are amazing for experimenting and discovering what models <em>can</em> do.<br>But the second you want to <strong>ship</strong> something reliable, something that lives inside:</p><ul><li><p>a product</p></li><li><p>a website</p></li><li><p>a mobile app</p></li><li><p>a Slack bot</p></li><li><p>a dashboard</p></li></ul><p>&#8230;you need to connect to the LLM <strong>through code</strong>, using <strong>official provider APIs</strong>.</p><p>This is where the magic becomes <strong>production-grade</strong> &#10024;</p><div><hr></div><h2>The New Paradigm: LLM APIs Unlock Entire Product Categories &#128275;</h2><p>With just a few lines of Python (or JS&#8230; or whatever you like), you can now build things that were straight-up impossible before 2023&#8211;2024:</p><ul><li><p>&#9997;&#65039; <strong>Personalized content engines</strong><br>Blog posts, emails, product descriptions, social media, all in <em>your</em> brand voice</p></li><li><p>&#129302; <strong>Intelligent customer support bots</strong><br>Handling 80% of common questions without human hand-off (support teams rejoice &#128591;)</p></li><li><p>&#129489;&#8205;&#128187; <strong>Code assistants for dev teams</strong><br>Reviewing PRs, suggesting fixes, generating boilerplate</p></li><li><p>&#128202; <strong>Data analysis copilots</strong><br>Ask questions in plain English &#8594; get SQL, charts, or business insights</p></li><li><p>&#127897;&#65039; <strong>Voice-enabled assistants</strong><br>Inside apps, devices, or dashboards</p></li><li><p>&#127968; <strong>AIoT (AI + Internet of Things) madness</strong><br>&#8220;Make the living room cozy for movie night &#127871;&#8221; &#8594; lights dim, temperature adjusts, blinds close<br>Or factories where sensor data gets translated into plain-English explanations</p></li></ul><p>These aren&#8217;t &#8220;just chatbots.&#8221;</p><p>They&#8217;re <strong>new product categories</strong> that create real value:<br>&#9201;&#65039; massive time savings<br>&#128525; better UX<br>&#128200; higher retention<br>&#128176; lower support costs<br>&#9889; faster iteration</p><p>And the best part?</p><p>You <strong>don&#8217;t</strong> train or host massive models yourself.<br>You just:</p><ul><li><p>call an API</p></li><li><p>pay per use (usually per token)</p></li><li><p>focus on the product magic &#10024;</p></li></ul><div><hr></div><h2>Welcome to the API Economy for Intelligence &#128161;</h2><p>Every major LLM provider gives you:</p><ul><li><p>&#128273; an <strong>API key</strong></p></li><li><p>&#128202; a <strong>dashboard</strong> to track usage, costs, and limits</p></li></ul><p>As a <strong>business-aware engineer</strong>, you need to think about this like <em>any other infrastructure</em>:</p><ul><li><p>cost per token</p></li><li><p>rate limits</p></li><li><p>latency</p></li><li><p>reliability</p></li><li><p>how usage scales with growth</p></li></ul><p>Because yes&#8230;<br>A viral feature can turn a <strong>&#8364;50/month hobby</strong> into a <strong>&#8364;5k/month surprise bill</strong> &#128556;<br>Token accounting matters. A lot.</p><div><hr></div><h2>How It Actually Looks in Code &#129489;&#8205;&#128187;</h2><p>In our private repo (<strong><a href="https://github.com/HosseinCodes/prompts-ai-trip-advisor">HosseinCodes</a></strong>), I&#8217;ve wired the full working version to OpenAI&#8217;s API.<br>Here&#8217;s the core pattern (simplified):</p><pre><code><code>from openai import OpenAI
import os

client = OpenAI(api_key="YOUR OPENAI API KEY")

response = client.chat.completions.create(
    model="gpt-4o",
    messages=[
        {"role": "system", "content": "You are a ruthless budget travel advisor... [the full mega-prompt we built last time]"},
        {"role": "user", "content": "Weekend trip from Madrid, max &#8364;300, romantic vibe"}
    ],
    temperature=0.7,
    max_tokens=1200,
)

final_answer = response.choices[0].message.content
print(final_answer)</code></code></pre><p>That&#8217;s it.</p><p>&#10145;&#65039; <strong>One API call</strong><br>&#10145;&#65039; <strong>A fully reasoned trip plan</strong><br>&#10145;&#65039; <strong>Real-world constraints baked into the logic</strong></p><p>And if you&#8217;re new to this, here&#8217;s <em>why</em> that single call is so powerful &#128071;</p><ul><li><p>&#129504; <strong>system</strong> <strong>message</strong><br>This is where you define the <em>role</em> and behavior of the model.<br>In our case: <em>&#8220;You are a ruthless budget travel advisor&#8230;&#8221;</em><br>Think of it as setting the personality, rules, and boundaries <strong>once</strong>, before the conversation even starts.</p></li><li><p>&#128172; <strong>user message</strong><br>This is the actual request coming from your user or app UI.<br>Example: <em>&#8220;Weekend trip from Madrid, max &#8364;300, romantic vibe&#8221;</em></p></li><li><p>&#127917; <strong>Roles (</strong><code>system</code><strong>, </strong><code>user</code><strong>, </strong><code>assistant</code><strong>)</strong><br>These roles help the model understand <em>who is speaking</em> and <em>why</em>.<br>They&#8217;re critical for keeping responses consistent and avoiding chaos in longer interactions.</p></li><li><p>&#127898;&#65039; <strong>temperature</strong><br>Controls creativity vs predictability.<br>Lower = safer, more deterministic answers.<br>Higher = more creative (and sometimes more chaotic &#128517;).<br>For some product features, you&#8217;ll want this somewhere in the middle, but for strict, deterministic and repeatable behavior (like classifications, validations, or structured outputs), setting it to <code>0</code> is often the right choice.</p></li><li><p>&#128207; <strong>max_tokens</strong><br>A hard cap on how long the response can be.<br>This protects you from runaway outputs <em>and</em> runaway costs &#128184;.</p></li></ul><p>Put differently:<br>This isn&#8217;t &#8220;just sending text to a chatbot.&#8221;</p><p>You&#8217;re <strong>programming behavior</strong>, controlling risk, cost, and output quality, all from code.</p><p>That&#8217;s the moment when prompts stop being toys&#8230; and start being <strong>infrastructure</strong>.</p><div><hr></div><h2>It&#8217;s Not Just OpenAI &#127757;</h2><p>Another popular option right now (late 2025) is <strong>Google&#8217;s Gemini API</strong>.</p><p>Equivalent example:</p><pre><code><code>from google import genai

client = genai.Client(api_key="YOUR GEMINI API KEY")

response = client.models.generate_content(
    model="gemini-2.5-flash", 
    contents="You are a ruthless budget travel advisor... [paste the full prompt here]\n\nUser: Weekend trip from Madrid, max &#8364;300, romantic vibe"
)

print(response.text)</code></code></pre><p>Other providers, <strong>Claude, Grok, and more</strong>, also offer their own SDKs.<br>The <strong>process is almost always the same</strong>:</p><ul><li><p>get an API key</p></li><li><p>call a model</p></li><li><p>send messages</p></li><li><p>receive structured output</p></li></ul><p>Only the <strong>syntax changes slightly</strong>.</p><p>(And yes, we&#8217;ll talk later about more robust approaches like <strong>LangChain</strong> or <strong>LangGraph</strong> to manage this cleanly at scale &#128521;)</p><div><hr></div><h2>Why This Step Changes Everything &#128640;</h2><p>Going from playground prompts &#8594; API calls unlocks:</p><ul><li><p>&#128257; <strong>Full programmability</strong><br>Loops, retries, caching, multi-step reasoning</p></li><li><p>&#128268; <strong>Integration power</strong><br>Databases, frontends, notifications, payments</p></li><li><p>&#128202; <strong>Scalability &amp; monitoring</strong><br>Track usage, costs, performance</p></li><li><p>&#128188; <strong>Product thinking</strong><br>You&#8217;re no longer demoing, you&#8217;re building features users pay for</p></li></ul><p>This is the bridge from<br>&#128073; <em>&#8220;cool experiment&#8221;</em><br>to<br>&#128073; <em>&#8220;viable business feature&#8221;</em></p><div><hr></div><p>And yeah&#8230; right now the repo is locked to one provider.<br>It works great, until prices change, a better model appears, or you need a cheaper/faster fallback &#128527;</p><p>But don&#8217;t stress.</p><p><strong>Next week</strong>, I&#8217;ll show you the simple solution that makes switching providers feel effortless:</p><ul><li><p>one string change</p></li><li><p>zero rewrite pain</p></li></ul><p>For now:</p><ul><li><p>clone the <a href="https://github.com/HosseinCodes/prompts-ai-trip-advisor">repo</a> (if you don&#8217;t have access yet, just send your GitHub username to notes@hossein.ai)</p></li><li><p>drop in your API key</p></li><li><p>run it</p></li><li><p>watch it plan a <em>real</em> trip</p></li></ul><p>You&#8217;ve just graduated from <strong>prompt wrangler</strong> &#8594; <strong>AI application builder</strong> &#127891;&#127881;</p><p>Huge moment. Be proud of it.</p><p>See you next time for the <em>&#8220;never worry about vendor lock-in again&#8221;</em> upgrade.<br>Stay curious (and watch those token costs &#128526;)</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://hosseinotes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe for free to unlock <a href="https://github.com/HosseinCodes">HosseinCodes</a>, our private code vault &#128640;</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 Hottest AI Skill in 2026: Product Engineering]]></title><description><![CDATA[The rise of the Product Engineer]]></description><link>https://hosseinotes.com/p/the-hottest-ai-skill-in-2026-product</link><guid isPermaLink="false">https://hosseinotes.com/p/the-hottest-ai-skill-in-2026-product</guid><dc:creator><![CDATA[Hossein]]></dc:creator><pubDate>Sun, 21 Dec 2025 13:05:36 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/d1cdc3e3-4644-40a0-8eac-d0eab39f5be7_1536x1024.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_!0t0T!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff493203b-907b-417a-ab73-ab0ed7e7a0b5_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0t0T!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff493203b-907b-417a-ab73-ab0ed7e7a0b5_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!0t0T!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff493203b-907b-417a-ab73-ab0ed7e7a0b5_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!0t0T!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff493203b-907b-417a-ab73-ab0ed7e7a0b5_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!0t0T!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff493203b-907b-417a-ab73-ab0ed7e7a0b5_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0t0T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff493203b-907b-417a-ab73-ab0ed7e7a0b5_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f493203b-907b-417a-ab73-ab0ed7e7a0b5_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;:2633234,&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://hosseinotes.com/i/182222423?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff493203b-907b-417a-ab73-ab0ed7e7a0b5_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_!0t0T!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff493203b-907b-417a-ab73-ab0ed7e7a0b5_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!0t0T!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff493203b-907b-417a-ab73-ab0ed7e7a0b5_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!0t0T!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff493203b-907b-417a-ab73-ab0ed7e7a0b5_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!0t0T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff493203b-907b-417a-ab73-ab0ed7e7a0b5_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>Hey friends, Hossein here &#128075;</p><p>As promised, from now on, genuinely useful stuff only.</p><p>I&#8217;m not abandoning technical deep dives or end-to-end build tutorials (still love shipping code with you). But let&#8217;s always tie them to what actually creates value, product thinking and real impact.</p><p>(And when you just need raw implementation speed, Cursor or your favorite AI coder has your back anyway!)</p><p>So Let&#8217;s cut through the endless AI noise today and talk about what <em>truly</em> moves the needle in 2026.</p><h4><strong>1- Right now, the internet is drowning in AI tutorials &#129327;</strong></h4><p>RAG this.<br>Agents that.<br>Stacks, frameworks, patterns, recipes.</p><p>Most are technically spot-on.<br>Most also completely miss the point.</p><p>Because the hard part in AI engineering today isn&#8217;t <em>how</em> to build.<br>It&#8217;s deciding <strong>what is worth building</strong> in the first place.</p><p>Code has never been faster &#9889;<br>And yet, teams still feel <strong>confused</strong>.</p><p>Not because they can&#8217;t ship.<br>But because they&#8217;re shipping the <strong>wrong things</strong>.</p><p>This massive gap gets almost zero airtime.<br>Even though it&#8217;s the only one that matters.</p><p>And it&#8217;s exactly why we&#8217;re seeing the <strong>rise of the Product Engineer</strong> &#128064;</p><div><hr></div><h4><strong>2- The real bottleneck, buried under AI noise &#129327;</strong></h4><p>This is the part most tutorials skip &#129323;</p><p><strong>Andrew Ng</strong> nailed it in a recent talk - simple, but it stings:<br>when it becomes easy to go from a well-written spec to working code, the bottleneck moves.</p><p>Not to engineering.<br>To <strong>deciding what to build</strong> and writing a <em>clear</em> spec in the first place.</p><p>AI turbocharged implementation &#9889;<br>Judgment? Still waiting for its upgrade &#129504;</p><p>When I build things, I don&#8217;t think in straight lines. I think in loops:</p><p>Build &#8594; show users &#8594; get feedback &#8594; rethink &#8594; iterate.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9hnv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a15f2d3-8f72-4aa5-b64e-54308a666119_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9hnv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a15f2d3-8f72-4aa5-b64e-54308a666119_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!9hnv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a15f2d3-8f72-4aa5-b64e-54308a666119_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!9hnv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a15f2d3-8f72-4aa5-b64e-54308a666119_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!9hnv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a15f2d3-8f72-4aa5-b64e-54308a666119_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9hnv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a15f2d3-8f72-4aa5-b64e-54308a666119_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7a15f2d3-8f72-4aa5-b64e-54308a666119_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;:1594632,&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://hosseinotes.com/i/182222423?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a15f2d3-8f72-4aa5-b64e-54308a666119_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_!9hnv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a15f2d3-8f72-4aa5-b64e-54308a666119_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!9hnv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a15f2d3-8f72-4aa5-b64e-54308a666119_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!9hnv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a15f2d3-8f72-4aa5-b64e-54308a666119_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!9hnv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a15f2d3-8f72-4aa5-b64e-54308a666119_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></p><p>(Remember Lean Startup? That Build-Measure-Learn loop never went away, it just got way cheaper to run.)</p><p>That loop is product work.<br>And yes, it usually means bothering users more than they&#8217;d like (sorry &#128517;).</p><p>Only half of that loop got faster.</p><p>So while engineering velocity exploded, the work of shaping the <em>right</em> thing to build stayed stubbornly human.</p><p>And that human half going to be <strong>pure gold in 2026 and beyond</strong> &#10024;</p><div><hr></div><h4><strong>3- When the Engineer-PM Loop Starts to Collapse </strong>&#128064;</h4><p>Andrew highlighted one trend that really stood out to me.</p><p>Old-school Silicon Valley rule of thumb: PM-to-engineer ratios like 1:4, 1:7, even 1:8.<br>One PM keeping an army of engineers happily busy with specs.</p><p>What he&#8217;s now observing is that these ratios are shrinking, with some teams moving closer to <strong>1:1</strong>.</p><p>That alone already changes an engineer&#8217;s day-to-day.<br>It means tighter collaboration, shared context, and much less distance between decisions and execution &#129309;</p><p>But there&#8217;s a more interesting pattern emerging.</p><p>Engineers who can actively <strong>shape the product</strong>, not just implement it, are becoming incredibly valuable.</p><p>That&#8217;s when the classic engineer &#8596; PM ping-pong game collapses into one fast human.</p><p>And that&#8217;s where the real magic ignites &#128640;</p><div><hr></div><h4><strong>4- Meet the Product Engineer &#128105;&#8205;&#128187;&#129504;</strong></h4><p>The Product Engineer is the new powerhouse in tech, an engineer who doesn&#8217;t just build code, but owns the entire product loop from vision to validation.</p><p>They code fluently (often supercharged by AI tools) while deeply understanding users, spotting unmet needs, and deciding priorities without endless handoffs.</p><p>No more waiting for specs from a separate PM - they write prototypes in hours, show them to real users, gather raw feedback, and iterate relentlessly.</p><p>This collapses the traditional engineer-PM divide into one person, eliminating bottlenecks and unlocking insane velocity.</p><p>What makes them unstoppable:</p><ul><li><p><strong>Technical depth + product intuition</strong>: They know what&#8217;s feasible to build <em>and</em> what&#8217;s worth building, avoiding wasted effort on shiny but useless features.</p></li><li><p><strong>User empathy as a superpower</strong>: They talk directly to users, build mental models of pain points, and refine ideas based on real behavior - not assumptions.</p></li><li><p><strong>Rapid closed-loop iteration</strong>: Build &#8594; Test with users &#8594; Learn &#8594; Pivot. All in days, not months. AI handles the heavy coding lift; they handle the judgment.</p></li><li><p><strong>Outcome ownership</strong>: They don&#8217;t ship features - they ship solutions that users love and that drive real impact (retention, revenue, delight).</p></li></ul><p><strong>Not every engineer wants (or needs) this role - some thrive in pure implementation.</strong></p><p>But those who do? They&#8217;re the ones moving fastest, launching hit products, and shaping the future of AI apps.</p><div><hr></div><h4><strong>5- How to Level Up to Product Engineer (Starting Today) &#128640;</strong></h4><p>You don&#8217;t need a title change or permission. Start small, compound fast.</p><ul><li><p><strong>Get dangerously close to your PM colleague</strong>: Ask to sit in on their user interviews, roadmap debates, or prioritization rituals. Offer to take notes (or bring coffee). Warning: you might actually start enjoying those &#8220;lovely discussions&#8221; &#128527;</p></li><li><p><strong>Shadow PM calls (yes, really)</strong>: Hop on customer discovery, support deep-dives, or sales demos. Listen for the unfiltered chaos. One hour of this beats months of spec-reading - and you&#8217;ll finally understand what PMs mean when they say &#8220;it depends.&#8221;</p></li><li><p><strong>Talk to 5 real users this week</strong>: DM customers, book quick calls, ask &#8220;What&#8217;s the most frustrating thing about [tool] right now?&#8221; Pro tip: users lie less when you&#8217;re not hiding behind a survey.</p></li><li><p><strong>Ship one tiny experiment</strong>: AI-prototype a micro-feature in a day. Show it to those users and loop in your PMs for quick feedback, they&#8217;ll spot the &#8220;why&#8221; gaps you missed and probably get excited you&#8217;re thinking like them. Watch what people actually click (spoiler: rarely what any of us expected).</p></li><li><p><strong>Train your empathy muscle daily</strong>: Read one raw user interview or support ticket. Ask yourself: &#8220;What emotion is hiding here?&#8221; Soon you&#8217;ll spot pain points before they&#8217;re roadmapped.</p></li><li><p><strong>Own outcomes on your current work</strong>: Next ticket that lands in your lap? Ask &#8220;Why this? Who actually wins? How will we know users love it?&#8221; Your PM will high-five you (or at least smile hugely) - because suddenly you&#8217;re the engineer they love working with: proactive, user-aligned, and shipping things that actually matter.</p></li><li><p><strong>Mandatory side project</strong>: Build something completely solo. No handoffs, no mercy. You define the problem, talk to strangers, code, ship, cringe at feedback, repeat. Fastest empathy bootcamp on earth.</p></li></ul><p>Do this consistently for 3 months? You&#8217;ll develop product judgment no tutorial can teach.</p><p>You&#8217;ll move faster than pure coders&#8230; and become the engineer every PM fights to keep on their team &#128521;</p><p>(Personally, I love PMs &#10084;&#65039; Nothing beats the moment they light up because an engineer actually understands them and wants to build the right thing together)</p><p>The opportunity is wide open in 2026.</p><p>Go close the loop.</p><p>And build things people actually love &#10024;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://hosseinotes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe if you&#8217;re looking to create pure value together along the road &#128526;, free posts straight to your inbox &#128640;</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[Your New Year Gift Is Here (Subscribers Only) 🎁]]></title><description><![CDATA[New Year, New Energy&#8230; and a Gift &#127873;]]></description><link>https://hosseinotes.com/p/your-new-year-gift-is-here-subscribers</link><guid isPermaLink="false">https://hosseinotes.com/p/your-new-year-gift-is-here-subscribers</guid><dc:creator><![CDATA[Hossein]]></dc:creator><pubDate>Wed, 17 Dec 2025 10:47:11 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!B92E!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc6abc21-2024-4b60-9bfc-8539badf29db_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>New Year, New Energy&#8230; and a Gift &#127873;</h2><p>Hey friends, Hossein here &#128075;</p><p>It&#8217;s been a while.</p><p>Between intense case work at a major consulting firm and a few life side quests, <em>HosseiNotes</em> had to pause for a bit. But heading into the new year, I wanted to restart this newsletter with fresh energy, and something genuinely useful for you.</p><p>During the break, I stepped back to rethink what value I can consistently create for you. I refined the concept, cleaned up the structure, and even refreshed the visual identity, new logo (&#128526;), new look, new direction.<br>You&#8217;ll see more of that rolling out soon &#128064;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!B92E!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc6abc21-2024-4b60-9bfc-8539badf29db_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!B92E!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc6abc21-2024-4b60-9bfc-8539badf29db_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!B92E!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc6abc21-2024-4b60-9bfc-8539badf29db_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!B92E!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc6abc21-2024-4b60-9bfc-8539badf29db_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!B92E!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc6abc21-2024-4b60-9bfc-8539badf29db_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!B92E!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc6abc21-2024-4b60-9bfc-8539badf29db_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cc6abc21-2024-4b60-9bfc-8539badf29db_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;:1005322,&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://hosseinotes.com/i/181874548?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc6abc21-2024-4b60-9bfc-8539badf29db_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_!B92E!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc6abc21-2024-4b60-9bfc-8539badf29db_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!B92E!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc6abc21-2024-4b60-9bfc-8539badf29db_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!B92E!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc6abc21-2024-4b60-9bfc-8539badf29db_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!B92E!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc6abc21-2024-4b60-9bfc-8539badf29db_1024x1024.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>And to kick off this new chapter&#8230;</p><div><hr></div><h2>&#127873; <strong>Here is your New Year gift: HosseinCodes!</strong></h2><p>Ladies and gentlemen&#8230; allow me to present your New Year gift: <strong><a href="https://github.com/hosseincodes/">HosseinCodes</a></strong>!</p><p>Yes&#8230; I finally did it.<br>A secret vault.<br>A private code stash.<br>A &#8220;please-don&#8217;t-share-this-publicly&#8221; corner of the internet <strong>just for subscribers</strong>.</p><p>Starting today, every mini-series on <em>HosseiNotes</em> comes with its supporting code inside <strong><a href="https://github.com/hosseincodes/">HosseinCodes</a></strong>, a private GitHub space where I put the good stuff.<br>(You know&#8230; the things I usually keep buried in my personal notes.)</p><p>&#128073; <strong>To get access, send me the GitHub email/username you want whitelisted</strong><br>to <strong>notes@hossein.ai </strong>(I promise I won&#8217;t judge your GitHub username &#128517;)</p><p>Once you&#8217;re in, you&#8217;ll keep getting access to:</p><ul><li><p>Code behind each mini-series</p></li><li><p>Useful prompt templates</p></li><li><p>Programmatic runners + utilities</p></li><li><p>Clean, practical and well-tested building blocks you can plug into your projects</p></li></ul><p>Welcome to the inner circle &#128526;</p><div><hr></div><h2>&#128295; First Drop in HosseinCodes:</h2><h3><strong>AI Trip Advisor - prompts &amp; runner</strong></h3><p>Repo: <code>prompts-ai-trip-advisor</code></p><p>This repo contains all the code behind our first mini-series on <em>hosseinotes</em> - building a simple but surprisingly capable <strong>AI Trip Advisor</strong>.</p><p>Inside you&#8217;ll find:</p><p><strong>Two prompts</strong></p><ul><li><p><code>prompts/prompt.md</code> - dialog-style, copy/paste into any chatbot UI</p></li><li><p><code>prompts/prompt_template.md</code> - structured template for programmatic use</p></li></ul><p><strong>One runner</strong></p><ul><li><p><code>main.py</code> - minimal Python script that calls OpenAI and prints JSON only (pretty-printed)</p></li></ul><p>This is the exact setup I used to build and test the system.<br>Clean, small, and easy to learn from.</p><p>More prompts and more mini-series code will be added as we go.</p><div><hr></div><h2>&#128640; What to Expect From HosseiNotes in 2026</h2><h3>&#10004; Bite-sized, practical notes</h3><p>Small, focused ideas you can use immediately.</p><h3>&#10004; Real examples + supporting code</h3><p>Every mini-series will come with its working snippets.</p><h3>&#10004; Useful prompts</h3><p>Ones I actually use and have well-tested, not generic templates scraped from the internet.</p><h3>&#10004; A steady rhythm</h3><p>No fluff. No long theory dumps. Just actionable insights.</p><p>That&#8217;s the plan.</p><div><hr></div><h2>&#129309; Thanks for sticking around</h2><p>If you&#8217;re still reading this, you&#8217;re part of the earliest group - and I truly appreciate it.<br>This year, I&#8217;m committed to making <em>HosseiNotes</em> a place where you learn practical, powerful things that make you better at building with AI.</p><p>Next issue coming soon.<br>New logo, new direction, same spirit:<br><strong>AI engineering without the PhD &#128517;</strong></p><p>See you in the next note!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://hosseinotes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe for free to unlock HosseinCodes our private code vault &#128640;</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[Your AI Trip Advisor 👋 - Step 3: Structured Output]]></title><description><![CDATA[Welcome back to HosseiNotes - your weekly 5-minute habit in AI engineering (with a side of fun &#128517;).]]></description><link>https://hosseinotes.com/p/your-ai-trip-advisor-step-3-structured</link><guid isPermaLink="false">https://hosseinotes.com/p/your-ai-trip-advisor-step-3-structured</guid><dc:creator><![CDATA[Hossein]]></dc:creator><pubDate>Thu, 25 Sep 2025 06:53:33 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/b9d328d8-9d9f-437d-9c90-88c92e4cae07_1536x1024.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_!qMUD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc18eadc7-5abf-4e29-8827-0e40aa83cfe2_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qMUD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc18eadc7-5abf-4e29-8827-0e40aa83cfe2_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!qMUD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc18eadc7-5abf-4e29-8827-0e40aa83cfe2_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!qMUD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc18eadc7-5abf-4e29-8827-0e40aa83cfe2_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!qMUD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc18eadc7-5abf-4e29-8827-0e40aa83cfe2_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qMUD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc18eadc7-5abf-4e29-8827-0e40aa83cfe2_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c18eadc7-5abf-4e29-8827-0e40aa83cfe2_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;:2362695,&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://hosseinotes.com/i/174507534?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc18eadc7-5abf-4e29-8827-0e40aa83cfe2_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_!qMUD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc18eadc7-5abf-4e29-8827-0e40aa83cfe2_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!qMUD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc18eadc7-5abf-4e29-8827-0e40aa83cfe2_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!qMUD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc18eadc7-5abf-4e29-8827-0e40aa83cfe2_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!qMUD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc18eadc7-5abf-4e29-8827-0e40aa83cfe2_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>Welcome back to <strong>HosseiNotes - your weekly 5-minute habit in AI engineering (with a side of fun &#128517;).</strong></p><p>Last time, our Trip Advisor GPT got <strong>tool superpowers</strong> &#129464;&#8205;&#9794;&#65039; - it finally checked real <strong>weather</strong>, <strong>prices</strong>, and <strong>hotels</strong> before recommending Paris on a ramen budget. &#128184;</p><p>Great progress! But there&#8217;s still a problem: GPT gives you a <strong>chatty paragraph</strong>.<br>Fun to read, hard to use.</p><p>This week, let&#8217;s fix that. We&#8217;ll teach it to output results in a <strong>clean table</strong> (for humans)&#8230; and then in <strong>JSON</strong> (for machines).<br>Tables = handy for us.<br>JSON = handy for agents.<br>Together = handy for everyone. &#128526;</p><div><hr></div><h2>&#128721; The Problem</h2><p>Free-text answers look nice, but&#8230;</p><ul><li><p>You can&#8217;t <strong>scan quickly</strong>.</p></li><li><p>You can&#8217;t <strong>compare options</strong>.</p></li><li><p>You can&#8217;t hand it to an <strong>agent or script</strong>.</p></li></ul><div><hr></div><h2>&#129513; The Upgrade: Structured Output</h2><p>Instead of a rambly essay, tell GPT:<br>&#128073; &#8220;Present the final trip plan in a <strong>table</strong> with key details.&#8221;</p><p><strong>Prompt snippet (add at the end):</strong></p><pre><code><code>IMPORTANT: Final Output - present the final recommendation in a single table with the columns: 

Destination | Why it fits (short) | Weather | Travel (time &amp; price) | Stay (avg/night) | Total. 
</code></code></pre><div><hr></div><h2>&#129514; Example Output (Table)</h2><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TATU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d695f7c-8f7f-4149-a91e-7cf3ec9598fe_1686x334.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TATU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d695f7c-8f7f-4149-a91e-7cf3ec9598fe_1686x334.png 424w, https://substackcdn.com/image/fetch/$s_!TATU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d695f7c-8f7f-4149-a91e-7cf3ec9598fe_1686x334.png 848w, https://substackcdn.com/image/fetch/$s_!TATU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d695f7c-8f7f-4149-a91e-7cf3ec9598fe_1686x334.png 1272w, https://substackcdn.com/image/fetch/$s_!TATU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d695f7c-8f7f-4149-a91e-7cf3ec9598fe_1686x334.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TATU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d695f7c-8f7f-4149-a91e-7cf3ec9598fe_1686x334.png" width="1456" height="288" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3d695f7c-8f7f-4149-a91e-7cf3ec9598fe_1686x334.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:288,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:83591,&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://hosseinotes.com/i/174507534?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d695f7c-8f7f-4149-a91e-7cf3ec9598fe_1686x334.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_!TATU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d695f7c-8f7f-4149-a91e-7cf3ec9598fe_1686x334.png 424w, https://substackcdn.com/image/fetch/$s_!TATU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d695f7c-8f7f-4149-a91e-7cf3ec9598fe_1686x334.png 848w, https://substackcdn.com/image/fetch/$s_!TATU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d695f7c-8f7f-4149-a91e-7cf3ec9598fe_1686x334.png 1272w, https://substackcdn.com/image/fetch/$s_!TATU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d695f7c-8f7f-4149-a91e-7cf3ec9598fe_1686x334.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>&#128073; Already way easier to digest than a wall of text.</p><div><hr></div><h2>&#128736; Going One Step Further - JSON Mode</h2><p>But tables are still for <strong>humans</strong>. What if you want an <strong>agent</strong> to:</p><ul><li><p>auto-add the trip to your calendar &#128198;</p></li><li><p>track hotel/flight prices &#128184;</p></li><li><p>or even pre-book stuff (dangerously convenient &#128517;)?</p></li></ul><p>Then you need <strong>machine-friendly output</strong>: JSON.</p><p><strong>Prompt snippet:</strong></p><pre><code><code>IMPORTANT: The final output must be a JSON object only, with no additional text. Use only the following keys:

{
  &#8220;origin&#8221;: &#8220;Madrid&#8221;,
  &#8220;destination&#8221;: &#8220;Valencia&#8221;,
  &#8220;budget_eur&#8221;: 300,
  &#8220;weather&#8221;: &#8220;Sunny, 27C/19C&#8221;,
  &#8220;travel&#8221;: {&#8221;mode&#8221;: &#8220;train&#8221;, &#8220;price_eur&#8221;: 60, &#8220;time_h&#8221;: 2},
  &#8220;stay_avg_eur_per_night&#8221;: 80,
  &#8220;total_estimate_eur&#8221;: 220,
  &#8220;backup&#8221;: &#8220;Toledo&#8221;
}</code></code></pre><div><hr></div><h2>&#9889;&#65039; The Big Moment</h2><p>Now let&#8217;s look at the output of the LLM &#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_!sy1k!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffed94bf1-d313-4e65-9f87-e998488cb803_1562x944.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sy1k!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffed94bf1-d313-4e65-9f87-e998488cb803_1562x944.png 424w, https://substackcdn.com/image/fetch/$s_!sy1k!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffed94bf1-d313-4e65-9f87-e998488cb803_1562x944.png 848w, https://substackcdn.com/image/fetch/$s_!sy1k!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffed94bf1-d313-4e65-9f87-e998488cb803_1562x944.png 1272w, https://substackcdn.com/image/fetch/$s_!sy1k!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffed94bf1-d313-4e65-9f87-e998488cb803_1562x944.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sy1k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffed94bf1-d313-4e65-9f87-e998488cb803_1562x944.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fed94bf1-d313-4e65-9f87-e998488cb803_1562x944.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:880,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:146719,&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://hosseinotes.com/i/174507534?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffed94bf1-d313-4e65-9f87-e998488cb803_1562x944.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_!sy1k!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffed94bf1-d313-4e65-9f87-e998488cb803_1562x944.png 424w, https://substackcdn.com/image/fetch/$s_!sy1k!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffed94bf1-d313-4e65-9f87-e998488cb803_1562x944.png 848w, https://substackcdn.com/image/fetch/$s_!sy1k!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffed94bf1-d313-4e65-9f87-e998488cb803_1562x944.png 1272w, https://substackcdn.com/image/fetch/$s_!sy1k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffed94bf1-d313-4e65-9f87-e998488cb803_1562x944.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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>&#128165; <strong>BOOOOM.</strong> Did you catch what just happened?!</p><p>With one tiny line - <em>&#8220;return a JSON object only&#8221;</em> - your GPT just went from a chatty travel buddy to a <strong>data-spitting machine</strong>. &#129327;</p><p>This isn&#8217;t just &#8220;neater output.&#8221; This is:</p><ul><li><p>Pure, structured <strong>data</strong> you can throw straight into a script.</p></li><li><p>A universal format that powers <strong>agents, apps, dashboards, alerts&#8230; you name it</strong>.</p></li><li><p>The exact bridge between &#8220;fun LLM demo&#8221; &#8594; <strong>real, usable systems</strong>.</p></li></ul><p>&#128073; This is the unlock. Tables are nice, but JSON is the <strong>language of software</strong>.<br>And now your LLM speaks it. &#128640;</p><div><hr></div><h2>&#129327; Why This Matters (a.k.a. Why Engineers Get Excited)</h2><ul><li><p><strong>Tables</strong> = friendly for humans, fast to skim.</p></li><li><p><strong>JSON</strong> = fuel for agents, UIs, scripts.</p></li><li><p>With JSON you can:</p><ul><li><p>&#128198; Auto-calendarize itineraries.</p></li><li><p>&#129534; Track expenses from fields directly.</p></li><li><p>&#128276; Re-run tool lookups daily and ping if cheaper options appear.</p></li><li><p>&#129517; Chain into the next agent that books, maps, or notifies.</p></li></ul></li></ul><p>Basically: GPT stops being a travel blogger&#8230; and becomes a <strong>travel API</strong>. &#128640;</p><div><hr></div><h2>&#9989; What You&#8217;ve Learned</h2><ul><li><p>&#128214; Paragraphs are for reading.</p></li><li><p>&#128202; Tables are for humans scanning.</p></li><li><p>&#129513; JSON is for machines (and agents).</p></li><li><p>&#9889; Together with tool use, structured output unlocks a whole new layer of automation and possibility.</p></li></ul><div><hr></div><h2>TL;DR</h2><p><strong>Step-by-step reasoning + tool use + structured output = the backbone of AI agents.</strong><br>Congrats &#127881; - you just leveled up your GPT from storyteller &#8594; system builder.</p><div><hr></div><p>&#128293; Next week, we&#8217;ll wrap up the Trip Advisor mini-series - and for my <strong>awesome subscribers</strong>, I&#8217;ll unlock <strong>HosseiNotes Private Repos</strong> with the <strong>full, final prompt</strong> we&#8217;ve been building together. Plus: an <strong>LLM benchmark showdown</strong> to see who&#8217;s the real Trip Advisor champ. &#128526;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://hosseinotes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe for free to get the next Bytes delivered straight to your inbox &#128640;</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></p>]]></content:encoded></item><item><title><![CDATA[Byte #5 - Your AI Trip Advisor 👋 - Step 2: Tool Superpowers 🦸‍♂️]]></title><description><![CDATA[Welcome back to HosseiNotes - our growing hub for building atomic learning habits in AI engineering (with a side of fun &#128517;).]]></description><link>https://hosseinotes.com/p/byte-5-your-ai-trip-advisor-step</link><guid isPermaLink="false">https://hosseinotes.com/p/byte-5-your-ai-trip-advisor-step</guid><dc:creator><![CDATA[Hossein]]></dc:creator><pubDate>Wed, 17 Sep 2025 06:38:11 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/d23dc6a2-4a5c-4441-a285-3a9c8f98f0c8_1248x832.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome back to HosseiNotes - our growing hub for building atomic learning habits in AI engineering (with a side of fun &#128517;).</p><p>Last week we built a Mini &#8220;Trip Advisor GPT.&#8221; It learned to <strong>ask questions step by step</strong> before making a plan. Smarter than vanilla ChatGPT&#8230; but still a dreamer.</p><p>Why? Because it had no idea about:</p><ul><li><p>&#127782;&#65039; The weather (<em>no hiking in a thunderstorm! </em>&#9889;&#65039;)</p></li><li><p>&#9992;&#65039; Real prices (<em>Paris on &#8364;50?!&#8230; sure </em>&#128184;)</p></li><li><p>&#127976; Hotel costs (<em>not everyone wants to &#8220;sleep under the stars&#8221; </em>&#128719;&#65039;)</p></li></ul><p>This week, let&#8217;s fix that. We&#8217;ll give our GPT <strong>superpowers</strong> by letting it use ChatGPT&#8217;s browsing tool to check the real world before answering. (No capes required &#129464;&#8205;&#9794;&#65039;).</p><div><hr></div><h2>&#128721; The Problem</h2><p>Ask your MVP Trip Advisor GPT:<br><em>&#8220;Plan me a trip from Madrid this weekend, budget &#8364;300.&#8221;</em></p><p>It may say:<br>&#9992;&#65039; <em>&#8220;Fly to Paris. Visit the Louvre.&#8221;</em></p><p>Nice flex&#8230; until you check:<br>&#127783;&#65039; Paris = rainy weekend,<br>&#128184; Train tickets = &#8364;400.</p><p>Classic LLM move &#8594; confident, wrong, and totally out of touch.</p><div><hr></div><h2>&#128736;&#65039; Step 2 - Teaching It to Use Tools</h2><p>Instead of <em>guessing</em> the weather or hotel prices, we tell our GPT:</p><p>&#128073; &#8220;Use your browsing tool to check the weather, transport prices, and hotel costs <strong>before deciding</strong>.&#8221;</p><p>That one extra line changes everything.</p><div><hr></div><h2>&#129513; The Secret Sauce: Tool Use</h2><p>Here&#8217;s the new piece you need:</p><pre><code><code>Use your browsing tool to fetch real data for the target dates:

1. Check the weather forecast for the travel dates for the starting city and 2&#8211;4 nearby/candidate destinations.

2. Check typical transport prices (flight or train) from the starting city to each candidate destination for those dates.

3. Check average hotel prices per night at each candidate destination (pick a reasonable category for the stated budget).</code></code></pre><p>We also tell GPT how to <strong>filter</strong> what it finds so the plan stays realistic:</p><pre><code>Filter candidates:

- Remove options that don&#8217;t fit the weather preference (e.g., rainy for outdoors).  

- Remove options that don&#8217;t fit the trip duration (too far for short trips).  

- Remove options where travel + hotel cost would exceed budget (give a quick reasoning).  </code></pre><p>&#128073; That&#8217;s the magic: browsing brings in real numbers, filtering applies them - and suddenly your GPT is reality-aware. &#128526;</p><div><hr></div><h2>&#128373;&#65039;&#8205;&#9792;&#65039; Behind the Scenes </h2><p>When you say &#8220;use your browsing tool,&#8221; and it has browsing enabled, here&#8217;s what&#8217;s actually happening:</p><p>1&#65039;&#8419; It parses your request and goes <em>&#8220;Okay, I need weather and prices.&#8221; </em>&#129300;<br>2&#65039;&#8419; It types real queries into the web (like &#8220;Madrid to Valencia train price September 20&#8221;). &#128270;<br>3&#65039;&#8419; It reads snippets from web pages (often travel sites, weather.com, booking.com, etc.). &#128218;<br>4&#65039;&#8419; It brings the results back to the chat &#128188;<br>5&#65039;&#8419; Then it reasons step by step &#129504; (thanks to Chain of Thought instructions) and gives you an answer that&#8217;s grounded in reality &#127757;</p><p>Magic? Kinda. More like: <em>&#128483;&#65039; prompt &#8594; &#128270; search &#8594; &#128214; read &#8594; &#129504; reason &#8594; &#9989; answer</em></p><div><hr></div><h2>&#127881; Test It!</h2><p>&#128100; User: <em>&#8220;Plan me a 2-day trip. I&#8217;m in Madrid, budget &#8364;300, prefer outdoors.&#8221;</em></p><p>&#129302; ChatGPT (with browsing):</p><ul><li><p>Finds Valencia sunny &#127774;, Bilbao rainy &#127783;&#65039;</p></li><li><p>Sees roundtrip train to Valencia ~&#8364;60 &#128646;</p></li><li><p>Finds hotels ~&#8364;80/night &#127976;</p></li><li><p>Total ~&#8364;220 = &#9989; fits budget</p></li></ul><p>&#128073; Suggests Valencia: beach walk, hiking, tapas tour.</p><div><hr></div><h2>&#9989; What You&#8217;ve Learned</h2><ul><li><p>LLMs <strong>sound smart</strong> but often make things up (hallucinations).</p></li><li><p>Adding <strong>step-by-step reasoning</strong> makes them more reliable.</p></li><li><p>Adding <strong>tool use</strong> makes them reality-aware (weather, prices, hotels).</p></li><li><p>Together = an AI that&#8217;s not just a dreamer, but a <strong>doer</strong>.</p></li></ul><div><hr></div><h2>TL;DR</h2><ul><li><p>Vanilla LLMs = fantasy trip planners &#129760;</p></li><li><p>Step-by-step reasoning = structured thinking &#129504;</p></li><li><p>Tools = real-world awareness &#127757;</p></li><li><p>Congrats &#127881; &#8594; you&#8217;ve just learned the magic of <strong>tool-augmented prompting</strong>.</p></li></ul><div><hr></div><p>&#128640; See you next week with a new Byte - and the next step of our Trip Advisor GPT! &#128526;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://hosseinotes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe for free to get the next Bytes delivered straight to your inbox &#128640;</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[Byte #4 - Say hello to your AI Trip Advisor 👋 - Step 1]]></title><description><![CDATA[Welcome back to HosseiNotes - your weekly Byte of simplified AI engineering, with a side of fun &#128640;&#128517;]]></description><link>https://hosseinotes.com/p/byte-4-say-hello-to-your-ai-trip</link><guid isPermaLink="false">https://hosseinotes.com/p/byte-4-say-hello-to-your-ai-trip</guid><dc:creator><![CDATA[Hossein]]></dc:creator><pubDate>Tue, 09 Sep 2025 06:15:19 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/bc3449a4-7f9b-4b5d-926b-022ac4d3c780_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome back to HosseiNotes - your weekly Byte of simplified AI engineering, with a side of fun &#128640;&#128517;</p><p>Last week, we saw how clean prompts scale like clean code. This week, let&#8217;s start building something fun together: a <strong>Mini Trip Advisor GPT</strong>.</p><h3><strong>&#128721; The Problem</strong></h3><p>Ask a vanilla LLM: <em>&#8220;Plan me a trip this weekend.&#8221;</em> It happily spits out:</p><p>&#9992;&#65039; &#8220;Fly to Paris. Visit the Louvre. Michelin-star dinner.&#8221;</p><p>Sounds great, until you realize:</p><ul><li><p>You live in Tokyo &#128508;</p></li><li><p>It&#8217;s raining &#127783;&#65039;</p></li><li><p>Your budget = ramen &#127836;</p></li></ul><p>Classic AI move &#8594; confident, wrong, and totally out of context (Though to be fair, newer models are getting better and better at this &#128526;).</p><div><hr></div><h3><strong>&#128736;&#65039; Step 1 - Building the MVP</strong></h3><p>We&#8217;ll fix this by teaching our GPT to ask questions <strong>one by one</strong> and use each answer to refine the final recommendation.</p><p>Here&#8217;s the protocol:</p><div><hr></div><h3><strong>&#129534; The Prompt (Step-by-Step Questions + Instructions)</strong></h3><pre><code><code>You are a helpful travel advisor. 
Your job is to recommend a fun trip plan. 
Before giving a recommendation, always follow these steps:

Step 1: Ask the user where they are starting from. 
       &#8594; Instruction: ensure the final recommendation is realistically close to this starting point. 

Step 2: Ask the user how long they want the trip to be. 
       &#8594; Instruction: consider only destinations and activities that fit this timeframe. 

Step 3: Ask the user what budget they have. 
       &#8594; Instruction: recommend options that fit their budget. 

Step 4: Ask the user what type of experience they prefer (outdoors, culture, lazy beach). 
       &#8594; Instruction: adapt your suggestions to match their preference. 

Step 5: Once you have all of this information, reason through the answers step by step 
        and then provide a tailored trip recommendation. </code></code></pre><p>&#128073; Copy-paste this into ChatGPT &#8594; congrats, you&#8217;ve just built your <strong>MVP Trip Advisor GPT</strong> &#127881;</p><div><hr></div><h3><strong>&#9989; What You&#8217;ve Learned</strong></h3><p>By forcing the model to:</p><ul><li><p><strong>Ask step by step</strong></p></li><li><p><strong>Tie each answer to a specific instruction</strong></p></li><li><p><strong>Only answer after reasoning through all steps</strong></p></li></ul><p>&#8230;you&#8217;ve actually used a technique researchers call <strong>Chain of Thought (CoT) prompting</strong>.</p><p>&#129514; <em>Scientific definition:</em> Chain of Thought prompting guides large language models to <strong>explicitly perform intermediate reasoning steps</strong> before producing the final answer - improving accuracy, consistency, and interpretability (Wei et al., 2022).</p><p>So, congrats &#127881; - you just learned <strong>Chain of Thought in action!!</strong></p><div><hr></div><h3><strong>TL;DR</strong></h3><ul><li><p>Vanilla LLMs = terrible trip planners &#129760;</p></li><li><p>Step-by-step questioning = smarter, context-aware AI &#10024;</p></li><li><p>Congrats: you&#8217;ve just mastered <strong>Chain of Thought prompting</strong> in practice &#127891;</p></li></ul><div><hr></div><p>&#128640; See you next week with a new Byte - and the next step of our Trip Advisor GPT! &#128526;</p>]]></content:encoded></item><item><title><![CDATA[Byte #3 - If Clean Code Had a Prompting Twin!]]></title><description><![CDATA[Welcome back to HosseiNotes - your weekly Byte of simplified AI engineering, with a side of fun!]]></description><link>https://hosseinotes.com/p/byte-3-if-clean-code-had-a-prompting</link><guid isPermaLink="false">https://hosseinotes.com/p/byte-3-if-clean-code-had-a-prompting</guid><dc:creator><![CDATA[Hossein]]></dc:creator><pubDate>Tue, 09 Sep 2025 06:10:50 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/edbf9c5a-ccdf-48ba-9f42-676cfb12e725_2700x1670.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome back to HosseiNotes - your weekly Byte of simplified AI engineering, with a side of fun! &#128640; &#128517;</p><p>So far, we&#8217;ve talked about how to write better prompts and give your AI some identity. Now it&#8217;s time to zoom out a bit and ask:</p><p>&#129504; Where does prompt engineering actually <em>fit</em> in real-world AI systems?</p><p>Because here&#8217;s the thing:</p><p>&#129302; <strong>Prompt engineering isn&#8217;t a hack. It&#8217;s architecture.</strong></p><p>It&#8217;s become a foundational layer in how we <em>build, scale, and maintain</em> AI products.</p><div><hr></div><h3><strong>&#129504; Prompting = Instruction Protocol</strong></h3><p>In modern LLM-based systems, your prompt is the <strong>instruction protocol</strong> - the contract between your system and the model.</p><p>It defines:</p><ul><li><p>What the model should do (and not do) &#128295;</p></li><li><p>How it interprets context &#129504;</p></li><li><p>How structured the output is (or isn&#8217;t) &#128230;</p></li><li><p>Whether it saves the day or hallucinates a completely new database schema &#129412;</p></li></ul><p>And when that protocol is clean, explicit, and well-structured&#8230; Your AI actually behaves like part of your system - not a creative writer who wandered in from a coffee shop. &#9749;&#128220;</p><div><hr></div><h3><strong>&#128104;&#128187; Flashback: Clean Code vs &#8220;It Works on My Machine&#8221;</strong></h3><p>You remember <strong>Clean Code</strong>, right?</p><p>The way it separated developers into two species &#128517;:</p><ul><li><p>One writes maintainable, reusable abstractions so clean it feels like Da Vinci himself took up software engineering. &#129489;&#127912;</p></li><li><p>The other duct tapes a solution that breaks the second you add a new button &#128556;</p></li></ul><p>Now apply that to prompting.</p><p>I&#8217;ve seen it in real projects - <strong>prompts that grew into giant spaghetti monsters</strong>, bolted together with last-minute edge cases ! Yeah. Not fun when you&#8217;re trying to add a new feature or reuse that prompt elsewhere. &#128546;</p><p>Just like <strong>clean code scales</strong>, <strong>clean prompts scale</strong>.</p><ul><li><p>You can chain them across flows</p></li><li><p>You can reuse them across tools</p></li><li><p>You can reason about what changed when something breaks</p></li></ul><p>And just like with bad code, when you try to patch a dirty prompt, the hallucinations start flying. &#129412;</p><div><hr></div><h3><strong>&#128161; Where Prompt Engineering Shows Up in Real Systems:</strong></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vuuF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1140ec94-a5bc-428f-a404-18efda32cdae_1620x586.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vuuF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1140ec94-a5bc-428f-a404-18efda32cdae_1620x586.png 424w, https://substackcdn.com/image/fetch/$s_!vuuF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1140ec94-a5bc-428f-a404-18efda32cdae_1620x586.png 848w, https://substackcdn.com/image/fetch/$s_!vuuF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1140ec94-a5bc-428f-a404-18efda32cdae_1620x586.png 1272w, https://substackcdn.com/image/fetch/$s_!vuuF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1140ec94-a5bc-428f-a404-18efda32cdae_1620x586.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vuuF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1140ec94-a5bc-428f-a404-18efda32cdae_1620x586.png" width="1456" height="527" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1140ec94-a5bc-428f-a404-18efda32cdae_1620x586.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:527,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Article content&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="Article content" title="Article content" srcset="https://substackcdn.com/image/fetch/$s_!vuuF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1140ec94-a5bc-428f-a404-18efda32cdae_1620x586.png 424w, https://substackcdn.com/image/fetch/$s_!vuuF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1140ec94-a5bc-428f-a404-18efda32cdae_1620x586.png 848w, https://substackcdn.com/image/fetch/$s_!vuuF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1140ec94-a5bc-428f-a404-18efda32cdae_1620x586.png 1272w, https://substackcdn.com/image/fetch/$s_!vuuF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1140ec94-a5bc-428f-a404-18efda32cdae_1620x586.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"></figcaption></figure></div><p>Your prompt isn&#8217;t &#8220;just a prompt.&#8221; It&#8217;s a <strong>behavioral system</strong>.</p><div><hr></div><h3><strong>&#127919; Prompting Is an Art - and an Engineering Discipline</strong></h3><p>Writing good prompts isn&#8217;t about stuffing in more instructions.</p><p>It's about <strong>clear thinking, intentional sequencing, and anticipating failure</strong> - just like writing production-grade code.</p><p>Prompting is not &#8220;talking to AI&#8221;</p><p>It is the art of <strong>designing the behavior of a probabilistic system</strong> - and getting it to act like a reliable teammate.</p><p>You don&#8217;t need to be a prompt guru.</p><p>But you <em>do</em> need to stop treating your prompts like chat messages. &#128517;</p><div><hr></div><h3><strong>&#127873; Want to Learn This Properly?</strong></h3><p>You can get really far with trial and error.</p><p>But if you want to build real prompting intuition, these are worth your time:</p><ul><li><p>&#129514; <strong><a href="https://www.deeplearning.ai/short-courses/chatgpt-prompt-engineering-for-developers/">Prompt Engineering Course (by DeepLearning.AI in collaboration with OpenAI)</a></strong> &#8211; solid beginner foundations</p></li><li><p>&#129504; <strong><a href="https://github.com/dair-ai/Prompt-Engineering-Guide">Prompt Engineering Guide (dair-ai)</a></strong> &#8211; deep dive, curated</p></li><li><p>&#128218; <strong><a href="https://learnprompting.org/docs/introduction">LearnPrompting.org</a></strong> &#8211; practical, community-built guide to structured prompting</p></li><li><p>&#128739;&#65039; <strong><a href="https://roadmap.sh/prompt-engineering">Prompt Engineering Roadmap</a></strong> &#8211; great visual overview for devs</p></li><li><p>&#128736;&#65039; <strong><a href="https://github.com/openai/openai-cookbook">OpenAI Cookbook</a></strong> &#8211; practical, high-signal examples</p></li><li><p>&#129525; Me - HosseiNotes &#128521; (you&#8217;re already here)</p></li></ul><div><hr></div><h3><strong>&#128736;&#65039; TL;DR</strong></h3><ul><li><p>Prompt engineering is now a <strong>core system design skill </strong>- stop treating it like you&#8217;re typing into Google &#128591;</p></li><li><p>Clean prompts = better scale, lower cost, fewer bugs</p></li><li><p>Write prompts like you write production code - with clarity, structure, and purpose</p></li><li><p>This is the <strong>cheapest optimization</strong> you can make - and probably the most painful one to ignore</p></li></ul><div><hr></div><p>Until then:</p><p>Write prompts like you write software - with intent, not improv. &#129521;&#128187;</p><p>&#128640; See you next week with our new byte! &#128526;</p>]]></content:encoded></item><item><title><![CDATA[Byte #2 - 💀 Three Billionaires Just Killed a Startup (Thanks, AI) ! 💀]]></title><description><![CDATA[Welcome back to HosseiNotes &#128075; - our growing hub for building atomic learning habits with a bit of fun!]]></description><link>https://hosseinotes.com/p/byte-2-three-billionaires-just-killed</link><guid isPermaLink="false">https://hosseinotes.com/p/byte-2-three-billionaires-just-killed</guid><dc:creator><![CDATA[Hossein]]></dc:creator><pubDate>Tue, 09 Sep 2025 06:03:31 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/d2c592b3-6cd0-402a-bd5b-422b674e8dd2_1792x1024.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome back to HosseiNotes &#128075; - our growing hub for building atomic learning habits with a bit of fun! &#128640; &#128517;</p><p>In our last byte, we learned a few ways to make AI answers sharper. &#128161;</p><p>One of them was <strong>giving your AI a persona</strong> - turning it from a boring Wikipedia intern into a focused, opinionated expert.&#128526;</p><p>Today, we&#8217;re zooming in on that skill&#8230; and cranking it up.</p><p>Instead of one friendly persona, we&#8217;ll unleash a <em>whole panel</em> of monster business personas to test a business idea before the real world does. &#129416;</p><div><hr></div><h3><strong>Step 1: Fall in Love with Your Own Idea &#129392;</strong></h3><p>Meet Jane. She&#8217;s been dreaming of quitting her 9-to-5 to start <em>Bask&amp;Glow</em> - a monthly handmade candle subscription. &#128367;&#65039;</p><p>She fires up her AI and types in her idea.The AI beams back:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Pgxz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa35785bf-7e82-49ed-9a14-14ca9bfcd438_1131x1500.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Pgxz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa35785bf-7e82-49ed-9a14-14ca9bfcd438_1131x1500.png 424w, https://substackcdn.com/image/fetch/$s_!Pgxz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa35785bf-7e82-49ed-9a14-14ca9bfcd438_1131x1500.png 848w, https://substackcdn.com/image/fetch/$s_!Pgxz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa35785bf-7e82-49ed-9a14-14ca9bfcd438_1131x1500.png 1272w, https://substackcdn.com/image/fetch/$s_!Pgxz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa35785bf-7e82-49ed-9a14-14ca9bfcd438_1131x1500.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Pgxz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa35785bf-7e82-49ed-9a14-14ca9bfcd438_1131x1500.png" width="1131" height="1500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a35785bf-7e82-49ed-9a14-14ca9bfcd438_1131x1500.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1500,&quot;width&quot;:1131,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Article content&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="Article content" title="Article content" srcset="https://substackcdn.com/image/fetch/$s_!Pgxz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa35785bf-7e82-49ed-9a14-14ca9bfcd438_1131x1500.png 424w, https://substackcdn.com/image/fetch/$s_!Pgxz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa35785bf-7e82-49ed-9a14-14ca9bfcd438_1131x1500.png 848w, https://substackcdn.com/image/fetch/$s_!Pgxz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa35785bf-7e82-49ed-9a14-14ca9bfcd438_1131x1500.png 1272w, https://substackcdn.com/image/fetch/$s_!Pgxz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa35785bf-7e82-49ed-9a14-14ca9bfcd438_1131x1500.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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>Translation: &#8220;<strong>Nice idea&#8230; good luck out there.</strong>&#8221; &#129335;&#9792;&#65039;</p><div><hr></div><h3><strong>Step 2: A Little HosseiNotes Wisdom &#129299;</strong></h3><p>After talking to me (in our imagination &#128517;), Jane decides to up her game.</p><p>She casts a boardroom - three monster e-commerce personas:</p><pre><code><code>You are hosting a virtual Shark Tank.

Persona A: Jeff Bezos 
Persona B: Sara Blakely 
Persona C: Tobi L&#252;tke 

Have them evaluate the business idea:  "I have a great business idea! a monthly handmade candle subscription service that delivers candles to customers every month."

Each persona should give:
1. Key questions/challenges
2. Strengths they see
3. Final verdict (invest or pass) They should only invest if they are truly persuaded. These investors say "no" most of the time, and only say "yes" to the right opportunities.

- be realistic and only invest if it completely fits their priorities.

Moderator: Summarize the main takeaways.</code></code></pre><div><hr></div><h3><strong>Step 3: The Boardroom Bloodbath &#128128;</strong></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yN79!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd37285af-8314-488a-b8db-4d06ed0688fc_874x1500.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yN79!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd37285af-8314-488a-b8db-4d06ed0688fc_874x1500.png 424w, https://substackcdn.com/image/fetch/$s_!yN79!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd37285af-8314-488a-b8db-4d06ed0688fc_874x1500.png 848w, https://substackcdn.com/image/fetch/$s_!yN79!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd37285af-8314-488a-b8db-4d06ed0688fc_874x1500.png 1272w, https://substackcdn.com/image/fetch/$s_!yN79!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd37285af-8314-488a-b8db-4d06ed0688fc_874x1500.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yN79!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd37285af-8314-488a-b8db-4d06ed0688fc_874x1500.png" width="874" height="1500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d37285af-8314-488a-b8db-4d06ed0688fc_874x1500.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1500,&quot;width&quot;:874,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Article content&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="Article content" title="Article content" srcset="https://substackcdn.com/image/fetch/$s_!yN79!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd37285af-8314-488a-b8db-4d06ed0688fc_874x1500.png 424w, https://substackcdn.com/image/fetch/$s_!yN79!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd37285af-8314-488a-b8db-4d06ed0688fc_874x1500.png 848w, https://substackcdn.com/image/fetch/$s_!yN79!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd37285af-8314-488a-b8db-4d06ed0688fc_874x1500.png 1272w, https://substackcdn.com/image/fetch/$s_!yN79!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd37285af-8314-488a-b8db-4d06ed0688fc_874x1500.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"></figcaption></figure></div><p>Translation: <strong>Bitter truth - we won&#8217;t give you a penny! </strong>&#128184; &#128557;</p><div><hr></div><p><strong>Jane could cry in front of real sharks on live TV in front of millions&#8230; but using personas saved her the trip (and the tears). </strong>&#129416;&#128546;</p><div><hr></div><h3><strong>Why This Works</strong></h3><ul><li><p>&#9201;&#65039; <strong>Context:</strong> Each persona views your idea through a specific lens.</p></li><li><p>&#127919; <strong>Direction:</strong> You&#8217;re steering the AI toward relevant, actionable insights.</p></li><li><p>&#129299; <strong>For AI builders:</strong> Personas bias the LLM&#8217;s token predictions toward outputs consistent with that role - resulting in sharper, more coherent answers.</p></li></ul><div><hr></div><h3><strong>Pro Tips for Using Personas &#128736;&#65039;</strong></h3><p>Whether you&#8217;re having a daily chat with AI or building a robust LLM-powered system:</p><ul><li><p><strong>Double persona power:</strong> Define both the <em>AI&#8217;s role</em> and the <em>audience</em> it&#8217;s speaking to - this changes the tone, detail, and structure instantly.</p></li><li><p><strong>Lock in structure:</strong> Ask for bullet points, tables, or JSON so your persona feedback is consistent and easy to reuse.</p></li><li><p><strong>Store personas as configs:</strong> Keep role definitions, priorities, and tone in a structured format so you can A/B test or swap them fast.</p></li><li><p><strong>Always add audience context:</strong> Executive, student, founder, or engineer - the same idea will get a totally different treatment.</p></li><li><p><strong>Chain personas for depth:</strong> Have a critic persona find flaws, a builder persona fix them, and an editor persona polish the output.</p></li><li><p><strong>Finally:</strong> Continue reading <strong>HosseiNotes</strong> - because getting better is a very real side effect. &#128526;</p><div><hr></div><h3><strong>Mini Challenge - Your Turn</strong></h3><p>Pick an idea. Run it through <em>Nice AI</em> (no persona). Then unleash the <em>Monster Boardroom</em> (personas). Compare the results&#8230; and brace yourself. &#128521;</p><div><hr></div><h3><strong>TL;DR</strong></h3><p>AI without personas = polite head nods.</p><p>AI with personas = tough love that makes your ideas, projects, and systems stronger.</p><div><hr></div><p>&#128640; See you next week with our new byte! &#128526;</p></li></ul>]]></content:encoded></item><item><title><![CDATA[Byte #1 - Why your AI is staring blankly at you right now ?! 😑]]></title><description><![CDATA[Welcome to HosseiNotes &#128075; &#8212; This is my first note, we&#8217;re kicking off a mini-series where we stop hoping ChatGPT, Claude, Gemini, or that one LLaMA running on your Mac &#8220;just gets it&#8221;&#8230; and start engineering prompts that actually deliver.]]></description><link>https://hosseinotes.com/p/byte-1-why-your-ai-is-staring-blankly</link><guid isPermaLink="false">https://hosseinotes.com/p/byte-1-why-your-ai-is-staring-blankly</guid><dc:creator><![CDATA[Hossein]]></dc:creator><pubDate>Tue, 09 Sep 2025 05:34:50 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/683232b4-f5a2-41f8-a880-6d0398866d87_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to HosseiNotes &#128075; - This is my first note, we&#8217;re kicking off a mini-series where we stop hoping ChatGPT, Claude, Gemini, or that one LLaMA running on your Mac &#8220;just gets it&#8221;&#8230; and start engineering prompts that actually deliver. &#128640; </p><p>And don&#8217;t worry - &#8220;engineering&#8221; here doesn&#8217;t mean you need to wear a hard hat or write YAML &#129299;. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://hosseinotes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! 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>It just means being clear, intentional, and a little bossy with your AI. You&#8217;ve got this. &#128526; </p><p>OK! Think of LLMs like the smartest intern you&#8217;ve ever hired&#8230; but with zero common sense. &#129394; </p><p>If your prompts are vague, expect chaos.</p><p>But if they&#8217;re clear, structured, and targeted? You&#8217;ve got a 24/7 co-pilot with expertise, speed, and a triple-shot espresso drip! &#9749;</p><div><hr></div><p><strong>&#128565; Vague Prompts = Unpaid Therapy Sessions</strong></p><p>Let&#8217;s say you ask:</p><pre><code>Explain LLMOps.</code></pre><p>LLM will either:</p><ul><li><p>Panic &#128556;</p></li><li><p>Recite Wikipedia &#128214;</p></li><li><p>Write a TED Talk that makes you question your career choices &#127908;</p></li><li><p>Crawl the entire internet and burn a small forest worth of compute in the process &#127793;</p></li><li><p>And if you&#8217;re building AI apps? Congrats - that&#8217;s 800 tokens of nonsense you&#8217;re paying for &#128184;</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_!Gm05!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb82a5551-6ca8-4781-a597-2bd438fb982c_576x1500.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Gm05!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb82a5551-6ca8-4781-a597-2bd438fb982c_576x1500.png 424w, https://substackcdn.com/image/fetch/$s_!Gm05!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb82a5551-6ca8-4781-a597-2bd438fb982c_576x1500.png 848w, https://substackcdn.com/image/fetch/$s_!Gm05!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb82a5551-6ca8-4781-a597-2bd438fb982c_576x1500.png 1272w, https://substackcdn.com/image/fetch/$s_!Gm05!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb82a5551-6ca8-4781-a597-2bd438fb982c_576x1500.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Gm05!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb82a5551-6ca8-4781-a597-2bd438fb982c_576x1500.png" width="576" height="1500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b82a5551-6ca8-4781-a597-2bd438fb982c_576x1500.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1500,&quot;width&quot;:576,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:258513,&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://hosseinotes.com/i/173127396?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb82a5551-6ca8-4781-a597-2bd438fb982c_576x1500.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_!Gm05!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb82a5551-6ca8-4781-a597-2bd438fb982c_576x1500.png 424w, https://substackcdn.com/image/fetch/$s_!Gm05!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb82a5551-6ca8-4781-a597-2bd438fb982c_576x1500.png 848w, https://substackcdn.com/image/fetch/$s_!Gm05!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb82a5551-6ca8-4781-a597-2bd438fb982c_576x1500.png 1272w, https://substackcdn.com/image/fetch/$s_!Gm05!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb82a5551-6ca8-4781-a597-2bd438fb982c_576x1500.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><p><strong>&#9989; Try This Instead:</strong></p><pre><code>You are a machine learning platform engineer at a consulting firm.

Write a 150-word summary of LLMOps for a client stakeholder with limited technical background. 
Use analogies, avoid jargon, and format it as an email draft.</code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KL6M!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b46b0a7-4230-4a34-9e6c-2997be2fd2bb_1940x1232.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KL6M!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b46b0a7-4230-4a34-9e6c-2997be2fd2bb_1940x1232.png 424w, https://substackcdn.com/image/fetch/$s_!KL6M!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b46b0a7-4230-4a34-9e6c-2997be2fd2bb_1940x1232.png 848w, https://substackcdn.com/image/fetch/$s_!KL6M!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b46b0a7-4230-4a34-9e6c-2997be2fd2bb_1940x1232.png 1272w, https://substackcdn.com/image/fetch/$s_!KL6M!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b46b0a7-4230-4a34-9e6c-2997be2fd2bb_1940x1232.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KL6M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b46b0a7-4230-4a34-9e6c-2997be2fd2bb_1940x1232.png" width="1456" height="925" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1b46b0a7-4230-4a34-9e6c-2997be2fd2bb_1940x1232.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:925,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:177057,&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://hosseinotes.com/i/173127396?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b46b0a7-4230-4a34-9e6c-2997be2fd2bb_1940x1232.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_!KL6M!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b46b0a7-4230-4a34-9e6c-2997be2fd2bb_1940x1232.png 424w, https://substackcdn.com/image/fetch/$s_!KL6M!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b46b0a7-4230-4a34-9e6c-2997be2fd2bb_1940x1232.png 848w, https://substackcdn.com/image/fetch/$s_!KL6M!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b46b0a7-4230-4a34-9e6c-2997be2fd2bb_1940x1232.png 1272w, https://substackcdn.com/image/fetch/$s_!KL6M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b46b0a7-4230-4a34-9e6c-2997be2fd2bb_1940x1232.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="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>&#128165; Boom:</p><ul><li><p>&#129504; Context (who it is)</p></li><li><p>&#127919; Task (what it should do)</p></li><li><p>&#129529; Constraints (how to shape the answer)</p></li></ul><p>You&#8217;re no longer asking a question - you&#8217;re giving it a brief. &#128221; And guess what? It lives for that. &#128526;&#9889;&#65039;</p><div><hr></div><p><strong>&#127919; Why This Works So Well</strong></p><ul><li><p>Persona matters - when you tell the LLM who it is and who it&#8217;s talking to, the results feel spot-on. &#127917;&#128101;</p></li><li><p>Clear briefs = clearer answers. The model knows exactly what you want. &#129504;</p></li><li><p>Word limits (like 150 words) are magic - they force focus, cut fluff, and boost clarity. &#9986;&#65039;&#128269;</p></li><li><p>Structure (like email formatting) helps it think and write like a human. &#9997;&#65039;&#128188;</p></li><li><p>You get responses that are usable out of the box - less tweaking, more doing. &#9201;&#65039;&#128588;</p></li></ul><div><hr></div><p><strong>&#9889; Mini Challenge: Prompt Like a Pro</strong></p><p>Take a boring prompt you&#8217;ve used before (or just a Slack message you&#8217;d normally write).</p><p>Now reframe it with:</p><ul><li><p>&#9989; A role (&#8220;You are an engineer working with a retail client&#8230;&#8221;)</p></li><li><p>&#9989; A task (&#8220;Summarize the ML model performance&#8230;&#8221;)</p></li><li><p>&#9989; A constraint (&#8220;Max 3 bullet points, no jargon.&#8221;)</p></li></ul><p>Compare results. One feels like it read your mind. &#129504;&#10024;The other? Like it copy-pasted from a robot&#8217;s diary. &#129302;&#128164; </p><p>Share your before-and-after with a teammate - or keep it for smug satisfaction. &#128527;</p><div><hr></div><p><strong>&#128161; TL;DR</strong></p><p>Bad prompts make the AI sound like it needs a nap. &#128564;</p><p>Good prompts make it sound like it&#8217;s gunning for a promotion. &#128188;&#128640;</p><p>The difference? Time saved, costs slashed, and zero compute wasted chasing &#8220;almost right.&#8221; &#9201;&#65039;&#128184;&#9889;</p><div><hr></div><p>&#128236; <strong>Next Byte</strong>: There&#8217;s one simple trick that instantly levels up your AI&#8217;s responses - and many people skip it.</p><p><strong>Hit subscribe if you&#8217;ve ever stared back at your AI in disbelief - and feel free to share your own prompt wins, fails, or rants below. Let&#8217;s learn (and have fun) together. &#129299;&#128172;</strong></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://hosseinotes.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item></channel></rss>